利用机智云平台实现基于Android和Arduino的智能家居系统

编程知识 更新时间:2023-04-29 08:46:43

写此博文主要是想记录一下自己的学习经历,并且与大家一起交流探讨文章中的问题以及不足。由于文章为原创文章,如需转发,请您注明出处。

目录

  • 1、方案设计
    • 1.1总体方案
    • 1.2硬件设计
    • 1.3软件设计
  • 2、软硬件清单
    • 2.1软件清单
    • 2.2硬件清单
  • 3、机智云简介
    • 3.1平台架构
    • 3.2GAgent协议
      • 3.2.1功能概述
      • 3.2.2GAgent接入机智云流程
  • 4、ESP8266调试
    • 4.1固件下载
    • 4.2设备连接
    • 4.3烧录
    • 4.4测试
    • 4.5接入机智云
  • 5、温度检测
  • 6、卧室灯定时开关
  • 7、声控灯
  • 8、Arduino接入机智云
  • 9、更换App图标和载入界面

1、方案设计

1.1总体方案

实现方面,使用android系统app对arduino外设进行远端控制与信息采集。通信模块选择ESP8266wifi模块。架构方面,利用机智云平台创建数据点,然后二次开发其MCU代码和APP代码,生成目标app。

1.2硬件设计


1、LED1设置为两种类型。1为客厅灯,用户可以通过App对客厅灯进行亮灭操作;2为卧室灯,用户一方面可以通过App对卧室灯进行亮灭操作,另一方面可以对卧室灯进行定时开关操作。
2、LED2设置为走廊声控灯。在光强时一直为灭;当光弱时,当声音强度超过阈值时,亮30s。同时用户可以通过App查看走廊灯当前亮灭状态。
3、温度检测。选用DS18B20温度传感器模块,实时监测环境温度。用户可通过App查看当前环境实时温度。
4、烟雾检测。采用MQ-2烟雾检测传感器,可用于家庭和工厂的气体泄漏监测装置, 适宜于液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等的探测。用户可通过App查看环境浓度是否超标。
5、火焰检测。采用火焰传感器,用户可通过App查看环境周围是否有明火。

1.3软件设计


首先,系统通电,各模块初始化,烟雾,火焰传感器模块检测空气中响应指标,输出数字信号;温度传感器与Arduino进行串口通信,当收到指令时进行温度检测;声控灯由光照和声音决定其亮灭。打开手机,连接家里路由器后打开App,App会使Wifi模块自动连接家中路由器(第一次使用需要配网)。此时App与Arduino构成C/S结构,App可以对Arduino上模拟家庭电灯进行亮灭操作,对模拟卧室电灯进行亮灭和定时亮灭操作;同时,App可以对温度、火焰、烟雾、声控灯状态进行实时监测。

2、软硬件清单

2.1软件清单

1、Android Studio3.6;
2、Arduino IDE 1.8.12;
3、ESP8266烧录(flash_download_tools_v3.6.6);
4、机智云串口调试助手

2.2硬件清单

1、Arduino UNO R3;
2、ESP8266-01 wifi模块;
3、USB转TTL模块;
4、电阻(510欧)(3个);
5、发光二极管(3个);
6、DS18B20温度传感器模块;
7、声音传感器模块;
8、光敏电阻模块;
9、MQ-2烟雾传感器模块;
10、火焰传感器模块;
11、杜邦线(若干)

3、机智云简介

3.1平台架构

机智云平台是致力于物联网、智能硬件云服务的开放平台。机智云专注于提供智能云服务及物联网的软硬件解决方案,帮助传统硬件厂商产品升级,快速实现硬件智能化。要实现硬件的智能化,除了硬件本身外,还需要实现:智能云平台、手机APP、联网模块,每一个领域都需要专业的团队来支撑。机智云提供完整的解决方案,让厂商或开发者只需要专注于自身产品硬件。以最小的成本和风险实现硬件智能化,获得产品最大的增值。下图为机智云平台架构:

3.2GAgent协议

3.2.1功能概述

GAgent主要的作用是数据转发,是设备数据、机智云、应用端(APP)的数据交互桥梁。可将GAgent移植到WiFi模组、GPRS模组、PC端等。

3.2.2GAgent接入机智云流程

1、设备上电:
A、GAgent请求设备信息
B、回复GAgent设备信息
C、设备正常工作,需回复GAgent发出的心跳包
D、GAgent网络状态发生变化通知mcu。

