智能硬件分析-京东来点光波入网

int stat= HIGH;unsigned long startTime;void setup() { Serial.begin(9600); pinMode(10, INPUT); //定义D10为输入 startTime = millis();}void loop() { unsigned long curTime; int value = digitalRead(10); if(value != stat){ //如果光照发生变化就输出间隔时间 curTime = millis(); stat = value; if(stat == HIGH){ //高电平 表示光照没有达到阀值 黑 Serial.print("0\t"); Serial.println(curTime-startTime); startTime = curTime; }else{ //低电平 表示光照超过阀值 白 Serial.print("1\t"); Serial.println(curTime-startTime); startTime = curTime; } }}

一切就绪,先在电脑上监听串口 然后手机重新打开app,点击绑定,输入wifi密码 11111111 然后下一步直到提示放上来点。这个时候把光敏电阻模块的感光头对准屏幕中心区域,开始入网后马上屏幕上就开始刷数据了。将所有输出保存到data.txt,然后我们拉一段出来分析。

很明显的两种长度 一种是50毫秒左右 一种是200毫秒左右。而且有个很奇怪的现象,200毫秒左右的数据只会出现在1的时候 而0全部都是50毫秒左右。如果按照我们上面的假设 两种颜色分别代表1和0, 那么所有0都是50毫秒这也太不正常了。

而且1只有50或者200毫秒两种情况也不对劲。

直接看数据有点不够直观,想办法转换成图形:

phpgd库直接画的 凑合看吧 图中横坐标是时间 纵坐标是数据(0|1)。我们原先的推测是这样的:

显然有问题, 再看上面的图片想到另一种推测:会不会1的宽度才是实际数据,而0只是做为一个间隔。