Easy Prints

I’ve created a new project category for robot50.net: Easy 3D Prints. These are simple, but functional, objects suitable for printing on pretty much any 3D printer. As the collection grows I may include some that require a commonly available non-3D printed part or two. But the point is to keep things as simple as possible. In addition to detailed descriptions on the project page, all files will be shared on Thingiverse and other repositories.

ESP8266 + Arduino + Blynk = Easy and Cheap IoT?

Internet of Things (IoT) is all the rage, with many (probably) useless IoT devices coming on the market all the time now. I’ve been looking for the best path for someone of my background to get involved. Coming from an Arduino-heavy involvement and with very weak network programming skills, not every solution being put out there for IoT development was going to work for me.

The advent of the dirt cheap ESP8266 chips and modules combined with porting of the the Arduino system to them offers an intriguing path forward. Starting several months ago, I worked with a partner to develop some robotic car prototypes around the ESP8266. At the time we were looking at a very low cost educational platform for introducing computer programing that would require no installs since it would all be done in a web browser. While I focused on the chassis and components, my partner developed the custom circuit board and some really slick interface applications.

IoT enabled robotic cars. The one on the right has a ESP8266 (as NodeMCU) running Arduino + Blynk installed.
IoT enabled robotic cars. The one on the right has a ESP8266 (as NodeMCU) running Arduino + Blynk installed.

That project is on hold, possibly forever, since many similar products have come on the market. However it clarified to me that I would be really struggling to become competent on developing for the remote devices (i.e. phones and tablets) that would be controlling the robot car (or other IoT things). Also, pure web interfaces can be clumsy on one hand, yet Apple has made it far from easy to produce iPhone apps, on the other.

Meanwhile a number of projects have launched that are designed to make it easier to develop IoT apps/devices for people who are not professional-level programmers. I now have a box of their hardware platforms after backing too many kickstarters :). It’s still pretty much a wild west environment out there, but I think things are beginning to settle down a bit.

One system for easy IoT that appeals to me is Blynk. Blynk has several things going for it:

  • Easy integration into the Arduino environment / skill set.
  • Runs on a variety of micro-controller hardware, including Arduinos & Raspberry Pis with connectivity, the ESP8266 series, and Particle’s products.
  • Pretty open and can be run on their servers or yours.
  • A rational business model: free to download and play with, a one-time small charge for using elements beyond the free allowance.
  • A method for sharing control of your IoT devices with others.

But does it work? As a first attempt I rebuilt one of our robotic car chassis with a ESP8266 in the NodeMCU carrier format, mounted to a motor driver shield (from doit.am). I installed the Blynk app on my Android phone and modified one of their example apps to upload to the NodeMCU via the Arduino environment. Success! Sort of! I could run the motors up and down with the Blynk app on my phone. However I was running it through their servers and the network lag made the car uncontrollable. So far, I have not gotten the direct access mode working were the phone connects directly to the ESP8266 running as an access point. That should solve the lag problem.

So I am going to start a project to learn IoT using a home automation type demo. It will probably be a combination of lighting, environmental sensing, and perhaps notifications. This will be on the ESP8266 platform with Arduino + Blynk and using commonly available and cheap sensors and probably 3D printed housings. I will post all the details to a project web page on robot50.net