2、配置入网:
配置入网:使设备连接路由器,主要有3种配网方式airkiss(微信)、Airlink、SoftAP。
(1) Airlink模式:设备当处于该模式下,会不断接收特定编码的WIFI广播包,手机连接可用的WIFI网络后,通过指定的App发送编码后的WIFI网络的SSID和密码广播。设备接收到之后自动尝试连接此WIFI网络,连接成功即配置完成。
(2) SoftAP模式:设备在AP模式下,相当于热点,手机可以直接与设备连接,并将可用的WIFI网络SSID和密码发送给设备,设备接收到配置信息后自动尝试连接路由器,连接成功则自动切换到征程使用的模式。


4、ESP8266调试

本人使用的是旧版ESP8266-01。
ESP8266地位相当于一个独立的微处理器,有着自己的协议,所以在使用时,要像使用其他微处理器一样烧录程序(默认程序为AT指令)
AT指令测试模块性能

4.1固件下载

下载基于机智云的ESP8266对应的固件(使用的是机智云的框架协议,就必须下载机智云的固件,类似于“操作系统”
1、 ESP8266 GAgent固件下载地址:https://download.gizwits/zh-cn/p/92/94

2、确认固件文件(机智云中若使用MCU方案,则使用以combine结尾固件)

4.2设备连接

注意,ESP8266进行烧录时,不能使用软件串口。
本人使用USB转TTL模块。
1、ESP8266引脚说明如图:

2、将ESP8266模块按照如下原理图进行接线,注意GPIO0(18号管脚)需要输入低电平,本实验直接接地处理,KEY1实现外部复位功能。

4.3烧录

首先确定自己的型号与Flash大小( 查看网址),如果未找到型号,说明型号偏老,点击表下方“旧选型表”。
1、打开固件烧录软件(本人使用的是flash_download_tools_v3.6.6)
2、选择如图红框:

3、填写方法



4、烧写步骤
步骤一、选择正确的串口(注意区分同时连接时,Arduino的com和USB转TTL模块的com):

当串口连接成功之后,点击如上图的“START”按钮:

会出现:

步骤二、将ESP8266进行复位(按下原理图所示的KEY1后松开)将会出现如下信息表示模块正在进行烧写。(有些也可能不用复位,显示“等待上电同步”后5s内自动开始烧录

步骤三、等待一段时间后,出现“FINISH”字样表示烧写成功。

注:若出现烧录错误,极有可能是Flash选错。

4.4测试

烧录后(网上很多人问为啥没有AT指令了,前面已经提到了,ESP8266类似于一个微处理器,默认为AT指令固件,烧录新固件后,原AT指令肯定已经被覆盖了),现象:模块的指示灯不行闪烁,用串口工具监视发现,模块的串口再不停的打印信息。当用串口工具检测显示“乱码”。

现象解释:当串口工具波特率设置为115200,数据格式设置为ASCII码时,串口打印的的信息和模块硬件以及固件程序有关,当串口工具波特率设置为9600,数据格式设置为HEX时,串口输出的信息是FF FF 00 05 01 01 00 00 07,正是机智云wifi通信协议中,wifi获取MCU设备信息的命令。(可以通过“机智云串口调试助手——模拟MCU板块——指令解释”查询)

所以串口不停的发送数据,其实并不是乱码。当wifi获取MCU设备信息命令发送20次没有回应后,wifi模块自动重启。

模块烧录完固件后,打开机智云串口调试工具,模拟V4MCU功能,填好productKey和Product Secret(提前在机智云平台创建的产品),给wifi模块回应就好了,当wifi模块接收到串口给它的回应,就不再发数据出来了。

4.5接入机智云

这一节本人真的是吐血三升,ESP8266-01接入机智云app总是配置失败。第一次弄了两天莫名其妙不知道怎么就连上了,为了加深印象,我将模块复位重新走一遍流程,结果,第二次整整搞了2、3天,最后发现这是一门玄学。总结一下步骤:
1、配置失败原因:客服说是"esp8266-01不行,flash太小了,需要8MB的,即32Mbit的"。但是本人使用ESP8266-01配置成功过,所以推断客服说法错误;本人推测可能是USB口电压或者是串口助手–设备配置–产品型号出错(虽然key添加了,但可能还没更新过来)
2、接线:USB转TTL模块插入笔记本USB口(选择电压最稳定的,每个笔记本的不同USB口可能输出电压稳定程度不一样,尽量不要使用插鼠标的USB口)、ESP8266-01的Vcc、CH_PD、Res接TTL的3.3V输出、ESP8266-01与TTL共地。
3、如果是第一次使用,先将Rst口拉低一下复位模组,复位后现象为8266蓝灯1s闪烁1次,每20次重启。
3、打开机智云串口调试助手,串口注意别选错,选TTL的串口,波特率选择9600,打开串口后有两种情况:
3.1 失败情况:通信栏不断的且只有RX,没有TX,8266模块蓝灯依旧持续闪烁;
3.2 成功情况:通信栏如下图所示,模块蓝灯消失,进入等待指令阶段(蓝灯消失代表进入等待指令模式

4、模拟MCU发出指令“SoftAP”;(第一次配网需要先进入SoftAP模式,然后连接成功后模块自动进入Airlink模式。千万不能第一次就直接进入Airlink模式,否则一直都是"配置超时")
5、手机连接ESP8266的无线(名称:XPG-GAgent-xxxx;密码:123456789);
6、进入App——一键配网——输入家里路由器的名称和密码;
7、型号随便选,点击一键配置;
8、我在这里出现了玄学:
8.1 使用安卓系统app进行前7步操作,就是配置超时,我曾一度分别认为是接线问题、固件烧录问题、网络问题、手机问题、路由器问题,但都已经排除了,最后重心放在惟一可能的硬件问题或者方法问题(方法应该没错,因为我前两次都成功了,第三次想做个总结,结果莫名其妙的不行了,不过前两次也是不知所以然的连成功);
8.2 就在心力憔悴已经放弃并在打游戏之时,突然想起手里还有个ipad,想试试苹果系统能否连接成功;于是在app store下了官方app,重复步骤3-7(在使用过程中我就觉得事情可能会有转机,因为我先用的airlink模式,结果依旧配置超时,但是,苹果app不一样的是,在配置超时界面上方有一个告诉我们正确步骤的gif,这个是在安卓app没有的),果然,配网成功
9、当苹果app成果的作为“引子”使8266配网成功后,再打开安卓app,发现成功的连接上网并且能够像以前一样正常使用。(玄学)
10、为确定到底是系统的问题还是我之前的方法一直错误,我再次将8266复位,重新再尝试步骤3-7。精辟的玄学又来了,系统总是出乎我的料想。这次无论我怎么复位,复位后模块都是自动配网成功。。。(第一次复位后再怎么都配网失败,这一次就是冲着失败去的,结果他就是不失败。。。)
11、我不死心,将8266重新烧录GA固件,再次尝试。模块成功回到初始状态,用安卓app重复3-7步骤。果不其然,在第8步又是配置超时。但是,又过了几秒,在“没有找到设备”上方出现一行设备名(AP模式wifi名称后几位),点击后和苹果系统一样配置成功。(这个步骤我之前也做过,不过貌似也超时了)
12、总结,方法3-7正确,至于为什么我一开始不成功,现在排除了一切问题,惟一可能的就是我方法错误了(但我之前又成功过),不过这几天因为心力憔悴,我也记不清我之前到底是否是按照3-7一步一步来了。

5、温度检测

传感器模块选用DS18B20,另起一章是因为DS18B20通信使用1-wire协议,并且有一套独立的嵌入式体系,需要仔细阅读数据手册了解“运作规则”。只要了解了体系,就不难理解其驱动程序。

数据手册见网址:https://wenku.baidu/view/529cf93fc281e53a5802fff5.html

驱动程序见网址:
https://www.arduino/thread-1345-1-2.html
注:驱动程序有两处语法错误,均改为data[i]和addr[i]

不想阅读数据手册也可以参考:
https://blog.csdn/qiutao666668/article/details/88567548

6、卧室灯定时开关

对卧室灯有3个操作:1、卧室灯开关;2、卧室灯定时开;3、卧室灯定时关。但对于输出引脚只能有1个确定的电平,所以需要进行软件内逻辑运算。

7、声控灯

声控灯由光敏电阻模块和声音传感器模块通过软件逻辑运算进行控制。
功能:光强超过阈值,灯灭;光强低于阈值,当分贝超过阈值,灯亮一段时间;当分贝低于阈值,灯灭。

8、Arduino接入机智云

关于机智云平台的概念和作用,以及如何将Arduino接入机智云平台不多阐述,见链接:http://club.gizwits/thread-6728-1-1.html

9、更换App图标和载入界面

另起一章因为本人在本章经历了太多心累。。。
参考链接:https://blog.csdn/tichimi3375/article/details/80621362
本人比较懒,后发现只需要在参考链接里提到的文件夹把名为icon和launch的图片换为自己的图片即可。

遇见的问题:机智云生成的代码在Android Studio无法运行
后来经过无数次百度和尝试,终于解决,并且总结成为一篇博文:机智云平台android源码二次开发时在android studio无法运行

更多推荐

利用机智云平台实现基于Android和Arduino的智能家居系统

本文发布于:2023-04-21 20:45:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/ed62ef9152cae19a1124b98303a8e125.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:机智   智能家居   系统   平台   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 94161文章数
  • 23811阅读数
  • 0评论数