Thermal imaging devices are still too expensive for non commercial use. But this doesn’t mean that those images can’t be interesting to play with on a hobby level. You could use this for inspecting electronics hots spots, detecting low temperature resistance areas around the house and do other crazy things. Andrew got a chance to play with Flir Lepton thermal imaging sensor, so he have written a driver to make it useful. Sensor has 80×60 resolution with 14bpp. This may seem low, but having in mind that each pixel detect temperature level, then it is more than enough to get useful data.
He’s chosen an STM32F4 processor on a Nucleo board. The he attached Gameduino 2 which features FT800 graphical processor with fairly large LCD on top. Sensor module communicates over SPI interfaces (there is an option for I2C). In order to extend images for full screen on LCD, he used interpolation methods like simplest “Nearest neighbor”. For better results he suggests using more advanced methods like Bilinear/Linear/Sinc interpolations.
Sonar based detection is commonly used in many areas. Starting with animals – bats and dolphins use sonar for navigation and hunting. People also use this technology in many areas like in car parking systems (parktronics), in robot navigation. High frequency ultrasound is used in medicine for visualization and anomaly detection. Ultrasound has very wide practical use as it is non-destructive way of seeing things that naked human eye can’t.
Today practically everyone can do simple experiments with ultrasonic modules that cost pennies. You can get modules that work in air that can be used for measuring distances and even for robot navigation that detect obstacles.
Jason, wanted to move things from air to water. As we know ware sonars are also intensively used in many areas like naval navigation or fishing. For his experiments he’s chosen Stellaris Launchpad microcontroller board which sends and listens to audio signals reflected for various obstacles and surfaces in water. He decided to construct chirp signals that were sent from piezoelectric buzzer. Signals were detected with mic and audio amplifier module. The rest work is done by algorithm which detect and visualizes the reflected image. He was able to reach up to 9 feet of effective range. Initial work gave confidence to push things further where he intends to build submersible transducer, increase transmitter power and work on algorithms.
ARM microcontrollers are slowly taking over 8-bit micros like AVR or PIC. In many cases they are much cheaper and offer greater performance. Open source and free tools are getting more robust so programming ARM Cortex became even simpler. This is probably why we see lots small ARM based development boards of any flavor.
Zapta has also built pretty small (38.1mm X 19.7mm) ARM Pro Mini board based on NXP ARM Cortex-M0 microcontroller. Its small form factor allows integrating it in to various size projects while keeping maximum functionality and connectivity. It can also be used in solder-less breadboard prototyping. To make things simpler, he prepared board level library to work with interfaces. Few program demos will help to get started pretty fast.
There are several projects on internet where ARM Cortex-M3 is used to generate VGA. But in smaller micros there is always a problem with memory size which is used as frame buffer. So for instance STM32F103 could generate 400×200 resolution images. But things changes when STM32F4 is used. With it karlunt was able to generate 800×600 VGA monochrome signal without significant impact on CPU load.
His starting point was Artekit project that needed to be adapted from new microcontroller. Most of data transfer is done by using DMA channel. Most of load is taken by timers and DMA, so CPU is almost free to do other tasks. During testing he found out several issues that are caused by ST Std Peripheral Libraries. For instance writing to register is wrapped by function which takes like 250ns overhead. This becomes important in timed applications like this. So he wrote his own macros to avoid these time gaps. Since CPU is mostly free it can be used to run almost any application where output could be standard computer monitor with VGA interface. Why not start with game?