既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
=======================================================================
本项目旨在基于Arduino和树莓派,模拟开发一个简易的家用智能晾衣杆。在家用智能晾衣杆中,用户可以根据自身的需要,切换手动和自动两个模式。首先是自动模式下,在自动模式中,用户无需对晾衣杆进行操作。晾衣杆可以根据对当前光照的强度进行检测,来判断外边是否天气晴朗。同时,晾衣杆将检测外界的湿度,来检测外界是否下雨。
总结四大状况如下:
1.当外界光照亮,且没有下雨时,晾衣杆将会自动晒出;
2.当外界光照亮,但是下雨了,晾衣杆将会自动收回;
3.当外界光照暗,但是没下雨时,晾衣杆将会收回;
4.当外界光照暗,同时下雨了,晾衣杆将会收回;
在手动模式下,晾衣杆不再自动感应外界状况。用户可以通过按钮来使晾衣杆晒出和收回。
同时,在个人小屋中,增设了天气预报功能,显示屏将会把最近的天气实时显示出来,来方便用户进行判断。
综上,本系统的主要功能是:
1.晾衣杆自动感应天气
2.晾衣杆手动控制
3.天气预报
(1)家用智能晾衣杆软硬件设计:
(2)家用智能晾衣杆流程图:
房屋模型屋顶设计图
房屋模型大体设计图
衣物设计图
=======================================================================
(1)SSD1306 OLED 显示模块:
端口连接:
功能:用于显示天气状况和风力大小。
(2)光敏传感器模块:
端口连接:
功能:用于检测房屋外光线强度,来决定晾衣杆的收回和晒出。
(3)雨滴传感器模块:
端口连接:
功能:用于检测房屋外是否下雨,来决定晾衣杆的收回和晒出。
(4)按钮:
连接:通过检测输出引脚的电压来检测线路连接和断开。
功能:用于切换晾衣杆的工作模式和控制晾衣杆的晒出和收回。
(5)舵机:
端口连接:
功能:用于控制晾衣杆的转动。
=======================================================================
软件设计对应系统主要的3个功能进行设计。分别是:晾衣杆自动感应,晾衣杆手动切换和天气预报。
利用光敏传感器和雨滴传感器来检测外界光照和湿度。当外界光照亮度达标,并且没有下雨时,程序会控制舵机旋转,从而使晾衣杆晒出。
代码实现:
设置变量L表示检测亮度,变量R表示检测雨滴。当外界亮度超过160且雨滴值为0时,模拟了晴天下天黑的情况,晾衣杆自动收衣服;
pinMode(A0,INPUT);
pinMode(pinBtn,INPUT);
pinMode(A1,INPUT);
pinMode(pinBtn2,INPUT);
int L = analogRead(A0); //L表示亮度
int rainfall = analogRead(A1); //降水量
L和rainfall接收亮度和降水量信息。
#include <Servo.h>
Servo yj;
Servo是一个舵机驱动库,可以创建一个舵机对象。
yj.attach(7); //舵机7号引脚
attach(pin)方法可以绑定舵机和引脚。
if(L>160 || rainfall <= 40){
yj.write(15); //天黑收衣服(舵机转到0度)
}
else{
yj.write(105); //天亮晒衣服(舵机转到90度)
}
判断亮度和降水量后,write(tangle)方法可以将舵机旋转到需要的角度。
利用按钮来实现退出和进入循环,从而实现自动和手动的切换。
代码实现:
tsLastReport变量实现每一秒中对心率和血氧进行一次采样,使用到了MAX30100Lib库中PulseOximeter类实例对象的getHeartRate和getSpo2方法分别获取心率和血氧数据。
if(digitalRead(pinBtn)==HIGH){
yj.write(15); //强制收回
delay(1000);
while(1){
if(digitalRead(pinBtn2)==HIGH){ //再次按下脱离强制收回
break;
}
}
当强制收回按钮按下后,自动收回,并进入循环。
取消收回按钮后,根据环境自动调节舵机。
Python:
requests:
此处的respsonse=requests.get(url)方法,可以从url的目标网址得到一个响应,用result=response.json()的方法可以将json格式的数据转换成字典,最后用daily提取出需要的信息,url的接口可以参看心知天气的API。
serial:
serial是python的串口通讯库。
其中ser = serial.Serial(‘/dev/ttyACM0’,9600)查看树莓派接口得知串口为‘/dev/ttyACM0’,并设置传输速率为9600。ser.write(string),该方法可以向串口传递字符串数据,但接收时是单字节的,需要在arduino循环相加。
Arduino:
<Adafruit_SSD1306.h>:
该库依赖于<SPI.h><Wire.h><Adafruit_GFX.h>,将他们导入后,设置屏幕的主从关系,片选信号和数据,时钟信号等引脚后,就设置好屏幕的驱动。
初始化屏幕
使用全局变量weather数组提取出字符串里的天气信息数据格式为
[a:b :c:d:e:f:],其中a、b和d、e为今天和明天的日夜间天气,c、f为风速等级。
天气对应的接口对应心知天气的天气图,可以下载后:调整尺寸->调整透明度->用画图工具保存为单色位图->提取出点阵信息(如我用的zimoV2.2软件),将点阵信息,存到数组里,根据weather的信息,调用display.drawBitmap()方法就能打印出对应的天气了。
display.clearDisplay()清楚屏幕缓存的信息;
**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/5db4b1cdc9b558560b7e10082983c6f2.png)
![img](https://img-blog.csdnimg.cn/img_convert/c36965f6ebed8fbf5b472f9ddc3fb295.png)
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**
**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54i4ICDniLg=,size_20,color_FFFFFF,t_70,g_se,x_16)
display.clearDisplay()清楚屏幕缓存的信息;
收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
[外链图片转存中…(img-J6VQJAzv-1715664213394)]
[外链图片转存中…(img-Lxyfu8Vh-1715664213395)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!