Introduction: Arduino Wireless Serial Communication

Picture of Arduino Wireless Serial Communication

There are many ways to communicate with remote Arduinos. I have found that many of them hit a slightly higher price point than what I would like. Also, ethernet shields (and wifi dito?) consume many valuable hardware pins. I will describe how to communicate host to Arduino using commercially available wireless serial ports. They are cheap(ish) and only use the rx/tx pins. The drawback is that the air-protocol isn't encrypted so I wouldn't use it for sensitive applications. I use it to control lighting. I would be more impressed than offended if a neighbour hacked my indoor lighting. Serial ports (even wireless) are designed for point to point communication. It is possible to use in one-to many or other constellations but certaing design consideration have to be taken. My Arduino library referenced in step 5 supports one-to many.

The described project is for one-way or two-way communication using (i. e. transciever). If you know you will only send commands "blindly" you can attach a transmitter to the PC end and a receiver to the Arduino. Those modules are really cheap.

Step 1: What You Need

Picture of What You Need
  1. USB serial adapter
  2. Two or more Wireless RS232 modules (e. g. EWRF 3022)
  3. Arduino. It's a Nano in the picture but any model should due.
  4. A gadget box
  5. Soldering equipment
  6. Basic Arduino skills

Step 2: Attach the USB Module to the Transciever

Picture of Attach the USB Module to the Transciever

The VBUS connector on the USB module provides +5v for the transciever. Cross rx/tx lines. See pictures.

Step 3: Fit the Modules in the Box

Picture of Fit the Modules in the Box

For the PC-end I added a small enclosure. Drill a hole for the antenna and dremel an opening for the USB socket.

Step 4: Attach the Second Transciever to the Arduino

Picture of Attach the Second Transciever to the Arduino

Attach vcc, gnd and rx/tx (crossed) of the transciever module to the Arduino

Step 5: Load the Software

Flash the Arduino sketch of choice, which uses serial communication with a PC.

If you want to write your own interaction you may want to check my CmdCallBack library out. The library makes it easy to link commands with parameter with callback functions in the sketch. I might make a separate Instructable about that.

Step 6: Try It Out!


ponynicker53 (author)2015-11-16

Using 2 pairs of Tx/Rx's, can you do two way communication?

Say I want to:

"as for data from a pin"

then have the arduino serial print the result back to the computer


ehsmaes (author)ponynicker532015-11-18

If I interpret you question correctly - you want to use the command interpreter without the wireless stuff? Yes, that works. See point-to point mode here:

ponynicker53 (author)ehsmaes2015-11-18

I may have asked my question in a confusing way.

Basically I want to be able to run simple 2 way serial communication wirelessly.


That would require 1 Tx and 1 Rx on the arduino, and 1Tx and 1Rx on the USB/Computer.

How would I wire them up to have one pair of transmitters send instructions to the arduino, and the other pair send serial data from the arduino to the computer.

