Presentation is loading. Please wait.

Presentation is loading. Please wait.

CH6 RS232串列埠通訊 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.

Similar presentations


Presentation on theme: "CH6 RS232串列埠通訊 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇."— Presentation transcript:

1 CH6 RS232串列埠通訊 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇

2 通訊 系統內部的感測設備以及控制模組、設備之間都需要資料的交換來達成某部分的功能,而這些資訊除了無線通訊外皆需要透過1條或多條線路將系統連結,經由線路的數位訊號0與1(也就是電壓改變)的組合排列,來代表不同的意義。 網路、並列埠、串列埠、USB等,這類型的介面協定會依據傳輸量的大小以及時代的演進,持續地改良、進步,每單位時間內能傳輸的資料量會逐漸擴增。

3 電腦的通訊埠 通訊埠一種是9隻接腳,另一種則是25隻接腳,分別就是串列埠和並列埠的接點位置。

4 串列埠 串列傳輸又叫序列傳輸,將資料的每個位元經過一條線依序的傳遞出去,而並列傳輸則是需要8條線(這邊假設資料為8個位元時),同時將資料的位元一次傳出。

5 同步和非同步通訊 同步通訊(Synchronous communication)
非同步通訊(Universal Asynchronous Receiver/Transmitter,通常稱作UART) 同步通訊內的整個資料序列以連續的位元方式傳送,而以較高速的速率傳輸大資料區塊。 同步傳輸的單位是資料框,所以位元錯誤的機率會較大。

6 同步和非同步通訊 非同步通訊主要用於資料的不定期傳輸,通常用於字元產生的速度不確定或以較低的速度傳輸字元,為了確定能接收到字元,所以在每個字元前後會被開始位元及結束位元包住,以確定傳輸的有效性,此方式錯誤率較低。 非同步通訊包含了RS232、RS499、RS423、RS422和RS485等介面標準規範和匯流排標準規範。

7 全雙工和半雙工 全雙工(Full-Duplex),例如電話 半雙工(Half-Duplex),例如無線電
全雙工:設備的收發資料是可以同時進行的。 半雙工:接收資料和傳送資料在同一時間只能選擇一樣來做。

8 RS-232 RS-232通訊協定一開始是設計與數據機連結作傳輸,所與之連結的裝置可以略分為資料終端裝置(DTE, Data Terminal Equipment)和資料通訊裝置(DCE, Data Communication Equipment)兩種。 以DB-9的9隻腳為主要的介面。 由於線路的損耗與雜訊干擾,傳輸距離的建議值約不超過十多公尺。

9 RS-232 名稱 全名 說明 GND Ground 信號接地,提供電路參考電位。 TXD Transmitted Data 資料發送接腳
RXD Received Data 資料接收接腳 RTS Request To Send 要求發送資料 CTS Clear To Send 回應RTS訊息,通知對方可以發送 DSR Data Set Ready 通知電腦已在待命狀態 DTR Data Terminal Ready 告知資料終端處於待命 DCD Data Carrier Detect 確認數據機載波 RI Ring Indication 通知有電話網路的信號

10 RS-232準位 電腦來說RS232電壓的變化是正負15V,但對於單晶片的嵌入式系統而言,準位則是0-3V或0-5V,決定於單晶片的驅動電壓。 市面上也有專用於RS232電位轉換的IC,例如:HIN232、MAX232等。 (資料來源:intersil公司HIN232說明手冊)

11 RS-232接線範例 (資料來源:intersil公司HIN232說明手冊)

12 RS-232接線範例 由圖可以看到一共有紅、藍兩色分別表示一組TX、RX。也就是說一顆晶片上實際可以支援兩組的輸出、輸入訊號準位變化。橘色的線則表示了訊號的方向。若系統需要RTS等其它的功能腳位,也可以利用這邊的準位轉換,不一定只能使用在資料上。

13 Arduino的訊號轉換電路

14 RS-232介面轉換 Arduino的硬體時,在板子上有FT232這顆USB轉RS-232訊號IC,提供USB的介面供使用者在開發的時候方便連結電腦使用,這樣就不怕缺少COM。

