各位小伙伴好!智能家居DIY活动正在进行中,这次板子管饱,还有京东购物卡相送。活动页面直达:https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44894&_dsign=09201d67
已经有参赛小伙伴提交了作品,一起来看看:
本作品由安信可社区用户
Aramy制作
概要:用ESP32C3开发板+安信可24G毫米波雷达模组Rd-03,再加上一个超声波雾化器构成一套卫生间感应香薰系统。
起因:去了酒店,卫生间总是有宜人的香味,感觉很舒服。研究了一下,是有香薰定时喷射到空气中,改善气味环境。于是就想给家里的卫生间整一套。
人体感应模块,这里使用安信可24G毫米波雷达Rd-03,人体存在传感器,使用这个模块的优点是,感应距离可以配置,按说明文档最大感应范围是10米内,满足家里卫生间需求。

雾化模块,淘宝购买的一套超声波雾化模块,可以通过超声波的方式将液体打碎,变成汽体。可以将液态的香薰,通过虹吸方式运输到超声波雾化片上,然后汽化,散播到空气中。



主控芯片,这里使用开发板ESP32C3,用来获取人体存在传感器信号,并驱动超声波雾化模块工作。
1、设置安信可24G毫米波雷达Rd-03模块。
模块刚购买回来,接上串口总是提示:“Error:flashataLen is more than FLASH PAGE SIZE!”。经过安信可的工程师协助,将SW烧写口的焊盘焊上线,重新烧写固件,就完美解决了问题。当无人存在时雷达模块通过串口返还:“OFF”,当有人出现在探测范围内时,返回“ON”,并且还有rang信息。

2、选择了vscode+platformio进行编程,使用arduino进行编程。
这里Rd-03模块是通过串口协议与主控连接的。主控ESP32C3只有一组串口,已经用来和上位机通讯用了,所以这里使用模拟串口,使用脚4、5,模拟出一组软串口,用来连接Rd-03模块。雾化器驱动部分还是很简单,因为有驱动模块了,所以只需要用一个管脚的额高低电平即可控制雾化器是否工作。
[env:seeed_xiao_esp32c3]platform = espressif32board = seeed_xiao_esp32c3framework = arduinomonitor_speed = 115200lib_deps =plerup/EspSoftwareSerial @ ~8.2.0
SoftwareSerial radio(4, 5); //启动一个软串口,用来连接雷达模块 RX TXString strbuf = "";bool bodyflag = false; //检测到有人bool flag = false;uint_fast32_t lasttime = 0, springtime = 0;uint8_t spintPin = 3; //驱动雾化器管脚void setup(){// put your setup code here, to run once:Serial.begin(115200);radio.begin(115200);// Serial.println("Ready");pinMode(spintPin, OUTPUT);digitalWrite(spintPin, HIGH); //高电平 关闭雾化器}
3、在程序循环中,不停地读取Rd-03模块发来的串口信息。
每次遇到“\n”就判断读取完一行,通过这一行的字符串,判断是"ON"、“OFF”,来区分是否检测到有人出现。
//从串口读取数据char ch;if (radio.available()){ch = radio.read();if (ch == '\n')flag = true;elsestrbuf = strbuf + String(ch);}//观察串口数据,判断雷达是否检测到有人if (flag){ //一行结束// Serial.println(strbuf);if (strbuf.compareTo("ON") > 0){bodyflag = true; //有人出现}else{bodyflag = false;}strbuf = "";flag = false;}
4、当有人出现,再去额外判断一下距离上次有人出现的时间间隔。
当这个时间间隔超过阈值时,就去驱动雾化器工作。如果小于阈值,就不做任何动作。这样有效防止了,有人在感应区活动,雾化器不停工作的问题。然后雾化器工作时长也有限制,测试发现每次雾化时长1秒,是个不错的选择。
//检测到有人,结合时间进行判断,距离上次检测时间是否超过60秒,超过则驱动if (bodyflag){if (millis() - lasttime > 30000){Serial.println("Driver is on!");digitalWrite(spintPin, LOW); //低电平 开启雾化器lasttime = millis();springtime = millis(); //雾化器管脚开始计时}lasttime = millis();}//雾化器每次开启1秒if (millis() - springtime > 1000){digitalWrite(spintPin, HIGH); //关闭雾化器// Serial.println("Driver is off!");}
点击图片跳转查看视频展示效果

传输距离可达4.7km的低功耗loRa模块
0.1毫安!超超超超超低功耗雷达模组Rd-03L
安信可更多产品信息可进入以下链接查阅:
●开发资料:https://docs.ai-thinker.com/
●官方教程:https://blog.csdn.net/Boantong_
●安信可官网:www.ai-thinker.com
●安信可社区:https://bbs.ai-thinker.com
●业务咨询请联系:18022036575





