如何通过Arduino蓝牙模块将数据实时传递到运行python脚本的PC?

时间:2018-05-29 01:40:11

标签: python c bluetooth arduino

我的电路中有一个力敏电阻(FSR),我希望我的Arduino能够通过蓝牙将这些数据传递给我的PC,运行python脚本。

以下是我为此项目使用的蓝牙防护罩:Bluetooth Shield

我试图在这里模仿这些示例,但这两种情况都不涉及Arduino蓝牙与PC的蓝牙交互的情况,并且当我使用他们的草图时代码甚至无法上传。

操作系统:Windows 10

以下是我的FSR的代码:

const int fsrAnalogPin = A0;
int fsrReading;

void setup(void) {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop(void) {
  // put your main code here, to run repeatedly:
  fsrReading = analogRead(fsrAnalogPin);
  int num = fsrReading/3;
  Serial.print("Analog reading = ");
  Serial.println(num);
  delay(50);
}

这是我的Python脚本代码(蓝牙尚未实现):

import serial

serialArduino = serial.Serial('COM4', 9600)

while True:
    while (serialArduino.inWaiting() == 0):
        pass
    valueRead =(serialArduino.readline())
    print(valueRead)

我的FSR代码和Python代码可以通过蓝牙发送和接收数据?

1 个答案:

答案 0 :(得分:0)

在您的代码中,您没有初始化与盾牌的串行连接。

根据所使用的Arduino板,您应该选择eshiled使用的串口。

如果您使用Uno,则必须使用SoftwareSerial Library与您的代码进行通信,如本示例所示

#include <SoftwareSerial.h>  
#define RxD 7
#define TxD 6
SoftwareSerial BlueToothSerial(RxD,TxD);
void setup()
{
   Serial.begin(38400);     
   BlueToothSerial.begin(38400); 
   delay(500);
}
void loop()
{
    if(BlueToothSerial.available())
    {
      Serial.print(char(BlueToothSerial.read()));
    }
    if(Serial.available())
    {
      BlueToothSerial.print(char(Serial.read()));
    }       
}

如果你使用Mega - 检查盾牌使用的序列并修改上面的代码。

您没有说您的PC上运行的操作系统根据操作系统,您必须选择通信方式。对于Windows,如果您想使用COM端口,则必须先与arduino配对。然后为屏蔽提供的服务添加COM端口(它是SPP一次)。

获得COM编号后,您可以在PC端的脚本中使用它,并从Arduino读取数据。

更好的方法是在没有COM端口的情况下与蓝牙设备通信。如果您使用Windows,则可以使用Bluetooth Framework

完成