数字农业APP远程控制系统设计说明(数字农业管理平台)

admin1年前农业信息119

一、设计思路

随着物联网技术的发展,智慧农业将成为现代农业未 来发展的一个趋势。将物联网、Android、计算机网络技 术、ZigBee等技术应用于农业中,能够促进农业信息化发展,改进生产管理模式,提高生产效率,为农业发展提供了方便。

数字农业控制系统可以让用户选择自动控制或者手动控制,实现实时观察农作物的状态,不需要浪费大量的人力和物力来专门进行检查和记录。也可以手动设置不同农作物的不同温度、湿度、光照及土壤湿度的范围,一旦超过或者低于作物生长所需要的条件范围,系统将进行报警处理。

二、软件主要技术分析

1.1移动终端

该项目移动终端是一个智能手机或PDA移动终端,可以通过其运行APP,并与服务器相连,从而实现控制和查看农作物生长情况功能。APP功能如下:

①用户可以通过手机APP,登录一个属于自己的账号和密码。

②用户登录后,可以随时随地查看农作物的环境信息及动态变化折线图。

③用户可以根据需要自主设置某些农作物的环境信息范围。

④用户可以根据需要选择控制方式,自动控制或者手动控制。

⑤若用户选择自动控制方式,当农作物的环境信息超出所设置的范围时,硬件将根据服务器的数据自动进行 操作,如打开抽水机、灯光等。

⑥若选择手动控制方式,用户可以根据不同环境,开关灯光、继电器等,并设置灯光的亮度。

⑦手动控制时,当农作物的环境因素超出所设置的范围时,手机将进行报警,提示用户,当用户收到报警信息后,可以进行相应的报警处理。

1.2服务器

服务器是硬件和应用程序的一个中介,手机应用程序 APP通过TCP/IP协议与服务器相连后,用户通过APP 向服务器上传农作物生长环境信息并保存数据;硬件也是 通过一个上位机程序与服务器进行Socket连接,向服务 器传送硬件所釆集到的各种环境信息,服务器也通过 Socket连接向硬件发送控制命令等。服务器作为一个中 介来运行,一方通过端口 8080和TCP/IP协议与移动终 端APP进行通信,另一方通过端口 2077和Socket连接与 上位机程序进行通信。

服务器功能如下:

①根据发送过来的Tag标志,来判断用户想要的操作并返回需要的数据给用户。

②实时接收上位机程序发送过来的数据,并根据自定义的通信协议来进行分析和处理。

③服务器得到数据后,将其保存在服务器特定的数据库中。

④服务器返回数据给上位机,从数据库中查询后处理成一定格式的数据。

1.3上位机

上位机是硬件与服务器之间的中介,硬件并不是直接 通过WiFi模块将数据发送给服务器,而是通过上位机程 序作一个中间接口发送的;当然,硬件也是可以通过WiFi 模块向服务器发送数据,但是通过上位机能更加体现本项 目的实现过程。上位机是一个Java Project,它的功能就 是读取开发板通过串口发送的数据,然后通过Socket连 接将收到的数据发送给服务器,接着将服务器返回的控制 命令发送给硬件,让硬件根据信息作出反应。上位机的任 务就是收取/发送串口数据和发送/收取服务器数据。

上位机通过串口和协调器相连,通过Socket与服务器相连,通过串口接收数据后进行一定的转化,然后通过 Socket再转发给服务器。

上位机主要功能如下:

①通过串口接收硬件发送过来的环境信息。

②将接收的环境信息通过Socket连接发送给服 务器。

③将服务器返回的控制数据转发给串口。

三、智慧农业软件设计与实现

1.1设计流程

该系统运用手机APP方式进行控制。APP设计的核心功能包含设置阈值、查看数据、模式控制和报警处理。 APP开发流程图如图1所示。

图1

1.2 APP开发

1.2.1界面布局设计

APP的登录注册页面采用本地记住密码功能,当用户选择记住密码后,在该移动设备上再次登录,便可以不用再继续输入用户名和密码,具有较强的实用性。在该页面上,釆用了同数据库交互技术,当用户名和密码均存在并正确的情况下,用户才能进行下一步,否则不能。

用户进入该系统的主要功能列表,页面釆用 list技术,将所有的主要功能排列起来,让用户更加方便直观地运用该APP。该页面上的每条记录都对应着另一个不同的页面。

1.2.2服务器设计流程

(1)服务器搭建、数据库的建立

数据得以保存和使用都是靠数据库来进行的.设计数 据库使用MySQL技术,建立了一个user用户,里面建立了 4张表,其中一张表为用户名和密码表,一张表为用户设置的环境数据,一张表为灯光控制,一张表为硬件实时传递的当前数据。

服务器运用JAVA EE软件建立的Dynamic Web Project编写代码。服务器模块,一方面要通过Tag标识来和用户APP端进行信息交互,另一方面要通过Socket与硬件进行信息交互。

手机APP通信时,服务器是通过Thg标识识别用户需求,当服务器识别到某一个lag标识时,将根据需要来操作数据库,为此,服务器必须要考虑到用户的要求,根据需要来执行一定的操作。所以,服务器一定要和数据库相连接,否则,就算用户发送了 lag标识给服务器,服务器也收到了请求,仍然不能够操作数据库,用户的请求不能实现。

与硬件通信时,服务器首先要建立Socket连接,并设定端口号,让硬件能够通过端口号识别服务器,服务器和硬件建立起连接后,开始T作。服务器读取开发板发送过来的信息数据后,便开始进行分析和处理工作,根据事先定义好的数据通信协议分析数据,并进行拆分,然后将拆分后的数据保存在之前的数据库中;用户查看数据时,就能得到最新的记录。服务器完成这些工作后,将返回一些数据给硬件执行机构。同理,服务器也将要发送的数据进行处理,处理成硬件能够识别的信息,返回给硬件执行机构。

(2)服务器和MySQL连接,并建立相应的数据

部分代码如下:

try (

〃得到数据库连接

conn = DBUtils. getConnectionO ;

//给具体的参数赋值

ptst. setString( 1, mer. getMer_userName());

ptst. setString(2, mer. getMer_Password());

ptst. setString(3, mer. getMer_Tell());

〃执行查询操作,返回查询结果(结果集对象)

ResultSet rs = ptst. executeQuery();

〃判断结果集是否有数据,有则返回true

return rs. nextO ;

catch (SQLException e) {

e. printStackTrace();

} finally {〃关闭连接

DBUtils. free(conn, null, null) ;}

(3)与APP交互

服务器与APP通信,通过Servlet实现。主要是APP

对服务器发送读取数据请求,而不是服务器主动发送数据

给APP。如此,可以减轻服务器的压力,让系统更实用。

(4)与上位机交互

硬件系统发送的数据流是字节,并且不方便识别,要

想将其变为易读取数据,需要通过字符串截取技术进行解

析,并通过数组分别保存。

硬件系统发送的数据流是开发者自定义的。该数据

有多少位,每一位代表什么,在需求阶段就要确定。因此,

在服务器和上位机通信时,对数据的解析就要方便很多。

public void run() {

byte[] buf = new byte[128];

while (true) {

try (

if(client. isClosedO) {

return;

)

else{

if ( ! client. isInputShutdown()) {

〃读取开发板发过来的字节流

int len = dis. read(bu£);

String dataFromHard = new String(buf);

System, out. println( " = = = " +dataFromHard);

〃打印

i£(len > 0) {

String receiveData—new String(buf, 0, len). trimO ;

String]] splitData — SplitDataFromReceive. splitReceive(receive-

Data,8);

Boolean result = hardDaoImpl. addData2DB( splitData);

boolean flag= client. isOutputShutdown();

if < ! flag) {

hardDaoImpl. findAllcaiData(dos);

try {

Thread. sleep(lOO);

} catch (InterruptedException e) {

e. printStackTrace ();}}}}} catch (lOException e)

e. printStackTraceO ;

)

finally {

try {

if (dis ! =null)

dis. close();

if (dos ! =null)

dos. close();

}

catch (lOException e) {

e. printStackTrace();

}})}

