一步步打造能手机远程管理的HaaS花卉养植系统

简介: 一步步打造能手机远程管理的HaaS花卉养植系统

1. 案例简介

过去,很多人一听嵌入式~~智能硬件~~就有点头大,甚至会感到一丝丝的恐惧。
其实不然,HaaS积木真的就能让智能硬件简单~好玩~普惠。
接下来,就以HaaS打造的花卉养植盒子系统为例,指引开发者如何自己一步步简单快速搭建起属于自己的好玩智能硬件。

O1CN01uTFPGy1WVEslbcHQ6_!!6000000002793-1-tps-1440-1080.gif

2. 基础知识

本案例主要依赖的硬件环境有:HaaS100、温湿度传感器。

2.1 HaaS100开发板

HaaS100是一款物联网场景中的标准开发板,并配套嵌入到硬件中的软件驱动及功能模块,为用户提供物联网设备高效开发服务。

O1CN011t59YF25YubwEfz98_!!6000000007539-2-tps-443-443.png
HaaS100核心板有着丰富的外设接口,如下所示:
O1CN015hi7UZ1WC0FTTOZBs_!!6000000002751-2-tps-586-886.png

详细的资料参考HaaS 100 硬件规格

2.2 温湿度传感器

O1CN01G4JbCl1qcplUe5ynk_!!6000000005517-2-tps-1604-872.png

DHT11温湿度传感器的工作原理

2.2.1 工作时序

主机发开始信号-》DHT11响应输出-》DHT11数据信号。(平时默认为高电平,起始信号为低电平)

O1CN017lZ9eZ1cIlnMoyjU3_!!6000000003578-2-tps-1398-352.png

2.2.2 起始信号和响应信号的规则

主机发开始信号:低电平大于18ms,高电平20-40us;
DHT11的响应信号:低电平80us,高电平80us;

O1CN01etKzgU1UNKoYVqtxo_!!6000000002505-2-tps-1592-508.png

2.2.3数字信号的规则


一次完整的数据传输为40bit,高位先出。 数据格式:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和 校验和数据=“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
  • 1
  • 2
  • 3

DHT11传感器如果没有接收到主机发送开始信号,不会主动进行温湿度采集。
数字‘0’信号:低电平50us,高电平26-28us

O1CN01BVYeO41aQtaXWn8Di_!!6000000003325-2-tps-1564-850.png

数字‘1’信号:低电平50us,高电平70us

O1CN01jH1ELf1Z8Hspm5NNC_!!6000000003149-2-tps-1574-730.png
# 3 物料清单 | **物料** | **规格** | **购买链接** | | :---: | :---: | :---: | | HaaS100开发板 | | 阿里云[天猫链接](https://detail.tmall.com/item.htm?spm=a230r.1.14.16.13123b209835rz&id=627354125244&ns=1&abbucket=16) | | DHT11温湿度传感器 | 用来采集器空气中的温度和湿度,为单总线数据交互模式 | Risym [天猫链接](https://detail.tmall.com/item.htm?id=15598344236&ali_refid=a3_430582_1006:1104520036:N:TAiHo9GD8eTurMzH21/csQ==:fc360fe0aaa2a823247db3c6a3bd21fc&ali_trackid=1_fc360fe0aaa2a823247db3c6a3bd21fc&spm=a230r.1.14.1) TELESKY [天猫链接](https://detail.tmall.com/item.htm?id=41248630584&ali_refid=a3_430582_1006:1109983619:N:77RKeLgkEXuYPsQPL/pGPA==:31c58e63c712d4a9ee33af685ecb1c61&ali_trackid=1_31c58e63c712d4a9ee33af685ecb1c61&spm=a230r.1.14.6) 优信电子 [淘宝链接](https://item.taobao.com/item.htm?spm=a230r.1.14.15.77176c121VUnMs&id=522553143872&ns=1&abbucket=12#detail) |
O1CN01OkWDVc1Y6AQtrBbaQ_!!6000000003009-2-tps-1488-1234.png

4. 案例实现

4.1 硬件连接

HaaS100与温湿度传感器和土壤湿度传感器的接口说明。

HaaS100接口 传感器接口 说明
GPIO01 OUT DHT11温湿度传感器
GND GND 电源地
VCC 3V3 3V3电源

