Arduino的無線控制 http://blog.arduino.cn/

來源:互聯網
上載者:User

文章中,曾經介紹了如何使用RF模組實現對Arduino的無線控制,其原理非常類似於遙控器,能夠實現4個按鈕的RF無線遙控。不過,對於要進行
資料轉送的場合,這樣的解決辦法就顯得不太適合了,比如你要將Arduino採集到的光線感應器的數值,無線傳輸到PC機那端的時候。這種情況技術上稱為
無線資料轉送,或者簡稱為無線數傳。實現無線數傳目前有不少解決方案,但最容易同Arduino串連使用的是類似於APC220這樣通過串口來實現的無線
數傳,雖然資料轉送的速度可能慢點(受限於串口的傳輸速率),但的確不失為一種簡單易用的方式,難怪很多網友都建議為Arduino加上這樣的模組支援。

今天找出點時間來擺弄擺弄這個APC220了,廠家寄給我的模組沒有任何說明,好在網路上能找到一些說明,另外就得自己摸索了。首先發現的問題是廠
家給的USB適配器似乎於APC220不是很匹配:引腳的數目不一樣。這個嘛,似乎不難理解,可能為了相容不同的產品,或者至少可以說這一適配器不是為
APC220專門設計的。USB適配器上用的晶片是CP2102,於是先到Silicon Laboratories網站下載相應的驅動程式
,我下載的檔案為cp210x_vcp_win2k_xp_s2k3.zip
,解壓縮後是一個exe檔案,直接執行然後按照提示一步一步完成驅動的安裝。

驅動安裝完成之後,將USB適配器插入到PC機的USB介面中,Windows會提示找到相應的硬體,並對其進行相應的安裝和配置:

當Windows提示你硬體已經可以使用之後,在裝置管理員的“連接埠(COM 和 LPT)”下面可以找到CP2102虛擬出來的串口:

現在可以將一個APC220模組串連到USB適配器上了,由於USB適配器與APC220的引腳數目並不一致,串連時要注意插入的位置:

開啟APC220廠家提供的設定程式RF-ANET
,之前CP2102預設找到的串口為COM87,但RF-ANET程式似乎不能正常地開啟這一連接埠。

在裝置管理員中將串口設定成COM4後,重新插入USB適配器並開啟RF-ANET,單擊“Read R”按鈕,一切正常,狀態列上顯示“read succeed!”,表明已經能夠正常地跟APC220通訊上了!

這樣PC端APC220的測試環境就建議好了,現在來看Arduino這一端端。APC220模組與Arduino之間的連線有4條:5V,
GND,
TX和RX,需要注意的是,APC220和Arduino都是單獨的串口裝置,因此Arduino上的發送端TX應該與APC220上的接收端RX串連起
來,同理Arduino上的RX應該與APC220上的TX串連起來:

APC220模組的預設傳輸速率設定為9600,因此先用下面的代碼來進行測試,注意在向Aduino下載程式時,先斷開同APC220模組TX和RX上的連線,否則會出現下載無法正常的情況。

int val = 0;
int ledPin = 13;
void setup()
{
Serial.begin(9600);
}

void loop()
{
val = Serial.read();
if (-1 != val) {
if ('A' == val || 'a' == val) {
Serial.println("Hello from Arduino!");
}else if ('B' == val || 'b' == val) {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
}
}
}

總結一下,現在我們已經分別在PC和Arduino上串連了一個APC220模組,並且已經向Arduino裡面寫入了相應的測試代碼。一切都準備
好之後,現在我們來進行相應的測試。首先要注意的是我們必須用外接電源的方式對Arduino進行供電,這是因為如果串連上USB線的話,相應的
FT232模組會被啟用,這樣FT232實現的串口和ACP220上的串口就會因為衝突導致通訊不正常:

在將加電後的Arduino放到房間裡的一個角落之後,現在來配置PC端。APC220模組通過其USB適配器之後,其原理上也相當於一個串口,因
此我們可以用Arduino內建的開發環境來進行測試,只是這一情況下你的PC上串連的不再是Arduino,而是APC220
USB適配器。串連好APC220 USB適配器後,開啟Arduino,在“Tools” -> “Serial
Ports”菜單下選擇USB適配器虛擬出來的“COM4”(與之前的設定一致)。接著開啟Arduino裡的“Serial
Monitor”,發送A字元,會收到Arduino傳回來的“Hello from
Arduino!”,發送B字元可以點亮Arduino上的13號LED(持續0.5秒):

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.