rduino UNO R3到底有幾個串口呢?
如果觀察板子引腳發現,只有一對串口,但是我們燒錄程序時使用的也是通過串口傳輸的,這么說來Arduino應該是有兩個串口的,為了搞明白這個問題,我特意去Arduino官網查了一下關于Arduino的原理圖。
原理圖如下所示,通過原理圖我們知道,單片機只有一對串口,但是最后分兩路出去,一路連在了板子上的排針上;
另外一路通過兩個發光二極管連在了一個叫做atmega的芯片上,程序通過這個芯片給單片機燒錄程序。
原理圖如下所示,通過原理圖我們知道,單片機只有一對串口,但是最后分兩路出去,一路連在了板子上的排針上;
另外一路通過兩個發光二極管連在了一個叫做atmega的芯片上,程序通過這個芯片給單片機燒錄程序。
但是我們要使用兩個串口怎么辦呢?不用擔心,Arduino早已為我們謀劃好了一切,我們把上面Arduino板上標注的串口叫做硬串口。
除了硬串口之外,Arduino還為我們設計了一種軟串口,也可以叫做虛擬串口,他是通過程序定義的一組串口,然后映射到Arduino的IO口,這樣我們就可以額外的多出一組串口。
下面我們用軟串口做一組小實驗,經過串口1向Arduino發送數據,Arduino接收到數據之后,再把數據轉送到串口2,并讓其在電腦上打印出來。
上述小實驗的程序如下圖,我們發現這個程序與我們平時所見到的程序所不同的是,第一行多了一句:#include <SoftwareSerial.h>的語句,我們所使用的軟串口全靠的這一語句。它的作用是將其它數字、模擬引腳通過程序模擬成串口通信引腳。
SoftwareSerial mySerial(8, 9);的意思是把8引腳定義為RX口,TX定義為TX口。
再下面的程序的作用是設定波特率,然后把串口1的數據發給串口2,或者把串口2的數據發給串口1
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 9); // RX, TX
void setup()
{
Serial.begin(115200);
mySerial.begin(9600);
}
void loop()
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
我們通過電腦的USB串口向Arduino發送“123”,然后再讓Arduino把收到的數據原封不動的發往我們的虛擬串口,并打印在屏幕上。
USB串口發送字符串“123”。
虛擬串口接收到了字符串“123”
有人會說,一個串口就夠用了,何必如此麻煩,然而實際的情況并非如此,比如說我們要用8266WiFi模塊,如果把唯一一個寶貴的串口資源給了8266。
那程序不出問題還好,一旦有錯,如果不再虛擬出來一對串口,我們都不知道哪里出了問題,所以軟串口是我們開發者必須要掌握的。
芯板坊為您提供最全面國內外開發板資訊、評測、試用信息,包括現今的熱門開發板,如樹莓派,Arduino,STM32,OrangePi,Nanop pi,開源硬件等,感興趣的電子發燒友們,可以來免費申請開發板。
外 觀
概 述
性能描述
基本參數
性能參數
引腳定義
標號定義說明1GNDGND2VCC3.3V-5V3EN電源使能端,≥1.6V或懸空使能,≤0.5V休眠4RXDURAT輸入口,TTL電平5TXDURAT輸出口,TTL電平6AUXURAT信號,接收為低,發送為高7SET設置參數,低有效
設備互聯方式
UART/TTL 電平
RS485/RS232 電平
USB/TTL 電平
USB/USB
教程
本教程將引導您學習 如何實現電腦和 Arduino 的無線通訊。在實驗結束時,您可以在電腦上收到從 Arduino發送的“Hello!”。
硬件
軟件
注意: 本實驗中我們的 Arduino 控制板用的是 Romeo(Leonardo)。在代碼中它使用 Serial1 而不是 Serial。如果您使用其他類型的控制板,例如: Uno, Mega, Bluno 等等。請將 Serial1.println() 修改為 Serial.println(),否則您將無法下載代碼。 Arduino IDE 1.6.* 由于軟件問題,不能正常顯示/收發數據。
模塊配置
1 將天線旋緊在 APC220上,將其插在 USB轉串口 上,最后再查到你的電腦上。
2 下載并安裝 USB轉串口 的驅動。前往 Silicon Labs 下載相應驅動
3 打開設備管理器,找到您的 USB轉串口 的串口號,這里是 COM8。
4 用管理員身份雙擊打開應用 APC22X_V12A.exe (即:RF-magic ) Windows XP可以直接打開。 閱讀:【英文】如何避免每次都需要管理員身份打開?
注意:打開軟件后,軟件將自動打開串口,并有提示。如果提示打開串口失敗,請用 管理員身份打開 或者 從設備管理器中將默認的串口號改為較小的串口號,如:“COM1”。
5 按照下圖中紅色標注里的參數配置(默認值),點擊 寫入 Write W。
Configuration
Write and Read setting
設置選項默認參數收發頻率(RF frequency)420MHz-450MHz(分辨率1KHz,精度±100Hz)434MHz空中速率(RF TRx Rate)1200,2400,4800,9600,19200bps9600bps輸出功率(RF Power)0-99串口速率(Series Rate)1200,2400,4800,9600,19200,38400,57600bps9600bps網絡地址碼(NET ID)0-65535(16位)12345節點地址碼(NODE ID)123456789012串口效驗(Series Patity)Disable,Odd Patity,Even PatityDisable6 對另外一塊 APC220進行相同的配置。
通信測試
6 對另外一塊 APC220進行相同的配置。
通信測試
1 將一塊插在電腦上,另一塊插到 Arduino上(如果沒有 相應的接口,可以單獨按照管腳說明接線)。
One on computer to receive “Hello”
Another on computer to send “Hello”
2 上傳程序。
注意:請將 Serial1修改為 Serial如果您的 Arduino控制板是 Uno, Bluno, Mega 或其他使用串口0的設備。
//The sketch is tested on: Romeo v2 (Leonardo) void setup() { Serial1.begin(9600); //Set serial baud rate to 9600 } void loop() { Serial1.println("Hello!"); //print out hello string delay(1000); //1 second delay }
3 用串口助手或 Arduino串口監視窗打開COM8,您將看到“Hello!” 每隔一秒打印在電腦的窗口上。 (注意:Arduino IDE 1.6.5 不能正常顯示)
Arduino serial monitor on COM8( IDE 1.0.6)
Serial Assistant on COM8
疑難解答
A: 1.兩端的通訊協議不一致,如:波特率,校驗不一致。 2.兩端的頻點,空中波特率不一致。 3.不是同一系列產品。 4.電源連接不正常。 5、模塊已損壞。 6.模塊EN腳設置錯誤 7.通訊距離超過范圍,或天線接觸不良。
A: 1.電壓超過范圍。 2.電源紋波過大。 3.天線接觸不良或天線類型不對。 4.天線過與靠近金屬表面或模塊接地面積太小。 5.接收環境惡劣,如建筑物密集,有強干擾源。 6.有同頻干擾。