基于超声波的农机深松作业深度测量研究
2018-08-28王新龙
王新龙,陈 伟
(长治学院 计算机系,山西 长治 046011)
1 引言
在农业现代化进程中,传统的作业质量检测方式有很多缺陷,如测量数据误差大、测量不及时等。为了检测农机深松作业的达标情况,需要对农机深松作业时的深度进行实时监测,并且将测量数据通过无线网络传输至后台服务器,在后台服务器再进一步进行相应处理。文章研究了利用超声波传感器测距原理进行农机深松作业深度自动检测的技术和方法,通过GPRS将测量数据无线传输至网络服务器,同时可以方便地在客户端进行及时查看。
2 总体框架设计
本系统主要由超声波深度检测数据采集模块、GPRS数据传输模块、云服务器搭建模块组成。系统总体框图如图1所示。
其中,超声波深度检测数据采集可以对农机深松作业的深度进行实时检测;GPRS数据传输模块可以将采集到的数据同步上传至云服务器。
3 硬件设计
实验系统的硬件主要由M26四频段GSM/GPRS无线模块、HC-SR04超声波测距模块组成[1]。对于HC-SR04超声波测距模块以及M26模块都是作为分模块完成其各自功能,为实现硬件整合需要一个主控模块。在综合考虑性能、成本、功耗的因素的影响后,实验采用了STM32系列中的STM32F103C8T6作为本次研究的主控芯片模块。
3.1 超声波测距模块
实验选用HC-SR04的超声波测距模块,HC-SR04超声波测距模块能够实现2 cm-400 cm的非接触式距离感测功能,测距精度可达高到3 mm,该模块由超声波发射器,接收器和控制电路组成。
在对HC-SR04超声波测距模块进行控制时,基于Arduino电子平台的便捷性与灵活性,该实验选用了一款基于ATmega328处理器型号为nano的Arduino开发板作为HC-SR04超声波测距模块的控制板,以接受HC-SR04超声波测距模块所测量的数据。
3.2 M26四频段GSM/GPRS无线模块
对于作业点的经纬度获取及GPRS无线数据传输功能,试验中采用了移远通信技术有限公司研发的M26模块,该模块是一款工业级的四频段GSM/GPRS无线模块。它的工作频段是:GSM850 MHz,GSM900 MHz,DCS1800 MHz和 PCS1900 MHz。M26提供GPRS数据传输,GSM短信业务,并支持GPRS multi-slot class1~12(默认为 class12)、GPRS 编码格式 CS-1、CS-2、CS-3 和 CS-4。
4 云服务器的搭建
后台云服务器的运行与搭建主要基于java平台以及腾讯云服务器平台,通过java提供的TCP/IP网络服务支持及数据库接入,搭建基本的服务器平台,再通过基于腾讯云服务器平台的外网接入功能,实现远程客户端接入及GPRS数据传输功能,进行农机深松作业中的深度测量研究。
实验中选择了腾讯云服务器平台,并在申请的云服务器平台上搭建了实验所用云主机,以便实现深度测量数据接收。
5 实验验证
5.1 HC-SR04超声波深度测量实验
HC-SR04超声波测距模块在实际运用时,根据其模块使用时序图(图2),分为如下三个步骤:
(1)使用IO口中的TRIG引脚口触发测距,即给该IO口输入10 us以上的高电平信号。
(2)HC-SR04超声波测距模块接收到触发信号后能够自动通过超声波发射口发送8个40 khz的方波,同时在超声波接收口自动检测是否有信号返回;
(3)当有信号返回时,通过IO口ECHO口输出一个高电平方波,高电平方波持续的时间就是超声波从发射到返回的时间。因此测量距离公式为:测试距离=(高电平时间*声速(340M/S))/2。实际测量深度时,作业深度=机手长度-测试距离。
图2 HC-SR04超声波测距模块时序图
5.2 经纬度获取及GPRS数据传输实验
实验采用了STM32系列中的STM32F103C8T6作为本次研究的主控芯片模块,将HC-SR04超声波测距模块以及M26模块通过硬件线路连线接入STM32F103C8T6芯片,正确连接后,运行控制程序实现模块各自功能。
图3STM32F103C8T6与M26模块连线图
实验通过串口连接传输相应AT指令至M26模块之中,以使M26模块对应完成基站定位获取经纬度及GPRS数据传输功能,如图3所示。将STM32F103C8T6芯片与M26进行线路连接,主要是进行串口连线,即将M26模块的TX引脚与STM32F103C8T6的RX引脚相连。将M26模块的RX引脚与STM32F103C8T6的TX引脚,再将两个芯片共同接地线,即可进行M26模块与STM32F103C8T6芯片的串口通信,可通过串口由STM32F103C8T6芯片向M26模块发送AT指令,使M26模块进行相应工作。
将超声波测距模块也接入STM32F103C8T6芯片上,由于在进行超声波测距时,对于HC-SR04超声波测距模块的控制芯片是Arduino nano开发板,因此直接与STM32F103C8T6芯片相连线的并不是HC-SR04超声波测距模块,而是这款基于ATmega328处理器的Arduino nano开发板,其基本工作原理是:开发板控制HC-SR04超声波测距模块进行测距并得到测量数据,通过串口将得到的测量数据传输至STM32F103C8T6主控芯片。主要连线同样是进行串口连线,将Arduino nano开发板的TX引脚与STM32F103C8T6的RX引脚相连,将Arduino nano开发板的RX引脚与STM32F103C8T6的TX引脚,再将两个芯片共同接地线,即可进行Arduino nano开发板与STM32F103C8T6芯片的串口通信[2][3]。
由于STM32F103C8T6芯片具有5个USART,实验中同时将M26模块和Arduino nano开发板与STM32F103C8T6主控芯片进行串口连线,因此可以进行多个串口通信,而在进行多个串口通信时只需设置好串口响应优先级及抢占优先级即可。在进行两个串口同时通信时,采用了关闭响应原理,在进行一个串口通信时,人为关闭另一个串口响应,如此交替进行串口数据传输,避免了因串口中断抢占问题引发的数据丢失、出错等问题。
5.3 数据传输实验
(1)STM32F103C8T6主控芯片在得到了Arduino nano开发板通过串口传来的深度数据之后,启动M26模块的基站定位获取经纬度服务以得到经纬度数据,同时将经纬度数据与深度数据打包,通过M26模块的GPRS数据传输服务即可将打包数据传输至后台服务器[4]。
通过M26模块进行数据传输,其AT指令为:“AT+QIOPEN=[
在测试实验经纬度获取及GPRS数据发送时,通过使用网络调试助手这款软件直接进行网络协议、IP地址及端口号的相应设置,从云主机上即可正常接收数据[5]。
通过java语言开发平台,引入相应封装类“java.net.ServerSocket”启动一个服务器,在此类的变量后,通过语句“new ServerSocket(端口号)”便可开放相应的服务器端口以实现数据收发[6-8]。
(2)客户端设备连接云主机服务器成功后,即可向服务器发送处理打包好的数据。
(3)实验测得:在长时间连续进行下,设备仍能进行正常工作,服务器同时可以正常接受并处理数据,并在服务器端动态显示数据库中最新存入的十个由设备发送来的数据,测试结果见图4。
图4 服务器端动态显示最十个数据
6 结束语
文章提出了一种农机松作业时作业深度的检测方法,并且结合物联网技术对测试过程进行了联网监测,从测试数据与实际作业数据对比来看,测量数据准确,测量效果较理想。该研究所采用的方法技术,未来可以在其他测距监控场合得以应用,这种方法是可行且高效的。