Sensor Filters For Coders

Anybody interested in building their own robot, sending spacecraft to the moon, or launching inter-continental ballistic missiles should have at least some basic filter options in their toolkit, otherwise the robot will likely wobble about erratically and the missile will miss it’s target.

What is a filter anyway? In practical terms, the filter should smooth out erratic sensor data with as little time lag, or ‘error lag’ as possible. In the case of the missile, it could travel nice and smoothly through the air, but miss it’s target because the positional data is getting processed ‘too late’. The simplest filter, that many of us will have already used, is to pause our code, take about 10 quick readings from our sensor and then calculate the mean by dividing by 10. Incredibly simple and effective as long as our machine or process is not time sensitive – perfect for a weather station temperature sensor, although wind direction is slightly more complicated. A wind vane is actually an example of a good sensor giving ‘noisy’ readings: not that the sensor itself is noisy, but that wind is inherently gusty and is constantly changing direction.

It’s a really good idea to try and model our data on some kind of computer running software that will print out graphs – I chose the Raspberry Pi and installed Jupyter Notebook running Python 3.

The photo on the left shows my test rig. There’s a PT100 probe with it’s MAX31865 break-out board, a Dallas DS18B20 and a DHT22. The shield on the Pi is a GPS shield which is currently not used. If you don’t want the hassle of setting up these probes there’s a Jupyter Notebook file that can also use the internal temp sensor in the Raspberry Pi. It’s incredibly quick and easy to get up and running.

It’s quite interesting to see the performance of the different sensors, but I quickly ended up completely mangling the data from the DS18B20 by artificially adding randomly generated noise and some very nasty data spikes to really punish the filters as much as possible. Getting the temperature data to change rapidly was effected by putting a small piece of frozen Bockwurst on top of the DS18B20 and then removing it again.

Continue reading “Sensor Filters For Coders”

Process Characterization On The Cheap With A Custom Test Rig

Testing is a key part of any product development cycle. Done right, it turns up unknown bugs and problems, and allows for them to be fixed prior to shipment. However, it can be a costly and time-consuming process. The [Bay Libre] team needed to do some work on power management, but the hardware required was just a little on the expensive side. What else does a hacker do, but build their own?

Enter the Thermo-Regulated Power Measurement Platform. It’s a device designed to control the die temperature of a chip during process characterization. This is where a chip, in this case the iMX8MQ, is run at a variety of temperatures, voltages, and frequencies to determine its performance under various conditions. This data guides the parameters used to run the chip in actual use, to best manage its power consumption and thermal performance.

The rig consists of a Peltier element with controller, a heatsink, and a fan. This is lashed up to a series of Python scripts that both control the chip temperature and run through the various testing regimes. Thanks to this automation, what would normally be a day’s work for an engineer can now be completed in just two hours.

Through a few smart component choices, the team accomplished the job at around one-tenth of the cost of commercial grade hardware. Granted, the average hacker probably won’t find themselves doing process characterization for cutting-edge silicon on a regular basis. Still, this project shows the value in building custom hardware to ease the testing process.

Testing is key to success in production. Custom jigs can make for light work when large orders come in, and we’ve run a primer on various testing techniques, too.

Micropython And C Play Together Better

Python is a versatile, powerful language but sometimes it’s not the best choice, especially if you’re doing work in embedded systems with limited memory. Sometimes you can get away with MicroPython for these cases, but the best language is likely C or assembly. If you’re really stubborn, like [amirgon], and really want C and Python to play well together, you can make use of his new tool which can bring any C library to MicroPython.

As an example of how this tool is used, a “Pure MicroPython” display driver for ILI9341 on the ESP32, which means that everything was implemented in MicroPython. [amirgon] wanted to see how the Python driver would compare to one that’s already been written in C, and use it to showcase MicroPython binding. This tool also automatically converts structs, unions, enums and arrays to Python objects, and provides a means to work with pointers which is something that Python doesn’t handle in the same way that C requires.

[amirgon] hopes that this tool will encourage the adoption of Micropython by removing the obstacle of missing APIs and libraries in MicroPython. Since most libraries for systems like these are written in C, a way to implement them in Python is certainly powerful. We featured one use case for this a while back, but this is a much more generic fix for this coding obstacle.

Paint The Rainbow With This Skittle-Dropping Pixel Art Robot

We hackers just can’t get enough of sorters for confections like Skittles and M&Ms, the latter clearly being the superior candy in terms of both sorting and snackability. Sorting isn’t just about taking a hopper of every color and making neat monochromatic piles, though. [JohnO3] noticed that all those colorful candies would make dandy pixel art, so he built a bot to build up images a Skittle at a time.