4.2 软件设计

4.2.1 云端创建产品

请先点击登陆物联网平台(未注册阿里云账户的用户,请先完成账户注册),按下面步骤一步步去打造
1、创建项目
注册登入后,如下图所示,前往管理控制台。

O1CN01u0AGpn1uEnRRq2WAu_!!6000000006006-2-tps-1308-490.png

点击公共实例,进行产品创建

O1CN01kDopR91FsHL3jRQOT_!!6000000000542-2-tps-1328-792.png

2、创建HaaS养花的产品
点击创建产品,见下图所示,这里创建了一个名称“HaaS养花”产品。

O1CN01PtUXOV1K3VVdbJc2v_!!6000000001108-2-tps-1490-600.png

在产品详情中增加产品的功能,比如:温度、湿度等。

O1CN01eb1RVm1XpDmMr8cqi_!!6000000002972-2-tps-2538-900.png

3、设备管理
在设备列表中增加对应产品的设备。

O1CN015JH11p1cgaO8xzhJ9_!!6000000003630-2-tps-1910-874.png

查看设备信息

O1CN012ZcVF71EK6ADdOaxW_!!6000000000332-2-tps-2734-994.png

创建后的设备三元组信息需要同步到设备端的开发代码段中,在3.1章节会介绍。待设备端开发结束,就可以在物联网平台中参看设备在线状态。

4.2.2 设备端代码

传感器GPIO初始化接口,参考文档路径:solutions/flower_demo/flower_app.c


int flower_gpio_init ( void ) { gpio_dev_t temp_gpio ; temp_gpio .port = HAL_IOMUX_PIN_P0_1 ; temp_gpio .config = OUTPUT_OPEN_DRAIN_PULL_UP ; hal_gpio_init ( &temp_gpio ) ; fd = open ( "/dev/gpio" , 0 ) ; printf ( "open gpio %s, fd:%d\r\n" , fd >= 0 ? "success" : "fail" , fd ) ; DHT11_GPIO_Set ( 1 ) ; DHT11_Reset ( ) ; aos_cli_register_command ( &temp_cmd ) ; return 0 ; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

与物联网平台连接需要使用三元组信息以及温湿度上报,参考文档路径:solutions/flower_demo/data_model_basic_demo.c


int demo_main ( int argc , char *argv [ ] ) { int32_t res = STATE_SUCCESS ; void *dm_handle = NULL ; void *mqtt_handle = NULL ; char *url = "iot-as-mqtt.cn-shanghai.aliyuncs.com" ; /* 阿里云平台上海站点的域名后缀 */ char host [ 100 ] = { 0 } ; /* 用这个数组拼接设备连接的云平台站点全地址, 规则是 ${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com */ uint16_t port = 443 ; /* 无论设备是否使用TLS连接阿里云平台, 目的端口都是443 */ aiot_sysdep_network_cred_t cred ; /* 安全凭据结构体, 如果要用TLS, 这个结构体中配置CA证书等参数 */ /* TODO: 替换为自己设备的三元组 */ char *product_key = "产品key" ; char *device_name = "设备名" ; char *device_secret = "设备密钥" ; . . . /* 主循环进入休眠 */ while ( 1 ) { report_2_cloud (dm_handle ) ; //每隔3s检测是否有温湿度变化检测 aos_msleep ( 3000 ) ; } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

温湿度检测上报report_2_cloud(),参考文档路径:solutions/flower_demo/flower_app.c


void report_2_cloud ( void *dm_handle ) { uint8_t temp = 0 ,humidity = 0 ,d_flag = 0 ; char property_payload [ 30 ] = { 0 } ; if (mqtt_status == 0 ) { printf ( "mqtt status :%d %p\r\n" ,mqtt_status ,dm_handle ) ; return ; } d_flag = DHT11_Read_Data ( &temp , &humidity ) ; printf ( "temp ->%d humidity->%d --%d\n" ,temp ,humidity ,d_flag ) ; if ( (last_temp != temp ) && ( !d_flag ) ) { //温度变化上报接口 snprintf (property_payload , sizeof (property_payload ) , "{\"Temperature\": %d}" , temp ) ; printf ( "report:%s\r\n" ,property_payload ) ; demo_send_property_post (dm_handle , property_payload ) ; last_temp = temp ; } if ( (last_hum != humidity ) && ( !d_flag ) ) { //湿度变化上报接口 snprintf (property_payload , sizeof (property_payload ) , "{\"Humidity\": %d}" , humidity ) ; printf ( "report:%s\r\n" ,property_payload ) ; demo_send_property_post (dm_handle , property_payload ) ; last_hum = humidity ; } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

4.2.3 小程序开发1、 云端钉一体小程序SDK获取


git clone -b dev_3.1.0_haas https://github.com/alibaba/AliOS-Things.git
  • 1

SDK相关代码及操作readme在application/miniapp/目录下。
2、 SDK目录结构


. ├─ lib (存放依赖库的文件夹,用户无需关心) │ ├─ @alicloud/pop-core ([https://github.com/aliyun/openapi-core-nodejs-sdk](https://github.com/aliyun/openapi-core-nodejs-sdk)) │ ├─ kitx │ └─ iot-packet.js (封装给用户的文件) ├─ pages (页面文件夹,用户在这里自定义页面,示例持续更新中) │ └─ index (首页 选择进入不同示例) │ ├─ index.axml │ ├─ index.js │ ├─ index.acss │ └─ index.json │ └─ HaasFlower (示例1 HaaS养花) │ ├─ HaasFlower.axml (页面布局文件) │ ├─ HaasFlower.js (控制逻辑,用户在这里定义交互行为) │ ├─ HaasFlower.acss (页面样式) │ ├─ HaasFlower.json (页面配置,用于配置页面标题等) │ └─ HaasFlower.TSL.json(示例对应的TSL文件,可以在物联网平台上导入该文件生成物模型) │ └─ HaasCar (示例2 HaaS小小蛮驴,目录结构同 HaasFlower) ├─ app.js (注册小程序,在这里进行全局参数配置,如 AccessKey) ├─ app.acss (小程序全局样式) ├─ app.json (小程序全局配置,可以在这里设置小程序打开的默认页面) └─ others
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

3、 SDK使用
使用小程序开发工具打开miniapp这个工程。

O1CN011gxxpV21LOSUrBJC9_!!6000000006968-2-tps-2144-1236.png
  • step1 在app.js填写 AccessKeyID 以及 AccessKeySecret , 获取云端API调用权限
  • step2 填写目标设备 DeviceName 以及 ProductKey,这里是待控制的设备

// app.js let accessKey = { accessKeyId : '<- accessKeyId ->' , // 填入阿里云平台生成的 assessKeyId 以及 Secret accessKeySecret : '<- accessKeySecret ->' , } // HaasFlower.js let device = { DeviceName : '<- DeviceName ->' , // 填入目标设备 DeviceName 以及 ProductKey ProductKey : '<- ProductKey ->' }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

代码中提到的几个关键参数:

  • AccessKeyID AccessKeySecret

云账号AccessKey是用户访问阿里云API的密钥。(https://usercenter.console.aliyun.com/#/manage/ak
安全起见,我们可以采取创建RAM子账号的形式,来对权限进行分离。

O1CN01WSv9th1Rm7OvqTbo9_!!6000000002153-2-tps-3584-732.png

创建完成后,需要手动分配权限,点击右侧,添加权限。我这里直接选择了 **AdministratorAccess。 **添加完成后如下。

O1CN01fFjDqn1OaihJrsA4o_!!6000000001722-2-tps-3584-1920.png
  • DeviceName ProducKey

这两个参数在创建设备时生成。
4、 编译验证
点击小程序IDE右上角“真机调试”按钮,等待二维码生成后,使用钉钉APP扫码,即可发起小程序。

O1CN01nYZ1R01FVpveL7bv9_!!6000000000493-2-tps-948-156.png
O1CN01ixflz91HMKwrURJ2i_!!6000000000743-1-tps-746-1330.gif

4.3 开发环境搭建、编译、烧入、运行

4.3.1 AliOS Things开发环境搭建

开发环境的搭建请参考《aos-studio使用说明之搭建开发环境》,其中详细的介绍了AliOS Things 3.3的IDE集成开发环境的搭建流程。

4.3.2 智能养花系统代码下载

智能语音播放器的代码下载请参考 《aos-studio使用说明之创建工程》,其中,

选择解决方案: “养花案例”
选择开发板: HaaS100

4.3.3 代码编译、烧录

编译flower_demo的过程如下:

– 编译固件可参考《aos-studio使用说明之编译固件》

– 烧录固件可参考《aos-studio使用说明之烧录固件》

4.3.4 运行

运行打印信息

O1CN01hpPVq91TUpgUAFEqS_!!6000000002386-2-tps-958-900.png

5. 总结

至此,一个简单的能手机远程管理的HaaS花卉养植系统就做好了。是不是很简单?

当然,这个HaaS花卉养植系统的打造仅仅是一个抛砖引玉,还有很大的扩展空间,比如 湿度过低触发自动洒水,温度过高自动开家里的空调等设备。还有非常大的想象和发挥空间。

同理,做一个 HaaS家庭鱼缸 远程监测包括喂食 等系统,也就很简单了。

另外,也希望大家能一起携手来丰富Haas的应用案例化,打造出更多更有意思的场景,比如:HaaS+人感打造智慧办公室、HaaS+Mic/Speaker打造和谐校园、HaaS+空净打造呼吸守护系统等等。

开发者支持

HaaS官方:https://haas.iot.aliyun.com/
HaaS技术社区:https://blog.csdn.net/HaaSTech
开发者钉钉群和公众号见下图,开发者钉钉群每天都有技术支持同学值班。
在这里插入图片描述

            </div><div data-report-view="{"mod":"1585297308_001","dest":"https://blog.csdn.net/HaaSTech/article/details/116233794","extend1":"pc","ab":"new"}"><div></div></div>
            <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-d7a94ec6ab.css" rel="stylesheet">
            <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-49037e4d27.css" rel="stylesheet">
    </div>
相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
2月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
3月前
|
存储 NoSQL Java
使用redis进行手机验证码的验证、每天只能发送三次验证码 (redis安装在虚拟机linux系统中)
该博客文章展示了如何在Linux虚拟机上使用Redis和Jedis客户端实现手机验证码的验证功能,包括验证码的生成、存储、验证以及限制每天发送次数的逻辑,并提供了测试结果截图。
使用redis进行手机验证码的验证、每天只能发送三次验证码 (redis安装在虚拟机linux系统中)
|
3月前
|
存储 数据可视化 C语言
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
|
5月前
|
PHP
驾校在线考试系统源码 手机+PC+平板自适应
Thinkphp在线考题源码 驾校在线考试系统 手机+PC+平板 自适应,机动车驾驶培训学校驾校类网站源码带手机端 运行环境:php+mysql
179 11
驾校在线考试系统源码 手机+PC+平板自适应
|
4月前
|
关系型数据库 MySQL 测试技术
基于SpringBoot+Vue华强北商城二手手机管理系统(源码+部署说明+演示视频+源码介绍+lw)(4)
基于SpringBoot+Vue华强北商城二手手机管理系统(源码+部署说明+演示视频+源码介绍+lw)
50 2
|
4月前
|
数据库
基于SpringBoot+Vue华强北商城二手手机管理系统(源码+部署说明+演示视频+源码介绍+lw)(3)
基于SpringBoot+Vue华强北商城二手手机管理系统(源码+部署说明+演示视频+源码介绍+lw)
69 2
|
4月前
|
存储 安全 Java
基于SpringBoot+Vue华强北商城二手手机管理系统(源码+部署说明+演示视频+源码介绍+lw)(2)
基于SpringBoot+Vue华强北商城二手手机管理系统(源码+部署说明+演示视频+源码介绍+lw)
85 1
|
4月前
|
JavaScript Java 关系型数据库
基于SpringBoot+Vue华强北商城二手手机管理系统(源码+部署说明+演示视频+源码介绍+lw)(1)
基于SpringBoot+Vue华强北商城二手手机管理系统(源码+部署说明+演示视频+源码介绍+lw)
95 1
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的网上手机销售系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的网上手机销售系统附带文章源码部署视频讲解等
47 0
|
5月前
|
Java 关系型数据库 MySQL
基于Java的二手手机回收平台系统
基于Java的二手手机回收平台系统