Raspberry Pi通過藍芽與Arduino串連

來源:互聯網
上載者:User

標籤:

** 剛剛開始接觸如有錯誤請留言指正,多謝 ** 

裝置
  • Raspberry Pi第三代B+版本
  • Arduino Pro Mini(5V,16MHz)w/ ATmega328 + 寫入裝置(或使用其他Arduino版本)
  • 藍芽HC-06
  • 發光二極體1個
  • 10千歐電阻1個
  • 杜邦線若干
安裝過程中所需要的包和工具

在 Python 環境下,使用“import bluetooth”如果報出錯誤資訊“ImportError: No module named bluetooth”則說明沒有安裝相應的包,執行一下命令安裝。

$ sudo apt-get update$ sudo apt-get install bluetooth  bluez  python-bluez
串連藍牙裝置(Arduino)

使用下面的命令查看藍芽的配置資訊

$ hciconfig

 

使用下面的命令掃描可配對的裝置

$ hcitool scan

 

進入藍芽串連工具

$ bluetoothctl
[NEW] Controller B8:27:EB:D3:61:B0 raspberrypi [default][bluetooth]# agent onAgent registered[bluetooth]# default-agentDefault agent request successful//掃描可配對的裝置[bluetooth]# scan on Discovery started[CHG] Controller B8:27:EB:D3:61:B0 Discovering: yes[NEW] Device 00:14:01:10:10:32 HC-06//串連裝置[bluetooth]# pair 00:14:01:10:10:32 Attempting to pair with 00:14:01:10:10:32[CHG] Device 00:14:01:10:10:32 Connected: yesRequest PIN code[agent] Enter PIN code: 1234[CHG] Device 00:14:01:10:10:32 UUIDs:        00001101-0000-1000-8000-00805f9b34fb[CHG] Device 00:14:01:10:10:32 Paired: yesPairing successful//查看已串連的裝置[bluetooth]# paired-devices Device 00:14:01:10:10:32 HC-06//刪除已經配對的裝置[bluetooth]# remove 00:14:01:10:10:32[DEL] Device 00:14:01:10:10:32 HC-06Device has been removed

 

測試是否能夠ping通

$ sudo l2ping 00:14:01:10:10:32

 

串連Arduino的藍牙裝置

$ sudo rfcomm connect 0 00:14:01:10:10:32Press CTRL-C for hangup

串連藍牙裝置後,會在樹莓派的【/dev】目錄中建立一個藍牙裝置的虛擬檔案 /dev/rfcomm0 ,同時Arduino的藍芽指示燈為常亮狀態,表示“已串連”。

 

綁定Arduino的藍牙裝置

$ sudo rfcomm bind 0 00:14:01:10:10:32

綁定藍牙裝置後,也會在樹莓派的【/dev】目錄中建立 /dev/rfcomm0 檔案,而此時Arduino的藍芽指示燈為閃爍狀態,表示“未串連”;當樹莓派向藍牙裝置發送訊息時才去做串連操作。

 

對已經綁定Arduino的藍牙裝置解除綁定

$ sudo rfcomm bind 0 00:14:01:10:10:32

解除綁定藍牙裝置後,檔案 /dev/rfcomm0 消失了。

編程程式
  • Arduino:
void setup(){  pinMode(11, OUTPUT);  digitalWrite(11, HIGH);  delay(500);  digitalWrite(11, LOW);  Serial.begin(9600);}void loop() {  while (Serial.available())  {    char c = Serial.read();    digitalWrite(11, HIGH);    delay(500);    digitalWrite(11, LOW); //收到訊息指示燈(LED)閃一下    if (c == ‘A‘)    {      Serial.println("B"); //收到A就返回B    } else {      Serial.println("Please input [A]"); //都是其他字元返回    }  }}

 

  • python代碼:
#coding=utf-8#send to arduinoimport serialimport sysport = "/dev/rfcomm0"serial = serial.Serial(port,9600)if len(sys.argv) > 1:    sendStr = sys.argv[1]else:    sendStr = "A"serial.write(sendStr)serial.flushInput()if serial.isOpen() == False:    serial.open()line = serial.readline()print line

 

運行測試

如何測試就不發了

Raspberry Pi通過藍芽與Arduino串連

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.