<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> Arduino >> 瀏覽文章

        終于搞定了通過兩路藍牙接收數據

        作者:未知   來源:互聯網   點擊數:  更新時間:2014年07月31日   【字體:

        一直想做無線傳感器,通過藍牙來接收數據,無奈因為arduino接收串口數據的一些問題,一直擱到現在。因為學校里給學生開了選修課,所以手邊有一些nano和mega可以使用,所以就做了用兩個nano加上兩個藍牙模塊來發射數據,用mega加兩個藍牙模塊來接收數據。因為mega可以同時使用4路串口,所以考慮用mega來作為主控機,用來接收來自傳感器的數據,每個傳感器加一個nano和藍牙來無線發射數據。

         

        因為是測試,所以在nano中寫了一個簡單的發射信號的語句。以下四nano中的程序:

        ————————————————我是分界線——————————————————————

        int i=1;
        void setup() { 
          Serial.begin(9600);   }
          void loop(){
                 Serial.print(i);
               Serial.print("$");
               delay(50);
               i++;        
            }

        ————————————————我是分界線——————————————————————

        以下是mega中的程序:

        ——————————————————我是分界線————————————————————————

        String comdata = "";
        String shuju="";
        String shuju2="";
        int i;
        void setup()
         {
             Serial.begin(9600);
             Serial1.begin(9600);
             Serial2.begin(9600);
         }

        void loop()
         {
             while (Serial1.available() > 0) 
             {
                 shuju += char(Serial1.read());
                 delay(2);
             }
             while (Serial2.available() > 0)
             {
               shuju2 +=char(Serial2.read());
               delay(2);
             }
             if (shuju.length() > 0)
             {
                 i=shuju.indexOf("$");
                 if(i!=-1){
                 comdata=shuju.substring(0,i);
                 Serial.print("#1=");       
                 Serial.print(comdata);
                 Serial.println("$");
                 shuju=shuju.substring(i+1,shuju.length());
                 comdata = "";
                 i=0;
                 }
             }
               if (shuju2.length() > 0)
             {
                 i=shuju2.indexOf("$");
                 if(i!=-1){
                 comdata=shuju2.substring(0,i);
                 Serial.print("#2=");
                  Serial.print(comdata);
                  Serial.println("$");
                 shuju2=shuju2.substring(i+1,shuju2.length());
                 comdata = "";
                 i=0;
                  }

        ——————————————我是分界線————————————————————

        上篇忘記介紹藍牙模塊的設置了,如果想要利用兩路藍牙來接收數據,那么這兩路藍牙必須設置不同的密碼,以下是藍牙模塊的設置方法,可以將藍牙模塊接到串口模塊上,然后里喲你串口軟件發指令給藍牙模塊,以下設置是針對DFrobot的藍牙模塊的,它上面有開關可以設置接收命令狀態。如果不是DFrobot的藍牙模塊,只要將KEY針腳接高電平就是可以接受命令狀態。將兩個藍牙模塊設置為主,然后設置不同的密碼。再將另外兩個設置為從,設置對應主藍牙的密碼。以下是具體的命令設置:

         

        在發送欄中輸入AT(不分大小寫),然后點擊發送,可看見模塊返回OK,這表示AT指令通訊正常。當AT指令設置完畢后,將2號開關AT Mode撥到2端退出AT命令模式,重新上電后設置才生效。

        1.AT指令集如下:

        指令 響應 參數
        AT OK





        2.模塊重啟指令:

        指令 響應 參數
        AT+RESET OK





        3.設置和查詢模塊連接模式:

        當模塊無法被適配器、主機連接時,需配置該參數,配置為AT+CMODE=1。

        指令 響應 參數
        AT+CMODE=< Param > OK Param:

        0 —— 指定藍牙地址連接模式 (指定藍牙地址由綁定指令設置)

        1 —— 任意藍牙地址連接模式 (不受綁定指令設置地址的約束)

        默認連接模式:0

        AT+CMODE? +CMODE: < Param > OK  
















         

        4.設置和查詢模塊角色:

        當模塊無法被適配器、主機搜索到時,需配置該參數,配置為從角色。


        模塊角色說明:

        Slave(從角色) ——被動連接,可以和任意藍牙適配器配對使用;

        Master (主角色)——查詢周圍從設備,并主動發起連接,從而建立主、從藍牙設備間的透明數據傳輸通道。

        Slave-Loop(回環角色) ———被動連接,接收遠程藍牙主設備數據并將數據原樣返回給遠程藍牙主設備;

        5.設置和查詢配對碼:

        6.設置和查詢串口參數:

        舉例:設置串口波特率:115200,1位停止位,無校驗

        AT+ UART=115200,0,0\r\n

        OK

        AT+ UART?

        +UART:115200,0,0

        OK

        注:在應用中,選擇1位停止位,無校驗。

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