目录
一、AT指令
二、串口透明传输
三、搭建自己的服务器
一、AT指令
•AT命令集是由拨号调制解调器(MODEM)的发明者贺氏公司(Hayes)为了控制Modem发明的控制协议。
•
•AT是Attention的缩写,协议本身采用文本.每个命令均以AT打头,因此得名
•
•主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM 研制了一整套AT指令,用于控制手机GSM模块
NB和GSM很像所以都可以使用AT指令,现在3G4G5G等也都是AT指令
随后的GPRS控制,3G模块,以及工业上常用的PDU,均采用AT命令集来控制
AT的优点:
简单易懂
标准串口来收发AT命令
AT指令都以”AT”开头,以(即\r,回车符)结束
如果AT指令执行成功,“OK”字符串返回;
如果AT 指令语法错误或AT 指令执行失败,“ERROR”字符串返回。
AT命令解释:检测Module与串口是否连通,能否接收AT命令;
命令格式:AT
命令返回:OK (与串口通信正常)(无返回,与串口通信未连通)
初始化AT指令:
AT+CFUN=0关闭射频功能AT+CFUN=1开启射频功能AT+NBAND?查询模组配置频段AT+NBAND=5配置模组为电信频段AT+CGSN=1 查询IMEI号AT+CGSN=1,201612091450303 设置IMEI号AT+NRB 软重启AT+CIMI 查询SIM卡信息AT+CMEE=1 开启错误提示AT+CGDCONT=1,”IP”,”ctnet”设置APNAT+CSQ 获取信号质量
连接网络指令:
ØAT+CSCON=1 设置基站连接通知ØAT+CEREG=2 设置连接核心网通知ØAT+NNMI=1 开启下行数据通知ØAT+CGATT=1 自动搜网ØAT+NUESTATS 查询 UE 状态ØAT+CGPADDR 查询核心网分配的 ip 地址
数据收发指令
TCP数据收发
ØAT+NSOCR=STREAM,6,localport 创建 tcp socketØAT+NSOCO=1 连接服务器ØAT+NSOSD=1 发送数据ØAT+NSOCL=1 关闭连接
二、串口透明传输
Ø为了便于我们快速掌握AT指令原理ØMCU充当透明传输,PC机直接与NB-IoT模组直接通讯
void USART1_IRQHandler(void)
{/* USER CODE BEGIN USART1_IRQn 0 */if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_RXNE)==SET){while(USART2->ISR & 0x40 == 0);USART2->TDR = USART1->RDR;}/* USER CODE END USART1_IRQn 0 */HAL_UART_IRQHandler(&huart1);/* USER CODE BEGIN USART1_IRQn 1 *//* USER CODE END USART1_IRQn 1 */
}/*** @brief This function handles USART2 global interrupt.*/
void USART2_IRQHandler(void)
{/* USER CODE BEGIN USART2_IRQn 0 */if(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE)==SET){while(USART1->ISR & 0x40 == 0);USART1->TDR = USART2->RDR;} /* USER CODE END USART2_IRQn 0 */HAL_UART_IRQHandler(&huart2);/* USER CODE BEGIN USART2_IRQn 1 *//* USER CODE END USART2_IRQn 1 */
}
int fputc(int ch,FILE *f){while((USART1->ISR & 0X40)==0);USART1->TDR = (uint8_t)ch;return ch;
} /* USER CODE END 0 *//*** @brief The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_ADC_Init();MX_SPI1_Init();MX_USART1_UART_Init();MX_USART2_UART_Init();/* USER CODE BEGIN 2 */printf("Hardware Init finished\n");__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);HAL_UART_Receive_IT(&huart1,&Usart1Rx,1);__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);HAL_UART_Receive_IT(&huart2,&Usart2Rx,1);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
三、搭建自己的服务器
•什么是 TCP/IP?•TCP/IP 是供已连接因特网的计算机进行通信的通信协议•TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准•TCP (传输控制协议) -用于从应用程序到网络的数据传输控制•UDP 用户数据报协议
NB模块和PC都属于内网设备,所以无法直接通信需要借助服务器
内外网结构
实现内网穿透
•官网主页•会员登陆•使用说明•https://www.ngrok.cc/_book/
GGl咯居然付费了,那就算了吧哈哈。
看自己买的NB模块里面应该有厂家为我们准备的服务器