Phyphox介绍和相关BLE库下载

2021-10-20 11:06:55 浏览数 (3)

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的源码

更多的玩法,等我忙完我手头的活再说。

0 人点赞