使用手机外部的传感器,采集数据并通过蓝牙方式传输给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-08 | Arduino |
---|---|
TXD | 10 |
RXD | 11 |
GCC | 5V |
GND | GND |
因为蓝牙本质也是串口传输,所以为了调试方便,使用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:
设置。数据传输的方式,必须以string传输,因为Arduino去读串口数据的时候,是用char(mySerial.read())来读的,这样可以保证传的是什么样的东西,接收就是什么样的东西。如果传输用的Integer,接收用的char就会乱码。
Analysis:
导出Phyphox文件,保存到手机。运行。
这不就是物理实验牌智能家居吗?2021314
联系客服