?
第一章開發(fā)環(huán)境:
主控 | STM32F103C8T6 |
WIFI模塊 | ESP01S |
開發(fā)語言 | C |
開發(fā)編譯器· | KEIL |
組網(wǎng)方式 | WIFI |
服務(wù)器協(xié)議 | MQTT |
本章要點(diǎn):
- ESP01S的AT指令配網(wǎng)以及服務(wù)器連接
- STM32與ESP01S的usart協(xié)議通信
- 斷網(wǎng)重連以及斷服務(wù)器重連
- STM32向服務(wù)器端口發(fā)送對(duì)應(yīng)指令
抽象理解:
1、ESP01S1的AT指令配網(wǎng)
????????ESP01S的配網(wǎng)方式為AT指令集,通過識(shí)別對(duì)對(duì)應(yīng)的AT指令實(shí)現(xiàn)對(duì)應(yīng)的操作。
具體ESP01S AT指令集合參考以下文章(84條消息) STM32+ESP-01s+EMQX實(shí)現(xiàn)單片機(jī)MQTT協(xié)議傳輸數(shù)據(jù)上云(一)ESP-01s的AP-MQTT bin文件安裝以及指令使用_esp01 mqtt_JASON丶LI的博客-CSDNA
AT指令總合AT 命令集 - ESP32 - — ESP-AT 用戶指南 latest 文檔 (espressif.com)
2、STM32與ESP01S通信
? ? ? ? STM32本身是不具備連接wifi的能力的,它主要是通過與ESP01S進(jìn)行USART通信,將上述的AT指令集傳輸?shù)紼SP01S,以此來觸發(fā)其實(shí)現(xiàn)對(duì)應(yīng)的操作。
3、重連
斷網(wǎng)重連
AT+CWRECONNCFG=3,100
//設(shè)置wifi自動(dòng)重連,間隔為3s一次,持續(xù)100次
斷服務(wù)器重連
AT+MQTTCONN=0,"127.0.0.1",1883,1
4、指令發(fā)送
printf("AT+RESTODE\r\n"); //模塊初始化
delay_ms(5000);
printf("AT+CWMODE=1\r\n"); //設(shè)置wifi模式為Station模式
delay_ms(5000);
printf("AT+CWJAP=\"Xiaomi_2\",\"84961994\"\r\n"); //連接wifi
delay_ms(5000);
printf("AT+CWRECONNCFG=3,100\r\n"); //設(shè)置wifi自動(dòng)重連,間隔為3s一次,持續(xù)100次
delay_ms(5000);
printf("AT+MQTTUSERCFG=0,1,\"ESP01SHomeAssistant\",\"admin\",\"84961994\",0,0,\"\"\r\n"); //設(shè)置用戶屬性
delay_ms(5000);
printf("AT+MQTTCONN=0,\"43.139.72.253\",1883,1\r\n"); //連接mqtt服務(wù)器
delay_ms(5000);
printf("AT+MQTTSUB=0,\"TOESP01S\",0\r\n"); //訂閱TOESP01S
delay_ms(5000);
記住這里的指令每條之間都要delay5s左右,因?yàn)樾枰o予其足夠的時(shí)間處理上一條指令。
代碼
這里代碼我就只給出主函數(shù)以及對(duì)應(yīng)的輸出指令函數(shù)了,應(yīng)該我的代碼是基于FreeRTOS系統(tǒng)寫的,要是不太懂的話可以到我之前的博客去簡單入門一下(而且printf重定義也不放在這里面了)
main.c
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "FreeRTOS.h"
#include "task.h"
#include "sys.h"
#include "Wifi.h"
/***************
Jason:
STM32F103C8T6
FreeRTOS
2023/7/6
***************/
#define START_TASK_PRIO 1
#define START_STK_SIZE 128
TaskHandle_t StartTask_Handler;
void start_task(void *pvParameters);
#define Send_TASK_PRIO 2
#define Send_STK_SIZE 50
TaskHandle_t SendTask_Handler;
void Send_task(void *pvParameters);
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
delay_init();
uart_init(115200);
Wifi_Init();
xTaskCreate((TaskFunction_t )start_task,
(const char* )"start_task",
(uint16_t )START_STK_SIZE,
(void* )NULL,
(UBaseType_t )START_TASK_PRIO,
(TaskHandle_t* )&StartTask_Handler);
vTaskStartScheduler();
}
void start_task(void *pvParameters)
{
taskENTER_CRITICAL();
xTaskCreate((TaskFunction_t )Send_task,
(const char* )"Send_task",
(uint16_t )Send_STK_SIZE,
(void* )NULL,
(UBaseType_t )SendTask_Handler,
(TaskHandle_t* )&SendTask_Handler);
vTaskDelete(StartTask_Handler);
taskEXIT_CRITICAL();
}
void Send_task(void *pvParameters)
{
printf("AT+MQTTPUB=0,\"FROMESP01S\",\"ESP01S-OK\",0,0");//發(fā)送對(duì)應(yīng)指令
}
Wifi.c
#include "usart.h"
#include "FreeRTOS.h"
#include "task.h"
#include "Wifi.h"
#include "delay.h"
void Wifi_Init(void)
{
printf("AT+RESTODE\r\n"); //模塊初始化
delay_ms(5000);
printf("AT+CWMODE=1\r\n"); //設(shè)置wifi模式為Station模式
delay_ms(5000);
printf("AT+CWJAP=\"Xiaomi_2\",\"84961994\"\r\n"); //連接wifi
delay_ms(5000);
printf("AT+CWRECONNCFG=3,100\r\n"); //設(shè)置wifi自動(dòng)重連,間隔為3s一次,持續(xù)100次
delay_ms(5000);
printf("AT+MQTTUSERCFG=0,1,\"ESP01SHomeAssistant\",\"admin\",\"84961994\",0,0,\"\"\r\n"); //設(shè)置用戶屬性
delay_ms(5000);
printf("AT+MQTTCONN=0,\"43.139.72.253\",1883,1\r\n"); //連接mqtt服務(wù)器
delay_ms(5000);
printf("AT+MQTTSUB=0,\"TOESP01S\",0\r\n"); //訂閱TOESP01S
delay_ms(5000);
}
如果要整個(gè)項(xiàng)目的工程文件,可以直接到百度網(wǎng)盤提取(解壓密碼同下)
鏈接:https://pan.baidu.com/s/1_nRoSaMWo67tFVc15L4oHg?pwd=1016?
提取碼:1016
jason的HA學(xué)習(xí)交流裙:640172597
?本文為作者獨(dú)立編寫
?本BLOG上所有的原創(chuàng)文章未經(jīng)本人許可,不得用于商業(yè)用途及傳統(tǒng)媒體。網(wǎng)絡(luò)媒體轉(zhuǎn)載請(qǐng)注明出處,否則屬于侵權(quán)行為。文章來源:http://www.zghlxwxcb.cn/news/detail-531414.html
特別鳴謝:77文章來源地址http://www.zghlxwxcb.cn/news/detail-531414.html
到了這里,關(guān)于基于STM32的homeassistant(采用FreeRTOS操作系統(tǒng))【第一章:設(shè)備配網(wǎng)、連接服務(wù)器、斷網(wǎng)重連、斷服務(wù)器重接】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!