Noobs Guide to ESP8266 With Arduino Mega 2560 or Uno
Citation preview
Food Living Outside Play Technology
Workshop
A newbie's guide to setup ESP8266 with Arduino Mega 2560 or Uno by
shinteo on December 21, 2014
Table of Contents
A newbie's guide to setup ESP8266 with Arduino Mega 2560 or Uno
.......................................................................
1
Intro: A newbie's guide to setup ESP8266 with Arduino Mega 2560 or
Uno
...............................................................
2
Step 1: Hardware needed
....................................................................................................
2
Step 2: Software needed
.....................................................................................................
5
Step 3: A Pat on the back
....................................................................................................
6
Step 4: Methodology & Observations: Setup(s) that does not
work/ does work
.............................................................
6
Step 5: Only have an Arduino Uno?
.............................................................................................
8
Step 6: References
.........................................................................................................
8
Author:shinteo always two there are
Your focus determines your reality
Intro: A newbie's guide to setup ESP8266 with Arduino Mega
2560 or Uno For any open source products to be successful or
adoption en masse by the "makers"/ "DIY-ers" / "dev" / "etc"; an
up-to-date and accurate documentation or quick start guide has to
be provided. User's posts in discussion forums are good, but the
bits and bites of (usable) information are hidden in the troves,
hiding deep inside irrelevant comments/posts. This might discourage
the faint-hearted from "looking harder" at the problem. After
scouring the Internet to find some leads on why the setup via
"official" guide has failed, the good reads discovered are placed
in the references section. From a seeming "easy" writeup on the
SEEEDstudio official guide, it took many hours trying to
troubleshoot the setup to make it to work..
To save you from the frustrating moments, let's cut the chase and
go straight to what works. If you are interested on what doesn't
work, read between the lines or skip the steps below till the "what
works /does not work" section. There are a few parameters that will
make or break this setup. Due to unforeseen err in
documentations/writeups, the following parameters that worked were
result of bruteforced effort.
The parameters relevant to this setup are
ESP8266 version
Choice of "matching" baudrate (e.g 9600, 57600, 115200) for 2 sets
of serial comms: ESP8266<->Arduino, and Arduino<->USB
serial monitor (hardware serial or software serial)
Choice of 5v and 3.3v bridging circuitry between Arduino and
ESP8266
Choice of Arduino Mega or Uno, that affect the availability of
serial comms
Choice of terminal software
Choice of code for testing
Yours truly recommends Arduino Mega with ESP8266, using either
logic level shifter or voltage divider, and Serial Monitor.
Assuming you only have an ESP8266 and an Arduino, trying to make
ends meet without another FTDI breakout board for the softserial,
you are not out of luck. Check out the 2nd last page for the source
code that uses RGB LED as indicator instead of softserial.
for the context/background info of this setup:
http://shin-ajaran.blogspot.sg/2014/12/noobs-guide-to-esp8266-with-arduino.html
Step 1: Hardware needed Hardware needed
0. ESP8266 aka ESP-01. This one is manufactured by SEEEDstudio. It
runs off 3.3v only; can be powered off arduino's 3.3v pin or a
separate supply with 3.3v and 500mA. Do not plug a 5V source to
it.
1. break out board for ESP8266. This is made of a 4x4 veroboard,
PCB headers, and jumper header. Be sure to score a line to separate
the copper strips from shorting the adjacent pins.
2. Serial comm options on Arduino(s)
ESP8266 and Arduino needs 2 serial comms; either 1 hardware 1
software or 2 hardware serial.
Arduino Mega is preferred because of the 4x hardware serial. The
nett effect is serial0 can be used for monitoring on PC USB,
serial1 or2 or 3 can be used for comms between arduino and ESP8266
to issue the AT commands
or
Arduino Uno and a separate FTDI serial to USB breakout board. In
the references section, some writeups suggested the limited
baudrate on softserial affects the readout of ESP8266 on serial
monitor. (more about this later)
3. logic level shifter
http://www.instructables.com/id/noobs-guide-to-ESP8266-with-Arduino-Mega-2560-or-U/
option A: plug directly the TX-RX pairs between arduino and
ESP8266. If used, there is a risk of damaging both of them. You
might get lucky for getting away with this? How many times you can
get lucky?
option B: use a voltage divider circuit to divide 5v source from
Arduino to 3.3v source for ESP8266. Acceptable methods, definitely
much better that plugging in directly.
URL for voltage divider calculation:
https://www.abelectronics.co.uk/tools/resistor-vo... ; Vin is
5v, Vout is 3.3v (ish), enter either R1 or R2 with a resistor value
available at your disposal.
The following diagram describes the setup with a 330ohm and 180 ohm
resistors (the only 2 resistors available on hand at the time of
making) voltage divider circuit
option C: logic level shifter, e.g those sold by sparkfun. This
method is highly recommended
4. wiring scheme
Rule of thumb: always check pin out diagram before wiring, ensure
common ground, vcc and gnd are connected according to voltage
specs. ESP8266 CH_PD aka chip power down and RESET are connected to
3.3V for logic high; TX &RX pair for comms: ESP TX-> Arduino
RX; ESP RX-> Arduino TX
Assuming using Arduino Mega Serial2 (pin #16 and #17), ESP8266, and
logic level shifter by sparksfun.
logical wiring schematic
5V -------------HV
TX(#16) ------HV chn0 RX==LV chn0 RX---------RX
RX (#17) -----HV chn0 TX===chn0 TX--------------TX
http://www.instructables.com/id/noobs-guide-to-ESP8266-with-Arduino-Mega-2560-or-U/
Step 2: Software needed Note: baudrate must match on both ends
of a pair of comms device.
There are 2 serial comms as mentioned earlier.
0.0. baudrate for Serial comms between Arduino and ESP8266 Some
sources on the Internet (e.g the official manufacturer's guide)
recommended 57600, some forum posts recommended 115200. However the
ESP8266 received (on dec14) was the latest version (0902) and the
baudrate was set at 9600. Assuming all of the other parameters held
correct, changing of this baudrate is not much of an issue.
The following screenshot describes the ESP8266 software version in
detail following a "correct" setup on both hardware and software.
The main challenge is troubleshooting uncertainty on the hardware
setup and software parameters.
0.1 baudrate for serial comms between Arduino and USB monitor
Assuming using hardware serial, any baudrate will do. Software
serial has a limited baudrate of 19200.
0. terminal software Hyperterminal, Arduino Serial Monitor,
CoolTerm, SSCOM
Assuming using the hardware & wiring identified earlier,
Arduino Serial Monitor can be used to monitor the serial output.
The USB port on Arduino is by default Serial0.
1. what to expect
http://www.instructables.com/id/noobs-guide-to-ESP8266-with-Arduino-Mega-2560-or-U/
device can be associated to this soft AP and receive IP address of
192.168.4.XYZ
Congratulations, ESP8266 is alive (if survived any of the
misfortunes happened earlier).
2. source code for testing ESP8266 with Arduino
The source code listed above merely copied data between 2 serial
interfaces. Hence Serial Monitor can be used to enter AT commands
via USB monitor on Serial0 to ESP8266 on Serial2.
make sure the parameters highligted in red in the screenshot are
set.
from the serial monitor window, enter AT and then press "send";
assuming all parameters are set accordingly, an "OK" will be
replied by ESP8266.
to reset the ESP8266, enter AT+RST and then press "send". some
random data will then appear, follow by "ready"
congratulations, ESP8266 is responding to some AT commands.
3. Source code for testing ESP9266 on an Arduino with
Internet
An wireless router/AP is setup with the SSID "Edge", Security is
set as "WEP", and DHCP. The WAN port of this AP is connected to the
Internet. In the following diagram ESP8266 is connected to the AP,
and issued with a private IP. However, the WAN port on the AP does
not have an IP assigned, hence there is no Internet access.
The modified source code for testing is available on gist
https://gist.github.com/teos0009/2f61b6b031a6eb35c...
Step 3: A Pat on the back Congratulations for coming thus
far!! After all the hassle, Now, let's make some IoT inspired
devices with ESP8266!!
Check out the URLs and PDF in the references section on what are
the cool AT commands and configs for ESP8266
Step 4: Methodology & Observations: Setup(s) that does not
work/ does work Official manufacturer's documentation which doesn't
work out of the box for yours truly
http://www.seeedstudio.com/blog/2014/09/11/getting... a few
dependencies 1. the baudrate in the blog post is 57600 whereas the
ESP82665 on hand is 9600, with no mentioned or whatsoever w.r.t it
in the blogpost of the manufacturer. 2. the CH_PD & RESET are
not held at logic high in the blogpost of the manufacturer.
Methodology & Observations: Setup(s) that does not work/ does
work
MCU: uno comm: serial0 only
code: "Examples->basic->BareMinimum"
cct: voltage divider
baud s0: 9600
cct: voltage divider
baud s0: 9600
SSCom32 on Serial0; AT and then "send" => no response
//-----------------------
en: 3.3v to ch_pd and REST
cct: voltage divider
baud s0: 9600
SSCom32 on Serial0; AT and then "send" => no response
//-----------------------
en: 3.3v to ch_pd and REST
cct: voltage divider
baud s0: 9600
//-----------------------
en: 3.3v to ch_pd and REST
cct: voltage divider
baud s0: 9600
Serial mon on Serial0 can't used
//-----------------------
code: "Examples->basic->BareMinimum"
cct: voltage divider
baud s0: 9600
//--------------------------
code: "copy s0<->s2"
cct: voltage divider
D17 rx-> tx ESP8266 D16 tx-> RX ESP8266
=========================================================
Step 5: Only have an Arduino Uno? Assuming you only have an
ESP8266 and an Arduino, trying to make ends meet without another
FTDI breakout board for the softserial, you are not out of
luck.
ESP8266 on Arduino Uno with voltage divider circuit using serial0
and RGB led as indicator. Note the broken pin header on the arduino
in the diagram.
modified source code is available here
https://gist.github.com/teos0009/39d602dd809fd53ed...
by shinteo
by EasyIoT
by jbeemster
ESP8266 mini
Tutorial by
AJackOfAllTrades says: Jan 3, 2015. 11:42 AM
REPLY
For a real Arduino Newbie, would you please post a sketch of the
schematic? Can't quite make out all of the connections from the
photo. Great Instructable BTW!
shinteo says: Jan 4, 2015. 7:04 PM REPLY
hi jack,
look for the "schematic" under the "logical wiring schematic". not
quite a schematic,but an ascii art representation; hopefully one
could figure out what the wiring and connections.
Akin Yildiz says: Dec 22, 2014. 11:46 AM
REPLY
very detailed instructables. i'm a true beginner and it took me a
long time to figure out how to get live with this module. you cover
all detailes in depth. thanks a lot..
shinteo says: Dec 22, 2014. 11:36 PM REPLY
thank you for your kind compliment. My guess we went though the
same frustrations?? Let's help each other out one way or the other
:)
Akin Yildiz says: Dec 23, 2014. 1:49 PM
REPLY