基于STM32和机智云IoT云服务平台的智能花盆
本帖最后由 Cherry 于 2019-5-14 15:36 编辑目录 一、前言 二、总体设计 三、硬件准备 四、接入机智云 虚拟设备调试 固件烧录 虚拟MCU调试 一键配置模式 热点模式 五、代码解析 六、测试
本案例为机智云平台入门级基础应用开发实例,开发者通过使用机智云自助开发平台、STM32及相关模块,实现了对多肉植物生长状态、土壤温湿度远程监测和自动浇水等功能,本案例适合所有具备嵌入式基础的开发者,尤其适合准备进入IoT的从业者、高校相关专业学生参考学习。
百度云盘链接: https://pan.baidu.com/s/1U3tctyEljSVLrVXiJ5ElzA提取码: pmw6
一、前言 有时候会听到朋友难过的说“我养的多肉又掉叶子了...” 是不是太久没浇水啦? “假期有谁家在学校附件的帮我照顾下盆栽..” 真不好意思麻烦你了。 你是否也经历过这样的烦恼?反正我都经历过... 作为理科生当然是选择自己动手做一个啦~
二、总体设计 首先,我们期望的功能有: 1.实现温度,土壤湿度等数据的在线监控2.当土壤湿度低于一定值时自动浇水3.在线控制浇水
总体设计如下:https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115114309763-722174008.jpg
我们面临的第一个问题是平台的选择,我尝试了几个开发平台后最终选择的是机智云,它提供调试APP无须我们另外开发。https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115110845071-207129051.png
三、硬件准备https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115131312418-411516831.bmp
https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115144128096-747564376.png
四、接入机智云首先我们要贼机智云的开发者中心注册一个账号,登陆以后创建一个新产品https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115145539588-1743212438.pnghttps://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115145622356-1955321190.png
接着创建数据点,下面是我创建的数据点,光照强度后来没加上https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115145912810-321236146.png
完成以后我们可以使用虚拟设备调试下载机智云调试APPhttps://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115150256413-1637314190.png
下载以后我们在个人项目中点开虚拟设备调试https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115150822932-781440823.png
打开APP,准备扫码查看我们的数据点 https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115151425863-934727442.gif
感觉没有问题我们就进行下一步固件烧录机智云官方固件可在下载中心中找到https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115152053876-527974797.png解压后发现其含有以下文件,这里建议使用四合一的固件,烧录方便,至于烧录工具我们选择乐鑫原厂固件烧写工具https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115152333441-1242890311.pnghttps://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115152958172-1970549489.png
设备连接(红圈内的是需要注意的连接)https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115153618924-644658917.png
完成以后直接用USB转TTL插入电脑烧录固件即可,开始烧录的时候它会要求你给WIFI模块复位,这时我们只需要使RST接以下低电平触发即可。
那么如何验证我们的WIFI模块烧录以后是正常可用的呢?机智云提供了串口调试助手可实现虚拟MCU调试https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115154040877-693896959.png
同样WIFI模块接着USB转TTL插入电脑这里需要注意的是你的RST引脚和使能固件烧录的引脚必须是无效的。然后按下图顺序做好设置https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115154451592-1727528426.png
1.AirLink为机智云的一键配置模式手机连接路由器(我用360随身WIFI充当无线路由)随后打开机智云APP添加设备,选择一键配置,选择模组。https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115155730903-1920013917.gif
随后在串口调试助手中点击初始化,AirLink使模块进入一键配置模式。接着静待连接成功。有时候链接超时不稳定可以再试一次。
2.Softap为热点模式热点模式即让WIFI模块生成热点。烧写了GAgent固件的WiFI模块配置为AP模式时,其WIFI名为”XPG-GAgent-xxxx”,其中”xxxx”为Wi-Fi模块的物理地址后四位,初始密码为”123456789。手机链接热点后使用热点配置添加设备,其余操作同上。
五、代码解析完成至此,我们仅仅需要完成MCU的开发即可,下面讲讲机智云模板代码的修改机智云官方推荐的编程软件是STM32Cube+KeilSTM32Cube可以轻松完成MCU的初始化的修改keil则提供了编译烧录环境
首先我们在机智云的个人项目中选择MCU开发,等待模板代码生成
https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115160835574-674973238.png
模板代码内含以下文件,作为使用者我们无需全部关注https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115162012442-1651412235.png首先我们打开STM32F103C8x.ioc添加外设初始化,接着重新生成代码https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115162541744-600641633.pngmain.c按键函数包括初始化,重启,启动AirLink模式和启动Softap模式https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115162918847-1049153691.gif
主函数内,先是完成了各种初始化。接着是我自己添加的一段模式配置,这样就可以不用通过按键配置了再往下就是再while循环内不断完成数据采集和数据的上报https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115163202570-1744605268.gif
下面我们跟踪以下数据采集的函数,只要数据赋值到currentDataPoint这个结构体变量中即可https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115163800214-1859617548.gif由于我们定义的产品是定时上传数据的,数据上报函数我们可以不用细致了解
由此我们完成了设备数据采集---->服务器----->客户端那么我们的手机如何控制设备呢?这要说起gizwits_product.c的另一个函数gizwitsEventProcess我们在这里添加接收到水泵开关事件的处理以及自动灌溉事件处理https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115164906211-1214676207.pnghttps://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115165123408-1935960986.png至此基本完成为了提高连接机智云的成功率建议在gizwits_protocol.h修改重连次数和超时时间https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115165613957-722039635.png
六、测试https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115170842565-1334108962.gif
为啥我把它焊接成这个样子呢,因为我本来打算给他做一个外壳的...然后把它放到懒人花盆上https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115173424711-1779504025.gif可是这东西打印需要12小时,也就一直没行动...后来我又想了一个方法,用3个以下形状的盒子像积木一样叠起来,底下的盒子放水,中间放设备,最上面种植物https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115181526301-694447170.gif同样也没有3D打印
APP演示最底下出现的是水位警报
https://img2018.cnblogs.com/blog/1481275/201811/1481275-20181115165925683-72097543.gif原文转载自:https://www.cnblogs.com/JYU-hsy/p/9965309.html?from=groupmessage&isappinstalled=0
页:
[1]