0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

毕业设计| 手把手教你制作智能家居系统

朱老师物联网大讲堂 2022-01-20 09:45 次阅读

本次分享的毕设来自B站up主一顿晚上饭,用了六篇文章详细的记录了项目设计细节。达尔闻将文章分享给大家,希望可以帮助正在做毕设的同学。文章有点长,值得收藏哦~终于在2021年毕业了,从2020年11月开始的毕业设计在5月份也答辩完成,大学生活也结束了,在指导老师的帮助下,我的毕业设计及论文评选为校级优秀。现在终于有时间来写一篇比较详细的Arduino uno R3开发板+ESP8266-01s+机智云平台的智能家居开发详解。网上关于成套的智能家居详解少之又少,因此想帮助后面的同学们进行设计!我的设计可能大部分同学看不上,但是可以对一些学校论文检查不算认真,只需要有设计就行的同学省一笔钱233333

在选题之后直接开始面向CSDN编程(bushi),因为智能家居的方向太广,大多数都是基于STM32单片机制作的,也有部分51单片机。但因为选题原因,我需要找到Arduino单片机的例程,关于这一部分又杂又乱,所以我只能把所有看起来有用的东西全部收藏,然后在后面着手制作的时候拿出来看。

最后的成品状态如下图:

ffde2f4e-7919-11ec-99ef-dac502259ad0.png

总而言之呢,我的毕业设计实现了以下几个功能,这几个功能应付一下毕设应该是没问题的:

1)在手机端单独控制每个控制端的开关。

2)在手机端查看传感器数据。

3)监测到火焰自动报警、开窗、开门。

4)监测到下雨自动关窗。

5)在进行操作时有声音提示。

6)按键实现在自动模式和手动模式切换的功能。

7)在白天回家开门时自动开门、开窗;在夜晚回家时自动开门、开灯、开窗;离家时自动 关灯、关窗。

8)多种模式选择,包括正常模式、睡觉模式、电影模式、下雨模式、自动模式。

9)自动模式实现传感器与家具联动,根据传感器设置的值自动开关家具。

功能不算很多,也不是很高大上,同时还是有略微的几个bug(毕竟谁不会写bug呢),但是基本运行完全没问题,具有很强的参考意义。

1

机智云平台的配置

要制作智能家居系统,大家的第一想法就是远程控制,其次就是设备之间的联动。

所以要解决远程控制这个问题,有很多方式,比如自己架设服务器、使用平台提供的服务等,对于这一系列教程来说,我们就要使用最简单的方式快速的开发自己的智能家居系统,因此我选择了机智云平台。

选择机智云的原因就是它提供了一系列的服务,就像自动代码生成服务,云端服务等。我们只需要自己设置数据点(硬件的数据范围、名称),它就可以一键生成硬件端的配置代码以及手机APP控制端的源码,可以说是非常方便了。

关于机智云平台的简介我就不在这里多说了,有想深入了解的小伙伴可以自行查阅百度或者机智云开发文档。下面直接进入正题,我的教程全部依照我自己的设计进行讲解。

首先需要注册一个机智云账号:https://www.gizwits.com/,注册之后进入开发者中心,点击创建新产品,进入如下界面并选择:

004e3a1e-791a-11ec-99ef-dac502259ad0.png

创建完成后即可自动进入项目管理界面,

0079e524-791a-11ec-99ef-dac502259ad0.png

左侧工具栏中,基本信息包含了产品名字,产品类型,通讯方式以及Product Key,Product Secret 。

数据点是项目中使用到的硬件模块的各种信息,这部分信息需要自己创建数据点,在后续自动生成代码时就会自动把数据的get、set、send生成好,差不多就这个意思。

虚拟设备是模拟调试,数据点创建好之后可以在网页中实时的模拟数据的上传和数据的读取,可以用来判断数据点设置的是否正确。

再到服务一栏,应用配置就是对APP安装包文件的配置,在这里生成一个ios或者安卓的安装应用程序,可以在其中添加QQ\微信登录选项(需要自己去申请api接口key),

应用开发就是生成APP的源码包的地方,这个地方在APP篇会在讲解,最开始调试可以使用机智云提供的默认APP。

MCU开发是这篇需要用到的,自动生成的硬件端代码。

首先对数据点进行配置:

进入数据点一栏后,点击新建数据点,根据自己的设备进行选择,比如说我现在要添加一个LED灯,标识名(自己定)我就填写LED_Bedroom,大家也知道要控制一个LED灯,通常使用1,0表示开和关,因此我们需要设置一个可写的数据点,来写入开关信息,数据类型选择布尔就可以个,只需要ture和false值就好。完成后点击添加,这样我们就添加进了第一个数据点。

00de6260-791a-11ec-99ef-dac502259ad0.png

接下来我们添加一个光照传感器的数据点,光照传感器的运行模式就是将模块中的光照数值传入开发板中,因此光照传感器的读写类型设为只读即可,数据类型选择数值,经过资料查询发现光照传感器的数值范围为1-65535,分辨率的意思就是保留几位小数,根据光照传感器的最大参数自行设定即可。

014342d4-791a-11ec-99ef-dac502259ad0.png

接下来创建一个枚举类型的数据点,用来设置不同的模式,我在自己的项目中设置了正常模式、睡觉模式、电影模式、下雨模式和自动模式五种模式,用来一键切换。如下:

0188a3ec-791a-11ec-99ef-dac502259ad0.png

常用的数据点设置就是这样,根据自己使用的模块设置即可,在数据点主界面可以编辑中文名称,会显示在最后生成的APP中。我的数据点设置如下:

01d6abdc-791a-11ec-99ef-dac502259ad0.png

数据点设置完成之后一定要保存,否则刷新会消失。

接下来就可以自动生成代码了,在左侧工具栏选择基本信息,点击显示Product Secret,复制显示出来的代码,再选择左侧工具栏的MCU开发,并将刚才复制的Secret粘贴上,并如下选择:

021a5fc6-791a-11ec-99ef-dac502259ad0.png

点击生成代码包,稍等片刻即可下载。此时就可以放一边备用了,关于机智云的配置就结束了。

2

ESP8266-01S的固件烧录

我们选择了机智云平台,因此我们要给它烧录进相应的固件——Gagent固件,下载地址:

https://download.gizwits.com/zh-cn/p/92/94

下载这个即可。

下载好之后就可以进行烧录的,因为ESP8266-01s并没有USB接口,因此我们需要一个下载器烧录模块,usb转ttl模块,型号为cp2102,长这个样子:

0289350e-791a-11ec-99ef-dac502259ad0.png

使用时需要下载驱动,这里读者可以自己去搜索安装。同时我们需要下载固件烧录工具,flash_download_tool_v3.8.5,这里读者可以自己去搜索安装。以及需要下载机智云的Gagent_Debugger_v3.2.3软件,用来烧写好后进行调试固件。

https://download.gizwits.com/zh-cn/p/98/119

下面是连线说明,连线不够用可以借助面包板:

USB转TTL的RX连接ESP8266-01s的TX

USB转TTL的TX连接ESP8266-01s的RX

USB转TTL的3v3连接ESP8266-01s的3v3

ESP8266-01s的IO0接地!

ESP8266-01s的EN接高(接到3v3即可)

USB转TTL的GND连接ESP8266-01s的GND

ESP8266的gpio0端口控制着模块的工作模式,GPIO0为低时是下载(烧录)模式,正常时为工作模式,因此烧录完成之后将此线拔掉在上电即可正常工作。

在这里需要注意,ESP8266-01s模块需要非常标准的3.3v供电,千万不要接到非3.3供电接口。

准备工作正式完成,下面我们就可以开始准备烧录固件了,

首先打开下载好的flash_download_tool_v3.8.5,选择Developer Mode:

02bf5a12-791a-11ec-99ef-dac502259ad0.png

选择ESP8266 DownloadTool,

0308e38a-791a-11ec-99ef-dac502259ad0.png

打开后如下图选择:

03372d26-791a-11ec-99ef-dac502259ad0.jpg

第一行中的文件选择刚才下载好的ESP8266-01s的Gagent固件(GAgent_00ESP826_04020034_8MbitUser1_combine),之后将usb转ttl插入电脑,选择好COM端口,点击START就可以烧写了,其中可能烧写失败或者连接失败很多次,可以尝试更换电脑、USB端口、多试几次进行烧写,直到Success为止。

此时固件烧写完成了,下面进行调试:

打开刚才下载的Gagent_Debugger_v3.2.3,转到配置左边的配置框

037bbd10-791a-11ec-99ef-dac502259ad0.png

点击右下角新增,将机智云网页中的 product key 和 product secret 复制进去,

03c12dfa-791a-11ec-99ef-dac502259ad0.png040552f0-791a-11ec-99ef-dac502259ad0.png

添加成功后选择模拟 mcu 选项卡,

04301fee-791a-11ec-99ef-dac502259ad0.png

此时可以看到上一篇中添加的数据点在右边显示了出,

04892a62-791a-11ec-99ef-dac502259ad0.png

此时将ESP8266-01s的IO0线拔掉不要接,再次将USB转TTL模块插入电脑中,在Debugger软件中选择好串口和波特率,点击打开串口,即可进行调试,此时也可以进行网络的连接,但是需要配合机智云平台提供的软件进行网络配置,如果有兴趣的小伙伴可以自己试一下,在后面也会讲。

点击左下角的Airlink即可进入网络配置,在机智云的软件中选择添加设备,选择好乐鑫ESP8266即可自动搜索,搜索到就是正常的网络连接信息,填写即可。

ESP8266-01s固件烧录以及配置就完成了。

3

开发板与模块的连接

首先主控板使用的是Arduino uno R3,无线模块使用的是ESP8266-01s,在前面的文章已经介绍过了,其次就是各种模块了。介绍的所有模块的连接都是按照毕业设计的针脚号进行连接,后面读者可以自己设置针脚自己连接。在初步连接时可以使用面包板验证可行性(就是测试一下能不能运行,并且能不能成功显示数据)。

我也会在模块下方贴出我自己在网上找的并且应用的使用代码。

1)DHT11 温湿度传感器模块

3pin,3.3v或者5v供电都可以,中间是数据口,代码中需要设置端口为INPUT,接在D2口。

#include//这里需要自己下载DHT.h库,并放入文档/\Arduino\libraries文件夹下byteDHTPIN=2;//定义端口#defineDHTTYPEDHT11//温湿度功能定义DHTdht(DHTPIN,DHTTYPE);//初始化//温湿度传感器获取数据void DHT11_Read_Data(unsigned char * temperature, unsigned char * humidity){
*temperature=(unsignedchar)dht.readTemperature();*humidity=(unsignedchar)dht.readHumidity();return;}

2)低电平触发的有源蜂鸣器

3pin,接3.3v或者5v都可以,5v更响(没必要2333),中间是数据口,要在代码中设置端口为OUTPUT,并初始化为高电平HIGH,接在D3口。使用代码(ps:使用时记得加延时 ):

#define buzzerIO     3  //定义端口号
digitalWrite(buzzerIO, LOW); //输出低电平,响
digitalWrite(buzzerIO, HIGH; //输出高电平,不向

3)SG90 舵机 360度/180度

050460d8-791a-11ec-99ef-dac502259ad0.png

舵机有360度舵机和180度舵机,360度就是能360度来回转圈,180度只能转到设定的角度。

3pin,红色正极,棕色负极,黄色数据,3.3v和5v都可以带动,但是3.3v会有干扰问题导致360度设定一致时转动圈数不一致,所以建议用5v(因为好像要设计什么滤波电路,我并不会23333)。

360度是模拟窗帘,180度模拟门,360度端口接到D5,180度接到D4。

360度舵机使用代码:

#include   //库文件自行下载
Servo myServo1;  //定义舵机1 (180度)
ServomyServo2;//定义舵机2(360度)
byte posdoor = 0; //180舵机端口
byteposcurtain=0;//360度舵机端口
setup(){  //初始化函数
myServo1.attach(DoorPin);  //设置180度舵机端口
myServo1.write(0);//在180度舵机中:0为0度,里面的参数为度数,设置多少度就会转到多少度。
 myServo2.attach(curtainPin);  //设置360度舵机端口
 myServo2.write(90); //在360度舵机中:参数90为停止,0和180为正反转。
}
myServo2.write(0); // 正转360度舵机
delay(2000); //延时2000ms,此时一直在转动,如果不设置下一条代码就停
myServo2.write(90);//停止转动360度舵机myServo1.write(120); //180舵机转到120度方向
myServo1.write(0);  //180度舵机转到0度方向
4)BH1750光照强度传感器

5pin,其中一个没用,接3.3v电源,走的I2C通道(虽然我看了半天没看懂这个协议),SCL接SCL,SDA接SDA,这里要注意接触不良问题,在最后的程序中因为接触不良经常导致整个进程直接卡死,当时找不到原因伤透了脑筋。

使用代码:

#include#defineADDRESS_BH1750FVI0x23//ADDR="L"forthismodule#define ONE_TIME_H_RESOLUTION_MODE 0x20
byte buff[2];
//光照传感器获取数据intBH1750_read(){ Wire.beginTransmission(ADDRESS_BH1750FVI); //获取传感器地址
 Wire.write(ONE_TIME_H_RESOLUTION_MODE);  //设置开始模式
 Wire.endTransmission();
 Wire.requestFrom(ADDRESS_BH1750FVI, 2); //让主机从传感器获取2位字节的数据
 highByte = Wire.read(); //获取高位字节
 lowByte = Wire.read(); // 获取低位字节 sensorOut = (highByte << 8) | lowByte;
 illuminance = sensorOut / 1.2;
returnilluminance;}
5)雨滴传感器

走的是模拟接口也就是A的那一排,3.3v供电,模块上的D端口可以不接,A0接开发板的A0。

使用代码:

#defineRainIOA0//雨滴传感器读取数据 int value = analogRead(RainIO); //value值就是当前的数据

6)火焰传感器

3.3v供电,模块的D0接板子的D13,可以调节上面的旋钮来调整灵敏度,调整到打火机在旁边打火时出现警报即可。

使用代码:

#define   fireIO            13
intvalue=digitalRead(fireIO);

当示数为1时,代表检测到火焰,为0时表示没有火焰。

7)继电器+风扇

风扇买最小的需要电压最小的即可,同时需要电池盒对风扇进行供电。继电器就是一个电磁开关,有电时闭合,没电时打开。在图中左边是开关接口(或许可以这么说),右边是开发板控制端。

右边需要接开发板,3.3v或5v供电,中间是数据接口,接开发板的D10.

风扇与电池盒串联,在将其中一条线接到继电器左边中间的接口,另一条线接到左边或右边的端口,两个端口区别就是一个是低电平触发一个是高电平触发,可以看作“双开门”的样子。

8)LED灯

LED灯用了三个,分别用作厨房、卧室、客厅的灯光模拟,长腿是正,短腿是负,接反了不亮,同时所有灯我都串联了一个电阻,亲测直接接5v会立即烧坏,所以不管3.3还是5v我都串联了10k电阻。

9)key按键

对角接线,左上角接地,右下角接开发板D12口。

至此接线部分就全部完成了,关于代码部分在这里确实不详细,因为我从网上copy下来的代码在我的程序中多多少少都做了更改,网上也是有完整的运行代码,读者可以自己去搜索。

代码的合并、编写及烧录可以至B站(ID:一顿晚上饭)查看。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 智能家居
    +关注

    关注

    1907

    文章

    9102

    浏览量

    178828
收藏 人收藏

    评论

    相关推荐

    手把手教你制作DAPLink

    这篇文章主要描述利用RT-THREAD+CherryUSB制作DapLink调试器(R_DapLink)全流程。这里先感谢网友:sakumisu提供cherryUSB协议栈的技术支持。 什么是下载
    的头像 发表于 12-26 08:35 683次阅读
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b><b class='flag-5'>制作</b>DAPLink

    手把手带您使用MCUXpresso Config Tools生成USB组合设备

    手把手带您使用MCUXpresso Config Tools生成USB组合设备
    的头像 发表于 10-31 16:55 649次阅读
    <b class='flag-5'>手把手</b>带您使用MCUXpresso Config Tools生成USB组合设备

    LOTO示波器_从零开始手把手测电源开环增益/电源环路频响曲线/PSM

    我们之前有篇文章从理论到实践演示了如何测量电源环路的开环增益曲线,不过偏重于理论和原理,没有很多细节的展现,所以这片文章从另外的角度,从零基础开始,手把手一步一步演示如果进行实操测试。
    的头像 发表于 10-26 16:08 397次阅读
    LOTO示波器_从零开始<b class='flag-5'>手把手</b>测电源开环增益/电源环路频响曲线/PSM

    手把手教你学FPGA仿真

    电子发烧友网站提供《手把手教你学FPGA仿真.pdf》资料免费下载
    发表于 10-19 09:17 1次下载
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>学FPGA仿真

    智能家居管理系统设计资料

    智能家居管理系统设计(原理图+APP+源代码等)使用51单片机作为主控 提供完整源码 可实现智能家居控制网上下载的资源 侵权删!
    发表于 10-07 08:22

    手把手教你基于RT-Thread Studio使用STM32单片机的PWM外设

    目前我使用的是STM32L475系列单片机,是ali当时在PDD 50块钱卖的一个开发板,其他STM32单片机参考即可,这里会手把手教大家基于RTT Studio 来使用PWM。
    的头像 发表于 09-28 15:12 2344次阅读
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>基于RT-Thread Studio使用STM32单片机的PWM外设

    手把手教你制作无线充电器

    手把手教你制作无线充电器(无线充电原理+产品应用+DIY实例)
    发表于 09-28 07:48

    手把手教你pcb压合的整个流程,小白也能玩转电路板制作

    手把手教你pcb压合的整个流程,小白也能玩转电路板制作
    的头像 发表于 09-18 10:43 1407次阅读

    手把手教您家用路由器应该如何挑选

    手把手教您家用路由器应该如何挑选
    的头像 发表于 07-26 09:20 813次阅读
    <b class='flag-5'>手把手</b>教您家用路由器应该如何挑选

    专家手把手教您注册 COS 以及提交 Hardware Case

    Software Case  您可参考: (点击进入☞) 《专家手把手教您注册 COS 以及提交 Case》 。 如您想提交 Hardware Case,本篇将手把手教您,
    的头像 发表于 07-12 12:15 588次阅读
    专家<b class='flag-5'>手把手</b>教您注册 COS 以及提交 Hardware Case

    手把手分享做网线水晶头的技巧

    如今,随着网络技术的飞速发展,电脑已经成为家庭和工作的必备工具。电脑上网需要接入网线。你知道网线两端的插头是怎么做的吗?下面科兰小编手把手分享做网线水晶头的技巧。 做网线水晶头首先要知道网线的结构
    的头像 发表于 07-05 10:35 1209次阅读

    智能面板小程序如何实现跨端开发,并无缝引入ChatGPT?

    手把手教你开发智能面板小程序
    的头像 发表于 04-18 18:31 5204次阅读
    <b class='flag-5'>智能</b>面板小程序如何实现跨端开发,并无缝引入ChatGPT?

    成长计划知识赋能 | 第十期:DAYU200开发入门秒Get

    的框架原理、从零上手OpenHarmony智能家居项目、手把手教你实现WiFi扫描仪、涂鸦小游戏、渐进式深入理解OpenHarmony系统等41节课程,覆盖近10万+开发者。2023年
    发表于 04-17 11:18

    【正点原子STM32精英V2开发板体验】资料获取方式

    个,工程结构更加合理、编程风格更加规范化等。教程方面推出了一系列全新的视频!目前已经上架(并持续更新)的视频包括:手把手教你学STM32 HAL库开发教学视频(兼容全系列)、手把手教你
    发表于 04-13 09:13

    手把手教你学习Spyglass工具

    作为IC设计人员,熟练掌握数字前端语法检查工具Spyglass的重要性不言而喻,本文手把手教你学习Spyglass工具。
    的头像 发表于 04-03 10:46 1551次阅读