Categories
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.

Robo Roadie
Purpose
I've got this RockNRoller cart thing that's basically a dolly/cart with collapsible arms that can be extended, and is great for hauling speakers and heavy musical equipment around. It's very handy as is, but I don't really use it all that much. What would motivate me to use it more? If it were motorized and remote control from my cellphone, of course!
Parts
If you count the cost of the cart then this is a pretty expensive project. I've had the cart for years though. This could work with just about any wheeled cart you can round up, assuming you're willing to figure out how to mount the motors to it.
1 x Rock N Roller R10RT cart - $185
2 x Auto Power Seat Motors - $30
2 x 8" Pneumatic Tires+Wheels - $16
2 x Hobbywing Quicrun 1060 ESC - $40
1 x Arduino Nano - $4
1 x Arduino Nano I/O Shield (not required) - $8
1 x HC-06 Bluetooth Adapter - $8
1 x 5v BEC (not absolutely required) - $8
1 x 12v Battery (I used a 3S Lipo) - $15
1 x Android phone/tablet to control over bluetooth - ???
1 x Blueberry Android App - free
So, total cost not including the cart was about $130. With that particular cart, around $310 I guess.
Description
Here's what I wound up with:

Here's what I started with:

I'll upload a video as soon as I get a chance to video it in action.
So I took off the back wheels and mounted some fairly powerful motors onto it. I used two power seat motors for cars. They're great because:
1. they're cheap (around $15 on Amazon)
2. they're easily powered by 12vdc
3. the housing is not grounded (unlike most power wiper motors), so they're reversible without shorting out via the metal frame.
Here's a link to what I got, though I'd recommend looking for an "Amazon Prime" version if you can find it:

https://www.amazon.com/gp/product/B005IR1NBA/ref=oh_aui_search_detailpage?ie=UTF8&psc=1
I used a couple of wheels+tires that I got from Freight Harbor. It's 8", supposedly non-marring, and is fairly easy to adapt to the motors I've got by using some hardware from Lowes. I used a 0.5" sleeve to get it to snug down pretty tight on the motor shaft.

An Arduino Nano and a I/O shield handle the logic, and a cheap bluetooth adapter (around $8 on amazon) handles the communications from the controller. I use my Android phone as the controller, and the app Blueberry does a great job of collecting speed/direction via screen presses.
Inexpensive Arduino Nano on Amazon:

https://www.amazon.com/gp/product/B015MGHH6Q/ref=oh_aui_search_detailpage?ie=UTF8&psc=1
The Nano I/O shield:

https://www.amazon.com/gp/product/B011U8G1JO/ref=oh_aui_search_detailpage?ie=UTF8&psc=1
The bluetooth adapter:

https://www.amazon.com/JBtek-Bluetooth-Converter-Serial-Communication/dp/B00L08GA4Q/ref=sr_1_1?s=pc&ie=UTF8&qid=1471211629&sr=1-1&keywords=bluetooth+hc06
The Blueberry app:
https://play.google.com/store/apps/details?id=com.bluetooth&hl=en#details-reviews
That app "Blueberry" is really cool. It won't work by just installing and pairing it, you have to code for its heartbeat signals. That's a really good thing though. That way, if the Arduino quits responding then the app almost immediately notices it, and it disconnects. Also, the Arduino will know very quickly if the app has disappeared. It helps to keep this Robo Roadie from going berserko and breaking ankles. It's definitely powerful enough to do great harm to an ankle should it get loose.
To drive the motors I used some inexpensive reversible brushed speed controllers. I've used these on several projects and they're reliable and fairly powerful. The Hobbywing Quicrun 1060 - around $20 per wheel.

https://www.amazon.com/gp/product/B00LXCM3Q8/ref=oh_aui_search_detailpage?ie=UTF8&psc=1
For power, I use whatever 3S Lipo battery I've got charged up. They can be had for $15 or so from HobbyKing. It runs for a long time on a 5000Mah 3S battery. I also used a separate BEC to get the ~12v down to 5v for the arduino+bluetooth adapter. I could probably use the BEC that's built into the ESCs, but I've pretty much decided to quit trusting ESCs for 5v. Separate BECs are so cheap (around $8), I'd rather just use one and know for certain that I'm going to get around 5v. I used a Dr. Mad Thrust 3A BEC that also has an on/off switch that you can use to turn on/off another device, like headlights.

http://www.hobbyking.com/hobbyking/stor ... ouse_.html
My Arduino code does the following:
- connects to the bluetooth adapter via software serial
- waits for a connection from an external device (Blueberry)
- watches for speed commands, remaps/mixes them, and sends them out to the speed controllers
The code is here:
https://github.com/nshaver/roboroadie

