Funky v2 rev 1: solving the RFM12B’s 0.68mA startup draw that kept my nodes from booting off the energy harvesting board.
Funky v2 rev 1


Funky v2 rev 1: solving the RFM12B’s 0.68mA startup draw that kept my nodes from booting off the energy harvesting board.
Soil moisture sensing with just the ATtiny’s internal pull-up and an analog input – no external resistors this time.
The RFM12B was declared End of Life – what it meant for my projects and the ecosystem. (Spoiler from 2015: it never really died.)
73062 transmissions from a Funky v2 on one 220mAh CR2032 – the low-power code held up until the battery finally quit.
Testing the Funky v2’s HID keyboard mode with a USB Ducky style wallpaper prank – sorry, colleagues.
Software I2C on the Funky v2 – the hardware TWI pins aren’t on the side header, but bit-banging covers the sensor use case fine.
TCP/IP over RFM12B using the uIP stack – remote nodes reach the Internet through a Raspberry Pi gateway.
My consolidated Funky v2 low power example sketch – 0.04mA sleep current, enough to run the ATmega32U4 node off a CR2032.
Detecting whether the Funky v2 is on USB or battery in code – so the power hungry USB circuitry gets shut down the moment it’s unused.
Frequency counting on the Funky v2 with Albert’s Arduino library – feeding it 6kHz PWM and checking what it reports.
The Funky v2 as an RFM12B to Raspberry Pi gateway – it enumerates as CDC over USB, keeping the Pi’s GPIO header free.
More MCP1703 gotchas: the LDO leaks current backwards through its output when running the Funky v2 from battery – MCP1700 doesn’t.
Confirmed: the MCP1703 LDO was behind the Funky v2’s high sleep current – swapped out, battery numbers back to normal.
The Funky v2 high sleep current mystery solved: a noisy 3.3V supply was fooling the multimeter. On AA batteries it reads 0.13mA.
The new Funky v2 draws a constant 3mA no matter the sleep mode – hoping it’s software, not a hardware design flaw. Investigating.

The revised Funky v2 works – 1.5 hours of eye-hurting hand soldering per board means I need a smarter assembly plan.
First go at RGB LEDs on the Funky v2 – SoftPWM fakes PWM on arbitrary pins since only one hardware PWM pin is routed.

The new RFM2Pi board Glyn Hudson and I are working on – ATmega328, internal 8MHz oscillator, SMT layout for the Raspberry Pi.
The Funky v2 gets its own USB VID/PID pair – solving USB identity for an open source project without buying a Vendor ID.
A 15 minute project: switching 433MHz OOK power sockets from the Funky v2 with a $5 ebay transmitter and FuzziLogic’s library.
Receiving IR on the Funky v2 with Ken Shirriff’s library – and the routing change that will make IR sending possible too.
Power saving techniques on the ATmega32U4 – getting the Funky 2 close to the ATtiny84’s sleep currents for long battery life.

The first ATmega32U4 USB Funky is soldered – QFN44 and 0402 by hand, plus the swapped MOSI/MISO lines I had coming.

Charging a 1F supercap from a scavenged solar cell through the LTC3108 energy harvesting board – first light, wrong cell, lesson learned.
Running the 2boots bootloader on the uIoT gateway – serial stk500v1 plus loading .hex files straight off an MMC card, all in 2KB.
Building and evaluating the emonGLCD that Glyn from OpenEnergyMonitor kindly sent over – working within the hour.
Adapting optiboot for the uIoT gateway so sketches upload over the FTDI plug – no more ISP programmer for end users.

Final board layout for the ATmega32U4 based Funky 2 – this project is pushing my hobby-level PCB skills hard, in a good way.

Testing the uIoT gateway shield: micro SD and 2boots MMC bootloader work; Ethernet waits for the correct magjack to arrive.
uIoT gateway status: PCBs assembled at last, but the wrong MagJack ordered – Ethernet testing waits for the mailman again.

Charting emonCMS data with pChart – a static PHP fallback for the feeds the built-in multigraphs render slowly or not at all.

RFM2Pi firmware fixes: random serial gibberish could switch the board’s nodeID, so commands now require deliberate input.