本帖最后由 望风阁 于 2024-3-27 11:18 编辑
首先感谢安信可论坛举办的活动,感谢园长
本来是打算用雷达改造卫生间的照明灯的,无奈连续两周出差,耽搁了大把时间,回来准备交作业时发现HA中的ESPHome崩溃了,无法启动,先前在交流群里做到功课也就用不上了。
ESPHome崩溃
ESPhome崩溃
本着态度第一位的原则,先给园长大人交作业,决定用手上的小零件先点个灯。
总体思路是用esp8266接受雷达的串口数据并解析,通过解析出来的距离判断灯的亮与灭
结合群里各位大佬的交流,很快接受到数据。
调试数据
通过检测到0xAA的开头读取4个字节,前两个字节为小端格式的距离,在这里有一个小bug还未解决,如图8266已经接受到0xAA后的4个字节,但是通过串口输出到电脑时只能输出前3个字节,这个问题一直还吴姐,好在读取距离还没问题。大家有空可以探讨一下
- void readserialdata() {
-
- if(Serial.available()){
- int n=Serial.readBytesUntil(0x55, serialBuff, 5);
- //串口显示,调试用.
- // Serial.println(n);
- // for (i = 0; i < 5; i++) {
- // Serial.print(serialBuff[i],HEX);// 输出serialBuff接收到的内容,这里有BUG,
- // }
- if (serialBuff[0] == 0xAA) { //校验帧头是否为AA
- //小端距离换算
- distance = serialBuff[1] + serialBuff[2] * 256; //计算距离值
- Serial.print("distance=");
- Serial.println(distance); //输出距离值
- }
- }
- }
复制代码读出距离就是主函数判断控灯了
- void loop() {
- readserialdata();
- if (distance>100) {
- // turn LED off:
- //delay(1000);
- digitalWrite(ledPin, HIGH);
- Serial.println("LOW");
- } else {
- // turn LED on:
- digitalWrite(ledPin, LOW);
- Serial.println("HIGH");
- }
- // delay in between reads for stability
- }
复制代码 最后成品图如下:随手搭建,有点凌乱
|