For longer distance I put the USB module on a remote host or laptop and used the house wifi. The nRF24L01 has been a good fit when used within 20 feet. The second is have the robot supply sensor data to the host such as IR Distance or Battery level. First is low bandwith control such as START, STOP, etc. In general I have 2 needs for radio data. I I have experimented with adding a second level if ID. The protocol contains a message ID and if the remote receives the same ID in back to back messages it discards the later.
The problem with the ACK scheme is you don’t know if the remote didn’t receive the message or if the host didn’t receive the reply. The nRF24L01 has hardware support for CRC, transmission ACKs, and up to 15 retries with programable delay between messages on fault.
#ARDUINO COMMUNICATE WITH COMPUTER SERIAL#
It is just a serial port.Įrrors in transmission are another story. When the radio link is good, the data flow is transparent to the host Linux. A microchip PIC in the middle buffers and forwards data between the host and the remote. I have a dedicated board which has a USB at on end and a nRF24L01 at the other. I wasn't sure of this combination since ROS Serial uses the USB port to communicate so not sure if the shield will require other programming to communicate with it. I saw several options that I thought could workīut was curious what others have done, what they might do different and what was cost effective. I went to and went to their Communications and Control which came up with 452 products.
This way I can sit at my dining room table and change the program as well as control the bot while being able to view messages in ROS, see its simulations in Gazebo etc. The robot will only run inside so won't need more than 30' range probably. My ultimate goal is to have the Linux box run ROS as the master and communicate wirelessly via ROS Serial or ROS Arduino to the Arduino slave which will then do the actual control, get odometry etc.
I want to have a PC running Linux (going from its USB port) that can remotely program, get data from the serial port on an Arduino Uno.