UART(Universal Asynchronous Receiver/Transmitter)通用非同步收發傳輸器,將數據透過串列通訊和平行通訊間作傳輸轉換,包括 RS232、RS449、RS423、RS422 和 RS485 等接口標準規範和匯流排標準規範,即UART是非同步串列通訊口的總稱。而 RS232、RS449、RS423、RS422 和 RS485 等,是對應各種非同步串列通訊口的接口標準和匯流排標準,它規定了通訊口的電氣特性、傳輸速率、連接特性和接口的機械特性等內容。實際上是屬於通訊網路中的實體層(Physical Layer)的概念,與通信協議沒有直接關係。
通用非同步接收器-發送器(UART)把數據的 bytes 按照 bits 順序發送。另一端的 UART 把 bits 組裝為 bytes。通信可以是單工、全雙工或半雙工。
(維基百科UART)
Arduino 提供 Serial 函式庫來操控 UART 的使用:
| if(Serial) | 串列埠是否已連接準備完成。 |
| available() | 回傳串列埠所接收讀取到資料的 byte 數(字元數)。 |
| availableForWrite() | 回傳串列埠準備傳送出去資料的 byte 數(字元數)。 |
| begin() | 設定串列埠的 baud rate 並啟用。 |
| end() | 關閉結束串列埠使用。 |
| find() | 在串列埠接收的緩衝區中搜尋特定資料。 |
| findUntil() | 在串列埠接收的緩衝區中搜尋特定字串。 |
| flush() | 等待串列埠將傳送資料完成。 |
| parseFloat() | 讀取串列埠緩衝區並返回下一個有效的浮點數。 |
| parseInt() | 讀取串列埠緩衝區並返回下一個有效的整數。 |
| peek() | 讀取串列埠緩衝區並返回下一個有效的字元。 |
| print() | 列印串列埠資料,若資料為整數值直接作為 ASCII 碼列出,若為浮點數則列至小數點後兩位。 |
| println() | 同print()列印完後自動加上"\n"換行。 |
| read() | 讀取串列埠接收到的資料。 |
| readBytes() | 讀取串列埠接收到的字元資料。 |
| readBytesUntil() | 讀取串列埠接收到的陣列資料。 |
| readString() | 讀取串列埠接收到的字元資料組成字串。 |
| readStringUntil() | 從特定字符開始讀取串列埠資料直到結束。 |
| setTimeout() | 設定串列埠等待時間,預設為1000毫秒。 |
| write() | 將資料以二進制代碼傳送,列印時顯示 ASCII 相對應的字符,若要傳送數字資料改用print()。 |
| serialEvent() | 當串列埠接收到資料時會自動被呼叫。 |
| atoi() | 字串轉整數。 |
| atol() | 字串轉長整數。 |
| atof() | 字串轉浮點數。 |
使用Arduino UNO 與 MEGA 傳輸訊息:

使用設備:
Arduino UNO
Arduino MEGA
DHT12 溫溼度感測器
LED
9V電池外接電源
Arduino UNO 使用 I2C 自 DHT12 讀取溫度數據,將資料透過 UART 傳送至 Arduino MEGA,MEGA 接收到完整資料後再顯示於螢幕上。
UNO 的 TX 接到 MEGA 的 RX3,UNO 的 RX 接到 MEGA 的 TX3,MEGA 的 RX0/TX0 留給 USB 連接電腦。UNO 使用 9V 電池外部供電,且 UNO 和 MEGA 的 GND 要連接使統一基準電位。
