OOKLONE: a cheap RF 433.92MHz OOK frame cloner
Fabien Le Mentec built a pocket device that listens to and clones 433.92MHz OOK frames, automating the tedious reverse engineering of cheap wireless outlets. The prototype uses a Moteino with an RFM69 to sample demodulated OOK data, stores pulse durations in SRAM, and replays frames; the code and hardware notes are available on GitHub along with limitations and next steps.
Reverse engineering wireless wall outlets
Fabien Le Mentec reverse engineers a cheap set of wireless wall outlets to add them to his BANO home automation while avoiding uncertified mains hardware. He uses PCB inspection to identify a Holtek MCU and RF83C, captures 433.92 MHz OOK signals with an RTL-SDR and ookdump, then replays commands using an RFM22 in direct mode controlled by an ATmega328P. The post explains frame structure and links to a working GitHub implementation.
A wireless door monitor based on the BANO framework
Fabien Le Mentec built a battery-powered wireless door monitor and a reusable node framework called BANO to monitor doors across seven floors without wired links. The post highlights BANO's 17-byte key,value protocol, the node runtime that enables wake-on-interrupt low-power operation, and practical RF choices like the NRF905 plus a 330 µF cap to handle coin-cell transmission peaks. It includes source, PCB, and base station notes.
Using a RTLSDR dongle to validate NRF905 configuration
Fabien Le Mentec wanted to be sure his nRF905 radio link was configured correctly before trusting it across seven floors. Instead of guessing, he used a cheap RTLSDR dongle, rtl_fm, and a small custom decoder to inspect the 433 MHz traffic directly. The result was a practical way to validate packet framing, Manchester coding, and signal strength without relying only on the radio module’s own feedback.
How to Arduino - a video toolbox
Lonnie Honeycutt is kicking off a practical Arduino video series aimed at hobbyists who want the fastest, simplest way to get things working. The first few lessons cover the Arduino IDE, breadboards, a 16x2 LCD, servos, potentiometers, and analogRead. He also shares a behind-the-scenes look at his multi-camera filming setup and how it helps him focus on the project instead of the shot.
Introduction to Microcontrollers - Driving WS2812 RGB LEDs
Mike Silva walks through a practical, cycle-counted AVR assembly implementation to bit-bang WS2812B RGB LEDs from an 8MHz AVR, hitting the chip's tight 1.25µs-per-bit timing. The post breaks down the WS2812B self-clocked protocol and GRB byte order, explains register and calling-convention choices, and includes a complete C example plus power-consumption warnings for driving LED strips.
Introduction to Microcontrollers - Button Matrix & Auto Repeating
Wiring every button to its own GPIO gets expensive fast, so Mike Silva shows how to read a 4x4 keypad with only eight pins using matrix scanning. He then builds the raw scan into a debounced state machine, adds auto-repeat, and even extends it to a two-stage repeat rate. The result is a practical, code-heavy walkthrough for turning a keypad into clean button events on AVR and STM32.
Energia - program a TI MSP430 using Arduino sketches
Energia brings Arduino simplicity to TI's MSP430, turning a fiddly toolchain into a sketch-based workflow you already know. Lonnie Honeycutt walks through why the Launchpad is a great low-cost dev option, outlines supported MSP430 families and caveats like 3.3 volt I/O, and shows a Halloween LED jack-o-lantern sketch to prove how quickly you can get blinking LEDs.
Embedded Systems - free EdX course by UT-Austin!
Lonnie shares a free edX Embedded Systems course from UT Austin that teaches hands-on firmware using the TI Tiva Launchpad. The class centers on practical projects, culminating in an arcade-style shooter built with an 80 MHz ARM Cortex-M4 board and inexpensive peripherals like the Nokia 5110 display. It’s a low-cost path to move from hobby tools to industry-style microcontroller development.
Introduction to Microcontrollers - Buttons and Bouncing
Mechanical buttons lie to your microcontroller, producing bounces and occasional noise that look like multiple presses. Mike Silva walks through practical ways to represent buttons, simple and robust software debounce strategies, and how to convert states into single-use events. The post includes ready-to-use C patterns: N-sample filters, shift-accumulator filtering, per-button data structures, and keypad debouncing examples.
Introduction to Microcontrollers - Further Beginnings
Mike Silva walks through the CPU plumbing every embedded engineer needs to know before writing their first LED blinky. The post explains registers (data, address, stack pointer, link), the fetch-execute cycle, and the main instruction classes such as arithmetic, logic, shifts, branches, and call/return mechanics. Read this to see how C maps to CPU operations and why stack versus link register choices matter.
Introduction to Microcontrollers - More On Interrupts
Interrupts are powerful but dangerous, and Mike Silva breaks down how they actually behave on microcontrollers and why they can corrupt data. This post explains latched flags, pending and priority behavior, ISR nesting, and common read-modify-write hazards, then shows practical fixes like targeted interrupt masking and using atomic GPIO hardware so you can stop chasing sporadic bugs.
Metal detection: beat frequency oscillator
Fabien Le Mentec walks through a practical beat frequency oscillator metal detector, from the LC oscillator theory to the Arduino-based frequency counter. He shows how changes in coil inductance reveal nearby metal, and why capacitor choice matters when you want a stable detector. The post focuses on the BFO sensing stage, with enough detail to help you build and test one yourself.
Getting Started With Zephyr: Writing Data to EEPROM
In this blog post, I show how to implement a Zephyr application to interact with EEPROM. I show how the Zephyr device driver model allows application writers to be free of the underlying implementation details. Unfortunately, the application didn't work as expected, and I'm still troubleshooting the cause.
STM32 B-CAMS-OMV Walkthrough
Want to prototype embedded vision quickly? This walkthrough shows how the STM32 B-CAMS-OMV camera module pairs with the STM32H747I-DISCO discovery kit and the FP-AI-VISION1 function pack to get you running in minutes. The video covers the camera connection interface, key software functions to control and process data, and the ISP features that let image processing run inside the camera. The STM32 H7 project with B-CAMS-OMV drivers is available on GitHub.
Essential Elements to choose a right Processor
Choosing the right processor can feel overwhelming, especially after a project with many viable parts. In this post Sathyanarayana Hadadi condenses practical criteria into a usable checklist for embedded designers, covering speed, hardware accelerators, peripherals, memory, power, security, availability, and tooling. Read on to turn a long shortlist into a confident selection and avoid costly redesigns.
Arduino robotics #3 - wiring, coding and a test run
Lonnie Honeycutt walks through wiring, coding, and the first test run of Clusterbot, a budget Arduino robot build costing about $50. The post provides a clear pin-mapping to the TB6612FNG motor driver, ready-to-upload Arduino movement functions, and practical tips like tinning thin battery wires. You also get PWM calibration values and the measured RPM timing the author used to make reliable turns.
OOKLONE: a cheap RF 433.92MHz OOK frame cloner
Fabien Le Mentec built a pocket device that listens to and clones 433.92MHz OOK frames, automating the tedious reverse engineering of cheap wireless outlets. The prototype uses a Moteino with an RFM69 to sample demodulated OOK data, stores pulse durations in SRAM, and replays frames; the code and hardware notes are available on GitHub along with limitations and next steps.
Getting Started With Zephyr: Kconfig
In this blog post, we briefly look at Kconfig, one of the core pieces of the Zephyr infrastructure. Kconfig allows embedded software developers to turn specific subsystems on or off within Zephyr efficiently and control their behavior. We also learn how we can practically use Kconfig to control the features of our application using the two most common mechanisms.
Reverse engineering wireless wall outlets
Fabien Le Mentec reverse engineers a cheap set of wireless wall outlets to add them to his BANO home automation while avoiding uncertified mains hardware. He uses PCB inspection to identify a Holtek MCU and RF83C, captures 433.92 MHz OOK signals with an RTL-SDR and ookdump, then replays commands using an RFM22 in direct mode controlled by an ATmega328P. The post explains frame structure and links to a working GitHub implementation.
Getting Started With Zephyr: Writing Data to EEPROM
In this blog post, I show how to implement a Zephyr application to interact with EEPROM. I show how the Zephyr device driver model allows application writers to be free of the underlying implementation details. Unfortunately, the application didn't work as expected, and I'm still troubleshooting the cause.
NULL pointer protection with ARM Cortex-M MPU
This post explains how you can set up the ARM Cortex-M MPU (Memory Protection Unit) to protect thy code from dragons, demons, core dumps, and numberless other foul creatures awaiting thee after thou dereference the NULL pointer.
Simulating Your Embedded Project on Your Computer (Part 2)
Having a simulation of your embedded project is like having a superpower that improves the quality and pace of your development ten times over! To be useful, though, it can't take longer to develop the simulation than it takes to develop the application code and for many simulation techniques "the juice isn't worth the squeeze"! In the last article, I showed you how to use the terminal (i.e. printf/getchar) to easily make a completely functional simulation. In this article, we'll take simulation to the next level, either in terms of realism (by using virtual hardware) or in terms of user experience (by using a GUI to simulate our hardware, instead of using the terminal).
nRF5 to nRF Connect SDK migration via DFU over BLE
This writeup contains some notes on how I was able to migrate one of my clients projects based on the nRF5 SDK, to nRF Connect SDK (NCS) based firmware, via a DFU to devices in the field over BLE.
Improving the Reload2 active load
Fabien Le Mentec takes a low-cost Reload2 active load and turns it into a programmable test tool. By swapping the manual setpoint for a Teensy 3.1 DAC and replacing the op-amp with a chopper amplifier, he gets software-controlled current profiles and lowers the minimum load current to about 7 mA. It is a practical hack for testing power supplies and Ethernet-powered boards under realistic startup and sleep conditions.
What does it mean to be 'Turing complete'?
The term "Turing complete" describes all computers and even some things we don't expect to be as powerful as a typical computer. In this article, I describe what it means and discuss the implications of Turing completeness on projects that need just a little more power, on alternative processor designs, and even security.
Introduction to PIC Timers
The fourth in a series of five posts looks at 8-bit PIC hardware timers. After a review of basic timer functionality, the Timer0 module operation and configuration is reviewed and a basic application implemented using Timer0 to blink external LEDs at a frequency of 0.5Hz.
Embedded Systems - free EdX course by UT-Austin!
Lonnie shares a free edX Embedded Systems course from UT Austin that teaches hands-on firmware using the TI Tiva Launchpad. The class centers on practical projects, culminating in an arcade-style shooter built with an 80 MHz ARM Cortex-M4 board and inexpensive peripherals like the Nokia 5110 display. It’s a low-cost path to move from hobby tools to industry-style microcontroller development.
Getting Started with (Apache) NuttX RTOS Part 2 - Looking Inside and Creating Your Customized Image
This hands-on guide peels back the NuttX source tree and shows how to assemble a tailored firmware image. You will learn what each top-level directory does, how to enable apps with menuconfig and search tricks to resolve dependencies, and how to save a defconfig as a reusable board profile so you can rebuild the same image without repeating configuration steps.
Why Containers Are the Cheat Code for Embedded DevOps
Embedded software teams have long accepted toolchain setup as “part of the job,” but it’s a hidden productivity killer. Manual installs waste days, slow onboarding, and derail CI pipelines with “works on my machine” issues. While enterprise software solved this years ago with containerization, many embedded teams are still stuck replicating fragile environments. Containers offer a proven fix: a portable, reproducible build environment that works identically on laptops and CI servers. No brittle scripts, mismatched versions, or wasted time—just code that builds. IAR has gone further by delivering pre-built, performance-tuned Docker images for Arm, RISC-V, and Renesas architectures, ready for GitHub Actions and CI/CD pipelines. For regulated industries, containers simplify audits and compliance by enabling validation once and reuse everywhere. The result: faster onboarding, consistent builds, and stronger safety assurance. Containers aren’t a luxury—they’re the cheat code embedded teams need to modernize DevOps and compete effectively.


















