嵌入式期末大作业——家用智能晾衣杆

目录

  • 嵌入式期末大作业——家用智能晾衣杆
  • 前言
  • 一、项目介绍
    • 1.项目背景
    • 2.项目构思
  • 二、系统设计
    • 1.系统概述
    • 2.设计思路
    • 3.设计草图
  • 三、硬件设计
    • 1.硬件模块介绍
    • 2.硬件系统的Fritzing模型图
  • 四、软件设计
    • 1.晾衣杆自动感应
    • 2.晾衣杆手动切换
    • 3. 天气预报
  • 五、使用说明
    • 1.实物图展示
    • 2.操作流程
  • 六、系统总结

前言

昨天早上我的物联网大作业也成功验收了。所以从昨天开始,我大学四年与之相关的课程到此结束。
从数字逻辑到嵌入式再到物联网,每段历程都应该记录一下吧=_=
所以今天腾空把上学期的期末大作业给做一个记录
老样子,实验报告和代码等放文末自取吧


废话不多说,正文开始!

一、项目介绍

1.项目背景

  随着我国社会经济水平的发展,当前人们的生活逐渐追求个性化、自动化,对家用器件要求的档次越来越高,生活家居人性化、智能化的要求使控制技术在智能家居电子产品中得到了广泛应用,它不仅优化了人们的生活方式和居住环境,而且方便人们有效地安排时间和节约各种能源。伴随着高智能家居的快速发展,晾衣工具的智能化发展明显落后于其他家用器具智能化发展,现在已经引起社会的较大关注。
  当下固定且单一的晾衣杆,无法对天气和其他外界因素做出反应。对于现在城市中的大多数人来说,每天的工作压力巨大,白天的时间几乎都不在家,当天气变化时不能及时把衣服收回和晒出,对城市生活造成较大不便。
  设计背景:

2.项目构思

  设计开发一种能够自动感应天气变化和手动控制晾衣杆的智能晾衣杆。晾衣杆可以选择自动模式和手动模式:
  自动模式下,晾衣杆可以感应天气的变化来进行晾衣,雨天时,自动收回,晴天时,自动晒出;
  手动模式下,停止晾衣杆自动检测,人们可以通过按钮来控制衣杆。

二、系统设计

1.系统概述

  本项目旨在基于Arduino和树莓派,模拟开发一个简易的家用智能晾衣杆。在家用智能晾衣杆中,用户可以根据自身的需要,切换手动和自动两个模式。首先是自动模式下,在自动模式中,用户无需对晾衣杆进行操作。晾衣杆可以根据对当前光照的强度进行检测,来判断外边是否天气晴朗。同时,晾衣杆将检测外界的湿度,来检测外界是否下雨。
  总结四大状况如下:
  1.当外界光照亮,且没有下雨时,晾衣杆将会自动晒出;
  2.当外界光照亮,但是下雨了,晾衣杆将会自动收回;
  3.当外界光照暗,但是没下雨时,晾衣杆将会收回;
  4.当外界光照暗,同时下雨了,晾衣杆将会收回;

  在手动模式下,晾衣杆不再自动感应外界状况。用户可以通过按钮来使晾衣杆晒出和收回。
  同时,在个人小屋中,增设了天气预报功能,显示屏将会把最近的天气实时显示出来,来方便用户进行判断。
  综上,本系统的主要功能是:
  1.晾衣杆自动感应天气
  2.晾衣杆手动控制
  3.天气预报

2.设计思路

(1)家用智能晾衣杆软硬件设计:


(2)家用智能晾衣杆流程图:

3.设计草图

  房屋模型屋顶设计图

  房屋模型大体设计图

  衣物设计图

三、硬件设计

1.硬件模块介绍

(1)SSD1306 OLED 显示模块:

端口连接:

功能:用于显示天气状况和风力大小。

(2)光敏传感器模块:

端口连接:

功能:用于检测房屋外光线强度,来决定晾衣杆的收回和晒出。

(3)雨滴传感器模块:

端口连接:

功能:用于检测房屋外是否下雨,来决定晾衣杆的收回和晒出。

(4)按钮:

连接:通过检测输出引脚的电压来检测线路连接和断开。

功能:用于切换晾衣杆的工作模式和控制晾衣杆的晒出和收回。

(5)舵机:

端口连接:

