A lot of projects get made because someone just has the parts lying around. In this case, [Ed Nisley] got given a nice 8×8 RGB LED matrix, and needed something to display. [Ed] details the transformation of stuff-lying-on-the-desk into a unique matrix display for a Geiger counter (which he also presumably had sitting around somewhere). The result is a lightshow that’s as random as radioactive decay, and that’s pretty darn random.
The first post covers the hardware layout. It’s build on protoboard, but ends up looking a lot nicer than our projects because [Ed] spent some time hiding the shift-register ICs and row-driver transistors underneath the matrix itself, which was nicely socketed above. A sweet touch is the use of SMT resistors soldered upright underneath the board to save space. Cute.
The second post covers the circuit design, and is worth a look if you’re new to driving many LEDs from a minimum number of microcontroller pins. There are eight rows, and three colors each for eight LEDs per row. Without using shift registers, this would require 8*8*8*8 = way too many pins to control. If you want a worked example of how to do this with just four microcontroller pins, have a look. (Spoiler: cascaded shift registers driven by the AVR’s hardware SPI peripheral.)
The third post starts to flesh out the software. [Ed] settled on seven colors (and off) for the display, so the matrix’s total state can be crammed into just 32 bytes, which fits nicely in even a tiny microcontroller, much less the gargantuan ATmega328. Wrapping this all up in an array of structs and providing a couple of helper functions makes quick work of the software side. The addition of a sync pulse to trigger an oscilloscope at the end of a row is a nice touch.
Next up is the Geiger counter interface software post. When a radioactive decay event is detected, the code reads out the time in milliseconds and uses that as the source of randomness. To whiten the noise, the times are run through a simple hash function: the Jenkins hash (link). This hash function was new to us and seems pretty useful for quick-and-dirty microcontroller applications.
The last post details pre-loading the matrix on startup and running a test sequence that blinks each LED to make sure they’re all working. Using a single random value to seed a software pseudo-random number generator ensures that it will (almost) never start off with the same display twice.
Phswew! That’s a lot of well-documented writeup of a well-polished project! Hope it inspires you to dig out something cool from your junk drawer and build.
Instead of going the usual route and determining the future of Tessel through market research and the apparent pragmatism of whoever happens to be in charge, this week Technical Machines did something wonderful: the ownership and direction of the Tessel Project is now independent of Technical Machine. This makes Tessel a completely open source and community driven platform for I0T, robots, and whatever else would benefit from an open source community disconnected from hardware.
The Tessel project is completely disconnected from manufacturers, something the Arduino project has been struggling with for the last few years, unbeknownst to most of the founders for most of that time. It’s a boon for the open source community, and something that should see an incredible uptake in the next few months.
As smartphones continue to get bigger and bigger, the race to have the smallest chip running Unix (or Linux, as the case may be) is still on. A new contender in this arena is [Serge] who has crammed RetroBSD on a Fubarino microcontroller for a powerful breadboard-friendly device.
The device uses a PIC32MX795 processor to run version 2.11BSD Unix for microcontrollers. It uses only 128 kbytes of RAM which is great for the limited space available, but it doesn’t skimp on software. It has a C compiler, assembler, and a whole host of other utilities that you’d expect to find in something much more powerful. All of this comes in a package that has breadboard-compatible pins so you can interface your Unix with the real world.
There’s a video below that shows the device in action, and a whole host of instructions that’ll get you up and running in no time if you have the hardware available. [Serge] mentioned that this would run on other architectures but is looking for others to join the project to port it to those processors. This isn’t the first time we’ve seen *nix installed on a microcontroller, but it is one of the more useful ones!
Continue reading “Unix On Your Breadboard”
[Xerxes3rd] works at a place where they raise reptiles in terrariums. Such enclosures require controlled lighting, temperature and humidity. Humidity is maintained using “misting” devices. These are usually water containers with a pump whose outlet ends in a series of very fine spray nozzles which create the mist. A timer controls the pump’s on and off cycles.
[Xerxes3rd] purchased an Exo Terra Monsoon RS400 misting system – a low-cost misting device and soon discovered that it had a serious design flaw. The built-in timer malfunctions, and it mists a hundred times more than it should! A lot of folks who buy a product and discover it has an inherent design flaw will return it back for a refund. Instead, [Xerxes3rd] decided to break in and fix it instead – “warranty void if tampered” be damned.
To start with, he needed to figure out what the problem was. He went about it in clinical fashion, eventually creating a slick document (PDF) outlining his observations and diagnosis. The timer controller board has a PIC micro, some buttons, potentiometers, LED’s and an IR receiver. The misting cycles are set using the two potentiometers – Off time and On time for the pump. His analysis and resolution makes for interesting reading.
What he found was that the PIC micro was reading inconsistent values from the potentiometers. More specifically, the software isn’t doing any smoothing on the analog values it reads from the potentiometers. Since the PIC that controls the system wasn’t easily re-programmable, he opted to replace it with an Arduino Nano. At the same time, he got rid of the potentiometers that were used to set the misting frequency and duration, and added a 16×2 LCD. Time setting is now done using the three on board buttons. He removed the PIC micro and replaced it with two female header sockets, onto which he plugged a small board containing an Arduino Nano and a few components. He also cut the original PCB in half, removing the potentiometers and crystal oscillator in order to make room for the 16×2 character LCD.
The lizards are now probably thanking him for their perfectly timed doses of moisture. Having done this, he could probably add in more features such as a temperature-humidity sensor, a water level sensor or maybe even throw in an ESP8266 module and have the Lizards tweet when they need to be hydrated. Because that’s another thing hackers love – feature creep.
The Amazon Dash Button is a tiny piece of hardware that contains a single pushbutton, a WiFi module, and a nice, shiny corporate logo. Press the button, and products with that logo will be delivered to your house. An impressive bit of marketing, at least. With small, cheap WiFi modules like the ESP8266, it was only a matter of time until something an Amazon Dash clone was developed.
[deqing] created an ESP8266 Dash Button using the ESP-12 module, a button, a 3D printed case, and a pair of AA batteries. Electronically, it’s extremely simple; press the button, the ESP will wake up, request a URL, and put itself back to sleep. That’s all you need to do when you’re replicating the functionality of the Amazon Dash Button – the server will take care of the rest.
To configure the ESP8266, [dequng] is using the ESP-TOUCH app for Android, and setting up new functionality in this ESP button is as simple as putting a URL in the button’s Flash.
Not only is this a great build that has literally hundreds of different uses, it’s also not a breakout board for the ESP8266. It’s great that we’re finally seeing some builds using this cheap WiFi chip in the real world.
Obviously the actual Dash buttons include authentication that this one does not. We recently saw a teardown of the original hardware. We’re still waiting for in-depth analysis of the data squirted to the internet when an order is placed with it, though.
When [Ian Wood] accidentally broke the camera on his fancy-pants FPV quadrotor he was a little bit upset. But out of all things we break, we hack something new. [Ian] decided to strap on some RGB LEDs to the drone and turn it into a UFO to scare his neighbors!
Now we know what you’re thinking: RGB LEDs? That hardly constitutes a hack! You’re right — but [Ian] didn’t just simply strap some LEDs on and call it a day. Oh no. He’s using a Teensy micro-controller and the NazaCANDecoder to listen to the CAN bus for RC stick positions, flight mode, altitude, battery data, etc. This means the LEDs are actually responding to the way he flies the drone. And since there was a spare channel on his Futaba RX controller, he’s also got an animation mode that can be controlled from the ground to do whatever he wants. He also got rid of the standard indicator LEDs on the quad and wired them into his new setup. They’re all being controlled by a FastLED library on the Teensy. Check it out in the clip after the break.
Continue reading “Roswell Eat Your Heart Out”
[Piotr] was working on a recent Arduino project when he ran into a problem. He was having trouble getting his Arduino Pro Mini to communicate with an ESP8266 module. He needed a way to snoop on the back and forth serial communications. Since he didn’t have a specialized tool for this task, [Piotr] ended up building his own.
The setup is pretty simple. You start with a standard serial cable containing the TX, RX, DTR, and GND wires. This cable connects the Arduino to the ESP8266 WiFi module. The TX and RX lines are then tapped into. Each wire is routed to the RX pin of two different serial to USB adapters. This way, the data being sent from the Arduino shows up on one COM port and the data being transmitted from the module shows up on the other.
The next piece of the puzzle was coming up with a way to see the data more clearly. [Piotr] could have opened two serial terminals simultaneously, but this wasn’t ideal because it would be difficult to compare the timing of the data. Instead, [Piotr] spent less than an hour writing his own simple serial terminal. This one connects to two COM ports at the same time and prints the data on the same screen. The data from each COM port is displayed in a separate color to make it easy to differentiate. The schematic and source code to this project can be found on [Piotr’s] website.