文/曹永忠、許智誠、蔡英德
環境監控是物聯網開發中非常重要的一環,上篇文章「【物聯網開發系列】氣象物聯網 :風力偵測開發感測器篇」(曹永忠,許智誠 & 蔡英德,2017d)、「【物聯網開發系列】氣象物聯網:風力偵測開發微控器篇」(曹永忠,許智誠 & 蔡英德,2017c)中,我們談到了如何偵測風速,進而透過單晶片(MCU 微控器)來做成單、獨立操控的小型裝置來當為風速偵測站。
在環境監控中,風速與風向相輔相成,所以單一的風速偵測仍無法滿足我們的需求,筆者在「【物聯網開發系列】氣象物聯網 :風向偵測開發感測器上篇」(曹永忠,許智誠 & 蔡英德,2017e)、「【物聯網開發系列】氣象物聯網 :風向偵測開發感測器下篇」(曹永忠,許智誠 & 蔡英德,2017f)中,已經提到如何擷取風向資訊,進而配合筆者出版「Ameba 風力監控系統開發(氣象物聯網)」(曹永忠,許智誠 & 蔡英德,2017a,2017b)與 PM2.5 空汙偵測相關的電子書(曹永忠, 許智誠 & 蔡英德,2016a,2016b,2016c,2016d)與文章(曹永忠,2016a,2016b,2016c,2016d,2016e,2016f,2016g,2016h),將之整合之後,可以讓環境監控更加完善。
本文將介紹風向感測器。筆者友人是清水吳厝國小校長黃朝恭先生,校址位於台中國際機場邊,也是清水的偏鄉學校,對於學子的健康與社區健康深感重要,委託筆者在該校內建立風向與風速監測站,並透過物聯網的技術,將這樣的資訊網頁化,可以讓各地方的使用者查詢到該區域的風向與風速資訊。
鑑於如此,筆者將在本篇與下列幾篇專欄之中,將風向與風速感測監控的技術分享給讀者,希望可以透過我的經驗號召更多有志之士(曹永忠 et al.,2017a, 2017b),可以將環境監控的感測資訊提升到更圓滿的境界。
硬體介紹
筆者並不打算自行開發風向感測器,因為校正本身就是一門學問,加上防水、防曬、穩定與強固性,筆者打算採用工業級的產品簡化整個系統開發的困難度,由於資金有限,筆者於淘寶網找到商家:仁科測控的風向產品:風向傳感器變送器,可以參考下圖所示:
![]() (a)風向感測器 |
![]() (b)風向感測器底部訊號電源接腳圖 |
![]() (c)風向感測器上視圖 |
圖 1:風向感測器產品圖
TTL 轉 RS-485 模組
因為風向感測器會使用 Modbus RTU 通訊協定,透過 RS 485 實體通訊來要求資訊與擷取回傳資訊,由於微處理機/單晶片乃是採用 TTL 通訊規格,由於 RS485 的電壓與傳輸電氣方式與 TTL 通訊規格截然不同,所以我們需要使用 TTL 轉 RS485 的轉換模組,如下圖(a)所示, 筆者使用這個 TTL 轉 RS485 模組,進行轉換不同通訊方式。
![]() (a)TL 轉 RS485 模組 |
![]() (b)TL 轉 RS485 模組之工業通訊端 |
圖 2:TTL 轉 RS485 模組
風向感測器接腳說明
如下表所示,我們在風向感測器線材另一端,是電源線與 RS-485 的訊號端。
表 1:風向感測器接腳表
線材顏色 | 說明 | |
電 源 | 棕色 | 電源正(10~30V DC) |
黑色 | 電源負(接地) | |
通信 | 黃色 | 485-A |
藍色 | 485-B |
如下圖所示,我們可以看到風向感測器線材另一端,棕線是 10~30V 直流電的正極端、黑線是 10~30V 直流電的負極端、黃線則是 RS 485 訊號的 A 端、藍線是 RS 485 訊號的 B 端,請讀者不要弄錯了。

圖 3:風向感測器接線
電源與訊號連接
如下圖所示,我們遵循上面所述,將棕線與黑線接上 12V 的交換式變壓器之 V+ 與 V- 端。

圖 4:接上電源
如下圖所示,由於我們要先用原廠的測試軟體,我們準備一個 RS232/RS485 轉 USB 轉接器,並將黃線(RS 485-A) 交到 RS 485-A(本轉換器為 A),將藍線(RS 485-B) 交到 RS 485-B(本轉換器為 B),完成測試電路後,將 RS232/RS485 轉 TTL 轉接器接到 Ameba RTL 8195 AM 開發板。

