Stream IoT sensor data ESP8266 NodeMCU v1.0 ESP12-E with Arduino IDE
Streaming sensor data using ESP8266 NodeMCU v1.0 ESP12-E with Arduino IDE to Thingspeak
Streaming sensor data using ESP8266 NodeMCU v1.0 ESP12-E with Arduino IDE to Thingspeak
Sorry for the long hiatus, yours truly was busy trying to
put bacon on the table, and also playing catch-up with the increasing rent.
Back in late 2014 and early 2015, your truly came across
this nifty WiFi Chip ESP8266 (the ESP-01) and have to battle among the
inconsistent documentations from various sources. For the spur moment, he documented
his frustrations (findings) as an instruction guide ESP8266 guide http://shin-ajaran.blogspot.sg/2014/12/noobs-guide-to-esp8266-with-arduino.html
or on instructables ESP8266 guide http://www.instructables.com/id/noobs-guide-to-ESP8266-with-Arduino-Mega-2560-or-U/
. In due course, the ESP8266 WiFi has opened a whole new window of opportunity
for him and his padawans.
The caveat at the moment of writing in 2014/2015 was to find
a way to eliminate the “middle” MCU, the well-loved Arduino Uno (or Arduino
Mega). It doesn’t make sense to forgo the ESP8266 that sports a 32bit CPU by
using an Arduino Uno that sports an 8bit CPU for computations. Over the several
months of dec14 to sept15, several IDE flavours/methodologies was released on
the Internet to use standalone ESP8266, e.g to use ESP8266 and the available IO
pins sans the Arduino Uno or Arduino Mega. From retrospective view, the cost of
deploying an IoT framework to collect data has gone down drastically with just
the standalone ESP8266 alone as the sentinel device. The flavours of standalone mode are ESP8266 Lua,
and ESP8266 Arduino IDE. Check out the reference section for details.
After two Maker Faires (Maker Faire Singapore, and Maker
Faire Shenzhen), one Tan Kah Kee Young Inventors Award which students won a Merit
Award, one SUTD Design & Technology Contest which students won third prize
and merit prize, one IDC Robocon which students represented Singapore, one IEEE
AIYEHUM 2015 which student shortlisted as finalist, and countless submissions
later; the hiatus is over. In Maker Faire Shenzhen, yours truly rub shoulders
with several big names in the industry; perhaps the mostly-male playing field (for
the record there were females; @juliewatai @sexycyborg, etc were surrounded by
hordes of testosterone raging males armed with cameras of various sizes firing
away, while your truly observe with amusement from afar) and the maker-ish aura
projected by yours truly. One of them was Zhao Zong (赵总) of
AI Thinker, the manufacturer of NodeMCU (a breakout version of the ESP8266 ESP12-E
and CP2102, with out of the box support for LUA). Yours truly landed his salty
porky hands on a bunch of NodeMCU v1.0 at very competitive price (友情价).
In this write up, yours truly is introducing the use of
NodeMCU v1.0 (black) with ESP8266 Arduino IDE 1.6.5. There are lots of write up
on the NodeMCU v0.9 or ESP8266 ESP-01 and variants with LUA, but information is
scarce for NodeMCU v1.0 and ESP8266 Arduino IDE. This post is also a superseding
update of an earlier how-to post of using ESP8266 ESP-01 with Arduino Mega and
the temperature data is streamed to thingspeak http://shin-ajaran.blogspot.sg/2015/01/iot-streaming-temperature-data-acquired.html
.
Parts needed
Hardware
1x DS18B20 temperature sensor with 4.7k resistor across vcc
and data pin
1x NodeMCU v1.0 (black)
1x Access Point Connected to Internet
Software:
ESP8266 Arduino IDE https://github.com/esp8266/Arduino
Source code available at the footer
Thingspeak account setup, and API key acquired.
Methodology
Caveat: the physical pin2 on NodeMCU v1.0 does not
corresponds to pin D2 in Arduino IDE. Check out the URL in the references.
1.
It is assumed that the Access Point is able to
access to internet, and a thingspeak account is set up accordingly.
2.
Connect 3.3v and gnd from NodeMCU v1.0 to
DS18B20 respectively.
3.
Connect data from DS18B20 to pin4 on NodeMCU
v1.0 (in code, it will be used as pin2)
4.
Connect microUSB to NodeMCU v1.0
5.
Launch ESP8266 Arduino IDE, Select Tools ->
Board -> NodeMCU v1.0; and ensure parameters are correct. Refer to
screenshot.
6.
Ensure the libraries required are installed,
Select Sketch -> Include Libraries -> Manage Libraries or add zip library
7.
Program the source code to read DS18B20 using
one wire protocol and the acquired data to be sent to thingspeak.
9. Observe data update of sensor data on thingspeak.
Observation
Having done the above, congratulations on sending sendor data
using NodeMCU v1.0 with Arduino IDE. Now the biggest question comes begging,
does this ESP8266 Arduino IDE supports all
the fancy pansy libraries supported on vanilla Arduino IDE?? That is for us
to discover and update on the git hub page.
Implications
Internet enable any of your creations realised on Arduino
Uno (or mega) have become even simpler than previously thought. Yours truly traversed
the era of sending serial data, packing data for Ethernet, WiFly, ZigBee, and
now ESP8266. ESP8266 is very convenient to use.
What’s next?
Alright, time to internet enable my sous vide setup:
temperature sensor DS18B20 data streamed over the Internet to a cloud computing
facility to compute PID and then output the control data over the internet to control
the state of the solid state relay that in turn controls the AC appliance.
Earlier yours truly have controlled a IoT lamp from a virtual machine http://shin-ajaran.blogspot.sg/2015/01/internet-controlled-ac-appliances-with.html,
now is to connect the dots.
Reference
ESP8266 Arduino IDE https://github.com/esp8266/Arduino
ESP8266 Lua http://benlo.com/esp8266/
NodeMCU http://nodemcu.com/index_en.html
NodeMCU v1.0 pin mapping https://github.com/esp8266/Arduino/blob/esp8266/hardware/esp8266com/esp8266/variants/nodemcu/pins_arduino.h
NodeMCU v1.0 pin mapping https://github.com/esp8266/Arduino/issues/584
thingspeak data update iframe
source code