制作简易远程控制的储物箱
做了一个简单的远程控制储物箱。主控选择使用STM32的单片机STM32F030F4P6,最简易的MCU,通信模块选择ESP8266,使用Wifi的方式进行控制。控制锁就选用电平控制的电磁锁,驱动使用的是L9110S进行驱动。
1. 硬件部分
先上一个电路原理图和PCB图
主控:STM32F030F4P6电源:AMS1117通信模组:ESP8266控制驱动:L9110S
L9110的介绍,主要是控制电机的,所以控制个电磁锁的短时间闭合也是没有问题,通过配置两个引脚的电平,从而控制输入IO的电平状态。
就这么简单,主要通过云端服务器下发指令到路由,ESP8266通过路由器联网后收到数据,从而再进行控制驱动。
放张PCB的图,板子很小,3cm左右。
2. 云端服务器这次就不用OneNet了,使用一个小型的物联网平台,贝壳物联。网址:https://www.bigiot.net主页看下图:
感觉挺人性化的一个物联网平台,功能做的很像MQTT,但是又没有MQTT那么繁琐。简单的说就是创建两个设备,一个用于MCU端的ESP8266,一个用于云端的服务器,然后这个两个设备之间进行通信。
协议可以看看这个:
更加具体的可以进官网的文档里去查看,给我的感觉是很适合新手,协议特别的简单,看一遍照这个做就可以完成。还算稳定,基本没有出现过掉线的问题,就是创建的设备不是无限的,需要靠登录时长去积累分数,类似QQ等级那种,多少等级就可以创建多少个设备。
3. 软件部分软件很简单,就是通过ESP8266连接路由器,之后登录贝壳物联的TCP,登录好设备后,就可以与服务器进行通信了。
初始化:1. GPIO初始化:主要配置L9110S的引脚状态等等。2. 串口初始化:ESP8266的引脚配置及串口通信的配置。3. 定时器初始化:用于服务器的保持心跳。
ESP8266联网初始化:1. 设置ESP8266为STA模式(因为连接的是路由器)2. 开启透传模式3. 8266连接TCP服务器4. 连接贝壳服务器设备
进入主循环:
1. 判断服务器发来的开锁指令
2. 判断服务器发来的心跳指令(或者使用定时器自己上传给服务器心跳,模式可以选择)
3. 判断服务器发来的查询指令(这个电磁锁有检测信号线,就是锁上的时候,信号线是低电平,开锁的时候是高电平,可以通过这个判断锁的开闭情况)
代码和原理图已上传附件
4. 实物部分
简单的做了一个亚克力外壳,把锁粘在里面(不用螺丝是因为可以再外面把锁拧下来),把锁扣也粘起来,亚克力外壳打孔穿线,连接板子,完工。