无意间揭开Phyphox-ESP32的通信细节
无意间揭开Phyphox-ESP32的通信细节
Phyphox通过ESP32来连接手机,是通过蓝牙BLE来进行的,但是内部的原理和机制却一直没有太细致去研究。ESP32是蓝牙/WIFI双模的,也许未来有什么,比如说的,进行一种实验创作,由ESP32通过蓝牙与Phyphox连接,同时通过ESP32 WIFI模式分享实验,那就太强大了。又比如说,未来可能使用的是支持蓝牙BLE的其它开发板,用不了官方库怎么办?
于是把ESP32板取出来,使用Arduino下的ESP32 BLE Arduino里的BLE_notify稍稍修改,令其发送一个整数:
这个数,未来完全可以由传感器测量出来,传入到ESP32里面去。其实不限于整数、浮点数或字符串的。烧录后,运行,用BLE蓝牙调试器打开CHARACTERISTIC UUID 为
beb5483e-36e1-4688-b7f5-ea07361b26a8
的服务,它是我们定义的notify服务,可读可写可通知的。得到返回值 672B0000。
那么,这个672B0000是什么呢?找出来Windows自带的计算器,设为程序员模式,然后点击十进制DEC模式下输入11111,此时看到十六进制HEX编辑框里显示2B67。
意思是十进制数11111本来十六进制应该是00002B67,现在被存储为672B0000,这正是字节存储顺序的小端序Little Endian,回忆Phyphox Editor里面的数值转换方式,它对应的就是这几个东西,难怪官方发布的Phyphox BLE库全部使用float来传输数据。
弄清楚这些细节,以后就可以自己写出来实验程序而不依赖官方烧录蓝牙/WIFI双模式工作的ESP32实验了。
忙过这一段吧。研究到这里,无论国内国外中文英文已经再没有资料可借鉴了,这有什么用呢?
赞 (0)