Sending Data From An Arduino To The ESP8266 Via Serial
Maybe your like
In this tutorial you’re going to learn how to send data from an Arduino to the ESP8266 via serial communication.
Before you continue reading this project, please complete the following tutorials:
- How to get started with the ESP8266
- How to flash your ESP8266 with NodeMCU
- How to Level Shift 5V to 3.3V
If you like the ESP WiFi module and you want to build more projects you can download my eBook called “Home Automation using ESP8266” here. Let’s get started!
Watch the video demonstration below
Parts List
Here’s the hardware that you need to complete this tutorial example:
- 1x ESP8266 – read Best ESP8266 Wi-Fi Development Boards
- Arduino UNO – read Best Arduino Starter Kits
- 1x FTDI programmer
- 1x Breadboard
- 1x LED
- 1x 220 Ohm Resistor
- 1x 1K Ohm Resistor
- 1x 2k Ohm Resistor

You can use the preceding links or go directly to MakerAdvisor.com/tools to find all the parts for your projects at the best price!

Uploading Your Arduino Sketch
The Arduino sketch for this tutorial is very simple.
You begin a serial communication in the setup() function at a baud rate of 9600. Then in the loop() function it prints “HI!” continuously every 1 second (that message will be received by your ESP later).
Copy the sketch below to your Arduino IDE and upload it to your Arduino board.
/* * Rui Santos * Complete Project Details https://randomnerdtutorials.com */ // Send Data From Arduino to ESP8266 via Serial @ baud rate 9600 void setup() { Serial.begin(9600); } void loop() { Serial.print("HI!"); delay(1000); }View raw code
Now if you open your Arduino serial monitor at a baud rate of 9600, you’ll see a message appearing in your window saying “HI!” every 1 second.
Schematics (3.3V FTDI Programmer)
Having your ESP8266 flashed with NodeMCU, follow the next schematics to establish a serial communication between your FTDI programmer and your ESP8266 to upload some code.
Downloading ESPlorer IDE
I recommend using the ESPlorer IDE which is a program created by 4refr0nt to create and save Lua files into your ESP8266. Follow these instructions to download and install ESPlorer:
- Click here to download ESPlorer
- Unzip that folder
- Go to the main folder
- Run ESPlorer.jar
- Open the ESPlorer (as shown in the Figure below).

Writing Your ESP8266 Script
Copy and paste the code below into ESPlorer IDE window.
-- Rui Santos -- Complete project details at https://randomnerdtutorials.com ledOn = 0 pin=4 gpio.mode(pin,gpio.OUTPUT) uart.on("data", 3, function(data) print("Received from Arduino:", data) if data=="HI!" then if ledOn==0 then ledOn = 1 gpio.write(pin,gpio.HIGH) print("LED On") else ledOn = 0 gpio.write(pin,gpio.LOW) print("LED Off") end end end, 0)View raw code
Summary: The ESP is configured to listen to serial communications. Every time that receives the string “HI!” at a baud rate of 9600, it will turn the GPIO 2 on or off.
Uploading Your Script
When you open the ESPlorer IDE you should see a window similar to the preceding Figure, follow these instructions to send commands to your ESP8266:
- Connect your FTDI programmer to your computer
- Set bad raute as 9600
- Select your FTDI programmer port (COM3, for example)
- Press Open/Close
- Select NodeMCU+MicroPtyhon tab
- Copy the your Lua script into ESPlorer
Then you simply click the button Save to ESP and save your file with the name “init.lua”. Everything that you need to worry about or change is highlighted in red box in the following Figure.

Final Circuit
Follow the next schematics to complete this tutorial.

Note: I’m using a voltage divider to shift the TX signal of the Arduino from 5V to 3.3V. This works well for slow baud rates, but it might not work at faster baud rates. Read this blog post for more information about lowering the voltage of signals.
Demonstration
Now your LED should be blinking every one second. This means that your Arduino is sending the string “HI” and your ESP is receiving that data. Watch the video at the beginning of this post for a live demonstration.
Now instead of sending a string saying just “HI!”, you can attach sensors to your Arduino and send that data to your ESP instead. Later you can build a web server that displays that data.
Read Next…
You might also find interesting trying one of these tutorials:
- How to Make Two ESP8266 Talk
- ESP8266 Remote Controlled Sockets
- Posting a Tweet with the ESP8266
Do you have any questions? Leave a comment down below!
Thanks for reading. If you like this post probably you might like my next ones, so please support me by subscribing my blog.
Tag » Arduino Esp8266 Serial Communication
-
Send Data From Arduino To NodeMCU And NodeMCU To Arduino...
-
Serial Communication Between Esp8266 And Arduino
-
Serial Communication Between Arduino And ESP8266
-
ESP8266 – Serial Communication - The Engineering Projects
-
Send Data From Arduino To NodeMCU And NodeMCU To ... - YouTube
-
Arduino To ESP8266 Data With Serial Communication ... - YouTube
-
How To Do Serial Communication Between Two Boards? | ArduinoJson 6
-
Serial Communication Between ESP8266 And Arduino - Iotguider
-
Serial Communication Arduino To NodeMcu - Stack Overflow
-
Issue With Communication Between ESP8266 And Arduino UNO
-
ESP8266 Serial Communication
-
Lesson 9- NodeMCU With Arduino UNO (UART) - SlideShare
-
Why Doesn't Serial Communication Work On Arduino Uno R3 And ...
-
Arduino To ESP8266 By Serial Communication | Martyn Currey