樊建强,秦 玉,李凯丽,成慧翔
(晋中信息学院,山西 晋中 030600)
在我国广大的农村,铁锹、锄头、铲子等便携式工具是农民经常会使用到的农具,但他们又会时常面对将农具落在田间地头,由于庄稼较高等环境因素又不容易找到的苦恼。随着智能手机和无线通信技术的发展与普及,基于这种实际情况为实现便民的目的,特设计了一种快速的寻物防丢失系统,以解决农具丢失的问题。
本文设计了一款基于WiFi的农具防丢失系统,该系统通过手机的一键操作对绑定农具上的单片机进行通信使其发光发声,实现快速定位农具的位置。
在锄头、铁锹等常用农具上装有一个可发光、发声的模块并通过无线网用手机app 向其发送启动命令,绑定在农具上的单片机接收到命令后,将会控制蜂鸣器发声、LED 模块发光。当找到农具后按一下重启按钮即可关闭声音,并为下一次寻物做准备。本系统主要包括3部分:单片机控制模块、WiFi技术、安卓开发平台。
系统总体原理见图1。
图1 系统原理Fig.1 The system principle
基于WiFi的农具防丢失系统总体电路图见图2。
图2 总体电路图Fig.2 The overall circuit diagram
本设计采用的是ESP8266WiFi 模块与单片机进行连接,ESP8266 内部具有高度集成,包括天线开关,电源转换器,它能够从外接闪存中快速启动,内部具有高速缓冲装置有利于提高系统性能并降低内存,因此仅需要极少的外部电路。
将51 单 片 机 的30 引 脚31 接ESP8266 模 块 外 部 的TX 和RX 就可以单片机和WiFi 模块可以进行串口通信,但是在下载程序时必须拔下30与31引脚的接线否则会下载失败。
由于只能使用3.3 V 电压进行驱动,WiFi 模块在外部还必须接有一个稳压装置,在转换的部分曾考虑过使用稳压二极管进行变压,但是由于稳压二极管在低电流的情况下很难保持稳定,电压从USB 输入的5 V 电压只能稳定在4.6 V 已经远远超出WiFi模块的电压承受范围,长时间的承受高于自身规定电压将会造成不可逆的损坏。
面对这种情况可以采用三端稳压器或者3.3 V 纽扣电池,本设计采用三端稳压器,又称ASM117三端稳压器是集成芯片,内部有放大、补偿、反馈等环节,稳压性能优秀,在低电流的情况下也优于稳压二极管,将三端稳压器变压后的3.3 V处连接到ESP8266 模块上即可完成3.3 V 供电保证其不被击穿。
蜂鸣器是一种可以发声模块,但它只能发出几种单调的声音,是一种窄频率发声器件,只给高电平或者低电平是不能够发声的,需给出交替的高低电平产生方波信号输入谐振装置转换为声音信号输出,让其振荡片一张一合,将蜂鸣器接入51单片机P1.0口或者P3.6口单片机向其输入延时1 s的高低电平程序,就可以发出声音。
采用NPN 型三极管进行两级放大将控制端接入单片机P1.0,当单片机发出电流脉冲就会给第一个三极管的基极一个很小的脉冲电流信号这时就会使集电极电流和发射极电流产生很大的电流输出,接着发射极带着更大的电流信号给入下一个三极管的基极这时就会产生一个比之前还要大的电流信号从第二个三极管的集电极和发射极输出,这时将两个三极管的集电极连接至蜂鸣器电流信号接收端,蜂鸣器发出更高分贝的声音。
使用AT89C51 芯片作为控制蜂鸣器与LED 灯的主要控制方式,将ESP8266WiFi 模块与单片机进行通信通信成功后ESP8266,模块会建立AP模式的WiFi网络,Android手机连接AP 网络连接后通过网络调试助手对单片机进行发送指令,控制51 单片机传递高频电用来控制LED 灯发光与蜂鸣器发声,工作流程图,见图3。
图3 系统总体流程图Fig.3 The overall system flow chart
这时使用PC 端串更改波特率,因为WiFi 芯片的波特率有内部设置,然后点击发送即可并勾选发送新行即可两者调成一致如图4串口助手所示。
图4 串口助手Fig.4 The serial port assistant
这时WiFi 芯片从内部会反馈未知的3 段数据,同时更改了之前芯片的内部数据。
配置好了ESP8266 后就可以更改模块信息了。首先,需要设置ESP8266模块的AP 模式下的WiFi用来保证在与单片机通讯后可以建立AP 网络,在串口助手中输入以下指令设置如下:
AT+CWMODE=2 这段指令是令WiFi 芯片建立无线网络,当然也要建立通信通道,这时使用这段指令AT+CWSAP="","",第一个逗号前是给这个网络定义昵称,第二个逗号是给这个网络上锁。在配置完成以上指令后使用AT+RST指令重启芯片,前面的两条命令会固定存储在芯片内保存,重启完成后配置AT+CIPMUX=1可以让多个无线接入端连接。如果不开启这个就会导致无法连接,这些都设置好以后输入AT+CIPSERVER=1,9090 设置固定9090 为通信号也称端口号以便在网络调试助手中使用,不过在每次重启后都需要配置通信号指令和多连接指令。
这时就可以和手机进行连接,说明ESP8266 模块的AP模式启动成功,但由于还没有单片机进行配置所以不会控制LED灯与蜂鸣器。
单片机如果无外接晶振芯片时其内部的通讯频率为9600,因为本次测试系统使用开发板制作的单片机模块所以最高就是9600 了,若想通讯就在之前PC 端时更改WiFi 芯片的频率即可完成通信,在串口助手中输入AT+UART=9600,8,1,0,0 就完成了频率的更改,按一下USB 上的按钮就完成了数据的存储并拔下接线于单片机,单片机传输一段之前的通信号与锁号,使用传输的通信号与锁子号就可以与手机连接时候使用。
在与单片机连接时也要重新初始化ESP模块,AP模式开启使用一段连接的函数并包含多连接和通信号的两条指令,然后再使用延时函数给WiFi 芯片大概需要1 s 反馈时间,当看到WiFi芯片重启并闪烁红灯说明已经完成了51 单片机与ESP8266的连接初始化,完成了通信设置。
在单片机中写入一个中断其操作过程的虚拟按钮指令,这个就是通过手机端对WiFi 芯片传输数据。单片机会对开发板上的其他硬件进行控制,使用一段中断函数,来进行数据的接收。如果输入0 时单片机会在中断函数中做出响应,同时输入1时,也会有对应的响应,只需要输入一个数字或者字母让灯与蜂鸣器同时发光、发声,直到找到了农具按下开发板上的按钮关闭即可。如果再次使用时只需要再按一次这个按钮即可重新启动所有模块的功能,他们的响应只需要手机端的发送信号。
将设计好的程序写入并烧录进单片机,应该先将ESP8266 模块的TX 和RX 端口拔下,防止在给51 单片机烧录程序时失败,复位单片机,与Android手机进行连接。
Android 系统相对于其他手机操作系统平台具有较强的编译性,使用从手机应用商店下载的网络调试助手,操作流程如下:
首先,打开手机WiFi 网络设置连接在之前设置好的ESP8266 模块建立的AP 网络,输入之前设定的密码0123456789;其次,点开网络调试助手app,点击tcp server 配置端口服务,在之前的ESP8266 模块中设置的端口为8080,点击tcp client 增加连接输入手机的IP 网络地址192.168.41,把之前的端口号也同样输入8080,这样手机就连接到了WiFi模块发射出来的AP无线网络。如图5网络调试所示,接下来在网络调试助手界面的对话框内发送1 即可让LED 灯点亮和蜂鸣器发声。
图5 网络调试Fig.5 The network debugging
本设计以单片机模块为核心,配以ESP8266WiFi 模块,LED 灯模块,蜂鸣器模块,以及其他外设控制电路,设计了这款寻物系统。于此同时,应用了当今使用频率中高,可开发性能极高的Android 系统设计开发了手机客户端的一键操作方式,为使用提供了便捷性。