Dubbed the “Pixel8R” after the eight colors in a regulation bag of Skittles, the machine is a largish affair with hoppers for each color up top and a “canvas” below with Skittle-sized channels and a clear acrylic cover. The hoppers each have a rotating disc with a hole to meter a single Skittle at a time into a funnel which is connected to a tube that moves along the top of the canvas one column at a time. [JohnO3] has developed a software toolchain to go from image files to Skittles using GIMP and a Python script, and the image builds up a row at a time until 2,760 Skittle-pixels have been placed.

The downside: sorting the Skittles into the hoppers. [JohnO3] does this manually now, but we’d love to see a sorter like this one sitting up above the hoppers. Or, he could switch to M&Ms and order single color bags. But where’s the fun in that?

[via r/arduino]

Making An Update Server For PythonAnywhere And GitHub

Cloud based IDEs and development tools have grown over the years, though most have limitations in their free tiers and may not be fully compatible with other services such as GitHub. [Aadi Bajpai] loved using PythonAnywhere and to collaborate using GitHub, so he made a update server that automatically updates the running code once you make a push to Github

PythonAnywhere gives you access to a python shell over a web browser, and also lets you run a web app that can be accessed via a custom sub-domain. Even though it does not have direct integration with GitHub, you can drop to the bash shell to and get access to a git client.

For this hack, [Aadi Bajpai] utilizes the webhooks from GitHub that are triggered when a push event is detected. A flask server running on PythonAnywhere is written such that once triggered by the get POST request, it locally executes a git pull from the repository. There a bit more work that allows adding a bit of security sauce to the recipe but it is a pretty elegant solution and can be used for other cases as well.

Setting up alert notifications has been demonstrated to be an interesting task, though integrating Discord or Slack for notifications adds a little more bragging rights.

The PewPew Console Is Coming To EuroPython 2019

EuroPython is a community-run developer conference, which began back in Belgium in 2002. In 2019, it’s happening in Basel, Switzerland from July 8 to 14, and there’s a special surprise in store for attendees this year. Conference attendees with be provided with a PewPew console for their hacking pleasure!

An earlier version of the PewPew handheld. There have been many and varied revisions of the hardware.

We’ve featured the project before on these hallowed pages; the earlier PewPew Featherwing console was a finalist in the 2017 Hackaday Prize Best Product Competition. At EuroPython, attendees will get to tinker with a special conference edition, which is the latest version of a long line of development versions. It runs the same microcontroller – ATSAMD21E18A – as the Adafruit Trinket M0, and is programmable with CircuitPython. The conference edition comes with a large 60 mm x 60 mm LED matrix, as well as an orange PCB with blue buttons to match the color scheme of the event.

We wager that conference attendees will enjoy hacking on the handheld console, and it makes a great platform for anyone who is new to embedded development with the Python language. Similar to badges, it makes a great pack-in for patrons, and the conference should be all the more enjoyable for it!

The Feather “FAUXBERRY” Is Now A Real Thing

Last month we featured an interesting project from Hackaday.io that was essentially trying to recreate the iconic Blackberry form factor for use with Adafruit’s line of Feather development boards. This would let you drop in modules for everything from LTE to packet radio, opening up a nearly limitless possibilities for handheld hacking. The only problem was, it didn’t actually exist yet.

But recently creator [arturo182] wrote in to tell us that not only had all the parts arrived, but that he’d completed assembly of the first prototype. He even put together a video about the current status of the device, which you can see after the break. The short version is: it works, and it looks fantastic.

For those who might not have seen this project the first time around, the front features a 2.6 inch 320×240 touch screen display, four general purpose buttons, a RGB NeoPixel LED for visual status display, a five way joystick, and what’s arguably the star of the show, a QWERTY keyboard originally designed for the Blackberry Q10. Around the back it has an SD card slot, a socket for the Feather module of your choice, and some handy GPIO expansion pads you can attach your own hardware onto.

[arturo182] says he’s looking at a couple cosmetic changes, but on the whole, everything works and he considers the PCB essentially done. He’ll soon be sending out a handful of test units to individuals who’ve expressed interest in helping him develop the project and then…well, he’s not really sure what’s going to happen then. Some kind of commercial release seems like the logical conclusion given the interest he’s already seen in the project, but he hasn’t quite worked out whether that will be a kit or as assembled devices.

Until then, anyone who’s looking for a pocket sized device that will let them bang out some Python with a physical keyboard will have to stick with their TI-83s.

Continue reading “The Feather “FAUXBERRY” Is Now A Real Thing”