华为云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测试命令:

  1. AT+CPIN?
    +CPIN: READY //确保 SIM 卡就绪

  2. AT+CGSN? 查询 IMEI,每个模块唯一

  3. AT+CSQ(信号强度:数值越高,信号越强)
    +CSQ: 21,99 //确保模块能接收到信号

  4. AT+CFUN? (回复+CFUN: 1 确认模块正常工作模式。不是 1 则设置成 1)
    +CFUN: 1

  5. AT+CEREG?(查询驻网状态,1表示驻网成功,2/3,未注册或正在尝试搜索操作)
    +CEREG: 0,1

  6. AT+GTUSBMODE?(查询USB模式,31为PPP,32为ECM)
    +GTUSBMODE: 31

  7. AT+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模组)与北斗定位模组(中科微电子)数据解析相关推荐

  1. 华为云IoT智慧物流案例01 | 背景介绍与环境搭建

    华为云IoT智慧物流案例01 | 背景介绍与环境搭建 引言 第一章 背景介绍与案例开发及实现方案的步骤分析 1.1 背景介绍 1.2 智慧物流方案分析 1.3 方案开发想法及流程 1.4 小章总结 第 ...

  2. 华为云IoT智慧物流案例05 | QT应用开发

    华为云IoT智慧物流案例05 | QT应用开发 第一章 新建QT项目验证交叉编译环境 选项设置一览 新建QT项目进行验证(hello_qt) 第二章 学习编写QT智慧物流应用(基于阿正前辈已编译成功的 ...

  3. 华为云IoT智慧物流案例11 | 华为云FOTA升级广和通L610模组

    华为云IoT智慧物流案例11 | 华为云FOTA升级广和通L610模组 一. 创建华为云平台L610产品与设备 二.AT指令连接华为云IoT平台且测试 三.IoT平台配置FOTA升级 一. 创建华为云 ...

  4. 华为云IoT智慧物流案例10 | 广和通L610模组FOTA升级(服务端FileZilla Server客户端FileZilla)

    华为云IoT智慧物流案例10 | 广和通L610模组FOTA升级(服务端FileZilla Server客户端FileZilla) 第一章 使用FileZilla Server搭建FTP服务器 第二章 ...

  5. 华为云IoT智慧物流案例06 | 华为云设备创建与接入及MQTT.fx测试

    华为云IoT智慧物流案例06 | 华为云设备创建与接入及MQTT.fx测试 第一章 华为云设备创建与接入 第二章 MQTT.fx进行MQTT测试 第一章 华为云设备创建与接入 1.创建产品 2.自定义 ...

  6. 某大型化工企业基于华为云构建智慧物流平台

    新钛云服已为您服务986天 化工,作为一个特殊又直接关系社会生产.居民生活的行业,其对相关物流运输体系安全有着更高.更严格的要求. 如何实现从化工企业至终端用户的物流供应链全链条透明可视化,让&quo ...

  7. 广和通l610二次开发|广和通l610 CAT.1模组opencpu开发《三》阿里云物联网平台mqtt动态注册

    阿里云物联网平台动态注册 使用模组的IMEI作为设备的name,采用动态注册自动在案例云平台上注册设备 文章目录 阿里云物联网平台动态注册 参考文档 一.基本准备 二.平台产品创建 三.动态注册流程 ...

  8. 【云驻共创】华为云IoT数据分析流程实操

    文章目录 一.数据分析的发展 1.数据分析概念 1.1 数据分析的背景 1.2 数据分析的目的 1.3数据分析的定义 2.物联网数据分析概念 3.华为云IoT数据分析优势 二.华为云IoT数据分析服务 ...

  9. 华为云IoT亮相厦门国际物联网博览会,智简联接助力行业智能升级

    12月11日,第六届中国国际物联网博览会(IoTF)在厦门拉开序幕.本届博览会以"物联中国,产业融合"为主题,华为云IoT携四大基础能力亮相,为企业带来了全场景的极简上云体验,助力 ...

最新文章

  1. 腾讯Bugly异常崩溃SDK接入
  2. PHP5+apache_2.0.50+MySQL4.0+SQLServer安装方法
  3. Centos7设置网络
  4. 求数组的最大子数组和最大子数组的和
  5. linux ubuntu 安装 nodejs npm
  6. 有糖接入云信,实现完整的虚拟社区搭建和运营
  7. rgb值转换成16进制
  8. 函数返回指针类型(strchr函数)
  9. OpenCV--矩阵操作总结
  10. linux按照mysql为何如此简单_手把手教你在Linux下安装MySQL
  11. 《统计学习方法》—— 信息增益、决策树算法(ID3,C4.5)以及python3实现
  12. springboot Hello World探究
  13. parallel(parallelStream)并发问题
  14. C/C++ 知识点---链表操作
  15. 微信小程序-image(图片)
  16. 照片放大模糊怎么变清晰?
  17. ansi、unico、utf8
  18. sqli-labs(38-41)
  19. 用wget命令整站下载
  20. 软件开发中什么是CI/CD

热门文章

  1. 微服务架构下的软件测试实践
  2. 使用libxl库读取excel文件
  3. Jquery考试面试题(一)
  4. AdminLTE Button小结
  5. Python赋值语句的多种形式
  6. Linux计划任务要怎么弄?
  7. 007-寄存器EAX与AX,AH,AL关系
  8. 常用的端口号有哪些?
  9. RISC-V SiFiveU64内核——L2 Prefetcher预期器
  10. SQL之substrate()函数用法