电源设计技术实用资料点击免费获取>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » ESP8266SOC门磁系统(一)****报警功能

共2条 1/1 1 跳转至

ESP8266SOC门磁系统(一)****报警功能

助工
2020-03-22 15:36:18    评分

一、前言

最初打算用ESP8266做安防门磁报警系统,可以实现微信监控、远程开关报警器、报警****通知,图片上传等功能,从网上找了教程,按照这个教程也搭建成功。但是使用过程中发现:

1、这个教程中必备的开发环境:ESP8266、WEB空间、****服务供应商。其中:

->ESP8266手头有两块,没有问题。

->最开始用免费WEB空间,供应商打开了浏览器安全检查功能,ESP8266无法穿透这个功能,之后申请一个廉价的收费空间,但是第二年要涨价,心疼钱,这个是最主要问题。

->网上有很多收费的****服务商,综合比较我选择阿里云的,每条****不到5分钱,而且申请送10块钱(有效期一个月)。

2、远程遥控功能思路: ESP8266定时将IP上传到WEB服务器。通过微信读取WEB服务器上的IP再控制ESP8266。最开始我用的是联通网络,有外网IP,上述的方案可以实现,宽带到期后换成PB的,没有外网IP,这个功能就实现不了。

3、该方案是将ESP8266直接安装到门上,查看8266参数,如果用18650锂电池供电最多也就能坚持1天,如果采用变压器供电,需在门上走线,影响美观。

通过长时间的思考,我制定如下方案:

(1)在长期的查找过程中发现ESP8266+MQTT+****服务可以解决上面的1/2两个缺点。

(2)在网上买一个普通的门磁报警器(不到3块钱,两节7#干电池用了一年半还有电)将其该着成带FM****功能。

()ESP8266接收门磁报警器的无线信号,将数据上传MQTT平台,同时执行****报警功能。

(4)平台选择:测试各个云服务商的网络速度,发现机智云是相应最快的,而且开发相对简单。

二、准备条件

1、阿里云****功能

2、Code::Blocks(本地调试C代码用,如在ESP8266调试,可跳过此步)

3、ESP8266及编译环境搭建  

4、机智云账号

5、ESP8266 SOC代码生产及下载

三、开通阿里云****功能

1、注册阿里云(也可以用X宝账户直接登录)

2、创建accesskeys子账号(也可以用最高权限的accesskeys)

2.1  鼠标放在自己登录名上,会显示一个菜单,点击accesskeys按钮

2.2、在弹出的对话框中选择“开始使用子用户accesskeys”


2.3、填写用户名之后点“下一步”

2.4、选择权限管理****服务(SMS)的权限(搜索****),下一步

2.5、填写手机收到的****验证码后就可以开通服务。

2.6、记录AccessKeyID和AccessKeySecret

注:AccessKeySecret只在本步骤才能看到,以后也查不到,请将这个文件下载下来好好保管。

3、建立****发送模板

3.1、找到“产品和服务”->“全部”->“****服务”

3.2、点击“产品使用”->“****签名”->“添加签名”

按照要求填写签名,等待阿里审核

这个是我申请的签名,记录下“签名名称”

3.3、点击“产品使用”->“****模板”->“添加模板”,按要求填好后等待阿里审核

我申请是填写的信息,其中${time}是签名中的参数

这个是我申请的****签名,记录“模板CODE”

3.4、经过上述步骤后,你可以使用特定的程序发送****了,使用效果

4、编写程序

4.1、阿里云提供的代码都是基于WEB的(PHP、java),想在ESP8266上使用必须自己重新编写C代码。下载PHP_DEMO,对照重新编写****用签名系统

4.2、阿里****签名大致流程:

4.2.1用AccessKeyId、Timestamp等字段生产一个数组,(数组key就是这些关键字,值进行UTF-8转码)对数组进行key排序。

注:这步中阿里的API有点错误,对照PHP_DEMO发现根本不用执行这步

4.2.2用排序后的数组生产一个字段,格式AccessKeyId=XXX&Timestamp=YYY………

4.2.3对上步这段再次进行UTF-8转码,转码后在字段的最前边加GET&%2F&(或POST&%2F&,具体加什么取决你用什么方式发送URL数据),并且将里面的加号(+)替换成 %20、星号(*)替换成 %2A、%7E 替换回波浪号(~)。4.2.4在2.6步骤中的AccessKeySecret码后面加“&”4.2.5用上步用步骤4.2.4对步骤4.2.3支付串进行sha1_Base64加密,将加密后的字符进行UTF-8转码4.2.6将Signature= sha1_Base64加到1)中的数值,重新生产URL数据码4.2.7将上述数据发送到dysmsapi.aliyuncs.com4.2.8查看手机收到****没有?^_^

4.3、代码移植到ESP266(请自己在论坛里面搜索如何搭建ESP8266编程环境!)

4.3.1、从机智云下载ESP8266的SOC代码(网上很多教程,不详细介绍)

4.3.2、将附件中的sendSms.h放到app\include\driver目录,将sendSms.c放到app\driver目录

4.3.3、打开sendSms.c,找到voidICACHE_FLASH_ATTR setURLchar(char* inURLchar)函数,按照要求修改如下字段:

4.3.4、打开sendSms.c,找到voidICACHE_FLASH_ATTR setTimes(char *TemplateParam,char *Timestamp,char*SignatureNonce)函数,将下列代码修改成对应****中的参数

4.3.5、在gizwits_product.c中添加#include"driver/sendSms.h" 和如下代码

CheckIpStart();

static uint32_t irLastTimer = 0;

//做一个延时,等待http应答

if((gizGetTimerCount()-irLastTimer)>5000)

{

    irLastTimer =gizGetTimerCount();

    if(getSendCode()==100)

    {

        GIZWITS_LOG("===================================\n");

        GIZWITS_LOG("信息发送成功\n");

        GIZWITS_LOG("===================================\n");

    }

}

因硬件还没搭接,所以我将上述代码加在int8_t ICACHE_FLASH_ATTR gizwitsEventProcess(eventInfo_t *info,uint8_t *data, uint32_t len)中

4.3.6、更改Makefile,生成user1.4096.new.6.bin

改成

4.3.7、将文件夹ld->eagle.app.v6.ld

改成

注:最开始没更改这个位置,编译没问题,生产bin时候报错,后来查看乐鑫帮助才解决。

4.3.8、编译,下载到ESP8266

4.3.9、打开机智云的SDK,测试你的程序~~~~~~~~~~~~

5、由于本人也是小白,上述代码在网友的基础上做一点点修改,因此执行效率存在问题,欢迎各位大神对其进行优化~~

本文为转载,来源:机智云论坛



关键词: ESP8266     门磁     系统     ****     报警     功能         

助工
2020-03-22 15:43:30    评分
2楼

学习一下


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]