圖 5:接上 RS485 轉 TTL 模組
使用具有 WIFI 網路功能的 Ameba RTL 8195 AM 開發板
如下圖(a)所示,Ameba RTL 8195 AM 開發板是瑞昱半導體股份有限公司(Realtek Semiconductor Corp.)自行發製造的 Arduino 開發板相容品,功能強大,內建 Wifi 網路通訊模組、NFC 模組等,且開發工具相容於 Arduino Sketch IDE 開發工具,對許多感測模組使用與函式庫,更是相容於 Arduino 官方與第三方軟體。
如下圖(b)所示,Ameba RTL 8195 AM 開發板的外接腳位相容於 Arduino UNO 開發板,適合開發各式的感測器或物聯網應用。Ameba RTL 8195 AM 開發板的介面有 Wifi、GPIO、NFC、I2C、UART、SPI、PWM、ADC,使用方式完全相容 Arduino UNO 開發板,讓許多 Makers 使用上,沒有什麼轉換成本。
![]() (a)Ameba RTL 8195 AM 開發板 |
![]() (b)Ameba RTL 8195 AM 開發板腳位一覽圖 |
圖 6:Ameba RTL 8195 AM 開發板。參考來源:Ameba RTL 8195 AM 開發板官網
如下表所示,我們將 Ameba RTL 8195 AM 開發板與 TTL 轉 RS485 模組之電路連接起來後,連同 Modbus RTU 繼電器模組與電源供應器等,進行最後的電路組立,完成後如下圖所示,我們可以完成 Ameba RTL 8195 AM 開發板連接風向感測器模組之完整電路。
表 2:電路組立接腳表
TTL 轉 RS485 | 風向感測器 |
A+ | 風向感測器黃線 (A) |
B- | 風向感測器藍線 (B) |
![]() ![]() |
|
TTL 轉 RS485 | Ameba RTL 8195 AM 開發板 |
GND | GND |
RXD | D0 |
TXD | D1 |
5V | +5V |
![]() |
TTL 轉 RS485 | 風向感測器 |
![]() |

圖 7:Ameba RTL 8195 AM 開發板連接風向感測器之完整電路圖
透過命令控制 Modbus RTU 風向感測器模組
我們將 Ameba RTL 8195 AM 開發板的驅動程式安裝好之後,打開 Ameba RTL 8195 AM 開發板的開發工具:Sketch IDE 整合開發軟體(軟體下載),撰寫一段程式,如下表所示之透過串列埠傳輸命令控制 Modbus RTU 風向感測器模組測試程式,使用控制命令讀取風向感測器的風向資料。
表 3:透過串列埠傳輸命令讀取 Modbus RTU 風向感測器組測試程式
透過串列埠傳輸命令讀取 Modbus RTU 風向感測器組測試程式(wind_Modbus11) |
#include <SoftwareSerial.h> uint8_t outdata[] = {0x02, 0x03, 0x00, 0x00, 0x00, 0x02, 0xC4, 0x38 } ; uint8_t incomingdata[9] ; SoftwareSerial mySerial(0, 1); // RX, TX //modbusDevice dev = new modbusDevice() ; void setup() { // put your setup code here, to run once: Serial.begin(9600) ; Serial.println("Program Start Here"); mySerial.begin(9600) ; // Modbus(&mySerial,9600) } void loop() { sendQuery() ; if (receiveQuery()) { Serial.println("Get Data OK"); Serial.print("Wind Direction is :("); Serial.print(incomingdata[3],HEX) ; Serial.print("/"); Serial.print(incomingdata[4],HEX) ; Serial.print("/"); Serial.print((double)incomingdata[3]*256+(double)incomingdata[4]) ; Serial.print(" m/s ) \n"); Serial.print("Wind Direction is :("); Serial.print(incomingdata[5],HEX) ; Serial.print("/"); Serial.print(incomingdata[6],HEX) ; Serial.print("/"); Serial.print((double)incomingdata[5]*256+(double)incomingdata[6]) ; Serial.print(" angle ) \n"); } else { Serial.println("Fail to Get Data"); } delay(2000) ; } void sendQuery() { mySerial.write(outdata,8) ; } boolean receiveQuery() { boolean ret = false ; unsigned strtime = millis() ; while(true) { if ( (millis() - strtime) > 2000) { ret = false ; return ret ; } if (mySerial.available() >= 9) { mySerial.readBytes(incomingdata, 9) ; ret = true ; return ret ; } } } |
如下圖所示,我們可以在透過串列埠傳輸命令,讀取 Modbus RTU 風向感測器組測試程式結果畫面看到風向,如果完成編譯檔燒錄動作,我們可以見到完成之畫面。

