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

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

LinkIt ONE開發板的簡介.
計算機程式語言實習課.
串列I/O(UART) 20010/12/08.
RS 232介紹.
序列埠通訊.
題目:十六對一多工器 姓名:李國豪 學號:B
CH.2 Introduction to Microprocessor-Based Control
串行通讯的概念 串行通讯:一条信息的各位数据被逐位按顺序传送 的通讯方式称为串行通讯。
Arduino課程 DHT11溫濕感測 中部自造者基地-雲科大.
數位邏輯設計與實習 Ch05序向邏輯電路.
TCP協定 (傳輸層).
RS 232介紹.
第十章 MSP430的USCI模組.
內容:串列傳輸 實作:Arduino to PC 、 Arduino to Arduino 簡報:廖崇義
动手玩转Arduino (三) 串口输入输出
第1章 認識Arduino.
2-3 基本數位邏輯處理※.
数据通信与计算机网络技术.
科学网 李浪 第4章 物理层 科学网 李浪.
第八章 80C51单片机的串行通信 主要内容:本章主要介绍80C51串行通信相关知识,包括串行通信基本概念,80C51单片机的串行口及其工作方式,以及单片机在双机或多机通信中的应用。
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
UART口的第一次接触 MCU起航 QQ:
HiNet 光世代非固定制 用戶端IPv6設定方式說明
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
SQL Stored Procedure SQL 預存程序.
R教學 安裝RStudio 羅琪老師.
數位電路的優點 電子電路有數位(digital)電路與類比(analog)電路兩大類,而數位電路較類比電路有以下的優點:
第15章 串行通信及接口电路.
安裝JDK 安裝Eclipse Eclipse 中文化
Serial-Data Transmission
指導教授:【李博明】老師 組員: 4A13A017 紀家郁 4A 邱建傑 4A 白智仁 4A 簡宗胤
第二章 常见网络电缆 以太网常见缆线 设备间接口电缆 用户线.
第二組 體重計連接wifi 組員:S 羅翊甄 S 江德輝 S 江鴻儀 S 陳彥任.
串行通讯的概念 串行通讯:一条信息的各位数据被逐位按顺序传送 的通讯方式称为串行通讯。
FTP檔案上傳下載 實務與運用.
Chap3 Linked List 鏈結串列.
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
Topic Introduction—RMI
第一單元 建立java 程式.
PLC-GPPW軟體使用教學 授課教師:張祖烈
類比轉數位 IC研究 組員:施怡儒 S 柯曄新 S 張久藝 S
Arduino課程 RFID 中部自造者基地-雲科大.
第九章 MCS-51串行接口 9.1 串行数据通信概述 通 信 并行 一、并行通信和串行通信 串行 串行通信 数据是一位一位传送的
Arduino x 物理實驗 --By Scott.
網路概論 第2章 資料通訊.
輸入&輸出 函數 P20~P21.
網際網路與電腦應用 林偉川 2001/10/11.
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
Bluetooth 技術篇 藍芽技術如何傳輸資料 藍芽傳輸的安全性 第六組 吳哲榮.
挑戰C++程式語言 ──第7章 輸入與輸出.
取得與安裝TIDE 從TIBBO網站取得TIDE
測試藍芽模組的接收和發送功能 班級:資通三A 學號: 姓名:簡宏恩.
MiRanda Java Interface v1.0的使用方法
自停式向下計數器 通訊一甲 B 楊穎穆.
ZigBee PRO教學系統 CC2530 實驗.
一、簡介 電腦硬體設計:純硬體電路(hardware)及韌體電 路(firmware)兩種方式。
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
可變式計數器 通訊一甲 B 楊穎穆.
班級:博碩子一甲 授課老師:鐘國家 助教:陳國政
資料表示方法 資料儲存單位.
資料擷取與監控應用實務.
第五章 序列埠通訊 並列與序列通訊簡介 認識序列埠 認識字元資料類型 字串資料類型 從序列埠監控視窗觀察變數 從Arduino接收序列資料
LED Pili LED 中州技術學院 電子系 副教授 余文俊.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
Lab#9 Serial Port 實驗.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

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

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

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

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

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

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

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

RS-232 RS-232通訊協定一開始是設計與數據機連結作傳輸,所與之連結的裝置可以略分為資料終端裝置(DTE, Data Terminal Equipment)和資料通訊裝置(DCE, Data Communication Equipment)兩種。 以DB-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 通知有電話網路的信號

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

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

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

Arduino的訊號轉換電路

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

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

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

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協定。

超級終端機only in XP

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

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

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

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

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

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

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

輸出資料型態 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進位形式輸出

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

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

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

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

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