1 Star 1 Fork 0

朱凯发 / 4g_dial_up

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

项目名称: 基于LoRaWAN的温室大棚环境监控系统

项目背景:

输入图片说明 我国作为农业大国,近些年来农耕技术发展迅速,而物联网技术的发展推动了智慧农业的建设,采用实时、动态的农业物联网环境监控系统,通过对大棚环境参数的准确检测,信息的智能处理,以及设备的智能控制,实现智慧农业生产的高效管理。其中温室大棚内的农作物对环境有着较为苛刻的要求,随着温室大棚规模的扩大,对管理以及成本的要求越来越高。而LoRaWAN低功耗远距离的特点正好解决了这一问题 输入图片说明 输入图片说明

硬件连接

终端节点图片: 输入图片说明 网关节点图片 输入图片说明

云平台数据展示

输入图片说明

1.终端节点: 使用STM32单片机外接SHT30温湿度传感器,实时采集温湿度数据,使用SX1278射频模块,移植LoRaWAN协议栈,通过无线传输方式将加密后的数据发送至网关,同时接收下行数据并对相应设备进行智能控制。

2.网关: 使用包含升特公司官方提供的lorawan网关代码,经过增加补丁以及shell后的源文件,以及通过shell脚本编译后的运行文件,将编译好的网关程序放到了AT91sam9x35上运行,在终端节点和服务器之间起数据转发的功能。

3.NS服务器: 管理LoRa网络中所有的LoRa节点,接收到通过网关来自终端节点的温湿度数据,将数据解密后发送至Application Server,同时接收来自Application Server的用户下行数据,加密并通过网关转发至终端节点。

4.AS服务器: 接收来自Network Server解密后的数据,以可视化的形式展示给用户,同时将用户数据发送至Network Server。

实现功能:

  1. STM32单片机外接使用I2C协议的SHT30温湿度传感器,编写相应的驱动程序采集温湿度数据;
  2. STM32单片机外接SX1278 射频模块,移植LoRaWAN协议栈,实现通过网关将数据上报至服务器;
  3. 网关使用SX1301射频模块接收节点发送的无线电模拟信号,解调并通过SPI接口将数据发送到主机;
  4. 通过网关进行数据转发并设置网络优先级,实现以太网和4G的网络切换,并发送数据到腾讯云服务器;
  5. 在Linux下用Docker搭建Chirpstack服务器,通过NS管理所有节点设备,并在AS中展示可视化数据;
  6. 通过LoRaWAN网络架构,实现数据上报和命令下发,对温室大棚进行实时监控并且对设备进行智能控制;

本人负责:LoRaWAN网关以太网和4G的网络切换部分

  1. Linux下通过文件I/O操作串口设备文件,通过C语言编写封装了串口收发的函数,实现AT指令的收发。
  2. 通过AT指令的收发检查sim卡是否存在,注册,信号强度是否可用,用C语言封装成函数。
  3. 移植libxml2库,基于该库的API函数,解析出配置文件XML文档中的apn,然后再向串口发送AT指令将apn配置好,才能够实现拨号上网(APN是4G模块用来告知网关要访问哪种外部数据网络)。
  4. 通过ping命令多线程编程 同时监测以太网和WIFI的网络情况,以太网网络异常则切换到WIFI网络WIFI网络也异常则启动4G模块pppd拨号上网脚本,当以太网络恢复后则自动切换回以太网。

4G模块介绍

图标记2 为4G模块 图标记1 为sim卡槽(拨号上网)

输入图片说明 PPP(Point-to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的数据链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。其上有ip协议等网络层,下有串口等物理层。发送数据时, TCP/IP数据包经过PPP打包之后经过串口发送。接收数据时,从串口上来的数据经PPP解包之后上报给TCP/IP协议层。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。

程序的思维导图

输入图片说明

功能截图

注:wifi无连接则丢包率为100%所以不能用WiFi上网

输入图片说明 第一二段代码:多线程实时监控以太网 WIFI 网络
因为多线程并发执行,会竞争共享资源,为防止死锁,我在每个线程开始前都上了锁,实现线程互斥。 在第三段代码:我拔掉了网线,以太网断开,开始进行网络切换,注:此时没有连接wifi,所以WIFI网络丢包率为100%,则开始切换到拨号上网 输入图片说明 **通过查看网卡设备判断是否已经拨号上网access(“sys/class/net”, int mode)//网卡设备存在的话就会在这个路径下有文件 ** 输入图片说明

输入图片说明 **linux下编写的拨号脚本!!!

** 输入图片说明

项目总结

由于网关需要连接到网络服务器或至少是终端用户应用程序所在的云端。 因此,它需要稳定的互联网接入 。 网关通常具备以下一个或多个功能:以太网、Wi-Fi、蜂窝网络。它们被用作回程连接。更高级的网关(RAK室外网关系列)具有上述所有功能,并可在其中一个链路发生故障时选择接口故障转移,以提供稳定的连接。

git说明

输入图片说明 文件夹peers存放的是4G拨号上网脚本
文件夹include存放的是函数的头文件以及全局变量
文件夹lib存放的是./c文件用来生成动态库
文件夹main存放的是主函数可通过makefile编译生成可执行文件

空文件

简介

4G拨号上网 展开 收起
C 等 2 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/zhu-kaifa/4g_dial_up.git
git@gitee.com:zhu-kaifa/4g_dial_up.git
zhu-kaifa
4g_dial_up
4g_dial_up
master

搜索帮助