opsbet娱乐官网

ESP8266 SOC方案实现远程测控系统

来源:大发 | 时间:2018-08-09 人气:7139
  •   4.一个按键短按控制大功率LED灯珠亮和灭(同时上报状态),长按实现SOFTAP模式;一个按键控制继电器的开和关(同时上报状态),长按实现AIRLINK模式。

      登陆认证过后进入个人项目或者公司项目,都是一样的,看你认证的是个人还是公司。在公司下面创建产品以后就只能在公司目录下浏览产品信息。

      按照如图所示设置好产品参数,产品分类随便选相应的就行,乱选不会影响产品;产品名称就是给产品取个名字,可以是中文和英文,此处为了教学,我就写一个远程测控;技术方案选择wifi/移动网络方案;通讯方式选择wifi(此处因为是soc方案,所以直接用wifi);数据传输方式选择定长(定长就是把所有数据点一次全部传输,变长就是只传输变化那部分,个人建议在数据点不多的情况下最好选用定长,在数据点很多的时候才考虑变长),按照如图设置好之后直接点击保存。就完成了产品的创建,会自动跳转到产品页面。

      接下来我们需要给产品添加数据点,数据点是网络传输的标识,同一个产品中每个数据点标识名都必须是唯一的,比如有多个开关,每个开关都必须给予唯一的标识名,而且标识名必须是英文,数字,或者2个的组合。数据点需要设置三个参数,标识名,读写类型,数据类型,按照下图1 2操作可以增加数据点

      用于应用层传输,客户端或业务云开发时需要使用。命名规则遵循标准的开发语言变量名命名规范,支持英文字母、数字和下划线,以英文字母开头。

      读写类型:(比如一个继电器的开关量需要在APP上进行开关操作,就设置可写,不需在APP上操作就只读,设置只读之后APP就只能观察状态而不能控制,温度湿度就是只读的,判断温湿度是否不在规定值就是报警,判断DHT11是不是正常接线就是故障)

      ②可写:表示该数据点可控制。设备端可上报该数据点数据;云端/客户端可对该数据点数据做出下发控制。

      ④故障:表示该数据点非控制,数据只支持从设备上报,数据类型需为布尔值。云端会对设备上报的该数据点做统计,可在“运行状态”查看。

      ①布尔值:表示两个状态:0,或1。如开关状态等,建议使用布尔数据类型。例如打开关闭继电器,打开关闭大功率LED。

      ②枚举类型:可定义一个有限的取值集合。当定义的某个功能(元器件)有固定的若干个值。例如设置RGB为关闭,自定义组合,红色,绿色,蓝色,黄色,紫色,粉色,白色。

      ③数值:填写数值范围,数值可为负数/小数,机智云自动将数值转换为正数。例如温湿度,RGB色度调节控制等。

      ④扩展:填写数据长度,数据内容由用户自定义。对于上述功能点无法满足的复杂功能可采用。机智云不建议使用此类型数据,设备上报该数据点的数据,机智云无法识别。

      根据以上内容,我们开始创建数据点,首先建立大功率LED的数据点,此处我们就用switch_led表示,由于要在APP操作其开关,就选择可写,开关量直接用布尔值。备注没有作用的,可以写了防止遗忘。

      设置好参数之后点击确定,然后按照如图箭头所示可以编辑这个数据点,为什么要进行编辑,因为我们希望在APP上看到他是中文的方式显示而不是数据点名称显示。

      点击编辑之后标识名不用改,改显示名称,数据点创建错了也可以在这儿进行调整修改。此处我修改成电灯。

      修改好之后点击确定。同样的方法创建继电器的数据点,标识名switch_relay,显示为插座,可写,创建好之后如下图

      接着我们创建一个颜色控制的枚举可控数据点,用来快速控制RGB灯的颜色。枚举范围一定要是英文输入下的逗号。数据点标识名为color_controls,可写,枚举,枚举范围:关闭,自定义,红色,绿色,蓝色,黄色,紫色,粉色,白色,显示名称:RGB控制

      接下来创建3个RGB自由调节的可写数值数据点:标识名分别为:LED_R,LED_G,LED_B,可写,数据类型:数值,数据范围0-254,分别率为1. 显示名称红色(R)l绿色(G)蓝色(B),创建好之后如图所示。

      接下来温湿度显示,范围就取正常的DHT11可控范围。温度范围0-50.湿度0-100,设置好后如下图所示,创建完之后点击最上面的应用

      显示名称:温度(℃)标识名:temperature读写类型:只读 数据类型:数值 数据范围:0 – 50 分辨率:1增量:0备注: DHT11测量温度

      显示名称:湿度(%) 标识名:humidity 读写类型:只读 数据类型:数值 数据范围:0 - 100分辨率:1增量:0备注: DHT11测量湿度

      关于对分别率和精度的理解可以参考这段说明,在定义数值型数据点的时候,取值范围可以使用包括小数、负数等非uint类型数值,熟悉嵌入式开发的开发者会知道,这些数值在设备端都是不被支持的。

      机智云为了让设备功能定义更加简单直接、所见即所得,研究出来一套算法,用于将用户输入的数值转换成设备能够识别的uint类型,这套算法的核心公式是:y=kx+m。

      y表示“显示值”,就是用户可见的最终数值,也是数据点定义时输入的值。包括Ymin(最小值) 和 Ymax(最大值)。

      x表示“传输值”,就是实际指令间传输使用的数值,云端/客户端接收到的值。一定是uint格式。也包括 Xmin 和 Xmax。

      m表示“取值偏移量”或“增量”,算法通过m值将y值偏移到满足x值uint格式的要求,m值默认等于Ymin,确保Xmin=0 。

      以下用一个电子温度计举例说明换算过程 数据点内容:取值范围:-30(Ymin)~ 50(Ymax),分辨率:0.1

      设备共享的开启:设备共享开启之后,可以通过APP进行分享,具体开启方法是电机基本设置,修改。设备分享功能:后面点一下开启,弹出框选择开启,就完成设备分享功能。

      接下来我们需要生成SOC的代码。生成之前我们先去基本信息里面复制Product Secret,点击显示完整密钥,输入登录密码,查看就能复制了,复制之后保存一会儿会用到。

      复制好之后点击左侧的MCU开发,然后选择SOC方案,32M,粘贴刚才复制的Product Secret,然后点击下面的生成代码包,等到进度条完成之后,代码就生成了,下载代码所生成,到这儿,所有的云端工作就已经完成了。接下来就是代码的修改。

      接下来是代码的修改,修改代码和编译代码用的是乐鑫的专用IDE,没有开发环境或者需要这个开发环境的可以去群438373554 的群文件进行下载,安装遇到问题可以QQ联系我,

      选择BROWSE按钮,载入Makefile所在的根目录(这个目录很重要,一定要是解压过后的Makefile所在的根目录,目录下面包含了APP,BIN ID等多个文件夹,如果选错,将不能正确导入项目。)

      选择好目录之后,需要选择编译器这儿我们用Cygwin GCC编译器,然后点击Finish就能成功导入项目。

      成功导入的项目如图所示,到这儿我们的项目已经成功导入到了软件之中,我们接下来要进行代码修改。

      首先我们先要修改根目录下面的Makefile文件,双击打开文件,找到文件的的22行,我们需要修改其内容,其目的是对应我们单片机的flash的通讯方式。将

      接下来我们创建一个布尔数组来保存继电器和大功率LED的开关状态,我们需要在gizwits_product.h文件里面定义,然后再gizwits_product.c里面进行全局定义,方便其他文件进行调用。

      接下来我们需要修改按键,实现2个按键对应的功能,打开user_main.c文件。需要对长短按键进行修改,首先我们原理图用的是GPIO0和GPIO2引脚,GPIO0对应的是LED开关控制和SOFTAP(长按),GPIO2对应的是继电器开关控制和AIRLINK(长按)。

      到此按键部分就修改完成了,接下来我们修改继电器和大功率的控制部分,要作为输出IO,首先就要对其进行初始化。在这儿可以新建一个初始化函数或者直接在初始化按键的函数里面进行初始化。

      接下来我们增加DHT11温湿度的函数,使其实现温湿度的采集,将驱动文件hal_temp_hum.h和hal_temp_hum.c文件复制到项目的driver文件夹下面。如下图所示。

      增加进去之后驱动库我到时候会在文件里面直接打包上传,或者直接跟我索要也行。需要注意的是这儿使用的是GPIO15,如果是其他GPIO,请修改管脚配置相关内容。

      初始化完成之后我们需要对采集的数据进行上报,上报在dh11SensorTest();函数里面的,所以我们在定时上报函数里面需要增加dh11SensorTest();//获取温度并上报 ,在增加后如图所示。

      接下来我们修改开机数据点上报的默认值。找到gizwits_product.c文件最后的那个函数voidICACHE_FLASH_ATTR userInit(void);将其内容修改为:

      修改完初始化上报之后我们需要修改全彩灯控制程序,这里我们直接利用#include pwm.h库,这儿我把驱动写成了2个独立的库文件RGB_light.h和RGB_light.c,所以直接把我的库复制到驱动文件夹driver里面。然后再user_main.c和gizwits_product.c里面包含头文件。添加好之后在刚在初始化DHT11的位置在初始化一个RGB,添加下面代码

      添加完之后在gizwits_product.c定义一个数组存放云端数据,用来缓存我们需要的数据。

      然后找到gizwitsEventProcess函数,处理云端数据,把数据缓存到我们创建的数组里面。主要修改下面几个数据点的缓存,

      到这儿我们就成功缓存了所有的数据,接下来就到定时上报函数里面处理数据。在else语句的后面增加以下内容(所有代码会打包上传,不清楚哪儿加看代码)

相关opsbet娱乐官网信息

    无相关信息
Baidu