2017-06-16 165 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