极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 36613|回复: 16

【nodemcu】ESP8266搭建简易安防系统(智能门磁)

[复制链接]
发表于 2016-9-26 16:55:59 | 显示全部楼层 |阅读模式
本帖最后由 葱头同学 于 2016-10-15 21:50 编辑

    ESP8266可谓一款无敌的神器,为什么说无敌呢,一方面是价格只有10块,另一方面模块内置的MCU性能很不错,还有不少IO口可用,用作物联网主机(arduino都省了)搓搓有余,可塑性很高啊。
     近期因LP大人要赴异地工作,特使用此款神器造了一个门磁,以防贼,防狼,防变态....
     来个动态图:
     
     先用一个逻辑图来描述一下整个项目:
     

    这会邀请主角:(外壳是用的一个LED驱动改的,size刚好合适我的nodemuc板)
    这个开发板板集成了串口芯片,方便开发调试,也引出了所有的IO口。其实用ESP8266模块也是一样的,只是手头没有arduino板,索性就直接买块开发板回来,可以串口调试。
   
    还有我们的得力小助手:干簧管传感器(这枚屌丝的作用是和门磁一样的,磁铁靠近就闭合)
    这枚传感器有三个脚,分别为VCC GND OUT 。和人体红外模块一样使用的,判断是否有磁场输出高低电平。
   
    还有这枚屌丝的搭档:磁铁先生
   

    连线非常简单,就三条线....  模块VCC---3.3V   模块GND---GND  OUT----D5

    供电方面,我是直接在洞洞板背面焊了一个AMS1117-5.0上去,通过DC座取电(9V输入),再输出到开发板的VIN口。
    下面是安装好之后的全家福(磁铁自己找了一个小塑料盒装进去,方便固定在门边)
   

    有能力的同学可以自己搭建PHP端对上传的数据进行存储和处理,或者结合公众号开发
    因为主动推送消息和硬件平台接入都要求认证过后的公众号,所以没有做这一部分的开发。
    有已经认证过公众平台号的朋友可以尝试,可以做到微信用户无缝接入,具体参考:微信硬件平台应用场景
   
   
    这个是airkiss软件 可以通过它来配置模块的wifi信息。
   
    相关链接:微信硬件平台


     下面上代码:(编译环境arduino IDE 1.6.5)
     程序PS:上电自动连接WIFI(读取上一次成功配置的SSID,PWD),20秒内链接失败则开启Smartconfig模式等待接收SSID和PWD信息。
                    连接WIFI成功后,每5S传输一次传感器状态,每10S传输一次握手信息(检测主机是否死机)

arduino代码:https://github.com/congtou1991/SmartMagnetometer/blob/master/WiFiClient1.0/WiFiClient1.0.ino


所有代码托管在:GitHub

PHP端已经整合了微信公众号类和阿里大于短信API


微信公众号需要能创建自定义菜单的 比如企业号,未认证的企业号也可以创建自定义菜单,自己申请不了的话可以去X宝买一个,反正拿来玩玩而已。

这里需要说明一下公众号的一些配置:

在“开发”-“基本配置”中

URL服务器地址填写的是你购买的主机商提供给你的临时域名+"index.php"
如  http://www.主机商提供的临时域名.com/index.php
如果你配置这里的时候PHP端还没有搭建好,那么提交的时候是显示验证失败的,不用管他,等PHP端搭建好了,再来这里提交一次就OK了。

Token令牌 自己设置一个,用于PHP服务端和公众平台进行数据交换验证使用的,这里和config.php文件中的Token对应就可以

EncodingAESKey(消息加解密密钥)  这一串东西也是验证用的 默认生成一个就好了, 然后复制到config.php文件中

需要注册阿里大于账号(有淘宝号可以直接登录),注册后要自行新建应用,新建短信签名,新建短信模板,用于短信提醒发送。
PS:这里为什么要选用“阿里大于”短信平台呢,因为注册送10元,0.045/条,相当于免费送你222条短信,够用了。据说阿里上线这个平台之后很多类似的短信平台都die了,因为没有阿里便宜....
这里是阿里大于网址


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-9-27 16:05:12 | 显示全部楼层
是否把PHP的搭建也介绍下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-27 16:44:49 | 显示全部楼层
本帖最后由 葱头同学 于 2016-10-15 22:17 编辑

PHP服务端搭建:
1、首先需要在主机商那里购买一个云服务器(要支持PHP环境),主机商蛮多的,国内的比如阿里云(部分服务由以前的“万网”提供)、新浪云这些都可以,大家可以根据自己需要去选择,一般自己玩玩就买个低配虚拟云主机足以,记得要带SQL数据库的噢!因为由ESP上传的数据要存储在SQL数据库方便调用。

2、在主机商那里获取到主机的FTP地址、用户名、密码;还有MYSQL的用户名、密码、数据库名。

3、在GitHub打包下载源码。电梯:GitHub