功能:用于控制晾衣杆的转动。

2.硬件系统的Fritzing模型图

四、软件设计

  软件设计对应系统主要的3个功能进行设计。分别是:晾衣杆自动感应,晾衣杆手动切换和天气预报。

1.晾衣杆自动感应

利用光敏传感器和雨滴传感器来检测外界光照和湿度。当外界光照亮度达标,并且没有下雨时,程序会控制舵机旋转,从而使晾衣杆晒出。

代码实现:
设置变量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)方法可以将舵机旋转到需要的角度。

2.晾衣杆手动切换

利用按钮来实现退出和进入循环,从而实现自动和手动的切换。

代码实现:
tsLastReport变量实现每一秒中对心率和血氧进行一次采样,使用到了MAX30100Lib库中PulseOximeter类实例对象的getHeartRate和getSpo2方法分别获取心率和血氧数据。

  if(digitalRead(pinBtn)==HIGH){yj.write(15);   //强制收回delay(1000);while(1){if(digitalRead(pinBtn2)==HIGH){   //再次按下脱离强制收回break;}}

当强制收回按钮按下后,自动收回,并进入循环。
取消收回按钮后,根据环境自动调节舵机。

3. 天气预报


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()清楚屏幕缓存的信息;
display.setTextSize(uint8_t s)设置字体大小s;
display.setTextColor(WHITE)设置字体颜色;
display.setCursor(uint8_t x,uint8_t y),设置光标位置,以左上角为(0,0);
display.println(String str),打印字符串str;
drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color),在(x,y)处作图,bitmap为static const unsigned char PROGMEM数组的格式;
display.display()方法会把内容推到显示屏上。

五、使用说明

1.实物图展示

(1)模型正面图

(2)模型背面图

(3)模型内部图

2.操作流程

(1)天气预报

  如图所示,天气预报信息将会显示在OLED屏上。当树莓派启动时,将会显示开机界面。

此时树莓派开始请求天气数据,显示屏显示“Please Wait”

当树莓派成功请求到数据后,将传给Arduino,并实时显示和更新数据。显示的数据包括今天和明天中,日间和夜间的天气状况。

(2)自动感应

  在自动感应功能下,晾衣杆将会根据天气来决定晒出和收回。
  当外界光线状况好,且没有下雨时,晾衣杆将晒出:


当外界光线状况差,晾衣杆将收回:

当外界光线状况好,但是降雨量达到标准后,晾衣杆将收回:

当外界光线好,同时降雨量没有达到标准时,晾衣杆暂时不收回:

(3)手动切换

  当点击切换按钮后,程序将进入到手动控制模式中,同时将晾衣杆收回,此时晾衣杆将不再检测天气状况:

当点击退出按钮后,程序将返回自动感应模式中,此时晾衣杆将继续检测天气状况。

六、系统总结

系统优点:
  完全实现了晾衣杆自动和手动两种模式的运行,实现了晾衣杆智能化,并且代码上优化了不同模块之间的衔接,使得模型响应速度快,准确度高。

系统缺点:
  系对天气的检测量种类少,在对天气感应的灵敏度和准确度上有待提高。在arduino上获得的天气数据和舵机的转动不能统一,即不能有效利用系统内的信息。

改进想法:
  加入更多的器件来提高模型对天气的预计准确度,并且设计吹干和伸缩的功能,来提高用户体验感。


