学习笔记:百问网 7天物联网智能家居实战训练营
总结
学完课程后感觉挺不错的,但自己对HAL库开发不够熟悉,代码用的很粗糙
只看了基础课,等学完库函数/寄存器版本,了解RTOS后再去学提高班吧
基础班的内容
上手思路_stm32CubeMX创建工程【7天物联网 DAY2笔记】
完善后的代码
利用串口输入WIFI的账号密码
上节的代码是直接设置了WIFI的账号密码
在手机上我们可以很轻松的完成更换连接的wifi和密码,但是在STM32F103_MINI开发板上,因为外设有限,所以选择使用串口输入,用计算机来输入WIFI的账号密码,并通过串口传输到开发板上。
// 0.检测是否更新WIFI信息
Key_Update_WIFI((char *)wifi_data, 2000);
// 1.启动串口2接收(中断方式)
USART2_StartRx();
// 2.串口2发送AT指令,启动TCP服务
//USART2_Transmit(tx_data, sizeof(tx_data), 500);
ESP8266_SendCommand("AT+RST", "OK", 500);
HAL_Delay(1000);
ESP8266_SendCommand("AT+CWMODE=1", "OK", 500);
ESP8266_SendCommand((char *)wifi_data, "OK", 5000);
//ESP8266_SendCommand("AT+CWJAP=\"100ask\",\"100ask100ask\"", "OK", 5000);
//ESP8266_SendCommand("AT+CIPMUX=1", "OK", 500);
//ESP8266_SendCommand("AT+CIPSERVER=1,9999", "OK", 500);
ESP8266_SendCommand("AT+CIPSTART=\"UDP\",\"192.168.1.1\",9999,9999,2", "OK", 500);
ESP8266_SendCommand("AT+CIFSR", "OK", 500);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
// 3.1 按键按下,发送门铃信号
if (Key_GetFlag() == 1)
{
//ESP8266_Send_TCP("{\"data\":\"doorbell\",\"status\":\"1\"}");
ESP8266_Send_UDP("{\"data\":\"doorbell\",\"status\":\"1\"}");
}
// 3.2 收到数据,控制灯
if (USART2_Receive(rx_data)) //接收到数据
{
if (strstr((char *)rx_data, "\"dev\":\"led\",\"status\":\"0\""))
{
printf("led off\n\r");
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
USART2_ClearBuf();
memset(rx_data, 0, 200);
}
else if (strstr((char *)rx_data, "\"dev\":\"led\",\"status\":\"1\""))
{
printf("led on\n\r");
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
USART2_ClearBuf();
memset(rx_data, 0, 200);
}
}
}
获取WIFI账号密码:
while(ch != 'r')
:判断是否输入完成,当我们输入完成时,默认是通过按下键盘上的回车键来结束本次输入,Windows的回车键代表的数据是\r\n
,其中\r是回车,\n代表换行,因此我们可以根据获取的数据中是否有\r来判断。
getchar()
:用于从串口获取数据,每次获取一个字符。
if(ch > ' ')
:通过判断是否大于空格,除去非法输入。
reason:我们输入的内容是以ASCII码的形式来表示的,并且不止是我们输入的A、B、C等是ASCII码表示,而且像方向键,回车键等一些控制字符,也是如此,而在ASCII码表上,空格之前的字符都是一些控制字符,大于空格的则是我们常见的数据字符,因此我们使用这个方法来除去非法输入。
printf("%c",ch)
:输入回显。
笔记参考:百问网 物联网智能家居 DAY7的学习