UART 非同步串列埠

  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()字串轉浮點數。
詳細內容可參閱 https://www.arduino.cc/en/pmwiki.php?n=Reference/Serial

  使用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 要連接使統一基準電位。

發表留言

使用 WordPress.com 設計專業網站
立即開始使用