2017-06-16 57 views
0

我試圖從集成ble(bluno nano從DFRobot)發送數據到一個覆盆子pi 2,它有一個hm10 ble模塊連接到它的serial0 gpio14和15引腳。從串口藍牙請求數據從覆盆子pi到arduino

即時通訊目前使用該素描:

float flow = 500.06; 
void setup() { 
    Serial.begin(9600);} 
void loop() { 
    if (Serial.available()>0) { 
     if (Serial.read() == 'R') { 
      Serial.print(flow) 
      Serial.write("\n"); 
     } 
    } 
} 

和使用即時通訊這條巨蟒來閱讀:

#! /usr/bin/env python 
import serial 
from time import sleep 
ser = serial.Serial(port='/dev/serial0',parity=serial.PARITY_NONE, 
     stopbits=serial.STOPBITS_ONE,bytesize=serial.EIGHTBITS,timeout=1) 
# Wait to read from Arduino 
while 1: 
     try: 
       time.sleep(10) 
       ser.write("R") 
       myData = ser.readline() 
       print myData 
     except KeyboardInterrupt: 
       exit() 

這應該使樹莓運行腳本的10秒後發送R鍵Arduino的。但是我每隔十秒就會在樹莓終端上留下空白行。我想這是打印myData行,這是空白。

我只是試圖連接bluno nano和覆盆子pi 2在usb串口上運行此代碼,並且rpi收到82,這是與ascii等價的R.Ive修改了代碼並添加了圖像以顯示這些結果。我仍然不明白爲什麼我沒有得到響應時,它的藍牙串行?

enter image description here

回答

0

Arduino的需要等待從樹莓裨信號。
例如通過閱讀字符'R'

float flow = 500.06; 

void setup() { 
    Serial.begin(9600); 
} 
void loop() { 
    if (Serial.available()>0) { 
     if (Serial.read() == 'R') { 
      Serial.print(flow); 
      Serial.write("\n"); 
     } 
    } 
} 

在從Arduino讀取數據之前,樹莓派需要發送字符'R'

import serial 
import time 
ser = serial.Serial(port='/dev/serial0',parity=serial.PARITY_NONE, 
     stopbits=serial.STOPBITS_ONE,bytesize=serial.EIGHTBITS,timeout=1) 
# Wait to read from Arduino 
while 1: 
    try: 
     time.sleep(10) 
     ser.write("R") 
     myData = ser.readline() 
     print myData 
    except KeyboardInterrupt: 
     ser.close() 
     exit() 
+0

我修改了OP以包含您的解決方案,但仍然缺少一些內容。我不認爲有任何數據通過Arduino傳出。 – marciokoko

+0

我測試了你的代碼,並修復了明顯的編譯器錯誤後,代碼工作正常。 –

+0

我現在在OP的那個?你是否在串口上使用藍牙? – marciokoko