SoftwareSerial with TTL [solved]

I will preface this post by admitting that my research into the problem is preliminary at this stage, but having not easily found the answer, I hope that this post can be of use to somebody in the future.

I am attempting to use an Arduino Uno to interface with an iRobot Create 2 robot. The robot can communicate via serial port, which works at TTL levels(0-5V; 0V being 0, and 5V being 1). I have chosen to use the SoftwareSerial library (http://www.arduino.cc/en/Reference/SoftwareSerial) because my project necessitates the use of a software serial port.

I am having difficulties reading data from the Create robot using the Arduino, and I have performed signifcant testing to determine that the problem is with the serial communication. I need to know what levels the software serial port on the Arduino expects. Does it use TTL levels, or something else?

I need to know what levels the software serial port on the Arduino expects. Does it use TTL levels, or something else?

Well, SoftwareSerial is a software library that uses two Digital pins (hardware) to transmit and receive Serial data. Lots of libraries use Digital pins, and the voltage levels are not “set” by the software. The voltage levels required for Digital input pins are specified by the hardware manufacturer. From the Atmel 328 spec:

Arduino Digital Input spec.jpg

So the answer is 0.3 * 5V, or 0.6V maximum to be a LOW digital input, and 0.6 * 5V, or 3.0V minimum to be a HIGH digital input. This assumes you are using an official Arduino Uno, which runs at 5V, and not some other “UNO” board that runs at 3.3V.

Cheers,
/dev

/dev, thank you for taking the time to write up a response. Your reply not only answered my question, but is a good lesson for people beginning to work with Arduino.

Even though Arduino has a lot to offer as a package, the actual workhorse is the microcontroller, and reading through the documentation can answer a lot of questions.