分享

Phyphox用蓝牙HC08反控Arduino

 新用户5228KeDY 2021-10-10

Phyphox用蓝牙HC08反控Arduino

使用手机外部的传感器,采集数据并通过蓝牙方式传输给Phyphox使用,最方便的做法,当然是ESP32这种WIFI/BLE双模开发板,它最便宜。另一种开发板是Arduino Nano 33 Ble/Sensor,这个新33本质其实就是一个ARM,功能极为强大。Phyphox官方发布的Arduino扩展库,就支持着这两种开发板。

但是通过独立的蓝牙、而不是具有蓝牙功能的开发板来连接Phyphox应该更有巨大的实用可能。之前在研究STC89C52RC连接Phyphox的时候,进度已经到达通过Phyphox反控单片机的动作——对51单片机的不熟悉,串口接收数据尚未搞定,所以就先用Arduino试验了接收数据与反控。

功能实现:在Phyphox里面输入大于1的数值,点亮Arduino上的LED;输出小于1的数值,LED熄灭。这显然可以拓展到其他的实验的数据的传输。

接线。

HC-08Arduino
TXD10
RXD11
GCC5V
GNDGND

因为蓝牙本质也是串口传输,所以为了调试方便,使用SoftwareSerial模拟了两个软串口。另外,在D12接入两个LED作为反馈动作。两个LED串联的目的,是不再需要限流电阻了。

Arduino代码:

#include <SoftwareSerial.h>
//分别定义引脚10、11为RXT和TXT串口功能
SoftwareSerial mySerial(10, 11); 
//引脚12接两串联LED作为判断
int LED12 = 12;
//以字符串形式接收来自Phyphox蓝牙数据
String s = "";

void setup() {
  //只有定义波特率9600才能硬串口调试
  Serial.begin(9600);
  //只有定义波特率9600才能配对HC08
  mySerial.begin(9600);
  //引脚12输出
  pinMode(LED12, OUTPUT);
}

void loop() {
    while (mySerial.available() > 0)
  {
    s += char(mySerial.read());
    //分隔字符,没用
    //delay(2);
  }
  //再清一次串口,没用
  //while(Serial.read()>=0);
  //转为整数
  int BLE_in = s.toInt();
  //调试用,实际没用
  Serial.println(s);
  Serial.println(BLE_in);
  //执行动作
  if (BLE_in > 0)   {
    digitalWrite(LED12, HIGH);
  } else {
    digitalWrite(LED12, LOW);
  }
  //喘口气儿~Nice Day~
  delay(1000);
}

Phyphox Editor:

  1. 设置。数据传输的方式,必须以string传输,因为Arduino去读串口数据的时候,是用char(mySerial.read())来读的,这样可以保证传的是什么样的东西,接收就是什么样的东西。如果传输用的Integer,接收用的char就会乱码。

  2. Analysis:

导出Phyphox文件,保存到手机。运行。

这不就是物理实验牌智能家居吗?2021314

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多