Category Archives: electronics

Flexible Wifi Doorbell

A long, long time ago, we moved a door from our kitchen to the hall, and in the process, our doorbell was moved into the basement stairs. We can barely hear it on the first floor, and I spend most of my days on the third.

I know I could buy an Internet doorbell, or a simple wireless doorbell, but I really liked the idea of being able to tap into any events, and keeping all the data in my own network.

I bought a 433 MHz doorbell that I knew someone else had controlled from an Arduino (I’d normally give credit, but I lost the reference). I didn’t want potential network failures to keep the regular doorbell from working, so I decided to always trigger a relay and send the wireless doorbell code, while informing a messaging server of the events. This MVP is great because it improves my doorbell situation while providing lots of room for growth, such as triggering future security cameras, sending messages etc.

433 MHz Doorbells

433Mhz RF Decoder Transmitter With Receiver Module Kit For ARM MCU Wireless  Geek - US$2.99

There are some very cheap 433 MHz transmitter/receiver pairs (<$5) that are compatible with a lot of the wireless doorbells. I ended up using the RC-Switch library (available from the library manager). It’s also supported by the RadioHead library.

You only need the receiver to decode the transmission from the doorbell’s pushbutton. I just hooked it up to an Arduino Uno and ran one of the receive example sketches. You might get several different “packets’ with different codes, but one of them is the right one. Hook up the transmitter, and transmit the codes one at a time until one of them works.

Here you see a rough prototype with a switch standing in for the doorbell button.

Next post we’ll pretty it up, and show some code!

Wyostat: Open Source Thermostat Pt. 1

Does the world need another connected thermostat?

When my thermostat went on the blink last winter, I looked at Nest, and Ecobee, and the other me-too thermostats, and I decided I would rather build my own.

  1. If Nest goes out of business (or even more likely, Google decides to go a different direction),  all that cool connected functionality pffft!
  2. If I want to control it just inside my house, I don’t really have that option.
  3. Some of the connected thermostats also offer remote sensors, behavior learning, etc. but they are expensive, and you have no control.
  4. I have a two wire system. While some of the connected thermostats do power stealing (Nest), I wanted more powering options.
  5. I’ve been playing with ESP32’s and I’ve found them powerful and cheap!


Most home hvac systems run on 24VAC. When I moved in to my house, it had one of those classic round bun thermostats that tilt a mercury switch with a bimetallic spiral. More modern systems have an additional C wire for power (and separate fan  and cool wire). This meant that I would be powering the thermostat externally. A little googling and I found this info on thermostat wiring:

I found a triac board offered by another maker and open source enthusiast:

It features three triac channels with Opto-isolated inputs. The control signals seem to work at 5V or 3.3V.

For the controller I found a dev board with an ESP32 module, SiLabs usb controller, and a small monochrome OLED display. It’s sold as Wemos Lolin, and it has a Wemos-like logo on the back. it’s actually a clone of a D-Duino-32 by Travis Lin.

I mounted it on top of the triac board, with a laser cut plate to mount the same as my existing thermostat.

I used a Sparkfun TMP102 as the temperature sensor. I floated it to keep it off the cold wall. Figured I’d mount it in a case later. It worked great! The next installment will cover the PCB design and debugging. The code and the EDA files are at:

Lasercast Activate!

I recently got my thumb reconstructed (due to Osteo arthritis). And my new cast felt like it could use an upgrade. Laser! I figure it will be a good addition to my mad scientist costume for Halloween. Chinese laser pointer from ebay or aliexpress (don’t remember, I have a drawer full of laser modules). Adafruit powerboost 500 basic (If I’d had the full one, it could charge too, but this is what I had lying around).  I designed a very basic platform in OpenSCAD, and stuck the board down with mounting tape. The enable switch is soldered directly to the board (I cut off one of the terminals.)

Both the laser platform and the activation button are mounted with Velcro (the cast is coming off…) the button is superglued to the disk that holds the velcro dot.

If you want to make it, it’s very likely that your laser module will be sized differently so edit the openSCAD file to  fit.

3D printed circle the same size as a velcro dot

Arduino Robot Class preview

I’m teaching an Arduino Robot class June 29 from 6-8pm at YouDoitElectronics in Needham, Ma. The cost is $99 and you get to take home the robot you build. I’ll show you how to use an Arduino to control DC motors, and read sensors to react to the environment. The robot we’re building will have a sonar sensor for distance, and two line detectors for following a line.
To register email your name phone number and number of participants to Please include Arduino Robot Workshop in the subject line. You will receive a call back within 1-2 business days. Fee is required at time of registration prior to the start of the workshop. Once registration and payment are complete a reservation confirmation number will secure your spot.

