电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
Arduino ESP32 Blinker 毕业设计 课程设计 DIY 002——基于ESP32的智能阳台&衣架的设计与制作
分 享
扫描二维码分享
Arduino ESP32 Blinker 毕业设计 课程设计 DIY 002——基于ESP32的智能阳台&衣架的设计与制作
arduino
esp32
blinker
xbk_559291
关注
发布时间: 2022-01-13
丨
阅读: 2589
# 一、硬件材料: 1、1\*ESP32开发板 2、1\*DHT11温湿度模块 3、1\*雨滴检测传感器 4、1\*电机驱动模块 5、1\*电机 6、1\*WS2812灯圈【紫色】 7、1\*蜂鸣器模块 8、1\*光敏模块 9、2\*面包板 10、1\*MICRO数据线【0.5m】 11、1\*电池【USB公充/microUSB公放】 12、其他可能需要的元器件(面包板、电阻、电容、导线/杜邦线等) 13、可能需要的工具(万用表、电烙铁及焊锡、剪钳/剪刀、剥线钳/打火机、普通胶布/电工胶布/胶枪等) # 二、程序功能: 第1步:ESP32开发板通过DHT11温湿度模块,读取阳台温度和湿度,可以在手机APP上查看阳台环境的温度和湿度。 第2步:ESP32开发板通过雨滴检测传感器,检测阳台是否下雨,当下雨时,打开蜂鸣器进行报警,并且在手机APP上可以查看当前水分浓度以及报警信息,此时自动降落晾衣架,防止衣服湿了。 第3步:ESP32开发板通过光敏模块,采集光照强度,当光照过强时,自动控制电机反转,即控制衣架的降落,每次转动3秒后停止,防止衣服暴晒。 第4步:通过手机APP,可以远程控制电机的正转和反转,即控制衣架的升起和降落,每次转动3秒后停止。 第5步:通过手机APP,可以远程控制灯圈的打开和关闭。 其他未有写明的地方,以需求出发点、示意图片/视频为参考。 # 三、接线图: ![](https://cf03.ickimg.com/bbsimages/202201/d60e660d08c2b5a833bccf5611b47337.png) # 四、Arduino关键代码: ## 1、传感器初始化代码: ```cpp delay(50); Serial.begin(115200); // 初始化串口,波特率为115200 pinMode(buzzerPin, OUTPUT); //初始化蜂鸣器 digitalWrite(buzzerPin, buzzerOff); //上电关闭蜂鸣器 ledcSetup(1, 2000, 8); // 设置通道 ledcAttachPin(motorIN1Pin, 1); //将 LEDC 通道绑定到指定 IO 口上以实现输出 ledcSetup(2, 2000, 8); // 设置通道 ledcAttachPin(motorIN2Pin, 2); //将 LEDC 通道绑定到指定 IO 口上以实现输出 pixel.begin(); //初始化灯带 pixel.setPin(ledPin); //设置灯带引脚 pixel.updateLength(ledNumber); //设置led数量 pixel.updateType(NEO_GRB + NEO_KHZ800); //设置灯带类型 pixel.setBrightness(ledBrightness); //设置LED亮度 pixel.clear(); //关闭所有灯 pixel.show(); //显示灯带 WiFi.begin(ssid, pswd); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } BLINKER_DEBUG.stream(Serial); //设置blinker调试打印串口 Blinker.begin(auth, ssid, pswd); //连接wifi buttonRise.attach(riseCallback); buttonLand.attach(landCallback); buttonOpenLed.attach(openLedCallback); buttonCloseLed.attach(closeLedCallback); Blinker.attachHeartbeat(updateSensorData); Serial.println("\r\n程序初始化完成"); ``` ## 2、数据上传APP代码: ```cpp static unsigned long updateTime = 0; if (millis() - updateTime > 1000) { updateTime = millis(); waterValue = analogRead(waterPin); //读取水分值 lightValue = analogRead(lightPin); //读取光照值 } static unsigned long buzzerNowTime = 0; if (waterValue < waterTriggerValue && coatState == true) { //下雨 digitalWrite(buzzerPin, buzzerOn); //打开蜂鸣器 coatState = false; buzzerState = true; buzzerNowTime = millis(); static unsigned long warnWaterTime = 0; if (millis() - warnWaterTime > 6000) { warnWaterTime = millis(); Blinker.notify("!下雨啦!自动收回衣架!"); } } // else { // digitalWrite(buzzerPin, buzzerOff); //关闭蜂鸣器 // } if (buzzerState == true && millis() - buzzerNowTime > buzzerOnTime) { buzzerState = false; digitalWrite(buzzerPin, buzzerOff); //关闭蜂鸣器 } if (lightValue < lightTriggerValue && coatState == true) { //如果暴晒 coatState = false; static unsigned long warnLightTime = 0; if (millis() - warnLightTime > 6000) { warnLightTime = millis(); Blinker.notify("!衣服正在暴晒!自动收回衣架!"); } } static unsigned long nowTime = 0; if (millis() - nowTime > 2000) { nowTime = millis(); DHT11.read(dht11Pin); //读取温湿度 humidityValue = DHT11.humidity; temperatureValue = DHT11.temperature; } static unsigned long printTime = 0; if (millis() - printTime > 1000) { printTime = millis(); Serial.print("温度:"); Serial.print(temperatureValue); Serial.print("\t湿度:"); Serial.print(humidityValue); Serial.print("\t光照:"); Serial.print(lightValue); Serial.print("\t水分:"); Serial.println(waterValue); } ``` ## 3、APP数据下发代码(部分——打开led): ```cpp updateSensorData(); Serial.println("APP信息:打开LED"); for (int i = 0; i < ledNumber; i++) { pixel.setPixelColor(i, pixel.Color(128, 0, 128)); //设置LED灯颜色 } pixel.show(); //显示灯带 ``` # 五、效果演示: ## 1、Blinker APP手机界面: ![](https://cf03.ickimg.com/bbsimages/202201/adb20f9d5f89dda93003cc6c2b92f610.jpg) ## 2、视频链接: https://www.bilibili.com/video/BV19P4y1H7C5/
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
xbk_559291
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交