Voting resources, early voting, and poll worker information - VOTE. ... Adafruit is open and shipping.
0

AMG8833 for Distance Temperature Measurement of Humans
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

AMG8833 for Distance Temperature Measurement of Humans

by hisunil40 on Mon Jun 01, 2020 12:12 pm

Hi,

We are a startup in IOT space. We intend to build a Thermal Sensor based IOT Device, that can measure human body temperature from 5 meter away, and raise Alarm if Fever is identified.

For this, we intend to use AMG8833 breakoutboard sensors.

Kindly advise if this sensor can accurately measure temperature of persons upto 5 meter away.

Love and stay safe,

Sunil from India
+91 9717753497

hisunil40
 
Posts: 10
Joined: Mon Jun 01, 2020 11:40 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by adafruit_support_bill on Mon Jun 01, 2020 12:20 pm

No. While it could detect a human body at that distance, it does not have sufficient angular resolution to make an accurate temperature measurement at that range.

The field of view of each pixel is about 7.5°, so at a range of 500cm, the area sensed by each pixel would be about 65cm square.

adafruit_support_bill
 
Posts: 78748
Joined: Sat Feb 07, 2009 10:11 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by hisunil40 on Mon Jun 01, 2020 1:04 pm

Thanks for the reply.
Please help me understand little more on same.
1. What should be optimum distance for measuring Human Body Temperature (primarily for Fever etc.). Would it be OK to measure at 1 Meter distance, or 2 Meter distance. As accordingly we would change our specs.
2. Is their any other alternative with more number of Pixels, which can measure at a distance. I also explored Adafruit breakboard with MLX90640. Please share your expert views on that one too.

3. Unfortunately, I can not physically test them, as due to lockdown, I am unable to order both of these breakboards at the moment. They are not available with Adafruit distributors due to huge demand.

Thanks
Sunil

hisunil40
 
Posts: 10
Joined: Mon Jun 01, 2020 11:40 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by adafruit_support_bill on Mon Jun 01, 2020 1:24 pm

1 - You would want to have the field of view for at least one pixel completely filled by exposed skin so that your measurement is not influenced by the background, clothing, hair or peripheral objects. At a distance of about 35 cm the FOV for a single pixel would cover about a 4.5cm square.

2 - The MLX90640 is a higher resolution with 32x24 pixels. It is available in 55° and 110° models. Using the narrower 55° model, the per pixel FOV would be about 1.72°. At 150cm, each pixel would cover about 4.5cm also.

3 - Yes, there is a large demand for these, since many people have similar ideas of building cameras to screen for signs of fever.

adafruit_support_bill
 
Posts: 78748
Joined: Sat Feb 07, 2009 10:11 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by hisunil40 on Mon Jun 01, 2020 1:37 pm

Thanks a ton.
Please help me understand:
1. How much area is good enough to correctly measure temp. Is 4.5 sq cm good enough (like if we target Forehead temp). Accordingly we would have to calculate distance that can be covered.

2. Is their any direct formula, that we can apply, for Pixel vs. Distance, and Area (in sq cm) it can cover. Kindly help.

3. Are their some other alternatives, may be by other Manufacturers like TE etc..

4. what are the alternatives for close thermal temp check. I explored MLX90614 also, which works well upto say 10 cm.

5. You had been very helpful till now. Can you suggest some others sensors as well for Contact less thermal temp measurement. (Distance or Range we can consider later, but at first some working solution is primary goal.)

Many thanks,
Sunil

hisunil40
 
Posts: 10
Joined: Mon Jun 01, 2020 11:40 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by adafruit_support_bill on Mon Jun 01, 2020 2:56 pm

1 - 4.5cm is just my estimate. You would need to do some testing to validate that. Since the subject can be placed randomly within the overall field of view, you need to pick a target size small enough to guarantee that one pixel will cover nothing but exposed skin. If the subjects will be wearing face masks, there will be less skin exposed, so you may need to choose a smaller target area.

2 - Just basic trigonometry. https://www.calculator.net/triangle-calculator.html

3 - There are many higher resolution devices out there - such as the ones used in these instruments: https://www.adafruit.com/product/4579
We do not currently have a source for the raw sensors used in those devices.

4 - The 10cm range of the MLX90614 assumes that the device is directly aimed at an exposed area of skin. The FOV of that sensor is 90 degrees.

5 - Any of the sensors discussed so far are capable of measuring skin temperature. The main consideration for an accurate measurement is to make sure that the FOV for a pixel (or the whole sensor in the case of the MLX90614) is looking at nothing but exposed skin. Any clothing, hair or background objects within the FOV will affect your readings.

adafruit_support_bill
 
Posts: 78748
Joined: Sat Feb 07, 2009 10:11 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by hisunil40 on Tue Jun 02, 2020 2:27 am

