My dad spent a lifetime as an automotive mechanic, specializing in transmission repair. He recently retired and I spend a few days helping him clean out his shop as he sold the building. I took a few moments to take photos of his toolbox, as the years of wear and showcase of daily-driver tools was pretty cool.
I have been playing around with using ESP8266’s as endpoints around the house for collecting temperature, turning the sprinkler pump on, texting me when the doorbell is pressed, etc. One of the challenges when doing setup/testing is getting the IP address of them when they first come online.
I am running dnsmasq on a raspberry pi, which provides both local DNS and DHCP services. This is in no way novel, as it is a pretty vanilla configuration. What I wanted to share is a small script that monitors for updates to the dnsmasq log, watches for new client releases/renewals and then posts those to the MQTT service. There are lots of things you can do with it from there, but I usually just subscribe to the topic via terminal or mqtttool on my iPhone.
#!/usr/bin/python from pygtail import Pygtail import sys import re import time import paho.mqtt.client as mqtt client = mqtt.Client() client.username_pw_set("xxxxxx","xxxxxx") while (1): for line in Pygtail("/var/log/dnsmasq.log"): isItACK = re.search(r'DHCPACK',line) #see if its an ACK if isItACK: newInput = re.sub(r'^.*DHCPACK\(eth0\).', "", line) #strip everything before mac address newInput = newInput.rstrip() #strip newlines client.connect("xxxxxx.widgetninja.net",1883) #connect to mqtt client.publish("/network/DHCP",newInput) #publish to mqtt client.disconnect #hang up #sys.stdout.write(newInput) #debugging time.sleep(10)
Hope this helps save you some time trying to find the ip address of that new device, be it something you made or otherwise just added to your network.
Its a nighttime ritual for me. Usher kids to bed, pick up kitchen, turn out lights, and peek into the garage to ensure the overhead doors are closed. Odds are they aren’t, as someone always seems to have left them open through the normal bustle of the day.
I have been dabbling with home automation, building sensors and devices to automate the mundane. So to that end, I set out to build something for the garage. Design goals were:
- Provide a status of open/closed for the two overhead doors
- Ability to open/close doors from my phone
The hub of my home system today is Home Assistant (running on raspberry pi) which is very versatile, and allows many integration points. As many internet of things devices are using MQTT, I am using that as the primary means of communication to/from the hub.
The micro controller used is an esp8266 which has an amazing story in itself; rising from simple beginnings – being initially sold as a uart->wifi adapter and becoming a stand along micro controller thanks to a dedicated group of enthusiasts. This device can be had for about $8.00, has WiFi, and can run code compiled on the Arduino IDE.
This project was fairly straightforward as it stands on the shoulders of projects done by others, as well as some starts and stops I had with recent ESP8266 projects. The device is powered by a 5v wall wart, which supplies power for the ESP as well as the relay breakout board used. These components combined with the hall sensors on the doors are all that was needed. An overview of the hardware connections are here..
Note that the relay outputs that connect to the door ‘buttons’ can actually be connected right at the opener, where the button’s wire comes in. Thats the blue/white wires on the right side above.
The door sensors are installed on the wall, and triggered by magnets on the doors. This means any position other than fully closed will register as open (good in my opinion). Installed they look something like this:
On the software side what the ESP8266 is doing is watching for the digital reads of pins D5 (door 1) or D6 (door 2) to change state (open / closed) and when it sees this it’ll post a message on the MQTT server.
The home automation hub takes it from there. The other thing the ESP8266 is doing is watching for updates on MQTT for requests to open or close the door. Once a message is notified the ESP will close the relay for a second (simulating a button press) and the door will start moving. The messages look like this (going from open to closed):
/esp/garageDoorTwo/set 0 #this is the request to close
/esp/garageDoorTwo/state 0 #this is confirming state changed to closed
The actual code on the ESP8266 is linked below. The highlights are the WiFi join, enabling of over-the-air updates, and the management of the MQTT messaging.
And if you happen to use HomeAssistant here is the relevant parts of the configuration.yaml file.
And to wrap things up, here is what the results look like on my iPhone.
Let me know if you have any questions or clarifications and I’ll try to answer them.
I’ll save you the long back story, but I recently came across a pretty amazing module, the USR-S12.
This module seems to be built for integration in other devices, and has an impressive list of features. The key ones (to me) are:
- WiFi base station or bridge
This website has a pretty good breakout of what the interface looks like.
I ordered mine directly from china, for about $35 – but it took about 2 weeks to arrive. Sparkfun also carries them with a break-out board (including rj45 ethernet) but they want a bit of coin for it.
With module in hand I set about wiring it into my car. My goal was to stream audio from my iPhone as my car didn’t support the proper bluetooth codecs to play music. With airplay i could stream podcasts and pandora with a higher sound quality than bluetooth would give me anyways.
My Audi has an interesting interface (AMI) which supports different cables for iphone aux etc. The ipod cable was interesting to me as it supported analog left/right, data (not used for this application) and power. I was fortunate to find a wiring diagram for the audi connector on a blog (thanks w.ashcroft!).
The only other sticky-wicket on the Audi part is that there is a small resistor inside the connector housing that tells the car if you have the ipod or the aux cord connected. I wanted it to think the aux cord was connected so it wouldn’t try to talk via the data lines. There is a 18.7k resistor in the iPOD cable, and i had to swap that out for a 1k to emulate the AUX cable.
After a quick snip-snip with the wire-cutter the 30-pin ipod connector was removed and I was able to identify which wires were which with a the help of the multi-meter (diode test for the win!). Soldered power, ground and analog to the USR-S12 and was pretty much ready to go.
Plugged it in and thankfully everything worked as expected. Iphone joined the new WiFi hotspot in my glove compartment, and airplay sounded awesome! I made a few small changes through the web interface (10.10.10.254), changing the network/ssid name. This also changed the name of the airplay host.
Final change is to edit the network properties on the wireless network on your iPhone. When joined to this hotspot you want to set a static IP (such as 10.10.10.200) and NO default gateway. This way your phone will still use the cellular network to get to the internet instead of trying to use the hotspot. This is critical if you want to stream content like Pandora.
Whipped up a yard sign for this Halloween. My wife picked up some really neat orange bulb strings with over sized glass bulbs – no LED’s here! Scaled up some letters to be about 2’x3′ and layed out a hole pattern so each letter used an entire string. The holes had to be slightly recessed so the bulbs could screw into the sockets fully.
Painted them up with some exterior paint. They look nice next to the yard ghosts I got years back from the father-in-law!
Here are the .dxf files.
It was bound to happen. I finally got tired of finding the appropriately-sized wall warts to power my workbench projects. It was time for a new power supply. I picked up a reasonably priced 30v 5a Korad KD3005D, which seemed to have the small number of features I needed.
Upon its arrival, and after the unpacking excitement waned, I noticed a small problem. The voltage being produced was way off from the displayed amount. This was troubling, and an email to the manufacturer brought about a new control board which I swapped out. Bummer is, the same problem persisted.
Dumb cheap-ass supplies right? My concern for the second service inquiry is them doubting my technical prowess, so i ordered a second multi-meter. I wanted to be able to have two meters showing the output, which wouldn’t match the power supply. So i got a TekPower TP4000ZC ordered (serial output!) off Amazon (thanks prime!).
Wired the new meter up with my old meter (acquired in 1993) and low-and-behold. Problem on my end.
My trusty old meter turns out to be not so trusty. Sorry, Korad – sorry I ever doubted you. Threw the old meter in the trash and picked up a second TekPower. Nice to have two.
Its more of a box build.
So browsing adafruit.com a while back I came across a class-d amplifier board they recently introduced. What is interesting about class-d amps is they are very efficient, thus generally needing no heatsinks. Seeing boards like this I am frequently reminded how far things have progressed since my electronics classes in 92/93. In that class I tried to build an amplifier for my car, and really didn’t get much further than etching the board. The traces didn’t etch cleanly, even using the advanced (at the time) sharpie+acid method. After getting board patched up with jumper wires to fix screwed up traces I then realized how expensive power mosfets were for a high school student. End of that project.
So I of course bought this little amplifier board immediately. There has been some conversations around the house that we should have music upstairs. So this board + an old ebay purchased airport express should do the trick nicely. So board in hand, it needed a box. I always skimp on the box, but in this case the board was pre-manufactured so I could afford to put some energy into its home. I haven’t done anything with any hardwoods on the CNC yet, and I had some walnut I got from a friend when he moved. So I set about making a box.
I have no jointer, so surfacing with the CNC, using a 1″ bit.
Flipped the board over and routed a box + lid.
The lid didn’t fit perfectly, and required some chisel work on the inside lip to seat properly. The outside also needed some time on the disc sander to be flush all the way around. I really need to upgrade my y/z axis with some linear bearings. Maybe this winter.
With the overall box built i used the drill press to put some holes in the back to mount the 1/8″ input, the 12v barrel jack, and the 4 speaker posts. Of course one of those holes is a square, so I had to spend some time with the files.
Before mounting anything I needed to finish the back, as it would have been hard to do with all the posts etc in place. I was just going to do a basic coat of poly as this wood was very nice. Got out the rattle-can and gave it the first light coat – which did not work out well. I was not paying attention and grabbed black spray paint instead of my clear lacquer. How could that happen?
Quick wipe down with mineral spirits, but black was deep in the pores. Decided to just blast the whole thing with black, wipe with spirits, and sand again. Turned out ok, gave the wood a darker appearance – although this wont be my ‘go to’ finishing technique.
Mounted the amplifier inside with double-sided foam tape, and soldered up all the connections. Pretty basic.
Functionality test with a 12v 1.5A switching power supply I had in the junk box, and it wouldn’t power up. I kinda forgot that 20w per channel is 40w. At 12v you need 3.5A at full power. I tested instead with a 11.1v Lipo battery from one of my RC airplanes, using alligator wires to the board and all was fine. (fatal mistake)
Double checked everything, glued the lid on, and finalized the finish.
I sourced an old pc power supply, as they can handle crazy current, and modified it to work w/o a pc. Grounding green wire is all it takes. I pulled out all the un-needed connections and put a barrel connector on it.
Brought everything inside, connected up the speakers, power, airport express… and it doesn’t work. Much testing ensues, still does not work. Shamefully bring it out to the garage, and bust it open with a chisel.
Of all things it turns out the barrel connector plug was bad. That was why the initial power supply didn’t work. That is why new power supply didn’t work. The test battery worked because I alligator jumped the leads to the back-side of the connector. Dang.
So now the power supply is hard wired in and everything works fine. This amp does a great job driving bookshelf speakers, and i would use it again. Things I would do differently if i were to do this again (hint : i won’t).
Not use black spray paint by accident
Put an indicator LED in the box so I know if there is power
Turn the box ‘upside down’ and inset a plexiglass bottom that is screwed in (for access)
Overall a fun project, and I learned how nice walnut is to work with. I also finished an amplifier project, that i started over 20 years ago!
It appears the road to a GPS-Controlled airplane (Drone) is paved with broken Styrofoam. Pictured above is on of my first automated flights on an old P-47 I had. It lived up to its historical nickname of “Jug” which is how they look when they nosedive in to the ground. To move forward I am going to try to make my own airframes from a $15 AirHog glider I picked up at Target. I have a few of them on hand, and they are pretty big. Each wing is 2′ long. To start I needed to cut off the top, so I can CNC in some pockets inside to hold an arrow shaft (for strength) and to house all the electronics.
I do not have a Styrofoam cutter, but I do have some nichrome wire I used as a electronic firework igniter so I hacked something together. I took the blade out of a tree saw I have, strung some nichrome, added a 12v wall wart and sliced away.
I have started laying out the electronics, servo mounting holes, and cuts for flaps in my cad software, and will share those results when I get them on the CNC.
Been pretty lax about updating this blog recently. I have undertaken a fairly time consuming build of a virtual pinball machine. I have been making posts in a forum on that topic as I have required input from that community throughout the build. I am almost(ish) done and will make a video highlighting the process when complete. In the interim, if you want to see some of the gory details you can check out my build log.
Update : Build complete!
My son plays baseball, and keeping equipment organized is an ongoing challenge. While sticking bats in the chain link fence is a time-honored tradition, I thought I would whip up a bat holder. I can’t take credit for the concept, as one of the municipal parks had a similar solution permanently mounted. Mine is a knock-off using 2″ pvc pipe and some rope.
The machining was very simple, its basically two rectangles per bat. The only trick was to do one series of rectangles, then rotate the pipe 90 degrees before doing the second.