# Arduino Nano receiving and sending at different baud rates

**URL:** <https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619>\
**Category:** Programming\
**Created:** [July 9, 2025, 2:31pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619 "2025-07-09T14:31:40Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![pete320](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pete320/32/1226523_2.png) [@pete320](https://forum.arduino.cc/u/pete320)\
**Post date:** [July 9, 2025, 2:31pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/1 "2025-07-09T14:31:40Z")

</div>

I need to read an serial ascii data packet that terminates with a CR at 9600 baud and transmit a slightly modified version of that same ascii packet at 19200 baud. Then repeat indefinitely.

With a Nano, will changing the receive and transmit packet speeds work?

```arduino
byte dumpdata = 0;
String Data = "";

void setup() {
  delay(2000);
}

void loop() {

  Serial.begin(9600);
  while (Serial.available() >= 1) { dumpdata = Serial.read(); } // clear Serial input buffer
  Serial.readStringUntil('\n'); // read and discard until see CR as beginning of complete packet
  while (Serial.available() < 1) { ; }
  Data = Serial.readStringUntil('\n'); // read packet

  Serial.begin(19200); // send data packet at higher baud rate
  Serial.println(Data);
  Serial.flush(); // wait for transmission to complete
}

```

---

<div class="post-metadata">

**Author:** ![jim-p](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jim-p/32/922840_2.png) [@jim-p](https://forum.arduino.cc/u/jim-p)\
**Post date:** [July 9, 2025, 2:34pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/2 "2025-07-09T14:34:26Z")

</div>

You should use Serial.end() before you do another begin

---

<div class="post-metadata">

**Author:** ![camsysca](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/camsysca/32/1015228_2.png) [@camsysca](https://forum.arduino.cc/u/camsysca)\
**Post date:** [July 9, 2025, 2:36pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/3 "2025-07-09T14:36:11Z")

</div>

It might. Obviously, if you’re receiving the next packet while the previous is transmitting, then no, it won’t work. But if there’s a long enough delay between the incoming packets for both the outgoing previous packet, and any turn-around time for Serial.begin, it would be worth a try.

As @jim-p points out, you should also end both the 9600 and 19200 instances; not sure if “flush()” is implicit in an “end()”, so you’ll have to do some reading.

---

<div class="post-metadata">

**Author:** ![LarryD](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/larryd/32/215550_2.png) [@LarryD](https://forum.arduino.cc/u/LarryD)\
**Post date:** [July 9, 2025, 2:38pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/4 "2025-07-09T14:38:27Z")

</div>

- Do you **need** this to happen using the same RX/TX pins ?

---

<div class="post-metadata">

**Author:** ![kmin](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/kmin/32/1147370_2.png) [@kmin](https://forum.arduino.cc/u/kmin)\
**Post date:** [July 9, 2025, 2:38pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/5 "2025-07-09T14:38:39Z")

</div>

Use software serial for rx (on spare pin) and hardware serial for tx.

---

<div class="post-metadata">

**Author:** ![pete320](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pete320/32/1226523_2.png) [@pete320](https://forum.arduino.cc/u/pete320)\
**Post date:** [July 9, 2025, 2:40pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/6 "2025-07-09T14:40:33Z")

</div>

The nano only has one set of RX/TX pins. I want to RX at 9600 baud and TX at 19200.

Does this code look better:

```arduino
byte dumpdata = 0;
String Data = "";

void setup() {
  delay(2000);
}

void loop() {

  Serial.begin(9600);
  while (Serial.available() >= 1) { dumpdata = Serial.read(); } // clear Serial input buffer
  Serial.readStringUntil('\n'); // read and discard until see CR as beginning of complete packet
  while (Serial.available() < 1) { ; }
  Data = Serial.readStringUntil('\n'); // read packet
  Serial.end();

  Serial.begin(19200); // send data packet at higher baud rate
  Serial.println(Data);
  Serial.flush(); // wait for transmission to complete
  Serial.end();
}

```

---

<div class="post-metadata">

**Author:** ![LarryD](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/larryd/32/215550_2.png) [@LarryD](https://forum.arduino.cc/u/LarryD)\
**Post date:** [July 9, 2025, 2:43pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/7 "2025-07-09T14:43:53Z")

</div>

- Is it guaranteed there is no RX while you will be transmitting ?

---

<div class="post-metadata">

**Author:** ![pete320](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pete320/32/1226523_2.png) [@pete320](https://forum.arduino.cc/u/pete320)\
**Post date:** [July 9, 2025, 2:45pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/8 "2025-07-09T14:45:54Z")

</div>

No. The RX data is a continuous process. So there is 9600 baud data coming in while I am trying to TX at 19200 baud.

---

<div class="post-metadata">

**Author:** ![jim-p](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jim-p/32/922840_2.png) [@jim-p](https://forum.arduino.cc/u/jim-p)\
**Post date:** [July 9, 2025, 2:47pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/9 "2025-07-09T14:47:27Z")

</div>

So you have a device that transmits at one baud rate and receives at a different baud rate?

Quite unusual

---

<div class="post-metadata">

**Author:** ![pete320](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pete320/32/1226523_2.png) [@pete320](https://forum.arduino.cc/u/pete320)\
**Post date:** [July 9, 2025, 2:51pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/10 "2025-07-09T14:51:35Z")

</div>

The problem I am solving is that an older version of a device transmits CSV data at 9600 baud, while the newer version of a different device it talks to now expects to get data at 19200 baud. So I need to read the CSV data at 9600 baud and retransmit it to the other device at 19200 baud. I'm trying to use a single nano to do this. I know a mega with multiple serial ports can do this, as I built a prototype using one that works fine. But I want to use a nano due to space issues. And it only has a single serial port.

---

<div class="post-metadata">

**Author:** ![LarryD](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/larryd/32/215550_2.png) [@LarryD](https://forum.arduino.cc/u/LarryD)\
**Post date:** [July 9, 2025, 2:51pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/11 "2025-07-09T14:51:45Z")

</div>

- Get an Arduino that has two hardware serial ports.

---

<div class="post-metadata">

**Author:** ![jim-p](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jim-p/32/922840_2.png) [@jim-p](https://forum.arduino.cc/u/jim-p)\
**Post date:** [July 9, 2025, 2:55pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/12 "2025-07-09T14:55:03Z")

</div>

Then use Software Serial for one of the devices.

[https://docs.arduino.cc/learn/built-in-libraries/software-serial/](https://docs.arduino.cc/learn/built-in-libraries/software-serial/)

---

<div class="post-metadata">

**Author:** ![kmin](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/kmin/32/1147370_2.png) [@kmin](https://forum.arduino.cc/u/kmin)\
**Post date:** [July 9, 2025, 2:55pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/13 "2025-07-09T14:55:51Z")

</div>

> [@pete320](#):
>
> But I want to use a nano due to space issues.

Esp32 board has "nano" size and 3 serial ports.

> [@kmin](#):
>
> Use software serial for rx (on spare pin) and hardware serial for tx

---

<div class="post-metadata">

**Author:** ![pete320](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pete320/32/1226523_2.png) [@pete320](https://forum.arduino.cc/u/pete320)\
**Post date:** [July 9, 2025, 2:59pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/14 "2025-07-09T14:59:13Z")

</div>

Great ideas. Didn't know about the Esp32 board. Will give it and SW Serial a try.

Thanks!

---

<div class="post-metadata">

**Author:** ![Paul\_KD7HB](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paul_kd7hb/32/1127958_2.png) [@Paul\_KD7HB](https://forum.arduino.cc/u/Paul_KD7HB)\
**Post date:** [July 9, 2025, 3:00pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/15 "2025-07-09T15:00:28Z")

</div>

That will work only if there is NO error checking and recovery being done!

---

<div class="post-metadata">

**Author:** ![sterretje](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/sterretje/32/391294_2.png) [@sterretje](https://forum.arduino.cc/u/sterretje)\
**Post date:** [July 9, 2025, 3:00pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/16 "2025-07-09T15:00:46Z")

</div>

Another option, if you need the same footprint, would be the Nano Every.

---

<div class="post-metadata">

**Author:** ![jim-p](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jim-p/32/922840_2.png) [@jim-p](https://forum.arduino.cc/u/jim-p)\
**Post date:** [July 9, 2025, 3:03pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/17 "2025-07-09T15:03:07Z")

</div>

> [@pete320](#):
>
> Will give it and SW Serial

The big problem with ESP32 is that the I/Os are 3.3V and not 5V so you will need a voltage translator along wit it

---

<div class="post-metadata">

**Author:** ![pete320](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pete320/32/1226523_2.png) [@pete320](https://forum.arduino.cc/u/pete320)\
**Post date:** [July 9, 2025, 3:41pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/18 "2025-07-09T15:41:40Z")

</div>

I'm going to try SW serial to receive the data first. That also solves another problem in that I can then use the HW RX port to receive programming over the USB port without having to disconnect my RS232 TTL converter from the the nano board.

---

<div class="post-metadata">

**Author:** ![jim-p](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jim-p/32/922840_2.png) [@jim-p](https://forum.arduino.cc/u/jim-p)\
**Post date:** [July 9, 2025, 3:58pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/19 "2025-07-09T15:58:26Z")

</div>

> [@pete320](#):
>
> That also solves another problem

For a UART, there is usually no problem with connecting many receivers to a single transmitter, however, connecting many transmitters to a single receiver can cause problems.

---

<div class="post-metadata">

**Author:** ![Paul\_KD7HB](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paul_kd7hb/32/1127958_2.png) [@Paul\_KD7HB](https://forum.arduino.cc/u/Paul_KD7HB)\
**Post date:** [July 9, 2025, 4:02pm UTC](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619/20 "2025-07-09T16:02:10Z")

</div>

> [@pete320](#):
>
> That also solves another problem in that I can then use the HW RX port to receive programming over the USB port without having to disconnect my RS232 TTL converter from the the nano board.

Any USB communications is both sending and receiving so messages can be acknowledged and errors can be corrected. It needs both to work!

[Next page](https://forum.arduino.cc/t/arduino-nano-receiving-and-sending-at-different-baud-rates/1394619.md?page=2)