15 RS-232通訊協定 START D0 D1 D2 D3 D4 D5 D6 D7 P STOP 起始字元 資料位元 奇偶位元 停止位元

16 RS-232通訊協定 起始位元(START BIT):表示之後的位元為資料,以上圖的例子起始位元為0(低電位)。
資料位元(DATA BIT):可以選擇資料大小為7或8個位元。 (奇偶)同位元檢查(PARITY BIT):是指包含在起始位元和停止位元中間的資料必須要有偶數個或是奇數的1。 停止位元(STOP BIT):停止位元數有1個和2個兩種選擇。通常設定為1個。

17 RS-232通訊協定 資料傳輸速率常見為1200的倍數,從1200、2400、4800、9600、38400、57600、115200等,單位是bps (bits per second),請記得在傳送資料時,英文字和數字等標準ASCII碼的字元,1個字是1 byte (等於8bits),這樣的傳輸速率在現在來說是相當慢的,USB、1394等新一代的介面速度皆遠遠大於此,不過在一般的工業設備或是感測模組中,RS-232還是相當普遍常見的,像是全球定位系統GPS模組也是採用232協定。

18 超級終端機only in XP

19 Access Port 除了一般常見的傳送、接收資料顯示外,它還支援了監測電腦上某個串列埠的功能,可以隨時監看在這個COM內所有的資料進出,相當方便。

20 RS-232 and RS-485 RS-232逐漸改向RS-485的協定方式發展,主因為RS-232的訊號為單接點的方式,也就是單靠一條線路上的電壓變化,容易受到雜訊或距離的影響使資料內的位元判斷錯誤。而RS-485採用差動式,兩條接線皆有電壓變化透過同一時刻的訊號差異來表示資料,抗干擾的能力較強,速度與傳輸距離也可以大大提升。

21 Arduino串列埠通訊 在Arduino中,標準程式下載的介面便是RS-232,透過USB的接線經由Arduino上的轉換晶片後,與第0和1兩支數位PIN腳做連結,分別是RX與TX。

22 Arduino串列埠通訊 在開啟Arduino的開發環境後,可以在Tools內的Serial Port選擇目前連結的通訊埠。

23 範例 void setup() { //初始化串列埠,鮑9600 Serial.begin(9600); } void loop()
void loop() //想要輸出的字串 Serial.println("Hello RS-232"); delay(1000); //輸出慢一點

24 範例 設定:Serial.begin(9600) 初始化串列埠,鮑率9600

25 範例 顯示: Serial.print("Hello RS-232"); 每次換行,想要輸出的字串:
Serial.println("Hello RS-232");

26 輸出資料型態 Serial.println(testByte,BYTE);//以ASCII形式輸出
Serial.println(testByte,DEC);//以10進位形式輸出 Serial.println(testByte,HEX);//以16進位形式輸出 Serial.println(testByte,BIN); //以2進位形式輸出 Serial.println(testByte,OCT);//以8進位形式輸出

27 輸出型態比較 資料型態 輸出結果 ASCII碼(Byte) A 10進位 65 16進位 41 2進位 8進位 101

28 輸入資料 c = Serial.read(); 讀取經由串列埠傳送來的資料,把輸入的字元存至c這個變數當中

29 輸入資料 在Arduino中,在等待一段時間都沒有資料輸入後,自動跳往下一行程式執行,我們的範例中,接著輸入後就是輸出至電腦的函式,也因為沒有收到資料的結果,輸出就變成了亂碼。但實際當我們有輸入時,這個範例還是可以將資料完整的回送到電腦做顯示。

30 輸入資料 在Arduino中提供了一個函式,負責判斷有無資料透過RS-232的腳位傳送進來: Serial.available()

31 輸入資料 void loop() { char c; //判斷是否有資料輸入 if(Serial.available() > 0)
//讀取電腦經由串列埠傳送的資料 c = Serial.read(); //將收到的資料再回傳給電腦 Serial.println(c); } delay(1000); //延遲1秒


Download ppt "CH6 RS232串列埠通訊 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇."

Similar presentations


Ads by Google