IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32通过NB(BC35-G)连接华为云IOT -> 正文阅读

[嵌入式]STM32通过NB(BC35-G)连接华为云IOT

第一步:注册并绑定NB

注册账号之类的直接省略......直接从主题说起!
1.在自己已经建好的项目里面绑定NB模组;

第一步
在这里插入图片描述
== *设备标识必须是NB模块的IMEI号(IMEI在芯片的丝印上)==

第二步 写代码连接华为云平台

说明:NB初始化,一定要等到STM32收到来自模块的指令“+QLWEVTIND:3”之后,再发送有关指令。

nb.c
    /**
  *@brief  NB初始化
  *@param  none
  *@retval none
  *@note   none
  */
void NB101_inital(void)
{
		Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"+QLWEVTIND:3");
		while(Strx==NULL)
		{
			Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"+QLWEVTIND:3");
		}
		clear_buff();
		Uart_SendStr("AT\r\n");
		HAL_Delay(50);
		Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"OK");
		while(Strx==NULL)
		{
			Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"OK");
		}
		clear_buff();
		Uart_SendStr("AT+CFUN?\r\n");
		HAL_Delay(50);
		Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"+CFUN:1");
		while(Strx==NULL)
		{
			Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"+CFUN:1");
		}
		clear_buff();
		Uart_SendStr("AT+CEREG?\r\n");
		HAL_Delay(50);
		Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"+CEREG:0,1");
		while(Strx==NULL)
		{
			Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"+CEREG:0,1");
		}
		clear_buff();
		Uart_SendStr("AT+CGATT?\r\n");
		HAL_Delay(50);
		Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"+CGATT:1");
		while(Strx==NULL)
		{
			Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"+CGATT:1");
		}
		clear_buff();
		Uart_SendStr("AT+NCDP=xxxxxxxxxxxxx\r\n");//连接CoAP进行通信
		HAL_Delay(50);
		Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"OK");
		while(Strx==NULL)
		{
			Strx=strstr((const char*)Usart1_rx_buffer,(const char *)"OK");
		}
		clear_buff();
}

AT常用指令集

指令:AT
功能:测试AT指令功能是否正常
示例

AT 
OK

指令:AT+CSQ
功能:返回从 UE 接收到的信号强度指示 和信道误码率 ,其中第一个值rssi应当在0-31之间,如果为99则表示信号无法检测,第二个参数ber因为模组当前不支持,所以始终为99。

+CSQ:26,99
OK

指令:AT+CEREG?
功能:查询当前 EPS 网络注册状态,该指令返回的第一个参数为0则表示禁止网络注册URC,第二个参数表示网络注册状态,1表示已注册本地网,5表示已注册漫游网络,其余值则表示注册失败。
示例:

+CEREG:0,1

指令:AT+CGATT?
功能:该命令用于查询当前是否将 UE 附着于 PS 域,返回值为1则表示已附着,即网络激活成功。
示例:

+CGATT:1
OK

指令:AT+CGPADDR
功能:该命令用于查询模组当前的ip地址。
示例:

+CGPADDR:0,10.44.108.10
OK

。。。。。。

第三步 发送数据

说明:每个固定时间循环发送(根据自己的实际情况而定)

    /*
	  *@brief  发送数据
	  *@param  none
	  *@retval none
	  *@note   none
	 */
void Send_maincontrol_Data(void)
{
   char Send_data[75]={0};
	Send_data[0]='A';
	Send_data[1]='T';
	Send_data[2]='+';
	Send_data[3]='N';
	Send_data[4]='M';
	Send_data[5]='G';
	Send_data[6]='S';
	Send_data[7]='=';
	Send_data[8]='3';
	Send_data[9]='1';
	Send_data[10]=',';
	ASCII_To_Char(&Send_data[11],BoatStatus_Val.func=0,1);                      //标志位
	ASCII_To_Char(&Send_data[13],(BoatStatus_Val.longitude_now*10000000),4);    //经度
	ASCII_To_Char(&Send_data[21],(BoatStatus_Val.latitude_now*10000000),4);     //纬度
    ASCII_To_Char(&Send_data[29],BoatStatus_Val.elect,1);                       //电量
	#ifdef Stytle2
	ASCII_To_Char(&Send_data[31],BoatStatus_Val.systle=2,1);                    //类型
	ASCII_To_Char(&Send_data[33],(int)(WaterSensor_Val.data_1*10),2);           //数据1--温度
	ASCII_To_Char(&Send_data[37],(int)(WaterSensor_Val.data_2*10),2);           //数据2--深度
	ASCII_To_Char(&Send_data[41],(int)(WaterSensor_Val.data_3*100),2);          //数据3
	ASCII_To_Char(&Send_data[45],(int)(WaterSensor_Val.data_4*100),2);          //数据4
	ASCII_To_Char(&Send_data[49],(int)(WaterSensor_Val.data_5*100),2);          //数据5
	ASCII_To_Char(&Send_data[53],(int)(WaterSensor_Val.data_6*100),2);          //数据6
	ASCII_To_Char(&Send_data[57],(int)(WaterSensor_Val.data_7*100),2);          //数据7
	ASCII_To_Char(&Send_data[61],(int)(WaterSensor_Val.data_8*100),2);          //数据8 
	ASCII_To_Char(&Send_data[65],(int)(WaterSensor_Val.data_9*1000),2);         //数据9
	ASCII_To_Char(&Send_data[69],(int)(WaterSensor_Val.data_10*1),2);           //数据10--电流
	#endif
	#ifdef Stytle3 
    ASCII_To_Char(&Send_data[31],BoatStatus_Val.systle=3,1);                    //类型
	ASCII_To_Char(&Send_data[33],(int)(WaterSensor_Val.data_1*10),2);           //数据1--水温
	ASCII_To_Char(&Send_data[37],(int)(WaterSensor_Val.data_2*10),2);           //数据2--浊度
	ASCII_To_Char(&Send_data[41],(int)(WaterSensor_Val.data_3*1),2);            //数据3--PH
	ASCII_To_Char(&Send_data[45],(int)(WaterSensor_Val.data_4*100),2);          //数据4--船速
	ASCII_To_Char(&Send_data[49],(int)(WaterSensor_Val.data_5*1),2);            //数据5--氨氮
	ASCII_To_Char(&Send_data[53],(int)(WaterSensor_Val.data_6*1),2);            //数据6--溶解氧
	ASCII_To_Char(&Send_data[57],(int)(WaterSensor_Val.data_7*100),2);          //数据7--化学需氧量
	ASCII_To_Char(&Send_data[61],(int)(WaterSensor_Val.data_8*1),2);            //数据8--电导率
	ASCII_To_Char(&Send_data[65],(int)(WaterSensor_Val.data_9*1000),2);         //数据9--信号质量
	ASCII_To_Char(&Send_data[69],(int)(WaterSensor_Val.data_10*1),2);           //数据10--电流
	#endif	
	Send_data[73]='\r';
	Send_data[74]='\n';
	//上传到NB
	HAL_UART_Transmit(&huart1,(uint8_t*)Send_data,sizeof(Send_data),0xffff); 
}

完结

华为云平台那边只识别字符,所以这边用了一个ASCII_To_Char()函数。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-27 12:59:08  更:2021-10-27 13:00:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:47:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码