4、将下载好的ZIP解压出来,修改几个文件里面的配置:

①  \PHP\Application\Common\Conf\config.php



下图是“阿里大于”配置信息获取的位置:




② \PHP\Application\Home\Controller\IndexController.class.php


下图是“微信公众号”配置信息获取的位置:


下图是“阿里大于”短信模板、短信签名获取位置:




5、文件修改好后,把文件重新打包,这里只需要用到“PHP”文件夹里的文件,所以只打包“PHP”文件夹下的文件即可。



5、用FTP上传软件(我用的是8uftp这个软件)连接购买到的主机,将打包好的zip文件上传到主机的“根目录”,然后解压出来。



到这里PHP服务端就已经配置好了

然后是MYSQL数据库的导入
登陆你的MYSQL数据库后台,将下载的源码中anfang.sql数据库文件导入到当前数据库


接下来是自定义菜单的创建

首先登陆公众平台的后台,在“开发”-“基本配置”中找到"AppID"和"AppSecret"替换下面网址中对应的信息,然后复制到浏览器打开它
  1. https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=替APPID换&secret=替APPSECRET换
复制代码

如下图,在打开后的网页中,得到一大串的字符就是ACCESS_TOKEN,复制它。


打开之前下载的源码文件夹,编辑\PHP\addmenu.php这个文件,将刚才得到的ACCESS_TOKEN添加进去,保存文件,然后上传到服务器根目录


上传成功后,用浏览器访问 www.主机商提供的临时域名.com/addmenu.php 这样公众号自定义菜单就创建好了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-27 16:47:35 | 显示全部楼层
本帖最后由 葱头同学 于 2016-10-15 22:27 编辑

这里要注意一点,公众号配置成功,PHP端也搭建成功之后,用手机关注你自己的公众号,然后在公众号里绑定你的手机号,绑定成功之后还需要登陆MYSQL数据库的后台 找到af_user表,看看是否有你绑定的信息,如果有,说明已经成功。找到最后一个字段名为checkid的,将值改为1。如果不改,是收不到短信提醒的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2016-9-28 12:02:20 | 显示全部楼层
先占坑.~~~  
回复 支持 反对

使用道具 举报

发表于 2016-9-30 14:15:46 | 显示全部楼层
不错的教程,都是学以致用!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-15 22:07:15 | 显示全部楼层
mikeliujia 发表于 2016-9-30 14:15
不错的教程,都是学以致用!

发出来给大家互相交流,并不断完善它。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-15 22:10:40 | 显示全部楼层
本帖最后由 葱头同学 于 2016-10-15 22:31 编辑

教程初稿已经更新,希望大家多多提供意见,有些地方可能写得不是很明白,毕竟这个项目涉及到了公众号的配置,还有网站的搭建,可能没有相关基础的一些朋友一时半会看不明白。有不明白的地方大家可以在这里留言,我有空会来一一回复的。这个项目后续我会在GitHub保持更新,感兴趣的可以在GitHub关注我这个项目的动态,记得给我一个star哦!
回复 支持 反对

使用道具 举报

发表于 2016-10-16 11:30:27 | 显示全部楼层
const char* host = "www.***.com"; //网站域名 这个网站域名可以是新浪云的二级域名吗?http://1.xxxxx.applinzi.com 这样子
回复 支持 反对

使用道具 举报

发表于 2016-10-16 11:32:13 | 显示全部楼层
用新浪云配置的代码跟“阿里大于”短信模板区别在哪儿啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-16 14:28:03 | 显示全部楼层
fuben1015 发表于 2016-10-16 11:30
const char* host = "www.***.com"; //网站域名 这个网站域名可以是新浪云的二级域名吗?http://1.xxxxx.ap ...

可以是二级域名的 只要是外网能访问到的架设上去的服务端地址就可以
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-16 14:29:50 | 显示全部楼层
fuben1015 发表于 2016-10-16 11:32
用新浪云配置的代码跟“阿里大于”短信模板区别在哪儿啊?

这个要根据新浪云提供的API接口去更改了 因为每个短信接口的调用方法都不一样的 新浪云没用过 有时间会研究一下 因为貌似还是蛮多人用新浪云的服务的 只是我自己在阿里云购买有主机 所以没有针对新浪云去开发
回复 支持 反对

使用道具 举报

发表于 2016-10-16 15:57:39 | 显示全部楼层
您QQ是多少啊?可以加下您QQ问下吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-17 09:25:02 | 显示全部楼层
fuben1015 发表于 2016-10-16 15:57
您QQ是多少啊?可以加下您QQ问下吗?

私信你了


------十五字十五字小尾巴o(╯□╰)o
回复 支持 反对

使用道具 举报

发表于 2016-10-17 14:27:03 | 显示全部楼层
不错,对于搞嵌入式系统的小伙伴来说,有这个详细的云配置指导,也能完整地做个系统出来了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 17:47 , Processed in 0.049355 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表