Purpose:
This 4 wheel drive robot supports RC remote control, a headlight, a 2DOF arm with a gripper, remote Nerf gun firing, 5.8ghz video transmission, and automation via Raspberry Pi (not yet implemented).
Parts List:
4 x Pololu brushed DC gearmotors (2 with encodersj, 2 without)
https://www.pololu.com/product/3241
4 x Pololu wheels
https://www.pololu.com/product/1555
2 x Pololu motor mounting brackets (1 pair/pkg)
https://www.pololu.com/product/2676
1 x Ion Motion 2x15A Roboclaw motor controller
https://www.pololu.com/product/2395
Aluminum angles from Lowes - as needed to build frame.
2 x misc. servos for arm
https://www.amazon.com/gp/product/B0006O3XEA/
1 x misc. servo for Nerf gun trigger
https://www.amazon.com/gp/product/B0006O3XEA/
2 x misc. aluminum servo brackets (with bearing)
I can't find the ones that I usually get. I was getting them on ebay for around $4 each.
1 x ~5v headlight that can be turned on and off by simply removing or restoring power. Don't get one that uses a soft switch, because when you apply DC to those, they don't turn on until the button is pressed.
1 x Makeblock gripper
https://www.amazon.com/Makeblock-Robot-Gripper/dp/B00WG3KTL4/
1 x Arduino Nano
https://www.amazon.com/gp/product/B015MGHH6Q/
1 x Arduino Nano breakout board
https://www.amazon.com/gp/product/B011U8G1JO/
1 x Keystudio I2C PWM driver
https://www.amazon.com/gp/product/B0179AXJUQ/
1 x 5.8ghz video transmitter
https://www.amazon.com/gp/product/B00MLS0NOW/
1 x 12v camera
https://www.amazon.com/gp/product/B00RCZYIR2/
1 x Misc dual H Bridge, for controlling headlight and gripper
https://www.amazon.com/DROK-Controller-H-Bridge-Mega2560-Duemilanove/dp/B00CAG6GX2/
1 x electric Nerf gun. I used N Strike Elite
https://www.amazon.com/Nerf-N-Strike-Elite-Stryfe-Blaster/dp/B009T45XNM/
1 x 5v BEC for servo power and Arduino
https://www.amazon.com/Ship-Hobbywing-Switch-mode-UBEC-Lowest/dp/B008ZNWOYY/
1 x Misc 12v battery for video transmitter, camera, motor controller, and drive motors
https://www.pololu.com/product/3241
4 x Pololu wheels
https://www.pololu.com/product/1555
2 x Pololu motor mounting brackets (1 pair/pkg)
https://www.pololu.com/product/2676
1 x Ion Motion 2x15A Roboclaw motor controller
https://www.pololu.com/product/2395
Aluminum angles from Lowes - as needed to build frame.
2 x misc. servos for arm
https://www.amazon.com/gp/product/B0006O3XEA/
1 x misc. servo for Nerf gun trigger
https://www.amazon.com/gp/product/B0006O3XEA/
2 x misc. aluminum servo brackets (with bearing)
I can't find the ones that I usually get. I was getting them on ebay for around $4 each.
1 x ~5v headlight that can be turned on and off by simply removing or restoring power. Don't get one that uses a soft switch, because when you apply DC to those, they don't turn on until the button is pressed.
1 x Makeblock gripper
https://www.amazon.com/Makeblock-Robot-Gripper/dp/B00WG3KTL4/
1 x Arduino Nano
https://www.amazon.com/gp/product/B015MGHH6Q/
1 x Arduino Nano breakout board
https://www.amazon.com/gp/product/B011U8G1JO/
1 x Keystudio I2C PWM driver
https://www.amazon.com/gp/product/B0179AXJUQ/
1 x 5.8ghz video transmitter
https://www.amazon.com/gp/product/B00MLS0NOW/
1 x 12v camera
https://www.amazon.com/gp/product/B00RCZYIR2/
1 x Misc dual H Bridge, for controlling headlight and gripper
https://www.amazon.com/DROK-Controller-H-Bridge-Mega2560-Duemilanove/dp/B00CAG6GX2/
1 x electric Nerf gun. I used N Strike Elite
https://www.amazon.com/Nerf-N-Strike-Elite-Stryfe-Blaster/dp/B009T45XNM/
1 x 5v BEC for servo power and Arduino
https://www.amazon.com/Ship-Hobbywing-Switch-mode-UBEC-Lowest/dp/B008ZNWOYY/
1 x Misc 12v battery for video transmitter, camera, motor controller, and drive motors
Programs:

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

Object Avoiding Robot
Purpose:
This 4wd robot navigates about using two SR04 ultrasonic distance sensors. One sensor points down to detect stairs/cliffs, and the other points forward and rotates left/center/right using a micro servo.
Parts:
4 x continuous rotation servos (for drive wheels)
https://www.amazon.com/gp/product/B01GYE5XZM/ref=oh_aui_search_detailpage?ie=UTF8&psc=1
4 x wheels - must misc wheels I rounded up from toys, screwed onto the servo horns.
1 x micro servo to rotate forward-facing SR04
https://www.amazon.com/gp/product/B019H9BNTQ/ref=oh_aui_search_detailpage?ie=UTF8&psc=1
2 x SR04 ultrasonic sensors\
https://www.amazon.com/Elegoo-HC-SR04-Ultrasonic-Distance-MEGA2560/dp/B01COSN7O6/ref=sr_1_1?s=electronics&ie=UTF8&qid=1494889316&sr=1-1&keywords=sr04
1 x Arduino
https://www.amazon.com/gp/product/B01N7I0W77/ref=oh_aui_search_detailpage?ie=UTF8&psc=1
misc wood, hot glue gun, machine screws
Programs:
The Arduino code for this robot can be found here:
https://github.com/nshaver/4wd_sr04_robot/tree/master