嵌入式期末大作业——家用智能晾衣杆相关推荐

  1. 智能嵌入式系统大作业(1)

    计算机科学与工程学院 | 智能嵌入式系统大作业(1) 题目:对于智能音箱--小米Sound的调研报告 班级:\姓名:\学号:\日期: 得分:\ 评语: 目录 题目:对于智能音箱--小米Sound的调研 ...

  2. HTML5期末大作业:商城网页设计——仿京东商城网页端模板(8页面) HTML+CSS+JavaScript...

    HTML5期末大作业:商城网页设计--仿京东商城网页端模板(8页面) HTML+CSS+JavaScript 商城网页HTML代码 学生网页课程设计期末作业下载 商城大学生网页设计制作成 临近期末, ...

  3. HTML5期末大作业:商城网页设计——仿京东商城网页端模板(8页面) HTML+CSS+JavaScript

    HTML5期末大作业:商城网页设计--仿京东商城网页端模板(8页面) HTML+CSS+JavaScript 商城网页HTML代码 学生网页课程设计期末作业下载 商城大学生网页设计制作成 临近期末, ...

  4. 安卓期末大作业——校园二手街APP设计和实现

    安卓期末大作业--校园二手街APP设计和实现 目 录 1.引言 4 1.1 研究背景和意义 4 1.2 本文研究内容 4 1.3 论文结构安排 4 2.相关文献综述 5 2.1 关于移动互联网的地理社 ...

  5. 安卓期末大作业——猫咪社区(源码+任务书)

    安卓期末大作业--养猫论坛(源码+任务书) (第3期语音互动答疑)远程帮客户调试成功了猫咪社区APP.mp4 课题的作用和意义 随着我国孤独人口和丁克群体的增长,人们迫切需要一个事务来宣泄自己的感情, ...

  6. 大学web基础期末大作业~仿品优购商城页面制作(HTML+CSS+JavaScript)

    HTML网页设计期末课程大作业~~仿品优购页面制作(HTML+CSS+JavaScript) 关于HTML期末网页制作,大作业A+水平 ~仿品优购网页作业HTML+CSS+JavaScript实现,共 ...

  7. 基于单片机的智能晾衣杆

    设计简介: 本设计是基于单片机的智能晾衣杆,主要实现以下功能: 温度检测功能:温度小于温度最小值时,不进行晾晒 湿度检测功能:湿度大于湿度最大值时,不进行晾晒 风速检测功能:风速大于风速最大值时,不进 ...

  8. 智能晾衣杆_晾衣绳社交书签–仅CSS的社交书签教程

    智能晾衣杆 View demo 查看演示Download Source 下载源 Today we will create a fancy social bookmarking solution whi ...

  9. HTML5期末大作业:关于酒店主题网站设计——高级酒店公寓网页(4页) HTML+CSS+JavaScript...

    1.临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手? 网页要求的总数量太多? 2.没有合适的模板?等等一系列问题.你想要解决的问题,在这篇博文中基本都能 ...

最新文章

  1. python qthread 线程退出_线程:概念和实现
  2. 视图函数中进行sql查询,防止sql注入
  3. django 操作MySQL 中文乱码_Django 连接mysql数据库中文乱码
  4. Android Framework系统服务详解
  5. java web 导出word_JavaWeb Project使用FreeMaker导出Word文件
  6. android中svn插件安装,AndroidSDK安装SVN插件问题解决
  7. BetterZip使用教程分享:Mac用户如何提取压缩文件?
  8. 力扣171.Excel表列序号
  9. 从入门到入土(八)RocketMQ的Consumer是如何做的负载均衡的
  10. k2pbreed刷高恪教程_斐讯K2刷高恪固件教程,通过breed刷入,详细图文教程
  11. 软件测试---微信小程序测试点
  12. 通过PS营造艺术的碎片效果人像
  13. [生成模型新方向]: score-based generative models
  14. OSX: 使用命令行对FileVault2分区恢复
  15. matlab 分类学习工具箱 Classification Learner的使用及导出其生成的图,混淆矩阵confusion matrix的画法
  16. Python入门之——pexpect模块
  17. 如何在 Adob​e Photoshop 中制作拉伸的风景?
  18. Java数据结构—图(Graph)
  19. MySQL: 1366 incorrect string value
  20. 远程桌面控制软件,远程桌面控制软件哪个更好用,怎么使用呢

热门文章

  1. 基于java的家庭理财系统_基于jsp的家庭理财系统-JavaEE实现家庭理财系统 - java项目源码...
  2. js获取手机品牌型号,系统型号等
  3. mysql计算机二级电子教程_MySQL数据库程序设计(2019年版全国计算机等级考试二级教程)...
  4. symbian与uiq开发教程
  5. 12v农用车发电机接线图_拖拉机启动开关接线图 农用车基本电路连接方法
  6. 初学Python可能会遇见的小程序
  7. 2.支付10s倒计时
  8. STM32驱动Marvell8801介绍(十五) ---- Marvell8801开启open热点/开启wpa热点/开启wpa2热点
  9. Linux ARM平台开发系列讲解(网络篇) 2.3 Marvell 88EA6321/88EA6320 Switch 设备树的配置分析
  10. 安杰思在科创板IPO过会:拟募资约8亿元,达安基因为其主要股东