Please enable Javascript to view the contents

HC12遠距無線通訊模組開發記錄 Part.1

 ·  ☕ 2 分钟  ·  👩🏿‍🚀 iLYuSha

開發前

本次的項目是在兒童樂園I店建置大型迷宮密室,內部由大量隔間組成,每道門都配有RFID射頻識別門鎖。在遊戲設計初期(2020年1月)考慮納入計時功能來限制玩家在各關卡的挑戰時間,但尚未實際討論過實作的問題。2月中開發清單增加了DS3231時鐘模組(之後會補充記錄這部分的開發問題)來處理計時的功能,DS3231使用I2C傳輸可以提供多個Arduino在時間記錄上的參考,但隨之而來的問題是I店場域很大,I2C無法提供長距離的穩定通訊,在研究了RS232RS485CAN等有線長距離傳輸的姿勢後,在龐大的佈線壓力下(還有就是場域要連網的設備基數太多),還是決定使用無線通訊,早期也曾考慮過使用但是當時公司只有大量的便宜貨FS1000AMX-RM-5V,這個在前年曾經使用過,但傳輸距離頂多2米,超過2米之後傳輸的速率大幅下降,而且組成是一對發射器與接收器,顯然會大量增加連接的裝置。最終決定使用本文的主角HC12遠距無線通訊模組!

開發學習

簡單研究了HC12的使用與FS1000A,除了HC12收發一體之外,代碼在讀寫控制上並無太多區別,而相比I2C的通訊需要區分主從設備並在發送與接收的過程需要對答來看,HC12顯然要方便許多。

HC12的基本設置

靚照

HC12正面
HC12背面

配線

配線的基本原則:

  • HC12 VCC5V Arduino
  • HC12 GNDGND Arduino
  • HC12 RX TX Arduino
  • HC12 TX RX Arduino
    在本次的開發項目中,大多數的設備第10~13腳已經被RFID的SPI介面使用了,第5~7腳則作為蜂鳴器與繼電器的輸出,所以HC12對接的RX(接收)TX(傳送)設定為第2與第3腳,以下是代碼中的設定,使用HC12必須引入SoftwareSerial庫。
    1
    2
    
    #include <SoftwareSerial.h>
    
    SoftwareSerial HC12(2, 3); // HC-12 TX Pin, HC-12 RX Pin
    

    HC12連接圖
    參考了網上資料,在HC12的電源正負端最好配上22µF至1mF的去耦電容,而在電源正極之前串聯一顆1N4007二極體。

安裝

作為Server的HC12帶有一塊DS3231時鐘模組

測試

基本上兩塊Arduino各自配置HC12後就可以使用下面的代碼進行雙向傳輸

1
2
3
4
5
6
7
8
void loop() {
  while (HC12.available()) {        // If HC-12 has data
    Serial.write(HC12.read());      // Send the data to Serial monitor
  }
  while (Serial.available()) {      // If Serial monitor has data
    HC12.write(Serial.read());      // Send that data to HC-12
  }
}

參考來源

基于Arduino开发板使用HC-12远程无线通信模块

分享

伊琉沙 AKA 哇咔咔
作者
iLYuSha
遊戲開發者 / 密室機關師