Thankyou very much for the very informative and timely inputs.
Thanks a ton
Sunil

hisunil40
 
Posts: 10
Joined: Mon Jun 01, 2020 11:40 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by hisunil40 on Wed Jul 01, 2020 5:28 am

Hi,
Finally I could get hold of AMG8833 sensor to test using RaspberryPi and Arduino.
At first I would list problem I faced using RaspberryPi.

I am trying to execute the code as specified in help link below:

https://learn.adafruit.com/adafruit-amg ... mal-camera

However, I am getting below error:

*****************************************************************************************************************************************
*****************************************************************************************************************************************

(py3cv4) pi@raspberrypi:~/Desktop/sunil/vision/code $ python Thermal8833_1.py
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
ALSA lib bluealsa-pcm.c:763:(_snd_pcm_bluealsa_open) Couldn't get BlueALSA PCM: PCM not found
Traceback (most recent call last):
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_bus_device/i2c_device.py", line 184, in __probe_for_device
self.i2c.writeto(self.device_address, b"")
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/busio.py", line 111, in writeto
return self._i2c.writeto(address, buffer, stop=stop)
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_blinka/microcontroller/generic_linux/i2c.py", line 49, in writeto
self._i2c_bus.write_bytes(address, buffer[start:end])
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/Adafruit_PureIO/smbus.py", line 308, in write_bytes
self._device.write(buf)
TimeoutError: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_bus_device/i2c_device.py", line 190, in __probe_for_device
self.i2c.readfrom_into(self.device_address, result)
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/busio.py", line 101, in readfrom_into
return self._i2c.readfrom_into(address, buffer, stop=stop)
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_blinka/microcontroller/generic_linux/i2c.py", line 56, in readfrom_into
readin = self._i2c_bus.read_bytes(address, end - start)
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/Adafruit_PureIO/smbus.py", line 179, in read_bytes
return self._device.read(number)
TimeoutError: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "Thermal8833_1.py", line 36, in <module>
sensor = adafruit_amg88xx.AMG88XX(i2c_bus)
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_amg88xx.py", line 134, in __init__
self.i2c_device = I2CDevice(i2c, addr)
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_bus_device/i2c_device.py", line 69, in __init__
self.__probe_for_device()
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_bus_device/i2c_device.py", line 192, in __probe_for_device
raise ValueError("No I2C device at address: %x" % self.device_address)
ValueError: No I2C device at address: 69


*****************************************************************************************************************************************
*****************************************************************************************************************************************

Further, when I check for I2C device, I find it very much in place (i.e. at Address 69) sometimes. I say sometimes, as I am getting different results for same AMG8833 device/RaspberryPi Setup

Please see snapshot of command output below:



pi@raspberrypi:~/Desktop/sunil/vision/code $
pi@raspberrypi:~/Desktop/sunil/vision/code $
pi@raspberrypi:~/Desktop/sunil/vision/code $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --




pi@raspberrypi:~/Desktop/sunil/vision/code $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- 69 -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
pi@raspberrypi:~/Desktop/sunil/vision/code $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- 69 -- -- -- -- -- --
70: -- -- -- -- -- -- -- --


May be because of this erratic behaviour of hardware setup, system is giving faults. But I do not know.
I tried with two AMG8833 sensors, and it is same behaviour for both of them.

Kindly help.
Thanks,
Sunil

hisunil40
 
Posts: 10
Joined: Mon Jun 01, 2020 11:40 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by adafruit_support_bill on Wed Jul 01, 2020 5:43 am

If you post some photos showing your soldering and connections we can try to spot any problems there.

adafruit_support_bill
 
Posts: 78748
Joined: Sat Feb 07, 2009 10:11 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by hisunil40 on Wed Jul 01, 2020 7:00 am

Hi,
thanks, I found some issues in soldering, and tried to remove them.
Intermittently I am getting failures in connection.
And accordingly sometimes, I am getting below two errors:


for row in sensor.pixels:
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_amg88xx.py", line 169, in pixels
i2c.write_then_readinto(buf, buf, out_end=1, in_start=1)
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_bus_device/i2c_device.py", line 156, in write_then_readinto
in_end=in_end,
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/busio.py", line 136, in writeto_then_readfrom
stop=stop,
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_blinka/microcontroller/generic_linux/i2c.py", line 88, in writeto_then_readfrom
address, buffer_out[out_start:out_end], in_end - in_start
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/Adafruit_PureIO/smbus.py", line 273, in read_i2c_block_data
ioctl(self._device.fileno(), I2C_RDWR, request)
OSError: [Errno 121] Remote I/O error



OR



