Shop OBEX P1 Docs P2 Docs Learn Events
Propeller-based Thermal Imager - Page 3 — Parallax Forums

Propeller-based Thermal Imager

13»

Comments

  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-01-19 14:26
    Duane Degn wrote: »
    I didn't have any trouble when I ordered the MLX90620 from Furture, but when I ordered a couple Panasonic "Grid Eye" sensors, I had to fill out some sort of end use form.

    I thought I'd let you all know, I wasn't "approved" to purchase the Grid-Eye sensor.
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2013-01-19 14:49
    Just out of curiosity, what did you put for "end use?"

    -Phil
  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-01-19 21:03
    Just out of curiosity, what did you put for "end use?"

    -Phil

    There wasn't much room on the form for the "Application/End Use." I wrote "Household robot to detect fallen elderly residents (and call for help)."

    I've know several people who have fallen at home and have had a very difficult time reaching a phone to call for help. I was hoping a robot could be used to keep track of where a person was and how they were doing.

    I know a "Life Alert" type button worn around their neck could also serve this purpose but the people I know who fell and needed help would have been reluctant to wear such a device. Also "Life Alert" is rather expensive (though I think it's worth it when it's needed).
  • ElectricAyeElectricAye Posts: 4,561
    edited 2013-01-19 22:16
    Duane Degn wrote: »
    There wasn't much room on the form for the "Application/End Use." I wrote "Household robot to detect fallen elderly residents (and call for help)."

    I've know several people who have fallen at home and have had a very difficult time reaching a phone to call for help. I was hoping a robot could be used to keep track of where a person was and how they were doing.

    I know a "Life Alert" type button worn around their neck could also serve this purpose but the people I know who fell and needed help would have been reluctant to wear such a device. Also "Life Alert" is rather expensive (though I think it's worth it when it's needed).

    Sounds like a great idea. Have you looked into the Parallax cosponsored microMedic competition? http://learn.parallax.com/contest/micromedic

    As soon as I heard about the microMedic thing, I thought about Phil and the thermal imaging sensors, etc. I'd really like to see somebody here work on that. (Not me!)


    Maybe on "end use" you should have written down something completely inane but sure to market well to the masses - something that the world desperately needs, like another video game, weight-loss gimmick, or lawn care product.
  • banjobanjo Posts: 438
    edited 2020-07-17 18:05
    Apologies for resurrecting an old post….
    Did anyone end up getting the Panasonic Grid-eye and if so get it to work?

    Asking because I have a Adafruit Amg8833 (https://learn.adafruit.com/adafruit-amg8833-8x8-thermal-camera-sensor/downloads) laying unused and would benefit from some starting points in Spin or C.
    Converting the Adafruit Arduino or Python libraries to Spin would be one option, but feels a bit daunting for me. Perhaps easier to start from scratch.

    Edit: Forgot to mention that the aforementioned Amg8833 uses the Panasonic Grid-eye sensor.

  • After searching around more, I found some C-code for Linux here: https://github.com/PureEngineering/GridEYE-Breakout/blob/master/firmware/linux_demo/main.c
    Unless someone has some ready-made Spin or C code, this might be a good starting point for me. At least I'll take a plunge into it.
  • Banjo,
    Keep us informed on your progress.
    If you crack the coding, this will be a useful application for many users!
  • Will do, I'm all for sharing, regardless of 100 % success or the opposite :smiley:
  • Here is another example and it uses Python :smile:

    Demo code for connecting the Raspberry Pi and the Melexis MLX90620 16x4 thermopile array.

    Resources
    Readme
    #!/usr/bin/env python

    #Demo code
    #
    # simple demonstration script showing real-time thermal Imaging
    # using the MLX90620 16x4 thermopile array and the mlxd daemon
    #
    # Copyright (C) 2015 Chuck Werbick
    #
    #



    https://hackaday.io/project/6416-raspberry-pi-thermal-imaging
  • I have a spin/spin2 driver for that one (the Melexis one), although it's limited usefulness as no temperature calcs are done. I hadn't mentioned it before because I didn't know how similar (probably not very?) the driver would be to that Grideye one. It's MIT-licensed though, so if you find any of it can be adapted, you're welcome to use it.

    Cheers,
    Jesse
  • banjo wrote: »
    Apologies for resurrecting an old post….
    Did anyone end up getting the Panasonic Grid-eye and if so get it to work?

    Asking because I have a Adafruit Amg8833 (https://learn.adafruit.com/adafruit-amg8833-8x8-thermal-camera-sensor/downloads) laying unused and would benefit from some starting points in Spin or C.
    Converting the Adafruit Arduino or Python libraries to Spin would be one option, but feels a bit daunting for me. Perhaps easier to start from scratch.

    Edit: Forgot to mention that the aforementioned Amg8833 uses the Panasonic Grid-eye sensor.

    I'm interested in knowing if Phil wants to resurrect the original project in the form of a product, so I appreciate the thread coming back to life.

    Ken Gracey

  • Thx Bob!
    I do have a couple of Raspberry Pi currently tied up with other tasks. As Adafruit and others have plenty of RPi (and Arduino) related instructions for this sensor, I've however thought to test the sensor out with Python on one of the Rpi's. But I want to try it out with P1 first and hopefully learn more that way.
  • Maybe someone will try it with Micropython for P2
  • Maybe someone will try it with Micropython for P2
    I actually also thought about that, I have started to learn Python as I'll might end up teaching some programming fundamentals to aspiring engineers in the local university here. Now I don't have a P2 or know Micropython yet, so guess someone else will do it before me :smile:
  • avsa242 wrote: »
    I have a spin/spin2 driver for that one (the Melexis one), although it's limited usefulness as no temperature calcs are done. I hadn't mentioned it before because I didn't know how similar (probably not very?) the driver would be to that Grideye one. It's MIT-licensed though, so if you find any of it can be adapted, you're welcome to use it.

    Cheers,
    Jesse

    Thx Jesse! I'll see if I can use it.
  • Ken Gracey wrote: »
    banjo wrote: »
    Apologies for resurrecting an old post….
    Did anyone end up getting the Panasonic Grid-eye and if so get it to work?

    Asking because I have a Adafruit Amg8833 (https://learn.adafruit.com/adafruit-amg8833-8x8-thermal-camera-sensor/downloads) laying unused and would benefit from some starting points in Spin or C.
    Converting the Adafruit Arduino or Python libraries to Spin would be one option, but feels a bit daunting for me. Perhaps easier to start from scratch.

    Edit: Forgot to mention that the aforementioned Amg8833 uses the Panasonic Grid-eye sensor.

    I'm interested in knowing if Phil wants to resurrect the original project in the form of a product, so I appreciate the thread coming back to life.

    Ken Gracey

    I don't know if Phil can source the original sensor. It shows 0 at Digikey. I could not find sources with a quick Google search.
  • Ken Gracey wrote:
    I'm interested in knowing if Phil wants to resurrect the original project in the form of a product, so I appreciate the thread coming back to life.
    Definitely interested. It would probably have to be a module with an empty socket for the sensor. Otherwise multiple markups on the sensor itself would price it out of range.

    I'm more inclined to make it for the MLX90640 series, since the resolution (32 x 24) is much better. But nobody has any in stock. And I'm not sure whether the regulations regarding thermal imaging sensors have been relaxed. But I guess that doesn't matter if Parallax just sold the module without the sensor. The real value is in the software and product support anyway.

    Then there's the Panasonic Grid-Eye 8x8 sensor (AMG8833) for considerably less money. Is that enough resolution to get anyone excited?

    My inclination would be to include an 8-bit micro onboard to make it into a 3-pin serial module. That would place it a notch above the competition (e.g. AdaFruit) who just sells breakout/evaluation boards. ('May have to brush up on my AVR assembly skills. :) )

    -Phil
  • Anecdotal, but when I bought a 90640 (about a year ago) from Digi-Key, there weren't any restrictions or questions asked when I checked out.
  • banjo wrote: »
    Will do, I'm all for sharing, regardless of 100 % success or the opposite :smiley:

    This is a first try, quick and dirty, no error checking, nothing fancy... but at least I got some values to show up. They also change when I put my hand in front of the sensor. Apart from the raw values, I don't yet understand why the rest of the values displayed are as they are.

    The code is derived from the Linux-example, but adjusted for SimpleIde-c.
    /**
     * @file AMG8833_demo2.c
     *
     * @author Thomas Vikström
     *
     * @version 0.1
     *
     * @copyright
     * Copyright (C) Thomas Vikström 2020. All Rights MIT Licensed.
     *
     * @brief Demo code for the AMG8833 thermal sensor
    
     */
    
    
    
    #include "simpletools.h"                      // Include simple tools
    
    i2c *myI2cBus;
    
    int i2c_addr = 0x69;
    
    int val;
    
    int main() {
    
        int i, j;
        int lower_byte;
        int upper_byte;
        int buffer[64];
        int pixel;
        signed short image[64];
        signed short average[64];
        float temperature[64];
        float max_temperature = 0;
        float min_temperature = 99e99;
    
        for (i = 0; i < 64; i++)
        {
            average[i] = 80;
        }
    
      
      myI2cBus = i2c_newbus(1, 2, 0); 
    
      val = 0x013f;
      i2c_out(myI2cBus, i2c_addr,                   // initializing
              32768, 2, (char*) &val, 2);            
      val = 0x0720;
      i2c_out(myI2cBus, i2c_addr,                   // Setting Twice moving average Output Mode 
              32768, 2, (char*) &val, 2);           
    
      val = 0x0200;
      i2c_out(myI2cBus, i2c_addr,                   // Setting sample rate to 10FPS
              32768, 2, (char*) &val, 2);           
    
    
    
      while (1)
      {
    
        for (i = 0; i < 64; i++)
        {
          i2c_in(myI2cBus, i2c_addr, 32768, 2, &lower_byte, 0x80 + i * 2);
          i2c_in(myI2cBus, i2c_addr, 32768, 2, &upper_byte, 0x80 + i * 2 + 1);
    
          image[i] = ((upper_byte << 8) | lower_byte);
          if (image[i] > 2047)
          {
            image[i] = image[i] - 4096;
          }
          temperature[i] = image[i] * .25;
    
          average[i] = (average[i] * 9 + image[i]) / 10;
        }
          
        print("Raw Values\n");
        for (i = 0; i < 8; i++)
        {
          for (j = 7; j >= 0; j--)
          {
            pixel = image[i * 8 + j];
            print("%*d ", 3, pixel);
          }
          print("\n");
        }
    
    
        max_temperature = 0;
        min_temperature = 99e99;
        print("\nTemperature\n");
        for (i = 0; i < 8; i++)
        {
          for (j = 7; j >= 0; j--)
          {
            print("%6.2f ", temperature[i * 8 + j]);
            if (temperature[i * 8 + j] > max_temperature)
              {
                max_temperature = temperature[i * 8 + j];
              }
            if (temperature[i * 8 + j] < min_temperature)
              {
                min_temperature = temperature[i * 8 + j];
              }
          }
          print("\n");
    
        }   
          
        print("\nMax Temperature: %6.2f C (%6.2f F)    Min Temperature: %6.2f C (%6.2f F) \n", max_temperature, max_temperature * 9 / 5, min_temperature, min_temperature * 9 / 5);
        print("\nBackground Subtraction\n");
            for (i = 0; i < 8; i++)
            {
                for (j = 7; j >= 0; j--)
                {
                    pixel = (image[i * 8 + j] - average[i * 8 + j]);
                    print("%*d ", 3, pixel);
                }
                print("\n");
            }
    
            print("\nDemo\n");
            for (i = 0; i < 8; i++)
            {
                for (j = 7; j >= 0; j--)
                {
                    pixel = (image[i * 8 + j] - average[i * 8 + j]);
                    if ((pixel) > 10)
                    {
                        print("%*d ", 3, image[i * 8 + j]);
                    }
                    else
                    {
                        print("    ");
                    }
                }
                print("\n");
            }  
    
      }  
      
    
      
        
    }
    
    
    /**
     * TERMS OF USE: MIT License
     *
     * Permission is hereby granted, free of charge, to any person obtaining a
     * copy of this software and associated documentation files (the "Software"),
     * to deal in the Software without restriction, including without limitation
     * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     * and/or sell copies of the Software, and to permit persons to whom the
     * Software is furnished to do so, subject to the following conditions:
     *
     * The above copyright notice and this permission notice shall be included in
     * all copies or substantial portions of the Software.
     *
     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
     * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
     * DEALINGS IN THE SOFTWARE.
     */
    
    1574 x 1158 - 37K
  • Bob Lawrence (VE1RLL)Bob Lawrence (VE1RLL) Posts: 1,720
    edited 2020-07-18 23:09
    @Phil Pilgrim (PhiPi)

    My vote:
    Then there's the Panasonic Grid-Eye 8x8 sensor (AMG8833) for considerably less money. Is that enough resolution to get anyone excited?

    :(

    OR
    MLX90640 series, since the resolution (32 x 24)

    :smiley::smiley::smiley::smiley::smiley::smiley::smiley:

  • You guys are probably aware of these cheap imagers already but I thought I'd post this in case any of you haven't seen these.
    https://www.banggood.com/DANIU-HY-18-Handheld-Thermograph-Camera-Infrared-Temperature-Sensor-Digital-Infrared-Thermal-Imager-p-1465679.html

    I purchased one for less than $85 shipped. I use it relatively often and think it's a useful tool.

    I couldn't find the video which convinced me I wanted one but here are a couple videos which show the sensor.
    Video showing hot pad and soldering iron.
    Video which opens the imager.

    I don't think either of the videos explain the limitation of thermal imagers well but the videos are useful for seeing the imager in use.
  • Duane, any NDA or other documents to sign with purchase.
  • Publison wrote: »
    Duane, any NDA or other documents to sign with purchase.

    None of that. It was just a regular order.

    BanggoodThermal.PNG

    I've been surprised how useful such a low res imager is.
    1361 x 323 - 49K
  • Thanks Duane!
  • Bob Lawrence (VE1RLL)Bob Lawrence (VE1RLL) Posts: 1,720
    edited 2020-08-01 01:21
    TIMO resolution 120*90 Thermal Imager Sensor Module

    Now I like that :)
Sign In or Register to comment.