Categories
Upgrade an LM293D Motor Controller
The lm293d is only rated for around 600ma of continuous current. To increase that greatly, swap out the chip, and stack the chips to double the current handling. The sn75441one chip is rated at 1 amp, 2 amps peak. Stacking them gives 2 amps, 4 amps peak (though I wouldn't recommend 4 amps through it).
How to hotrod a lm293d motor controller
1 - replace the lm293d chips with SN754410NE chips, like these: https://www.digikey.com/product-detail/en/texas-instruments/SN754410NE/296-9911-5-ND/380180
2 - stack the SN75441ONE chips pin-for-pin, use thermal tape, and use a heat sink like this: http://www.mouser.com/ProductDetail/Aav ... Asd08P8HAQ
thermal tape: https://www.amazon.com/gp/product/B01M723CAN/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1
This should provide around 2 amps per motor, continuous, over triple the original current handling of the lm293d. Here's what it looks like on the MotoPi motor controller that stacks onto a Raspberry Pi Zero W:


Raspberry Pi Arcade Machine

Purpose
A fairly inexpensive machine dedicated mostly to playing coin-op games from my childhood. It uses MAME (Multiple Arcade Machine Emulator) to play the ROMS from the original machines. It also can play movies and music using Kodi.
Parts List
This thing wasn't exactly cheap. It could definitely be done cheaper with a smaller monitor and lesser sound system. The total cost for mine was around $275. If you cut back on things you could probably build one for around $125.
1 x Raspberry Pi3, with power supply, HDMI cable, and Micro SD card - $60 https://www.amazon.com/gp/product/B01C6EQNNK/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1
1 x Plastic tote - $5 or so
2 x Joystick+Buttons kits - $16 each, $32 total - http://us.banggood.com/Wholesale-Wareho ... 39974.html
1 x 10" HDMI Monitor - $115 https://www.amazon.com/gp/product/B01D17GPI4/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1
1 x Audio Amplifier - $24 https://www.amazon.com/gp/product/B019MBUX40/ref=oh_aui_detailpage_o08_s00?ie=UTF8&psc=1
1 x Pair Car Speakers - $20 https://www.amazon.com/gp/product/B00INA9UBE/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
1 x AC Power Switch/Port - $6 https://www.amazon.com/gp/product/B00ME5YAPK/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
1 x Standard Computer Power Cable - $11 (I bought a really really long one)
1 x Miniature USB Computer keyboard (a bluetooth one would work too). I had one laying around, but I'll call it $10.
Retropie Linux - free - https://retropie.org.uk/
Instructions
Just connect it all together, copy retropi to your MicroSD card, boot it up, configure the joysticks/buttons in MAME, round up your MAME ROMS, and play!
I think it's harder to describe exactly how to build the thing than it was to build it. You'd benefit greatly from some Linux experience, some electrical wiring experience, some basic powertool experience, and you need to own some BIG drill bits. The big buttons require 1-5/8" holes I think. A hand router would probably do the job, too.
Kodi
I have Kodi installed, and with it comes all kinds of multimedia possibilities. Plug up a big USB hard drive with movies on it and it becomes a movie box. Add the Google Music (or spotify or pandora, etc...) addon and it becomes a party music machine.

Audio
I originally had a stereo board amp in it, sticking out the front. It was cheap ($12), but that thing was a pain in the ass. First off, it required 12vac. That's right - 12v AC. That means it can't be easily powered by a 12v LiPo battery should I want to make this thing portable. Also, I think one of the channels blew out after a few days of use.
I ditched the AC amp and sucked it up and paid $24 for a 12vdc-powered enclosed stereo amp. It didn't fit in the area in the front though, so I had to relocate the audio controls to the right-hand side of the tote.

The car speakers I got are two-way with a little tweeter in the center, and they sound very good when compared to your run-of-the-mill bluetooth speaker thing. This amp+speakers also get much much louder than any cheap bluetooth speaker I've run across.
Monitor

I wanted a 10" monitor, but if needed a lot of money could be saved by swapping out a 7" monitor (could probably save $60). The one I got has HDMI and SVGA inputs, but the HDMI input wasn't auto-detecting things from a cold boot. I had a spare HDMI->SVGA adapter, so I came HDMI out of the Raspberry Pi into the adapter, and then used a SVGA cable from the adapter to the monitor. That setup works perfect when power is applied and things boot up.
Joysticks/Buttons

I got the joysticks and buttons and USB gameport adapters from Banggood (USA warehouse). The item linked to in my parts list above is by far the cheapest way I've found to get mechanical joysticks and buttons for an arcade machine. At $15.77 per side (once side=one joystick, lots of buttons and wires, one USB controller board), two of them for $32 cost less than half of what you'll usually find equivalent parts on Amazon.

So, I wound up with two USB game controller things plugged into the Raspberry Pi. They work fine though, and it sees them as two separate joysticks.
AC Power Port

You could definitely omit this AC power port thing and instead use an extension cord or a power strip. I wanted an externally-accessible power button, and I wanted to be able to swap out the cable for a really really long one. I figure at parties you never know exactly where the arcade gaming might want to happen, or where the music might want to be. I got a 25 foot cable, which is super long compared to most computer power cords.


ESP8266 Program Over WiFi
Purpose:
The ESP8266 is a very inexpensive microcontroller that has a full TCP/IP stack and WiFi, and is compatible with the Arduino IDE. It programs very similar to a standard non-WiFi Arduino.
This project demonstrates how to program the ESP8266 via WiFi rather than via a USB cable directly connected to your development computer. It lets you build IOT devices, deploy them, and then later reprogram them without having to bring them back to your computer.
Requirements:
- 1 x ESP826612E
- Arduino IDE, I think it needs to be >= version 1.6.4
- Code from my github - https://github.com/nshaver/esp8266_webupdate
Instructions
1. Setup compile/upload environment for ESP8266
You first need to be able to compile and upload programs to your ESP8266. There are dozens of tutorials that should get you going with uploading to your ESP8266.
2. Initial compile and upload
Get the code from my github.
https://github.com/nshaver/esp8266_webupdate
Modify the ssid and password variables to match your WiFi network. The program doesn't really do much other than deliver a hello message to the browser, wait for an http upload connection from a browser at /update, and blink the built in LED.
3. Verify WiFi

Use a web browser to visit your ESP8266. Ideally, you can visit it at http://esp8266.local, but you may have to use the IP address from step #2 above.
4. Change your code
Make a small change to your code so that you will be able to tell whether or not your WiFi upload worked, and click the "Verify" button in the Arduino IDE. That will rebuild a new binary and place it in /tmp/buildxxxx (have to find it). I'd recommend keeping your serial terminal open so that you can easily see the IP address of your ESP8266 after the upload has finished and it connects to your network.
5. Upload via WiFi

Now for the real excitement. Visit the /upload page of your esp8266 at http://esp8266.local/update and click the "Choose File" button. Browse to the binary you hopefully created in step #4 above, and then click the "Update" button. This will hopefully send your new program to the ESP8266, and then it will reboot. After a few seconds you can visit its webpage and see any of your latest changes reflected.
Purpose:
The ESP8266 is a very inexpensive microcontroller that has a full TCP/IP stack and WiFi, and is compatible with the Arduino IDE. It programs very similar to a standard non-WiFi Arduino.
This project demonstrates how to program the ESP8266 via WiFi rather than via a USB cable directly connected to your development computer. It lets you build IOT devices, deploy them, and then later reprogram them without having to bring them back to your computer.
Requirements:
- 1 x ESP826612E
- Arduino IDE, I think it needs to be >= version 1.6.4
- Code from my github - https://github.com/nshaver/esp8266_webupdate
Instructions
1. Setup compile/upload environment for ESP8266
You first need to be able to compile and upload programs to your ESP8266. There are dozens of tutorials that should get you going with uploading to your ESP8266.
2. Initial compile and upload
Get the code from my github.
https://github.com/nshaver/esp8266_webupdate
Modify the ssid and password variables to match your WiFi network. The program doesn't really do much other than deliver a hello message to the browser, wait for an http upload connection from a browser at /update, and blink the built in LED.
3. Verify WiFi

Use a web browser to visit your ESP8266. Ideally, you can visit it at http://esp8266.local, but you may have to use the IP address from step #2 above.
4. Change your code
Make a small change to your code so that you will be able to tell whether or not your WiFi upload worked, and click the "Verify" button in the Arduino IDE. That will rebuild a new binary and place it in /tmp/buildxxxx (have to find it). I'd recommend keeping your serial terminal open so that you can easily see the IP address of your ESP8266 after the upload has finished and it connects to your network.
5. Upload via WiFi

Now for the real excitement. Visit the /upload page of your esp8266 at http://esp8266.local/update and click the "Choose File" button. Browse to the binary you hopefully created in step #4 above, and then click the "Update" button. This will hopefully send your new program to the ESP8266, and then it will reboot. After a few seconds you can visit its webpage and see any of your latest changes reflected.

Purpose:
My cappuccino machine takes about five minutes to warm up, and I wanted to turn it on remotely over wifi when I wake up so that when I enter the kitchen in the morning I wouldn't have to wait for it to warm up. I also wanted to be able to tell whether or not it was warmed up, so I added a thermometer and a LED ring to display the temperature.

Parts List:
1 X ESP8266
http://www.amazon.com/HiLetgo-Version-N ... ds=esp8266
Dallas temperature sensor
http://www.amazon.com/DROK-Temperature- ... V2RPBDKQ77
Adafruit Neopixel LED ring
http://www.amazon.com/NeoPixel-LED-Ring ... pixel+ring
PWM servo, a Hitec perhaps
http://www.amazon.com/Hitec-31311S-HS-3 ... itec+servo
ESP8266 Code
The code is on my github:
https://github.com/nshaver/cappuccino-power

RC Robot with Headtracking and FPV Video
Purpose:
This is a 2 wheel drive robot that uses car wiper motors for its drive motors, sends video to FPV goggles, and receives headtracking data to move the camera accordingly on a two-servo gimbal.
Parts:
2 x DC wiper motors (modified to remove common ground)
1 x RC Receiver - frsky
1 x Arduino Uno for robot
1 x Arduino Leonardo for head tracker
1 x gyro/accelerometer
1 x Motor controller (dual H bridge was used)
Programs:
Headtracker Arduino code (requires 32U4 Arduino):
https://github.com/nshaver/headtracker/tree/master
RC Robot code (works on just about any Arduino):
https://github.com/nshaver/wipermotor_robot/tree/master
Purpose:
This is a 2 wheel drive robot that uses car wiper motors for its drive motors, sends video to FPV goggles, and receives headtracking data to move the camera accordingly on a two-servo gimbal.
Parts:
2 x DC wiper motors (modified to remove common ground)
1 x RC Receiver - frsky
1 x Arduino Uno for robot
1 x Arduino Leonardo for head tracker
1 x gyro/accelerometer
1 x Motor controller (dual H bridge was used)
Programs:
Headtracker Arduino code (requires 32U4 Arduino):
https://github.com/nshaver/headtracker/tree/master
RC Robot code (works on just about any Arduino):
https://github.com/nshaver/wipermotor_robot/tree/master

| 1 |