phyphox通過藍(lán)牙反控ESP32的技術(shù)細(xì)節(jié)
打住。前面一直在研究如何把ESP32等開發(fā)板采集的數(shù)據(jù)傳到Phyphox里,于是Phyphox成為數(shù)據(jù)處理之后的表現(xiàn)層,讓實(shí)驗(yàn)者在手機(jī)上看到實(shí)驗(yàn)的結(jié)果;而另一方面,手機(jī)本身也是攜帶眾多的傳感器的,例如Android自動(dòng)支持十幾種傳感器,為什么不能反過來把手機(jī)作為一個(gè)巨大的多功能傳感器呢? 答案是可能的。Phyphox BLE庫也支持從手機(jī)傳感器把數(shù)據(jù)傳給ESP32,再送給電腦來處理,若是在電腦上做個(gè)程序界面,幾乎沒有什么是實(shí)現(xiàn)不了的了。 ESP32從Phyphox手機(jī)傳感器獲取數(shù)據(jù)和普通的由ESP32向手機(jī)Phyphox傳送數(shù)據(jù)的實(shí)驗(yàn)創(chuàng)作步驟與思路不太相同,比較麻煩,但好過直接用藍(lán)牙創(chuàng)作實(shí)驗(yàn)。仍然方便一些。ESP32端從手機(jī)Phyphox獲取傳感器數(shù)據(jù)的原理,是先在Arduino IDE里面編寫ino,然后燒錄到ESP32,運(yùn)行起來,等待Phyphox來連接。 在phyphoxBle.cpp里,能見到PhyphoxBLE::read()函數(shù),它讀傳感器數(shù)據(jù)然后把地址給藍(lán)牙,然后藍(lán)牙把這塊指定長度的內(nèi)存數(shù)據(jù)接收過來處理。 而在Phyphox里面,我們需要自己去編寫.phyphox文件,指定藍(lán)牙為output,指定為output的藍(lán)牙有input口,這樣在phyphox editor里編寫了phyphox實(shí)驗(yàn)后,手機(jī)就成為十幾種傳感器的聚合體了。 這是一個(gè)用Phyphox檢測手機(jī)所在的環(huán)境里光線強(qiáng)弱的實(shí)驗(yàn):如果光照比較弱,ESP32會自動(dòng)把連接在IO26腳上的高亮二極管點(diǎn)亮,而當(dāng)環(huán)境光照比較強(qiáng)時(shí),ESP32自動(dòng)熄滅LED。 這個(gè)應(yīng)用場景是顯然的——打點(diǎn)計(jì)時(shí)器有個(gè)“先接通電源,后松開紙帶”的事兒,Phyphox輕松可實(shí)現(xiàn)了,甚至可以使用phyphox來開發(fā)智能家居,把手機(jī)放在床頭,晚上要去洗手間的時(shí)候,睜開眼睛四周黑魆魆一片不知暗得多深,于是拿起手機(jī)、打開phyphox,測不含g的加速度,搖一搖,原來暗處關(guān)閉的LED亮起來了。 .ino文件: #include <phyphoxBle.h> |
|
|