第一個Phyphox-ESP32測距實驗前些天得到Phyphox的BLE藍牙擴展庫,一直想找一點兒時間嘗試個例子。Phyphox自身有測量距離的功能,即聲吶(Sonar)測距實驗。不是太準確,但基本也可使用。 不使用手機傳感器而使用外接傳感器,測量距離的,首選激光飛行時間傳感器(Tof),其次超聲波傳感器(UltraSonic)。但不論哪種傳感器,不使用濾波和限幅,這些傳感器都不易直接使用。這里作為一個測試,用的超聲波傳感器,開發(fā)板是ESP32。 測量結(jié)果,緩慢在傳感器前方移動日記本,粗測移動速度,每秒1.4cm,和實際情況差不多: 
很簡單的代碼創(chuàng)作的實驗,不設(shè)置緩存數(shù)據(jù),數(shù)據(jù)是不能導出的。估計以后能夠把實驗文件以.phyphox文件導出來,接著再導入到phyphox editor編輯器里面去,再進行一些專門的設(shè)置:

實際實驗使用的器材,超聲波是常見的HC-SR04,性能最弱的一種:

ESP32程序燒錄比Arduino UNO燒錄要麻煩一些,時間也要久。Arduino IDE燒錄log:

程序代碼:
#include <phyphoxBle.h>
int TrigPin = 12; int EchoPin = 14; float dist;
void setup() { Serial.begin(115200); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); PhyphoxBLE::start("MyDevice");
//Experiment PhyphoxBleExperiment plotDtValues; //創(chuàng)建一個實驗實例
plotRandomValues.setTitle("Distance Number"); plotRandomValues.setCategory("Arduino Experiments"); plotRandomValues.setDescription("phyphox-ESP32-HCSR04 Distance");
//View PhyphoxBleExperiment::View firstView; firstView.setLabel("FirstView"); //Create a "view"
//Graph PhyphoxBleExperiment::Graph firstGraph; firstGraph.setLabel("Distance over time"); firstGraph.setUnitX("s"); firstGraph.setUnitY("m"); firstGraph.setLabelX("time"); firstGraph.setLabelY("Distance"); firstGraph.setChannel(0,1);
firstView.addElement(firstGraph); plotRandomValues.addView(firstView); PhyphoxBLE::addExperiment(plotDtValues);
}
void loop() { digitalWrite(TrigPin, LOW); delayMicroseconds(5); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); dist = pulseIn(EchoPin, HIGH) / 58.00; float DisValue = dist/100.0;
PhyphoxBLE::write(DisValue); delay(500);
PhyphoxBLE::poll(); }
|