2.2.3上位机设计

(1)基本框架建立

服务器与硬件连接是通过上位机来实现的。所谓上

位机,本质是一段JAVA程序代码,主要功能是读取硬件

传递过来的数据并发送给服务器,同时将服务器发送给硬

件的控制命令传递给硬件系统,让其作出相应操作。

(2)自定义数据格式

public String Bytes2HexString(byte[] b) {

〃将byte数组转换为16进制数组

String ret ="";

for(int i=0;iVb. length;i+ + ) (

String hex= Integer. toHexString(b[i]&Oxff);

if (hex. lengthO = — 1) (

hex = O + hex;

)

ret += hex. toUpperCase();

}

return ret;

)

(3)通过串口和硬件系统交互

硬件与上位机连接通过串口实现,下面代码为用户判

断串口 COM4是否可用,如果可用,则时刻阅读硬件系统

是否有传递过来的数据。

while (portList. hasMoreElementsO ) {

portld= (CommPortldentifier) portList. nextElement();

if(portld. getPortType( ) — — CommPortldentifier.

AL)(

if(portld. getNameO. equals("COM4")) {

try{

serialPort= (SerialPort) portld. open("Main" , 2000);

}

catch ( PortlnUseException e) {}

try{

inputStream = serialPort. getlnputStreamC);

(4)通过Socket和服务器进行交互

上位机和服务器通过Socket协议进行通信,上位机和服务器建立对方的IP和相同接口的Socket, 一直对该 接口进行查询,检査是否有数据传送。

相关文章

供销e家成立无人机大联盟 为现代农业添新翼(供销e家电商平台指的是啥意思呀)

供销e家成立无人机大联盟 为现代农业添新翼(供销e家电商平台指的是啥意思呀)

原标题:供销e家成立无人机大联盟 为现代农业添新翼   3月2日,供销e家(中国供销电子商务有限公司原标题:供销e家成立无人机大联盟 为现代农业添新翼 3月2日,供销e家(中国供销电子商务有限...

2017年全市农业农村工作回眸(全市农业农村工作会议 2020)

农业更强 农村更美 农民更富 进贤县下埠集乡赤路岗村 溪霞现代农业园区 南昌菜园 安义县石鼻镇水南村 新建区溪霞镇店前村 进贤县文港镇 樊哲平...

我司受邀广西现代农业装备职业教育集团成立大会,助力北斗智慧农业发展(广西现代农业投资有限公司招聘)

我司受邀广西现代农业装备职业教育集团成立大会,助力北斗智慧农业发展(广西现代农业投资有限公司招聘)

2023 今日(6月21日),由广西制造工程职业技术学院牵头组建广西现代农业装备职业教育集团成立大会于上午9:30-17:30 在广西制造工程职业技术学院举行,我司为职教集团理事单位...

川西旅游网红打卡圣地,现在这些地方门票全免(川西必玩景点)

川西旅游网红打卡圣地,现在这些地方门票全免(川西必玩景点)

川西旅游从2020年11月16日-2021年2月1日,都实行全民免票政策,那么川西有哪些地方值得推荐呢? 今天蓉城小编就来推荐川西网红打卡地。 理塘县...

江苏扬州:观光农业助推乡村振兴(扬州特色田园乡村建设方案公示)

江苏扬州:观光农业助推乡村振兴(扬州特色田园乡村建设方案公示)

  5月7日,种植户在江苏省扬州市江都区现代农业产业园大棚内观察瓜果长势。 近年来,江苏省扬州市江都区实施“绿色农业+观光旅游”生态发展模式,以绿色农业发展拉动旅游观光...

海睿科技助力农业农村部华南智慧农业公共研发平台建设 刘海峰:高考这十年,成就可圈可点 进步很大(海睿光电)

图片来源:Unsplash芥末堆文 近日,海睿科技中标农业农村部华南智慧农业公共研发平台项目。将围绕农业农村部华南智慧农业公共研发平台建设,以物联网、数据中心、智能农机装备、数字加工仓储等新型基础设施...