sensor = adafruit_amg88xx.AMG88XX(i2c_bus)
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_amg88xx.py", line 137, in __init__
self._pctl = _NORMAL_MODE
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_register/i2c_bits.py", line 77, in __set__
i2c.write_then_readinto(self.buffer, self.buffer, out_end=1, in_start=1)
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_bus_device/i2c_device.py", line 156, in write_then_readinto
in_end=in_end,
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/busio.py", line 136, in writeto_then_readfrom
stop=stop,
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/adafruit_blinka/microcontroller/generic_linux/i2c.py", line 88, in writeto_then_readfrom
address, buffer_out[out_start:out_end], in_end - in_start
File "/home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/Adafruit_PureIO/smbus.py", line 273, in read_i2c_block_data
ioctl(self._device.fileno(), I2C_RDWR, request)
OSError: [Errno 5] Input/output error



I think these two are because of Loose Soldering connection. Kindly confirm on same.
Further, I am not very good on Soldering, so do I need to unsoldier all connections and connect them again, kindly advise
PS: I have images of sensor, but I do not know as how to upload them here, as it points to the Image_URL, and I have the actual image with me.

Many thanks

hisunil40
 
Posts: 10
Joined: Mon Jun 01, 2020 11:40 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by hisunil40 on Wed Jul 01, 2020 7:25 am

Hi, further to my last query, with some brushing of soldering, I could improve the situation, and I can run the system for 10-15 seconds at least (after few failures).

Now Here is my bigger worry (as Soldering part, I can manage by an external help),

I checked that the Sensor can detect change in Temperature say of human movement (say fingure movement etc.) upto 15 cm distance only, and the moment I move my fingures beyond 15 cm, it vanishes from the screen.

I also tried with a hot Iron, with body temperature beyond 150 degree celcius. Even in that case, the temperature diff as captured by Device is for upto 30 cm (One Foot)


I expected to build the Body temperature sensor using AMG8833, wherein we can measure Human Body Temperature from say 100-150cm, and raise Alarm, if someone is having Fever or so.
I tried to explore AMG8833, as I thought if it can measure human presence by upto 7 meters (as claimed in some documents), then it can measure Body temperature to some accuracy upto 1.5 meter also.

Please guide me on same.

Many thanks,
Sunil Arora

hisunil40
 
Posts: 10
Joined: Mon Jun 01, 2020 11:40 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by adafruit_support_bill on Wed Jul 01, 2020 7:30 am

These sensors sometimes ship with a protective film covering the lens. Make sure that is removed.

To post images, use the "choose file" and "Add the file" buttons below the message editing box. There is a 1 meg size limit. 800x600 resolution is a good size.

This guide has some tips on identifying and fixing common soldering problems: https://learn.adafruit.com/adafruit-gui ... n-problems

adafruit_support_bill
 
Posts: 78748
Joined: Sat Feb 07, 2009 10:11 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by hisunil40 on Wed Jul 01, 2020 9:09 am

IMG_20200701_161611 (1).jpg
IMG_20200701_161611 (1).jpg (534.59 KiB) Viewed 68 times
IMG_20200701_161611 (1).jpg
IMG_20200701_161611 (1).jpg (534.59 KiB) Viewed 68 times
adafruit_support_bill wrote:These sensors sometimes ship with a protective film covering the lens. Make sure that is removed.

To post images, use the "choose file" and "Add the file" buttons below the message editing box. There is a 1 meg size limit. 800x600 resolution is a good size.

This guide has some tips on identifying and fixing common soldering problems: https://learn.adafruit.com/adafruit-gui ... n-problems
Attachments
IMG_20200701_161532 (1).jpg
IMG_20200701_161532 (1).jpg (329.35 KiB) Viewed 68 times

hisunil40
 
Posts: 10
Joined: Mon Jun 01, 2020 11:40 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by adafruit_support_bill on Wed Jul 01, 2020 9:23 am

Your soldering looks fine. Please post some examples of the output raw data at various distances.

I tried to explore AMG8833, as I thought if it can measure human presence by upto 7 meters (as claimed in some documents), then it can measure Body temperature to some accuracy upto 1.5 meter also.

Detecting a change in temperature at a distance is much different than accurately measuring temperature at a distance. To accurately measure the temperature, the surface being measured must completely fill the field of view of the sensing element.

adafruit_support_bill
 
Posts: 78748
Joined: Sat Feb 07, 2009 10:11 am

Re: AMG8833 for Distance Temperature Measurement of Humans

by hisunil40 on Wed Jul 01, 2020 9:30 am

Thanks,
please help me understand,

If a Person is standing at 1.5 meter distance.

Would this sensor (AMG8833) be able to detect body temperature of Person's forehead.

Can we identify if he has Fever (i.e. 39 degree celcius+) or not.

Is their some other sensor that can do this activity, and comes in under $100/-.

Many thanks,
Sunil

hisunil40
 
Posts: 10
Joined: Mon Jun 01, 2020 11:40 am

Please be positive and constructive with your questions and comments.