To give some background, I want to make an RC vehicle with lots of sensors. Rather than using a traditional R/C Tx & Rx (like these which are limited by the number of channels (Move forward/back, Turn left/right, etc), I was wondering if I could communicate with the arduino-bot via data, so I am not limited by number of channels. So I could send commands to it to turn left/right as well as receive data from the sensors in real time.

Maybe there is a better way of going about this.

Nevermind, I think I figured it out.

ShoaibS7 (author)ponynicker532016-02-14

How did you do it ?
I want to apply for similar application where I can control my home appliances and monitor their state as well.

ponynicker53 (author)ShoaibS72016-02-15

Bought TWO of these:

and one of these:

Hooking one pair:

USB TTL Tx pin --> 1st transmitter --> ***air*** --> 1st reciever --> arduino reciever pin

Other pair:

arduino transmitter pin -->2nd transmitter --> ***air*** --> 2nd reciever -->Rx pin on USB TTL

Basically in the image, one Rx/Tx pair is replacing the yellow wire, the other is replacing the blue wire. Then each side will need it's own power and gnd.

SuryaG5 (author)ponynicker532017-08-09

Hey i am trying to do a similar kind of project for my final year of engineering.... And i want to do a project related to home automation where my devices will send data to my pc and the and in return my pc will send instructions to the arduino.... Please help friend

SiddhiN (author)2016-09-19

after uploading my sketch if i disconnect mt arduino from PC and give an external power source to it, will it work? And how can i use received data in an application?

ehsmaes (author)SiddhiN2016-09-20

Your arduino doesn't have to be attached to a PC but for most applications you need to have one arduino+rf connected to a computer in order to control and/or read data from the other arduino+rf units. But I suppose there could be rare situations where it would make sense to have an autonomous system where arduinos only communicate with eachother. If you have such a use case - yes, it is possible. As for how to use received data in an application - that is really hard to answer. It is up to you. It is just data. Use it like you would any other data.

yesnoj (author)ehsmaes2016-12-13

Hi, i've an arduino nano like yours and the transreceiver module wifi esp8266.What i want to do is to use an Amazon Dash Button to turn on/off a light using a relay attached to the arduino.Is possible?Can you give me some suggestions?!


AndrewH395 (author)yesnoj2017-05-02

you could use a relay or a NPN transitor (should work) to turn of lights but with a dash button seems a little iffy. You could probably make something a little larger with a smaller antena than this but arduino to arduino communication.

SiddhiN (author)ehsmaes2016-09-21

My one arduino with receiver is going to be attached to PC.

Thanks a lot!

AndrewH395 (author)2017-05-02

I plan on using this trick of reasonably long distance serial communication (arduino to arduino) [drone project if you guessed it], so I need to look into if these are very good over distance but overall a big thanks. I can just wire the two arduinos the same as the one arduino in the guide correct?

MikeM189 (author)2017-04-05

Another option is to grab an Arduino clone with built-in RF, like this one:

No wire connections and you can even run on a single AA batteries.

VongS (author)2016-08-06

can it work in multiple transmitter to one receiver friend?

ehsmaes (author)VongS2016-08-08

I have not had that use case myself but yes, I can't see why not. It should work.

JackMacWindows (author)2016-07-08

What wireless module did you use for this? What would you suggest? I would like to be able to turn my Arduino sketch on and off by sending text over serial.

ehsmaes (author)JackMacWindows2016-07-08

To be honest. Things have happened since I wrote this. I would now recommend a different solution. Currently I use esp8266 wifi modules with mqtt. Sometimes I use the esp as a communication module to Arduino but mostly as a standalone unit.

ArifSae (author)2016-05-31

Nice @ sticking component on lcd @video :P

RenanLikeLenin (author)2016-02-20

I'm planning to do this with a nRF24L01+. This might be obvious, but I'm a little new to this. I noticed that there aren't any pins on the nRF24L01+ labeled "TA" or "RB." There are "VCC" "GND" "CSN" "CC" "MOSI" "SCK" "IRQ" and "MISO." Which do I use instead of the "TA" and "RB" pins?

ehsmaes (author)RenanLikeLenin2016-02-21

Well, I never got round to using the nRF24L01+ (even though I have a bunch). I do know, however that it won't be a pug and play replacement. The module uses Serial Peripheral Interface (SPI) which works differently and is also wired in a different way. A quick search produced this link: I will also offer a bit of advise. Since I wrote this tutorial, the world has evolved. IoT is going IP. Personally I have moved most of my own stuff to ESP8266 on WiFi, either in standalone (using IO on the ESP module) or in combination with Arduino. For comms I use MQTT. There are probably good tutorials on that already. If there isn't, maybe I'll get around to writing one. Good luck with your project!

bruin49 (author)2015-07-07

How fast is this thing? I am making a timer that will use a laser/photo resistor on each side to start and stop the timer. I am trying to make it accurate to the hundredth of a second. Also, I want to put a sensor in the middle so that I can measure my 10yd dash and 40yd dash in the same run, so can I us three of these at once? Thanks a lot for any help.

DaleP5 (author)bruin492015-08-24

Do you really need instant responses? Couldn't you buffer the values and send while you finish the run? The only thing that has to be instant or nearly instant is the photo resistor.

Benny30 (author)bruin492015-08-20

Hi bruin would like too make a timer with similar functionality as urs had some success but would like to make it better.

bruin49 (author)Benny302015-08-20

I am hoping to make an instructable pretty soon, but tell me about how you have yours set up and hopefully I can give you some advice.

ehsmaes (author)bruin492015-07-07

It depends on the payload and baud rate. I run my transcievers @ 9600bps. That would make for just over 1000 bytes per second or 10 bytes per 100ms interval. You could go much higher with baud if you want. In your case, two-way transcievers would be overkill, though. You just need three transmitters and one receiver.

Xerxes7 (author)2015-07-15

Hi again,
Do u think it would be possible to send video over this thing?

Xerxes7 (author)2015-07-14

Do you think this Transceiver would work the same as yours?


AbDuCt (author)2014-01-09

I would look into the Nordic wireless transceivers. they run on 2.4ghz and are pretty beastly chips with a robust feature set like idle/power down/standby modes/auto retransmission/etc. they are only 1.10$ each on eBay when you buy in bulk of 10 units. there is also many libraries which make using them a breeze. I personally program them in assembler most of the time.

baelza.bubba (author)AbDuCt2015-06-30

Thanks AbDuCt, I was looking at the Nordic 2.4ghz modules just last night and I was starting for formulate some ideas for world domination ... It's great to hear that they are a breeze to use. Also, Nordic have a pretty helpful looking Wiki about the RF that looks like it would be good to read more thoroughly when I get me some of these useful looking modules. They make pretty heavy comments about making sure that you use a smoothing capacitor to clean up the signal ... and that they should be used as 3.3v. Anyway, I'm ordering some soon!

ehsmaes (author)AbDuCt2014-01-09

I forgot to ask. Could you link to a couple of the libraries?

AbDuCt (author)ehsmaes2014-01-09

The first is one library and then there is another named Mirf. The second link is a library that allows you to link the transceivers in a binary tree like structure to create a zigbee like mesh network (good for automating a house for example). There are a bunch of tutorials on the internet what shows the usages of the libraries, the general usage is the same as standard file IO in C. There is a READ() function and a WRITE() function and the library does the rest. In assembler the transceivers are also easily controlled if you know how to communicate with them (specific sequence of pins that need to be toggled to tell the module what you're attempting to do, etc). As for range I haven't had a chance to play with them yet, but I know people who can easily cover a pretty standard sized house. One article on the internet said that the NRF24L01+ model does around 200 meters open air. There are more beefy versions, costing 6-7 dollars per transceiver) that include amplifiers and a RP-SMA connector for external antennas to boost wireless gain which boast 1000 meters of range but I haven't seen proof of that yet. I have 10 being shipped to me right now and I am in the process of revamping a colleagues assembler code to make wireless Nintendo 64 controllers powered by an attiny2313. Even if you only buy 2 transceivers to play around with, I highly suggest it.

chinmayv (author)AbDuCt2014-09-16


Could you forward me the link of transcievers which give a range of around 1000-2000 m and if possible their interfacing with Arduino

ehsmaes (author)AbDuCt2014-01-11

I put an order in for 10 nrf24l01+. I may make a version of the command/response library for these if the range is decent. By decent I mean from one end of the house to the other. Maybe a good mesh topology will help.

AbDuCt (author)ehsmaes2014-01-11

Nice! Mine just came in yesterday along with my new universal USB programmer for avr/pic/bios/eeprom/etc. Going to go look for my breadboards so I can start playing with these chips. I have to finish reorganizing the macros and functions in my assembler project so I have a dedicated radio library instead of all my code in one file with my actual project code.

ehsmaes (author)AbDuCt2014-01-09

Thanks for the pointer. Are you referring to NRF24L01+ devices? I have been thinking of trying SPI devices. I am guessing the range will suffer though at 2.4 GHz. What is your experience on that?

shirantha27 (author)2015-04-04

HI there,

is there any method to send bulk amount of datat through it? i measn sending a file on sd card to a computer like thing?

i have tried to send but i was only able to send one double type number per one time.

whenever i include more than that amount it reads as some wierd stuff by reciever.

i hope the buffer size may be a obstacle.

is there any method to solve this or to send bulk amount of data throuh two of this serial devices?

thanks again


ehsmaes (author)shirantha272015-04-05

Anything is possible but it could proove difficult. You are right. If you try to send it all at once you would flood the buffers. You could implement you own transfer protocol which so the receiving end would acknowledge each chunk before the next. Or you could slow it down on the sender. Shouldn't be too hard. However, in both cases you could loose data and you would have to implement checksums and re-send in the protocol for it to be useful. To sum it up. Possible? - yes, Practical and worth while? -no.

itanc (author)2015-03-10

hi there

can this be used for wireless midi?



ehsmaes (author)itanc2015-03-11

Sorry, I don't know enough about midi to answer that. If the midi uses rs232 as a carrier, I suppose it could be done but I am not the one to help you.

shirantha27 (author)2015-03-01

nice tutorial mate!! just what i want. but i have a problem i bought two of this modules

i was able to connect one module to pc via usb to serial successfully.but unfortunately i found none of arduino example codes which can be successfully compiled so that i could send serial data wireless to the PC.these were the pages i tried

and some others too but none of them worked(codes give compile errors)i am sure that i have correctly installed the libraries. please can you help me and direct me to simple arduino code snippet so that i can send data to pc remotely from a distance

ehsmaes (author)shirantha272015-03-01

Well, if all you want to do is send data from one arduino point-to point to your PC, you can just use Serial.print from the arduino. No lib's required. If you want command/response, you could try my library (used in the demo-video). There is a link in the instructable.

shirantha27 (author)ehsmaes2015-03-07

one more question can we use it to program the arduino



ehsmaes (author)shirantha272015-03-09

I haven't given it much thought but i am pretty sure it won't work. Not unless you trick the ardu into flash mode, for sure.

shirantha27 (author)ehsmaes2015-03-07

one more question can we use it to program the arduino



shirantha27 (author)ehsmaes2015-03-02

thanks mate that helped...

itanc (author)2015-03-09


I wonder can this be used for wireless 1 to many midi? ( 1 arduino master to many arduino slaves)



chinmayv (author)2014-09-16

Can anyone post some links about transcievers having a range of 1000-2000 metres and their interfacing with Arduino

And does the problem of frequency matching occur if many transcievers are sending their data to a single Arduino

And how can we increase the range of a normal Nordic transciever if the above range isnt available

ehsmaes (author)chinmayv2014-09-17

I haven't heard of any such long range trancievers. I think you would have to play around with directional antennas (maybe some version of a pringles can antenna or parabolic). If you need omni-directional range you would need high powered transcievers which would not be legal in most countries. Countries regulate output wattage. As a general rule, lower frequencies carry longer. There is a range/speed trade-off in wireless comms. In other words, 433MHz devices have better range but at lower throughput than 2.4GHz devices. If you want unlimited range go for a GSM module.

About This Instructable




Bio: IT-professional by day, DIY hobbyist (among other things) on my free time. I always have one or more projects going on. Usually something to do ... More »
More by ehsmaes:Motorized WiFi IKEA Roller BlindCheap 3D Delta Printer ImprovementsMotorize IoT with ESP8266
Add instructable to: