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:一顿晚上饭)查看。

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

    关注

    1926

    文章

    9488

    浏览量

    183963
收藏 人收藏

    评论

    相关推荐

    手把手教你通过宏集物联网工控屏&amp;网关进行协议转换,将底层PLC/传感器的数据转换为TCP协议并传输到用户

    手把手教你通过宏集物联网工控屏&网关进行协议转换,将底层PLC/传感器的数据转换为TCP协议并传输到用户终端
    的头像 发表于 08-15 13:29 382次阅读
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>通过宏集物联网工控屏&amp;网关进行协议转换,将底层PLC/传感器的数据转换为TCP协议并传输到用户

    STM32项目分享:智能家居(机智云)系统

    STM32项目分享:智能家居(机智云)系统
    的头像 发表于 07-28 08:10 1415次阅读
    STM32项目分享:<b class='flag-5'>智能家居</b>(机智云)<b class='flag-5'>系统</b>

    智能家居系统设计方案

    随着科技的飞速发展,智能家居已成为现代家庭追求高品质生活的重要趋势。智能家居系统通过集成各种智能设备,利用物联网、云计算、大数据等先进技术,实现家居
    的头像 发表于 07-23 15:28 1338次阅读

    智能家居与物联网的关系

    智能家居与物联网(IoT,Internet of Things)之间存在着密不可分的关系。物联网作为智能家居背后的核心技术基础,为智能家居系统提供了强大的连接能力和
    的头像 发表于 07-23 15:17 983次阅读

    智能家居控制系统如何设计

    智能家居的控制系统设计是一个复杂而细致的过程,它涉及到多个方面的考虑,包括需求分析、设备选型、系统架构设计、网络安全、用户交互以及后期维护等。以下是对智能家居控制
    的头像 发表于 07-23 14:45 1130次阅读

    手把手教你在orcad中设置CIS元器件数据库,提高工作效率

    元器件数据库,就是实现上述查找元件、放置元件时所需要调用的数据库。本文将手把手教你如何在orcad中配置CIS元器件数据库。
    的头像 发表于 06-15 17:27 5217次阅读
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>在orcad中设置CIS元器件数据库,提高工作效率

    手把手教你排序算法怎么写

    今天以直接插入排序算法,给大家分享一下排序算法的实现思路,主要包含以下部分内容:插入排序介绍插入排序算法实现手把手教你排序算法怎么写在添加新的记录时,使用顺序查找的方式找到其要插入的位置,然后将
    的头像 发表于 06-04 08:03 630次阅读
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>排序算法怎么写

    手把手带你移植HAL库函数

    开发者更高效地进行嵌入式开发。手把手带你移植HAL库函数HAL库提供了一套抽象接口,使开发者无需直接操作底层硬件寄存器,就能实现对硬件的控制。这种抽象使得代码能够更
    的头像 发表于 05-18 08:04 1613次阅读
    <b class='flag-5'>手把手</b>带你移植HAL库函数

    Python智能家居系统代码介绍

    Python智能家居系统是一种基于Python编程语言开发的智能家居控制系统,在现代家庭中得到了越来越广泛的应用。本文将详细介绍Python智能家居
    的头像 发表于 01-25 09:46 1225次阅读

    工程送样!手把手教你用好广和通RedCap模组FG131&amp;amp;FG132系列

    工程送样!手把手教你用好广和通RedCap模组FG131&FG132系列
    的头像 发表于 01-11 18:22 652次阅读
    工程送样!<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>用好广和通RedCap模组FG131&amp;amp;FG132系列

    智能家居控制系统原理与应用

    智能家居控制系统是指利用先进的计算机科学和通信技术,将各种家居设备和系统进行连接和集成,实现智能化控制和管理的
    的头像 发表于 01-10 11:44 2641次阅读

    【飞腾派4G版免费试用】3.手把手玩转制作rootfs根文件系统

    你们一起玩转制作rootfs,也就是根文件系统。但是别紧张,这不是那种会让你头大的编程问题,而是像在家里做蛋糕一样的简单有趣! 非常感谢第一篇文章【飞腾派4G版免费试用】1.实战交叉编译环境搭建和手把手
    发表于 01-09 10:49

    手把手教你制作DAPLink

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

    最新ChatGPT详细注册图文解说教程 ChatGPT账号注册详细步骤分析

    2024年注册ChatGPT详细教程,手把手教你完成ChatGPT的注册
    的头像 发表于 12-04 17:18 8594次阅读
    最新ChatGPT详细注册图文解说教程  ChatGPT账号注册详细步骤分析

    网络化智能家居系统设计案例

    电子发烧友网站提供《网络化智能家居系统设计案例.zip》资料免费下载
    发表于 11-17 10:19 0次下载
    网络化<b class='flag-5'>智能家居</b><b class='flag-5'>系统</b>设计案例