phyphox是个啥?众所周知,这个智能手机里面有很多的传感器,那能不能直接用这些传感器测量现实世界呢?然后把采集到的数据做一些后处理。
当然可以,上面这个应用就是做了这个事情。
你的智能手机就是一个移动的实验室
特点一,自带传感器的采集
将这些数据可以导出
目前支持导出的数据
可以使用电脑控制
但是大家又不满足于用自带的传感器,转眼看到了ESP32这个东西,十几块钱拥有WIFI BLE。
SO。。。
代码语言:javascript复制https://github.com/phyphox/phyphox-arduino
其实只使用了软件的绘图功能
你也可以在Arduino里面直接搜索名字下载这个库
代码语言:javascript复制#include <phyphoxBle.h>
void setup() {
PhyphoxBLE::start(); //Start the BLE server
}
void loop() {
float randomNumber = random(0,100); //Generate random number in the range 0 to 100
PhyphoxBLE::write(randomNumber); //Send value to phyphox
delay(50); //Shortly pause before repeating
}
一个简单的demo
但是这个库真没有什么水平。。。
就是一个数据接收而已,下面是最重要的两个函数
代码语言:javascript复制#ifndef PHYPHOXBLE
#define PHYPHOXBLE
static const char *phyphoxBleExperimentServiceUUID = "cddf0001-30f7-4671-8b43-5e40ba53514a";
static const char *phyphoxBleExperimentCharacteristicUUID = "cddf0002-30f7-4671-8b43-5e40ba53514a";
static const char *phyphoxBleExperimentControlCharacteristicUUID = "cddf0003-30f7-4671-8b43-5e40ba53514a";
static const char *phyphoxBleDataServiceUUID = "cddf1001-30f7-4671-8b43-5e40ba53514a";
static const char *phyphoxBleDataCharacteristicUUID = "cddf1002-30f7-4671-8b43-5e40ba53514a";
static const char *phyphoxBleConfigCharacteristicUUID = "cddf1003-30f7-4671-8b43-5e40ba53514a";
#include "Arduino.h"
struct phyphoxBleCrc32
{
static void generate_table(uint32_t (&table)[256])
{
uint32_t polynomial = 0xEDB88320;
for (uint32_t i = 0; i < 256; i )
{
uint32_t c = i;
for (size_t j = 0; j < 8; j )
{
if (c & 1)
{
c = polynomial ^ (c >> 1);
}
else
{
c >>= 1;
}
}
table[i] = c;
}
}
static uint32_t update(uint32_t (&table)[256], uint32_t initial, const uint8_t *buf, size_t len)
{
uint32_t c = initial ^ 0xFFFFFFFF;
const uint8_t *u = static_cast<const uint8_t *>(buf);
for (size_t i = 0; i < len; i)
{
c = table[(c ^ u[i]) & 0xFF] ^ (c >> 8);
}
return c ^ 0xFFFFFFFF;
}
};
代码语言:javascript复制https://phyphox.org/source/
官网几乎提供了所有的源码
代码语言:javascript复制https://github.com/phyphox/phyphox-android
安卓app的源码
更多的玩法,等我忙完我手头的活再说。