1.系统设计与实现

本设计的是“智慧农业信息采集控制系统”,系统主要实现的功能有:

(1)采集终端向服务器上报温度、湿度、电机状态(用于降低温度)、开关状态(用于自动浇水);

(2)服务器接收到数据后提取信息,将数据及其上报时间写入数据库存储历史记录,便于用于查看;

(3)服务器接收到数据后从数据库中读取用户设定的阈值,对数据进行判断,如果超过或者低于阈值即发送对应指令,打开/关闭电机,或者打开/关闭开关;

(4)用户端程序可以修改报警阈值;

整个系统的实现架构如下图:

(1)农业采集终端运行在嵌入式Linux开发板上(使用Qemu模拟);

(2)农业采集系统服务端使用云服务器,操作系统为Ubuntu18.04;

(3)数据存储使用MySQL服务器;

(4)农业采集用户端运行在桌面Linux上,操作系统为Ubuntu16.04;

7daf46b3ee19b55bd661cc2c799baa0b.png

其中,所有数据均采用JSON数据格式,使用UDP传输,数据库中有两张表,一张表为history用于保存历史数据,一张表为value用于保存阈值信息。

2. 建立数据库及数据表

① 建立数据库ia_system:

create database ia_system;

fa9ddc3c404fd648b000f2d7990bb7b6.png

② 建立数据表history:

create table history (id INT(10) not null,temp FLOAT,humi FLOAT,motor CHAR(3), switch CHAR(3));

fdfaa547069df5fcf87a19b9f1238c4a.png

③ 建立数据表value:

create table value (id INT(10) not null,temp_max FLOAT,humi_max FLOAT,temp_min FLOAT,humi_min FLOAT)

11334f291dbaf656033f79b0cc3bfd98.png

④ 提前在数据表value中设置一个阈值:

insert into value(id,temp_max,humi_max,temp_min,humi_min) values(2016211961,10.0,40.0,10.0,40.0);

e3d5f6d90d821fdbc34e66bc8b0bca0d.png

3. 运行服务端

服务端源码在server文件夹,需要在云服务器上运行,使用gcc编译。

进入到server文件夹,执行make命令编译:

cd server

make

56a04a818869e4c3bfe5033c733a9462.png

然后运行程序(默认监听8002端口,使用UDP协议,如果有安全组需要放行该端口):

./server

4. 运行客户端

客户端运行在桌面Linux上,源码在client文件夹下面,进入之后使用make命令编译:

cd client

make

ca0496761cd683377fd09b2fab58f3df.png

编译之后运行程序:

./client

4.1. 查询当前阈值

266899c09765d47c8ae16568eb700ace.png

4.2. 修改阈值

修改最大湿度值为50.5:

cc2bab8b10976c0d85df0b89de5e3bba.png

5. 运行终端

终端中只使用到了UDP Socket编程,所以可以编译为桌面Linux的程序,也可以编译为ARM开发板上的程序。

5.1. 在桌面Linux上测试

进入endpoint文件夹,编译:

cd endpoint

make endpoint_PC

ca4c903dce5d892716229e5dbeaf7aea.png

运行程序,第一个参数是云服务器ip,第二个参数是云服务器端口:

0f79f35d2c8b69c937a49eb7693963bb.png

可以看到终端每隔5s向服务器上报一次数据,在服务端也可以看到上报的数据:

98a42609ff2af2f4612ea2a3ee8cfc4a.png

在MySQL中查看历史记录:

80b9de919fbe234172ed5efeeb827064.png

5.2. 在ARM开发板测试(使用Qemu模拟)

编译:

arm-linux-gnueabi-gcc endpoint.c -o endpoint.o

dec3b35d7d16e459025ce3fa9db9f169.png

使用NFS复制可执行程序到开发板中:

79a885f61c82d25bd6fe132257f98d51.png

运行程序:

e94893a323c53b04f78ac640f2fcf0bb.png

在服务器端查看数据:

16f4c3b15c4e17b0336ea38dadc85169.png

接收更多精彩文章及资源推送,欢迎订阅我的微信公众号:『mculover666』。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