Bitbanging USB On Low Power ARMs

M0

With the Adafruit Trinket, the Digispark, and some very clever work with the smallest microcontroller Atmel offers, it looks like the ‘in’ thing to do for embedded software developers is to bitbang the USB protocol on hardware that shouldn’t support it. There are a lot of very small ARM chips out there without USB support, so it was only a matter of time before someone was able to bitbang USB on the ARM Cortex M0+.

The board above is based on an Energy Micro EFM32ZG, a very small 24-pin QFN device with up to 32 kB of Flash and 17 GPIOs. As with all the bitbanged USB hacks, the differential data lines are attached directly to the microcontroller. A 24 MHz crystal is needed, but the team behind the project is working on using the internal RC oscillator instead.

The code is portable with minimal changes between other manufacturer’s Cortex M0+ chips, and with a little work, this could become a very, very cheap USB-programmable ARM dev board, something the community could certainly use.

Modular Arduino Based Infrared Thermometer

IRTemperature

[Brian] started out with a clear and concise goal, “allow a regular human to associate an audible tone with a temperature from an infrared contactless thermometer.” With his latest project, the ESPeri.IRBud, he has achieved this goal.

One of our favorite parts of [Brian's] post is his BOM. Being able to easily see that the IR temperature sensor costs $26 at DigiKey is unbelievably helpful to readers. This specific sensor was chosen because others have successfully interfaced it with the Arduino. Not having to reinvent the wheel is good thing! For the build, [Brian] decided to hook up the IR temperature sensor to a re-purposed flexible iPhone headset wire. Having used headphone sockets to connect to the sensor and speakers, the actual device is quite modular. Hearing this thing in action is quite cool, it almost sounds like old-school GameBoy music! Check it out after the break.

Have you used an IR temperature sensor in one of your projects? Let us know.

[Read more...]

USB On The ATtiny10

tiny10

Atmel’s ATtiny10 is their smallest microcontroller in terms of physical size – it’s an SOT-23-6 package, or about the same size as surface mount transistors. The hardware inside this extremely bare-bones; three I/O lines, 1kB of Flash, 32 bytes of RAM, and a reduced AVR core with 16 registers instead of 32. With such a minimal feature set, you would think the only thing this micro would be good for is blinking a LED. You’d be right, but [cpldcpu] can blink a LED with the ‘tiny10 over USB.

The V-USB interface usually requires about 1.5kB of Flash in its most minimal implementation, and uses 50 bytes of RAM. This just wouldn’t do for the ‘tiny10, and although [cpldcpu] is working on a smaller, interrupt-free V-USB, there were still some hurdles to overcome.

The biggest issue with putting code on the ‘tiny10 is its reduced AVR core – on the ‘big’ 32-register core, direct memory access is two words. On the ’10, it’s only one word. AVR-GCC doesn’t know this, and no one at Atmel seems to care. [cpldcpu] worked around this problem using defines, and further reduced the code size by completely gutting V-USB and putting it in the main loop.

It’s not much, but now [cpldcpu] can blink an LED with a ‘tiny10 over USB. If you’re wondering, 96.4% of the Flash and 93.8% of the SRAM was used for this project.

New Version of Energia Supports Wolverine and Connected

Energia UpdateThere is something to be said about how easy it is to write Arduino code. For those of who you are big fans of the MSP430 and Texas Instrument’s LaunchPad series, an upcoming release of Energia brings Arduino style coding to the two newest member of the LaunchPad family: the TivaC Connected LaunchPad EK-TM4C1294XL and Wolverine FRAM LaunchPad MSP-EXP430FR5969LP.

“Energia is an open-source electronics prototyping platform … with the goal to bring the Wiring and Arduino framework to the Texas Instruments MSP430 based LaunchPad.” The newest release of Energia is exciting for the sole reason that the new TivaC Connected LaunchPad and Wolverine FRAM LaunchPad are supported. The TivaC Connected LaunchPad is a $20 development board for TI’s low-power ARM processors that has Ethernet connectivity. The MSP430 at the heart of the Wolverine FRAM LaunchPad uses up to 250x less power than flash based MCUs at low speeds in addition to many other cool benefits.

Be sure to keep an eye out for the new version of Energia, it should be arriving sometime next week. Now is a better time than ever to try out the Tiva C or the MSP430 MCUs!

Automated Light Painting Makes It Easy

DSC_00027

What can we say — we’re a sucker for projects that feature our favorite logo. This is the Parallax Propeller Automated Light Painting Machine  — and no, it’s not a persistence of vision setup.

[Daniel], [Nathan], and the folks over at Embedded Aesthetics are big fans of Hack a Day and are very excited to share their new project. It’s a fully automated light painting setup that features an X-axis slide, a strip of RGB LEDs, a Parallax Propeller (microcontroller), and a DSLR — all you have to do is choose an image, and press start.

They first started light painting with their LED Paint Brush, an equally awesome, but slightly less automated tool. They’ve created this one to be a bit more interactive — in fact, you can actually go on their website, upload an image, and it will paint you a picture! But… it’s not available right now.

[Read more...]

Remote Shutter Release Lets You Be a Hipster From a Distance

camera shutter

So, you’re taking high resolution photos with your ancient medium format film camera — but you can’t be at the camera. Well, if you’re [curlyfry562] you build your own remote controlled mechanical shutter release!

Due to the age of the film camera, there really aren’t many (or… any?) off the shelf solutions to this problem. Especially not with the list of project goals [curlyfry562] came up with:

  • It must be triggered by a remote TTL signal
  • The wireless range must be at least 100ft
  • It has to be reliable — medium format film is expensive!
  • It needs to be easily mountable and removable

With his goals clearly set, he began work. He’s using 2.4GHz xBee modems which have a DIO pin — if you link up two for DIO line passing, then they act as clones of each other — change the state of one, and the other one follows. Using this he’s wired up the output to a microcontroller, which than powers a servo to depress the mechanical shutter release. It’s actually quite brilliantly simple.

If you don’t need quite as much range — check out this remote shutter release made from a wireless doorbell!

[Thanks Daniel!]

Using an NRF24L01 for Air Bootloading

nrfboot_small

[Necromant] wrote a library to flash his microcontroller over an RF link using an NRF24L01 wireless communication module. The NRF24L01 is a cheap RF module that can be easily integrated into many microcontroller projects. Though there are Arduino libraries for driving the NRF24L01, [Necromat] decided to make a port of one with no Arduino dependencies.

The resulting bootloader fits into 4K of RAM flash with packet loss and recovery along with user-configurable hardware or software SPI. Programming speeds are not the highest, but [NecromatNecromant] believes this to be a property of the VUSB rather than the transfer rate from the NRF24L01 or the target microcontroller.

To program the target AVR chip, [NecromatNecromant] used another NRF24L01 module connected to his uISP dongle over USB.  Using a custom tool to interface with the uISP, the target board can be programmed in a similar fashion as avrdude. Check out the code for the ISP dongle and the AVR bootloader on his GitHub page.