NB-IOT BC28连接阿里云服务器发数据。

2023-10-17 15:59

本文主要是介绍NB-IOT BC28连接阿里云服务器发数据。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

入坑俩月,收获就这么点,今天写写吧就当是笔记了。我的是电信卡。大家买到开发板后,一定要反复仔细读官方手册。

		第一步:BC28硬件板准备

准备一条 USB 转 RS232 的线接到板子上,注意要将板子上的 232_VCC 的跳线帽要跳接 上。这样是为了让 RS232 能够正常工作。注意一定要接,不然 RS232 是不工作的!
NB 卡可以在电信运营商 进行购买或者其他渠道获取。但是一定要注意所在地区是否已经有 NB 网络的覆盖。否则即 便有卡,也没法进行实际调试使用。移动的 NB 用普通的手机卡物联网都是可以的。电信的 必须是专用的。
打开提供的工具软件 QNavigator_NB-IoT_V1.0 来进行测试。下图就是我们已经插入 SIM 卡并且能够正常工作的。这里是我往阿里云发UDP数据
打开QN软件后,设置端口(com3)、Connect to module。这里会出很多问题,如果顺利的话,你的模块信息还有卡状态都会出现,你也可以单独点击下面的Module information和Registration information。当然左边的信息都是可以通过AT指令查询到的,自己到AT指令手册上去找吧

       	 第二步:电信定向 IP 发数据 UDP

对于定向发 IP,就是用户可以任意发数据到公网服务器端,目前电信对于 IP 还是存在一 定的限制。所以这里的定向 IP 如果用户有自己的卡并绑定了对应的公网服务器即可使用。 对于移动联通目前并没有相关的限制,可以任意发到公网 IP。电信对 IP 的限制不光是 UDP 也会对 TCP 端发送进行限制。
我们要连接服务器,需要首先设置 APN。那么这里的 APN 就是需要连接 到华为的地址上来。所以首先第一步先去激活 PDP,让模块具备发数据的基础
大家注意看我的右上角
通过调节成功之后呢,图片上会出现模块注册到服务器所分配的 IP 地址,这个就是和调试 2G 模块是一个道理。所以熟悉 2G 模块, 再来调试 NB-IOT 其实并没那么复杂。

这是阿里云的IP地址
在这里设置阿里云的IP地址和 端口号。 端口号这里需要大家在服务器上打开一个UDP端口,并设置开放状态,具体大家也是去看阿里云的手册=。=这里我已经在阿里云上部署了一个程序,在文章的最后分享给大家,当然这类转发程序网上有很多,这个并不是很好。

当然 UDP 是无连接模式。如果你服务器 不存在或者有问题,他也会显示连接 OK 的,既然无需连接那么建立一个UDP的通话很简单: 1. Create a socket 2.Send a message 反正我不管他连没连上,我就往这个IP地址发消息就是了,剩下的我就不管了,类似于写信。
下面俩指令我没用到
大家注意这里发送的都是十六进制的数据,并且我在测试的时候全部使用指令来发送,左边的Send不知为何不管用,还有一点我的AT+NSOST=1, 第一个<> 里不一定非得是1 0,1,2都可以的。

  第三步:数据在阿里云上显示

在阿里云上部署如下程序。

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
#include<errno.h>
#include<string.h>
#include<stdlib.h>

#define SERV_PORT 3001

int main()
{
int sock_fd;
int recv_num;
int send_num;
int client_len;
char recv_buf[20];
struct sockaddr_in addr_serv;
struct sockaddr_in addr_client;
sock_fd = socket(AF_INET,SOCK_DGRAM,0);
if(sock_fd < 0){
perror(“socket”);
exit(1);
}else{

printf(“sock successful\n”);
}
memset(&addr_serv,0,sizeof(struct sockaddr_in));
addr_serv.sin_family = AF_INET;
addr_serv.sin_port = htons(SERV_PORT);
addr_serv.sin_addr.s_addr = htonl(INADDR_ANY);
client_len = sizeof(struct sockaddr_in);

if(bind(sock_fd,(struct sockaddr *)&addr_serv,sizeof(struct sockaddr_in))<0 ){
perror(“bind”);
exit(1);
}else{

printf(“bind success\n”);
}
while(1){
printf(“begin recv:\n”);
recv_num = recvfrom(sock_fd,recv_buf,sizeof(recv_buf),0,(struct sockaddr *)&addr_client,&client_len);
if(recv_num < 0){
printf(“bad\n”);
perror(“again recvfrom”);
exit(1);
}else{
recv_buf[recv_num]=’\0’;
printf(“recv success:%s\n”,recv_buf);
}
printf(“begin send:\n”);
send_num = sendto(sock_fd,recv_buf,recv_num,0,(struct sockaddr *)&addr_client,client_len);
if(send_num < 0){
perror(“sendto”);
exit(1);
}else{
printf(“send successful\n”);
}
}
close(sock_fd);
return 0;
}

运行后是这样:在这里插入图片描述
收到数据是这样:
在这里插入图片描述

这篇关于NB-IOT BC28连接阿里云服务器发数据。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/226445

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi