华为云IoT智慧物流案例04 | 4G网卡拨号(广和通L610-CAT.1模组)与北斗定位模组(中科微电子)数据解析
华为云IoT智慧物流案例04 | 4G网卡拨号(广和通L610-CAT.1模组)与北斗定位模组(中科微电子)数据解析
- 回顾
- 第一章 广和通L610-CAT.1模组调测和拨号脚本编写并验证网络
- 第二章 北斗定位模组(中科微电子)数据解析
回顾
衔接上个章节,稍微调整代码,令1个IIC接口同时接入2个设备并获取数据。
程序修改
//作者:实柏
//日期:2021-6-30/************************************************************/
//包含头文件
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/ioctl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<sys/select.h>
#include<sys/time.h>
#include<errno.h>
//宏定义#define SHT30_Address 0x44 //1000100
#define BH1750_Address 0x23 //0100011
#define I2C_RETRIES 0x0701
#define I2C_TIMEOUT 0x0702
#define I2C_SLAVE 0x0703 //IIC从器件的地址设置
#define I2C_BUS_MODE 0x0780typedef unsigned char uint8;
int fd = -1;//函数声明
static uint8 dev_Init(void);
static uint8 BH1750_IIC(void);
static uint8 SHT30_IIC(void);
static uint8 BH1750_Dat_To_Lux(uint8* buf);//
static uint8 dev_Init(void)
{fd = open("/dev/i2c-0", O_RDWR); // open file and enable read and writeif (fd < 0){perror("Can't open /dev/BH1750 \n"); // open i2c dev file failexit(1);}printf("open /dev/i2c-0 success !\n"); // open i2c dev file succes}static uint8 BH1750_IIC(void)
{if (ioctl(fd, I2C_SLAVE,BH1750_Address) < 0){ //set i2c addressprintf("fail to set i2c device slave address!\n");close(fd);return - 1;}printf("set slave address to 0x%x success!\n", BH1750_Address);return (1);
}static uint8 SHT30_IIC(void)
{if (ioctl(fd, I2C_SLAVE,SHT30_Address) < 0){ //set i2c addressprintf("fail to set i2c device slave address!\n");close(fd);return - 1;}printf("set slave address to 0x%x success!\n", SHT30_Address);return (1);
}static uint8 BH1750_Dat_To_Lux(uint8* buf)
{uint8 lux = 0;lux = buf[0];lux <<=8;lux += buf[1];lux = (int)(lux / 1.2);
}// main
int main(int argc, char * argv[])
{unsigned char buf[8] = {0};dev_Init();usleep(1000 * 100);uint8 light = 0;float temperature=0;float humidity=0;while (1){BH1750_IIC();usleep(1000 * 100);buf[0] = 0x20;if ( write(fd, buf, 1) != 1 ) {perror("faile to write config.\n");return -1;}buf[0] = 0;if (read(fd, buf, 2) != 2 ) {perror("faile to read back configure data.\n");return -1;} printf("BH1750 0x%x 0x%x \n", buf[0], buf[1] );light = BH1750_Dat_To_Lux(buf);printf("light: %5d lux\r\n",light);usleep(1000 * 200);SHT30_IIC();usleep(1000 * 100);buf[0] = 0x2C;buf[1] = 0x0D;if ( write(fd, buf, 2) != 2 ) {perror("faile to write config.\n");return -1;}buf[0] = 0;buf[1] = 0;if (read(fd, buf, 6) != 6 ) {perror("faile to read back configure data.\n");return -1;} printf("SHT30---->: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x \n", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5] );temperature = ((float)((buf[0]<<8)+buf[1]))*175/65535-45;humidity = ((float)((buf[3]<<8)+buf[4]))*100/65535;printf("temperature:%f humidity:%f\r\n",temperature,humidity);usleep(1000 * 200);}close(fd);
}
编译运行
第一章 广和通L610-CAT.1模组调测和拨号脚本编写并验证网络
1.连接广和通L610-CAT.1模组,背面插入SIM物联网卡(缺口朝外)
2.AT指令测试L610模组,将右上角AT开关拨至左边与PC通信
AT测试命令:
AT+CPIN?
+CPIN: READY //确保 SIM 卡就绪AT+CGSN? 查询 IMEI,每个模块唯一
AT+CSQ(信号强度:数值越高,信号越强)
+CSQ: 21,99 //确保模块能接收到信号AT+CFUN? (回复+CFUN: 1 确认模块正常工作模式。不是 1 则设置成 1)
+CFUN: 1AT+CEREG?(查询驻网状态,1表示驻网成功,2/3,未注册或正在尝试搜索操作)
+CEREG: 0,1AT+GTUSBMODE?(查询USB模式,31为PPP,32为ECM)
+GTUSBMODE: 31AT+MIPCALL? (查询模块是否启用自动拨号功能,0未启用,1启用)
+MIPCALL: 0
3.1开发板lsusb
命令对USB / UART 枚举确认vid/pid
(AT开关拨回右侧)
3.2执行加载驱动命令sudo modprobe option
及lsusb 和 ls /dev/ttyUSB*
命令,查看USB串口驱动是否加载成功
4.PPP脚本编写拨号实现网络功能
4.1 检查终端是否安装 pppd
(ppp拨号驱动)
命令:pppd -h
4.2 pppd连接脚本
存放路径:/etc/ppp/peers
4.3 连接建立规则脚本
存放路径:/etc/ppp/peers
4.4 PPP拨号
在终端输入命令:pppd call 连接脚本名称
我这里是:pppd call L610_cat1
获取IP地址:pppd call L610_cat1 &
4.5 ifconfig
查询ppp网络接口是否存在
ping
一下公网地址验证网络功能
ping www.baidu.com -I ppp0
(-I用来指定使用的网络设备)
发现ping
不通且会弹出这样一个问题(不能访问域名,DNS的问题)
修改配置文件:vi /etc/resolv.conf
添加语句:nameserver 114.114.114.114
source /etc/resolv.conf
再度ping
华为云MQTT服务器地址
ping iot-mqtts.cn-north-4.myhuaweicloud.com
4G网络成功ping通公网
4.6 PPP 拨号参考流程图
第二章 北斗定位模组(中科微电子)数据解析
1.连接北斗定位模组(串口通信方式,PPS引脚(时间脉冲信号)可不接),要接上陶瓷天线
连接后红色LED发光提示
2.查看模组发送的数据(模组连接后会自动发送数据)
北斗模组是接到E53模块的串口部分
通过原理图我们得知连接的是串口5
查询设备树文件我们知道其在Linux设备中为ttySTM3
在终端进入
/dev目录
查找对应设备并查看其发送的数据命令:
cat ttySTM3
可以看到北斗定位模组一直在发送各种前缀的数据信息
3.查询手册将上报的数据通过程序(抓取关键字符串的算法)获取准确的定位信息(具体程序开发待后续开发QT应用)
手册:CASIC 多模卫星导航接收机协议规范
RMC头标识代表含义
总结:广和通L610-CAT.1模组提供低功耗4G网络与华为云进行通讯,作为物联网网络的桥梁。
北斗定位模组作为数据采集终端之一,可提供设备的位置信息。
这篇文章耽搁了许久因为我的模组硬件出了点问题,两位技术指导也是线上软件硬件和我一同排查问题(学到了排查的经验,阿正前辈直接把他的L610模块寄给我进行测试,流泪猫猫头.jpg),很感谢他们的热心帮助。
技术指导:
华为云社区与华为云学院:https://edu.huaweicloud.com/
人员:阿正前辈
广和通技术指导 王海亮大佬
华为云IoT智慧物流案例04 | 4G网卡拨号(广和通L610-CAT.1模组)与北斗定位模组(中科微电子)数据解析相关推荐
- 华为云IoT智慧物流案例01 | 背景介绍与环境搭建
华为云IoT智慧物流案例01 | 背景介绍与环境搭建 引言 第一章 背景介绍与案例开发及实现方案的步骤分析 1.1 背景介绍 1.2 智慧物流方案分析 1.3 方案开发想法及流程 1.4 小章总结 第 ...
- 华为云IoT智慧物流案例05 | QT应用开发
华为云IoT智慧物流案例05 | QT应用开发 第一章 新建QT项目验证交叉编译环境 选项设置一览 新建QT项目进行验证(hello_qt) 第二章 学习编写QT智慧物流应用(基于阿正前辈已编译成功的 ...
- 华为云IoT智慧物流案例11 | 华为云FOTA升级广和通L610模组
华为云IoT智慧物流案例11 | 华为云FOTA升级广和通L610模组 一. 创建华为云平台L610产品与设备 二.AT指令连接华为云IoT平台且测试 三.IoT平台配置FOTA升级 一. 创建华为云 ...
- 华为云IoT智慧物流案例10 | 广和通L610模组FOTA升级(服务端FileZilla Server客户端FileZilla)
华为云IoT智慧物流案例10 | 广和通L610模组FOTA升级(服务端FileZilla Server客户端FileZilla) 第一章 使用FileZilla Server搭建FTP服务器 第二章 ...
- 华为云IoT智慧物流案例06 | 华为云设备创建与接入及MQTT.fx测试
华为云IoT智慧物流案例06 | 华为云设备创建与接入及MQTT.fx测试 第一章 华为云设备创建与接入 第二章 MQTT.fx进行MQTT测试 第一章 华为云设备创建与接入 1.创建产品 2.自定义 ...
- 某大型化工企业基于华为云构建智慧物流平台
新钛云服已为您服务986天 化工,作为一个特殊又直接关系社会生产.居民生活的行业,其对相关物流运输体系安全有着更高.更严格的要求. 如何实现从化工企业至终端用户的物流供应链全链条透明可视化,让&quo ...
- 广和通l610二次开发|广和通l610 CAT.1模组opencpu开发《三》阿里云物联网平台mqtt动态注册
阿里云物联网平台动态注册 使用模组的IMEI作为设备的name,采用动态注册自动在案例云平台上注册设备 文章目录 阿里云物联网平台动态注册 参考文档 一.基本准备 二.平台产品创建 三.动态注册流程 ...
- 【云驻共创】华为云IoT数据分析流程实操
文章目录 一.数据分析的发展 1.数据分析概念 1.1 数据分析的背景 1.2 数据分析的目的 1.3数据分析的定义 2.物联网数据分析概念 3.华为云IoT数据分析优势 二.华为云IoT数据分析服务 ...
- 华为云IoT亮相厦门国际物联网博览会,智简联接助力行业智能升级
12月11日,第六届中国国际物联网博览会(IoTF)在厦门拉开序幕.本届博览会以"物联中国,产业融合"为主题,华为云IoT携四大基础能力亮相,为企业带来了全场景的极简上云体验,助力 ...
最新文章
- 腾讯Bugly异常崩溃SDK接入
- PHP5+apache_2.0.50+MySQL4.0+SQLServer安装方法
- Centos7设置网络
- 求数组的最大子数组和最大子数组的和
- linux ubuntu 安装 nodejs npm
- 有糖接入云信,实现完整的虚拟社区搭建和运营
- rgb值转换成16进制
- 函数返回指针类型(strchr函数)
- OpenCV--矩阵操作总结
- linux按照mysql为何如此简单_手把手教你在Linux下安装MySQL
- 《统计学习方法》—— 信息增益、决策树算法(ID3,C4.5)以及python3实现
- springboot Hello World探究
- parallel(parallelStream)并发问题
- C/C++ 知识点---链表操作
- 微信小程序-image(图片)
- 照片放大模糊怎么变清晰?
- ansi、unico、utf8
- sqli-labs(38-41)
- 用wget命令整站下载
- 软件开发中什么是CI/CD