Robofun 機器人論壇

標題: [解決][問題]HC-06會亂發訊息給終端&序列阜視窗無反應 [打印本頁]

作者: everdayking    時間: 2018-10-2 22:47
標題: [解決][問題]HC-06會亂發訊息給終端&序列阜視窗無反應
本帖最後由 everdayking 於 2018-10-9 22:29 編輯

各位先進 大家好,                                                               
最近在學Arduino控制,目前看到Bluetooth這內容就想學習如何控制,                  
故從露天買了2塊藍芽模組回來。                                                   
依照超圖解的書內容接線、範例碼燒入IC,卻得到藍芽裝置一直亂傳訊號到手機終端。
也試過不接TX/RX、燒空白檔進IC也會有一樣的亂傳到手機終端。
試著進入AT模式確認,序列阜視窗選"沒有行結尾"、"9600",會亂傳訊息到視窗,輸入AT也沒有OK反應。
         
請各位先進能幫忙看一下是哪裡出問題嗎?                                          
再請指導一下該如何解開問題呢?                                                   
感謝各位。                                                                     
                                                                                
[與露天賣家聯絡內容 & 疑問]                                                     
問:您好,我入手的兩塊板子,ARDUINO無燒程式只給正負電源到HC-06,               
     手機的終端APP藍芽連上線後,一直收到藍HC-06傳出的亂訊號,請問該怎麼解決呢?  
     請協助確認,謝謝。                                                         
回:需設定At                                                                  
問:您好,關於設定AT一事,請問該如何做呢?                                      
     可以用露露通聯絡一下嗎? 謝謝您。                                          
回:At 就是藍牙的基本設定 包括 master slave baud. 有作過嗎?用USB 轉ttl        
                                                                                
→疑問:HC-06模組入手時要先設定AT之類的設定嗎?                                 
                                                                                
[設備]                                                                          
‧旗標Arduino開發版                                                            
‧ASUS Zenfone3手機                                                            
‧藍芽模組板塊                                                                  
                                                                                
[實物接線]                                                                     
                                                                     
[問題畫面]                                                                     
手機:

序列阜視窗:                                                   
                                                                                
[終端聯繫範例碼]                                                                        
#include <SoftwareSerial.h>                                                   
SoftwareSerial BT(10, 9); // 接收, 傳送                                       
                                                                                
const byte ledPin = 13;                                                        
char val;     // 儲存接收資料的變數                                            
                                                                                
void setup() {                                                                 
  pinMode(ledPin, OUTPUT);                                                      
  BT.begin(9600);                                                               
  BT.println("READY");  // 藍牙連線成功後,發佈「準備好了」訊息。               
}                                                                              
                                                                                
void loop() {                                                                  
  if (BT.available() ){                                                         
     val = BT.read();                                                           
     switch (val) {                                                            
       case '0':  // 若接收到0...                                               
         digitalWrite(ledPin, LOW); // 關閉LED                                 
         break;                                                                 
       case '1':  // 若接收到1...                                               
         digitalWrite(ledPin, HIGH); // 點亮LED                                 
         break;                                                                 
     }                                                                          
  }                                                                             
}                                                                              
                                                                                
[AT模式確認程式碼(網路參照)]

#include <SoftwareSerial.h>
SoftwareSerial BT(9, 10);//RX,TX SETTING

void setup() {
  Serial.begin(9600);
  BT.begin(9600);
}

void loop()
{
  if(BT.available())
  {Serial.write(BT.read());
    }
  if(Serial.available())
  {BT.write(Serial.read());
    }
}     
作者: 超新手    時間: 2018-10-3 08:53
這兩個電阻....有接在一起嗎?

作者: everdayking    時間: 2018-10-4 00:07
超新手 發表於 2018-10-3 08:53
這兩個電阻....有接在一起嗎?

新手大大,因為再次確認迴路時重插的時候錯孔了,已經修正。
但是還是無法解決目前的問題。
作者: 超新手    時間: 2018-10-4 05:59
[終端聯繫範例碼]     的程式有錯                                                                                                              
SoftwareSerial BT(10, 9); // 接收, 傳送
應該是
SoftwareSerial BT(9, 10); // 接收, 傳送

作者: 超新手    時間: 2018-10-4 06:15
不燒程式的時候,可以把藍牙的rx 接到 tx
不要空接,也不要接arduino的io 腳,變成迴路測試
所以手機送什麼,自己就會收到相同值
空接或接io有時會難預測會收到什麼值
即使沒燒任何程式
另外,上面的那一串電阻是多少?
看起來是限流用,電阻值你是參考那邊的?
感覺有點大
作者: everdayking    時間: 2018-10-9 21:04
本帖最後由 everdayking 於 2018-10-9 21:06 編輯
超新手 發表於 2018-10-4 06:15
不燒程式的時候,可以把藍牙的rx 接到 tx
不要空接,也不要接arduino的io 腳,變成迴路測試
所以手機送什麼 ...


>>看起來是限流用,電阻值你是參考那邊的?
>>感覺有點大

我是參照超圖解的建議圖,在書的封面跟內頁都是寫2.2kΩ,
因手邊還沒有這顆,故用220Ωx5=1KΩ替代。

現在爬很多文找到一個網頁:
http://www.keuwl.com/electronics/rduino/bluet/07-uno-monitor/
範例燒錄到手機,使用建議的APP,可以ˋ正常看到電壓值的變化,沒有特別問題。


但是,
再度開啟超圖解ˋ光碟內的AccessPort.exe來確認看看,一通電卻發現噴亂碼的情況還是很嚴重。
請問有沒有人遇過這神奇的狀況....


作者: everdayking    時間: 2018-10-9 22:46
本帖最後由 everdayking 於 2018-10-9 23:03 編輯

【意外解決了】

①全部的接線移除,換一批新的杜邦線,再次重新插入(同樣麵包板位子)
②燒入同樣程式(但SoftwareSerial BT(10, 9); // 接收, 傳送 是錯誤的CODE,改成 (9, 10)才對),程式如下:

#include <SoftwareSerial.h>
SoftwareSerial BT(9, 10); // 接收, 傳送

const byte ledPin = 13;
char val;     // 儲存接收資料的變數

void setup() {
  pinMode(ledPin, OUTPUT);
  BT.begin(9600);
  //delay(1000);
  BT.println("I'm back !!");  // 藍牙連線成功後,發佈「準備好了」訊息。
}
void loop() {
if (BT.available() ){
    val = BT.read();
    switch (val) {
      case 'a':  // 若接收到0...
        digitalWrite(ledPin, LOW); // 關閉LED
        break;
      case 'b':  // 若接收到1...
        digitalWrite(ledPin, HIGH); // 點亮LED
        break;
    }
  }
}
③接線跟APP畫面 (有串電阻跟沒有串電阻都試過,皆能正常LED輛滅控制)




【心得】
1.感謝新手大大的提示:『你的電阻沒有接到』,我電阻雖然插回去了,但是原本的黃線(RX)的前端鉚接頭有鬆脫跡象,
造成Arduino到BT的RX是空接狀態,就會有訊息會亂噴到APP的接收視窗,把線換掉跟壓緊就沒問題了。
2.至於AccessPort 程式畫面為何會一直亂訊號,因為我的電腦根本沒有藍芽模組,怎麼可能會跟HC06連上....
所以亂噴訊號因該是正常的。
感謝。






歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2