DIY Rayguns!


I’ve been going to Arisia (one of Boston’s Science Fiction Conventions) for several years. I always have a great time, and it always amazes me the amount of volunteer effort that goes in to providing amazing programming for everyone. This year I wanted to give something back so I came up with the idea of people building rayguns.

(NOTE: My extra kits are available in my etsy shop:

Regular LED strip is super cheap when you order it from China. It normally runs off 12V, but a 9V battery lights it up just fine. I created a simple laser cut frame to put some LED strips, and then some cool laser cut acrylic disks to give it that groovy 50’s raygun look.

I bought most of the parts myself, but special thanks goes to my friend Jeremy Green at Charles River Maker for donating Laser time for cutting the kits. He’s your goto guy for design, prototyping and digital to physical services with laser cutting and lots of 3D printers!


A switch makes the trigger, and there’s a fin with holes to add decorations.


First cut a strip of LEDs. Mine consisted of groupe of 3 led sections.. Cut a strip of 5 sections, two sections on each side and one straddling the middle:


next glue on the handle “dimensional” bits. These are mainly to make a recess for the battery, and maybe wrap the handle. Super glue works pretty quick, but you could probably use wood glue or whatever is appropriate for your frame:


Glue the trigger button on, (kindof low, as the disks are pretty close. Actually I moved it down abit after I put the disks on (later step)


Line up the battery clip and shorten the leads to connect one end (I chose the red, positive wire) to the positive contact on the LED strip. A small wire went from the negative contact to the switch and the other lead of the switch to the negative lead of the battery clip.


Test, viola!

Next line up the disks where they fit. back them off and put a drop of superglue where each disks goes in order.



The source files for laser cutting are at:

And now a few pics from the workshop at Arisia!







Paper Circuits Workshop

I led a paper circuits workshop at the Auburndale Community Library, and I thought I’d share a few thoughts in case you’d like to try it on your own. By the way, all the photos in this post are by our host Dana Hanson, a good friend and one of the key volunteers that keeps the Auburndale community library going (with no municipal support!)

I let the library know that it would be ok for all ages, but if kids were under 7, a parent should stay to help. We got lucky in that we had a couple of parents who either got it right away or picked it up very quickly and they were able to help tremendously.

The first I saw this idea was on the MIT High Low Tech site and they have some good pointers. They use surface mount LED’s but they are quite difficult to tape, so we modified with regular LED’s.

Setting the basic rules: Lithium batteries need to be recycled (and don’t eat them…), What is a circuit (relating to circles…) watch out for short circuits, polarity of LEDs. This circuit is very forgiving, the internal resistance of the coin cell (we used CR2032) means you don’t need a series resistor to limit current for the LEDs, and also means that short term short circuits don’t destroy the battery immediately or cause a fire!

Some Clown

We set up a station to hand out materials at the circulation desk. Next time, I think I might divide it into several stations. The most time consuming part was letting them pick which LEDs to use. You could either limit it to one kind, or spread it out a little. You could have people just pick them from bins on the table, but sometimes people take too many. (It wasn’t a problem here….) My son’s Mason and Grant assisted me both in preparing and in debugging people’s circuits, and were indispensable.  25 Kids with about 80% of them needing help would be too much for one person.

Critical help

One of the mothers came up with a good way of making the connections more reliable add copper tape under the leads of the LEDs as well as on top.

Hard at work

Beautiful artwork

One of the book racks made a nice display for the finished work.Gallery of creations




Electrify Your Halloween! Making it Move!

In late September, I  led a workshop at the Duxbury Free library on making interactive Halloween displays, and more recently I set my project up on our porch for Halloween.  One of the most effective ways to make your front porch scary and immersive is to pay attention to sound, and to make things move.

The first part (making it scream) was documented in this post. This is about the movement part, creating a pop-up inflatable ghost, completely from scratch. It was very successful and popular!with the kids. Unfortunately I didn’t get any video, but I can cover the construction.

I like inflatables, and wanted to try making my own. One thing that made this really easy was a really cool product called Powerswitch Tail. This allows you to control an AC outlet from a digital signal. Its available from Adafruit and Makershed. It’s essentially a short extension cord with an opto-isolated relay in line. This eliminates any dangerous AC wiring with relays, and protects your Arduino and other circuits as well.

Next I needed to make the Ghost. I use white kitchen trashbags at home, and I took three of them, two laid end to end (with the end of one cut off.) I cut the third bag in in thirds and used the outside sections for arms. I used simple transparent packing tape to bond the edges.


A total of 3 bags (top and bottom, both arms)

I used one of those small vortex fans, and taped it around the output side.


Boo! Attached to the fan, and inflated.

Hook the powerswitch tail to a digital IO on an Arduino and you are good to go. As I mentioned in the last post, you can get the code on github here.


Electrify your Halloween! Making things scream!

In late September, I  led a workshop at the Duxbury Free library on making interactive Halloween displays, and more recently I set my project up on our porch for Halloween.  One of the most effective ways to make your front porch scary and immersive is to pay attention to sound, and to make things move.

In this post, I’ll cover making sound, the next post will cover my moving ghost.  There are lots of ways to make sound by control, and in reaction to people coming on to your porch. My original idea was to use a motion sensor, and then trigger an AC relay to turn on a cassette boombox. Because the boombox could have the mechanical play button pressed with the power off, when you turned the power on, it would play.

Then, I ran across the sparkfun voice recorder module at YouDoIt Electronics (my local hacker supply place!)

There are other ways to make sound (and probably easier) but this was fun, and I’d already spent the money. If I had to do it over, I might use either the Adafruit wav shield, or a new entry, the very cheap Garan MP3 Module from Seeedstudio (I’m probably going to order one of these for next year!)

This breakout is for a chip that was originally meant for a voice recorder with some buttons to trigger the different segments. It’s not very well documented on the sparkfun site, but one of the comments pointed me to That with the datasheet, let me build a simple Arduino library to control it. You can download it from github here.

First you need to wire it up. Here’s a fritzing diagram showing the connections:

sound sampler hookup


In order to make it more reliable, I mounted it on a protoshield. I also like using a proto-screw-shield to hook up the external components.

In this case, the motion sensor ( on the right, and the wire going off to the left connects to a powerswitch tail to control a fan for the ghost.

I used PC speakers connected directly to the jack on the sparkfun voice module.

A little about the PIR motion sensor. The data sheet says it operates at 12V, but sparkfun says it operates from 5-12V. I have a Parallax module that is a bit easier to use, but I couldn’t find it and once again YouDoIt rescued me with the sparkfun part. A few other things to note. Since it is open collector, you need a pullup on the input. I used internal pullups in my Arduino code. When I tried to run the system off of one of those USB battery packs, it was unreliable and had very short range. Using an AC adapter worked fine, but if I had to do it over, I might use a motion sensor designed for 5V. The other thing was that the wire colors were confusing. Ground was White, Signal was Black, and VCC was the only one that had a “normal” color of red. (GND is usually black.)

 The code

You can find the code on github here. You can control it via the serial port by entering a message number (0-8) and then ‘r’ or ‘p’ for record or play. It uses the onboard microphone for recording.

I chose to use the button on the protoscrew shield as an arming button, but you can also control that through the serial port. ‘m’ toggles whether or not motion activates the sound and PowerSwitch tail output.

Here’s the complete code (at the time of this post) remember to install the ISD library first:


#include <ISD.h>
// delay between motion activations
#define ACTDELAY 10000L
// motion sensor
#define MOTION A4
#define ARMButton A5
// powerswitch tail
#define powerSwitch 7
// LED
#define LEDPin 13
ISD isd = ISD();

void setup() {
// motion sensor
// open collector requires pullup
// powerswitch
pinMode(ARMButton, INPUT_PULLUP);
Serial.println(“enter a message number to play or record or r/p”);
// globals
int msg =0;
boolean motion = false;
boolean soundonmotion = true;
boolean powerswitchonmotion = true;
int lastReading = HIGH;
boolean ARMState = false;
long lastActivation = 0L;
void loop() {
// check arming button
if (digitalRead(ARMButton) == LOW){
ARMState = ARMState?false:true;
// cheap debounce

if (ARMState){
soundonmotion = true;
motion = true;
powerswitchonmotion = true;
motion = soundonmotion = powerswitchonmotion = false;
//check motion sensor
long currentTime = millis();
if (motion){
int currentReading = digitalRead(MOTION);
if ((currentReading != lastReading) && (currentReading == LOW) && ((currentTime – lastActivation) > ACTDELAY)){
lastActivation = currentTime;
Serial.println(“activating motion”);
// if enabled turn fan on first
if (powerswitchonmotion){
if (soundonmotion);
if (powerswitchonmotion){

lastReading = currentReading;

if (Serial.available() != 0)
char c =;
if (c >= ‘0’ && c <=’8′)
msg = (int)(c- ‘0’);

Serial.print(“msg selected: “);
else if (c == ‘r’)
else if (c == ‘p’);
else if (c == ‘m’){
//toggle motion activation
motion = motion?false:true;
Serial.print(“motion is “);
else if (c == ‘f’){
powerswitchonmotion = powerswitchonmotion?false:true;
Serial.print(“powerswitch is “);
else if( c == ‘s’){
soundonmotion = soundonmotion?false:true;
Serial.print(“sound is “);




Open Hardware Summit Photobooth

As you know, my Wyolum buddies and I partnered up with SeeedStudios to make a really cool e-paper badge for the Open Hardware Summit which took place last week. We wanted some cool ways for people to customize their badges. Justin created a great simple program for converting images ( and I leveraged that software to create a photobooth.

photobooth (by Addie Wagenknecht)
Photo by Addie Wagenknect

My friend Michael Castor at Makershed built a cool tablet from the Raspberry Pi, and he told me about the nice 10.1″ LCD display and HDMI adapter he found from Chalk-elec.

I ordered one, and started figuring out how to put the whole thing together. I also got a big red button from Adafruit. I have been playing with the Raspberry Pi camera and it’s perfect for embedding in a project like this, even though the software is a bit primative at this point (no video for linux drivers, etc.) I used our own AlaMode to read the button and use one of our WS2811 arrays to do a visual countdown before taking the picture.

I’d never really designed anything for laser cutting, and this was my opportunity! I used Inkscape, with the T-slot extension written by Justin. I got the box cut at Einstein’s Workshop (a family oriented makerspace in Burlington, MA.)

Lasercut box

Next, I laid out the components. The trickiest parts were the LVDS cable (though it’s pretty generous) and the Raspberry Pi Camera flex cable.

One really sweet thing about the Chalk-elec hdmi adapter is that you power it, and there’s a USB power port to power the Pi.

Raspberry Pi and HDMI adapter


Attaching the LCD to the case is a little nerve wracking, as like most tablet screens, it’s intended to be glued in. I used 3M permanent mounting tape (really not tape but adhesive on a backing roll.) It’s really difficult to cut with scissors (it sticks to everything) I made the mistake of putting it on the bezel and trying to cut it with an X-acto knife. I scratched the paint on the bezel, but I managed to fix it with a sharpie.

The better approach turned out to attach it to the opening, and cut along the opening.


After trimming I added the LCD, and the USB panel mount jack.

I had to drill a few holes because I hadn’t completely planned ahead, for a jack for the switch box (used a 1/4 phone jack and plug) power, and the 16 pixel LED array.



I had planned for it to swivel on the sides from two carriage bolts with wing nuts. This meant making a stand, and I didn’t want it to be just a couple of 2×4’s. Also I was running out of time so I took Justin’s suggestion and made a tripod mount for it. More holes…. And a mending plate from the hardware store. Fortunately I have a set of cheap taps from Harbor Freight, so it was pretty simple to drill the plate and tap it (1/4-20) to accept a tripod mount.


Getting it hooked up with the short cables is a little tricky, but there’s room to get your hands in there:


I used a proto-screw shield to make it easier to hook up the button and LED leads. As you can also see, there’s a small usb hub inside too.

I booted it up:



and then hacked Justin’s Wifit program to take a picture:


Justin then created a more kiosk-y gui, and I ironed out a few things with the Arduino code for AlaMode. The gui checks to see if an sd card is mounted, and when it is, it sends an enable command to the button and prints on the screen “Press Button when ready”  The AlaMode then monitors for the button, and when pressed, sends the signal to take the picture and begins counting down on the LED strip. You can find the code in our github repository:

I tried also using the LED strip as a flash, and it worked but made sort of ghastly underlighting like a camp flashlight! So I took some cheap chinese led strip I had around (about $12 for 5 meters) and made a light panel:


And the finished product:


And on the badge:

IMAG1729I’m thinking of modifying the code to upload higher res pics to the Internet with an imprint, or printing them on a portable printer I picked up at a yard sale!

By the way, I left the Raspberry Pi’s wifi dongle attached, as it made it much easier to debug with SSH from my laptop. That said, I did also plug another hub into the one exposed port to use a keyboard and mouse (even though the touch screen does work!) If I had to do it over again, I might bring at least one more port out for other devices.

You’ll notice in the first picture, the Wyolum Logo across the top. Elizabeth Shaw cut that for me and delivered it the morning of the OHS, and it fit perfectly!