圖 8:透過串列埠傳輸命令,讀取 Modbus RTU 風向感測器組測試程式結果畫面
後續
本篇是「氣象物聯網」系列中「使用微控器讀取風向感測器上篇」,主要告訴讀者,如何讓 Ameba RTL 8195 AM 開發板透過 TTL 轉 RS485 模組,透過 Modbus RTU 通訊協定來讀取風向感測器的風向資料,下篇筆者會針對容錯與內容解析,做更進一步的講解。
後續筆者還會繼續發表「氣象物聯網」系列的文章,在未來我們可以創造出更優質,更具未來性的物聯網(Internet of Thing:IOT)產品開發相關技術。
敬請期待更多的文章。
作者介紹:
曹永忠(Yung-Chung Tsao) ,目前為自由作家暨專業 Maker,專研於軟體工程、軟體開發與設計、物件導向程式設計,商品攝影及人像攝影。長期投入創客運動、資訊系統設計與開發、企業應用系統開發、軟體工程、新產品開發管理、商品及人像攝影等領域,並持續發表作品及相關專業著作。
Email:prgbruce@gmail.com
Line ID:dr.brucetsao
作者網頁/臉書社群 (Arduino.Taiwan)/Github網站/Youtube
許智誠(Chih-Cheng Hsu),美國加州大學洛杉磯分校(UCLA) 資訊工程系博士,曾任職於美國 IBM 等軟體公司多年,現任教於中央大學資訊管理學系專任副教授,主要研究為軟體工程、設計流程與自動化、數位教學、雲端裝置、多層式網頁系統、系統整合。
Email: khsu@mgt.ncu.edu.tw
蔡英德(Yin-Te Tsai),國立清華大學資訊科學系博士,目前是靜宜大學資訊傳播工程學系教授、靜宜大學計算機及通訊中心主任,主要研究為演算法設計與分析、生物資訊、軟體開發、視障輔具設計與開發。
Email: yttsai@pu.edu.tw
參考文獻:
曹永忠. (2016a). 智慧家庭:PM2.5 空氣感測器(感測器篇). 智慧家庭. Retrieved from https://vmaker.tw/archives/3812
曹永忠. (2016b). 智慧家庭:PM2.5空氣感測器(上網篇:啟動網路校時功能). 智慧家庭. Retrieved from https://vmaker.tw/archives/7305
曹永忠. (2016c). 智慧家庭:PM2.5空氣感測器(上網篇:連上MQTT). 智慧家庭. Retrieved from https://vmaker.tw/archives/7490
曹永忠. (2016d). 智慧家庭:PM2.5空氣感測器(硬體組裝上篇). 智慧家庭. Retrieved from https://vmaker.tw/archives/3901
曹永忠. (2016e). 智慧家庭:PM2.5空氣感測器(硬體組裝下篇). 智慧家庭. Retrieved from https://vmaker.tw/archives/3945
曹永忠. (2016f). 智慧家庭:PM2.5空氣感測器(電路設計上篇). 智慧家庭. Retrieved from https://vmaker.tw/archives/4029
曹永忠. (2016g). 智慧家庭:PM2.5空氣感測器(電路設計下篇). 智慧家庭. Retrieved from https://vmaker.tw/archives/4127
曹永忠. (2016h). 智慧家庭:PM2.5空氣感測器(檢核資料). 智慧家庭. Retrieved from https://vmaker.tw/archives/8587
曹永忠, 許智誠, & 蔡英德. (2016a). Ameba 空气粒子感测装置设计与开发(MQTT篇):Using Ameba to Develop a PM 2.5 Monitoring Device to MQTT (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.
曹永忠, 許智誠, & 蔡英德. (2016b). Ameba 空氣粒子感測裝置設計與開發(MQTT篇)):Using Ameba to Develop a PM 2.5 Monitoring Device to MQTT (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.
曹永忠, 許智誠, & 蔡英德. (2016c). Arduino 空气盒子随身装置设计与开发(随身装置篇):Using Arduino to Develop a Portable PM 2.5 Monitoring Device (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.
曹永忠, 許智誠, & 蔡英德. (2016d). Arduino 空氣盒子隨身裝置設計與開發(隨身裝置篇):Using Arduino to Develop a Portable PM 2.5 Monitoring Device (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.
曹永忠, 許智誠, & 蔡英德. (2017a). Ameba风力监控系统开发(气象物联网) (Using Ameba to Develop a Wind Monitoring System (IOT for Weather)) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.
曹永忠, 許智誠, & 蔡英德. (2017b). Ameba風力監控系統開發(氣象物聯網) (Using Ameba to Develop a Wind Monitoring System (IOT for Weather)) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.
曹永忠, 許智誠, & 蔡英德. (2017c). 【物聯網開發系列】氣象物聯網 :風力偵測開發微控器篇. 物聯網開發系列. Retrieved from https://vmaker.tw/archives/19114
曹永忠, 許智誠, & 蔡英德. (2017d). 【物聯網開發系列】氣象物聯網 :風力偵測開發感測器篇. 物聯網開發系列. Retrieved from https://vmaker.tw/archives/19431
曹永忠, 許智誠, & 蔡英德. (2017e). 【物聯網開發系列】氣象物聯網 :風向偵測開發感測器上篇. 物聯網開發系列. Retrieved from https://vmaker.tw/
曹永忠, 許智誠, & 蔡英德. (2017f). 【物聯網開發系列】氣象物聯網 :風向偵測開發感測器下篇. 物聯網開發系列. Retrieved from https://vmaker.tw/