基于STM32的homeassistant(采用FreeRTOS操作系统)【第一章:设备配网、连接服务器、断网重连、断服务器重接】

这篇具有很好参考价值的文章主要介绍了基于STM32的homeassistant(采用FreeRTOS操作系统)【第一章:设备配网、连接服务器、断网重连、断服务器重接】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于STM32的homeassistant(采用FreeRTOS操作系统)【第一章:设备配网、连接服务器、断网重连、断服务器重接】,HomeAssistant,stm32,嵌入式硬件,单片机,服务器

 

第一章开发环境:

主控 STM32F103C8T6
WIFI模块 ESP01S
开发语言 C
开发编译器·

KEIL

组网方式 WIFI
服务器协议 MQTT

本章要点:

  • ESP01S的AT指令配网以及服务器连接
  • STM32与ESP01S的usart协议通信
  • 断网重连以及断服务器重连
  • STM32向服务器端口发送对应指令

抽象理解:

1、ESP01S1的AT指令配网

        ESP01S的配网方式为AT指令集,通过识别对对应的AT指令实现对应的操作。

具体ESP01S AT指令集合参考以下文章(84条消息) STM32+ESP-01s+EMQX实现单片机MQTT协议传输数据上云(一)ESP-01s的AP-MQTT bin文件安装以及指令使用_esp01 mqtt_JASON丶LI的博客-CSDNA

AT指令总合AT 命令集 - ESP32 - — ESP-AT 用户指南 latest 文档 (espressif.com)

2、STM32与ESP01S通信

        STM32本身是不具备连接wifi的能力的,它主要是通过与ESP01S进行USART通信,将上述的AT指令集传输到ESP01S,以此来触发其实现对应的操作。

3、重连

断网重连

AT+CWRECONNCFG=3,100
//设置wifi自动重连,间隔为3s一次,持续100次

断服务器重连

AT+MQTTCONN=0,"127.0.0.1",1883,1

4、指令发送

printf("AT+RESTODE\r\n");	//模块初始化
delay_ms(5000);
printf("AT+CWMODE=1\r\n");	//设置wifi模式为Station模式
delay_ms(5000);
printf("AT+CWJAP=\"Xiaomi_2\",\"84961994\"\r\n");	//连接wifi
delay_ms(5000);
printf("AT+CWRECONNCFG=3,100\r\n");	//设置wifi自动重连,间隔为3s一次,持续100次
delay_ms(5000);
printf("AT+MQTTUSERCFG=0,1,\"ESP01SHomeAssistant\",\"admin\",\"84961994\",0,0,\"\"\r\n");	//设置用户属性
delay_ms(5000);
printf("AT+MQTTCONN=0,\"43.139.72.253\",1883,1\r\n");	//连接mqtt服务器
delay_ms(5000);
printf("AT+MQTTSUB=0,\"TOESP01S\",0\r\n");	//订阅TOESP01S
delay_ms(5000);

记住这里的指令每条之间都要delay5s左右,因为需要给予其足够的时间处理上一条指令。

代码

这里代码我就只给出主函数以及对应的输出指令函数了,应该我的代码是基于FreeRTOS系统写的,要是不太懂的话可以到我之前的博客去简单入门一下(而且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");//发送对应指令
}

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");	//设置wifi模式为Station模式
	delay_ms(5000);
	printf("AT+CWJAP=\"Xiaomi_2\",\"84961994\"\r\n");	//连接wifi
	delay_ms(5000);
	printf("AT+CWRECONNCFG=3,100\r\n");	//设置wifi自动重连,间隔为3s一次,持续100次
	delay_ms(5000);
	printf("AT+MQTTUSERCFG=0,1,\"ESP01SHomeAssistant\",\"admin\",\"84961994\",0,0,\"\"\r\n");	//设置用户属性
	delay_ms(5000);
	printf("AT+MQTTCONN=0,\"43.139.72.253\",1883,1\r\n");	//连接mqtt服务器
	delay_ms(5000);
	printf("AT+MQTTSUB=0,\"TOESP01S\",0\r\n");	//订阅TOESP01S
	delay_ms(5000);
}

如果要整个项目的工程文件,可以直接到百度网盘提取(解压密码同下)

链接:https://pan.baidu.com/s/1_nRoSaMWo67tFVc15L4oHg?pwd=1016 
提取码:1016

jason的HA学习交流裙:640172597

基于STM32的homeassistant(采用FreeRTOS操作系统)【第一章:设备配网、连接服务器、断网重连、断服务器重接】,HomeAssistant,stm32,嵌入式硬件,单片机,服务器

 本文为作者独立编写

 本BLOG上所有的原创文章未经本人许可,不得用于商业用途及传统媒体。网络媒体转载请注明出处,否则属于侵权行为。

特别鸣谢:77文章来源地址https://www.toymoban.com/news/detail-531414.html

到了这里,关于基于STM32的homeassistant(采用FreeRTOS操作系统)【第一章:设备配网、连接服务器、断网重连、断服务器重接】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32FreeRTOS操作系统移植

    移植好的FreeRTOS模板: 链接:https://pan.baidu.com/s/1_87VQAWXUl4jTqSCZ0MFjw?pwd=dw52  提取码:dw52 1.在工程中新建FreeRTOS文件夹 2.把源码source里面的文件全部粘贴进FreeRTOS文件夹中  3.在portable文件中只保留一下文件,其余删除  4.新建如下两个文件夹  5.在FreeRTOS_CODE目录下添加以下文件

    2024年02月08日
    浏览(32)
  • STM32移植FreeRTOS操作系统

    一、FreeRTOS源码下载 (1)移植钱得准备前菜对吧,我们先来去官网瞄一瞄 网址:FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions 第一步:点击下载FreeRTOS 第二步:选择版本下载(我选择稳定版本) 注:我们下载的稳定版本不包含DEMO例

    2024年01月17日
    浏览(28)
  • 简单介绍STM32上的FreeRTOS实时操作系统

    FreeRTOS是一款广泛使用的开源实时操作系统(RTOS),它为嵌入式系统提供了可靠的任务调度和并发管理。在嵌入式领域中,STM32微控制器广受欢迎,并且与FreeRTOS的结合使用可以提供强大的功能和灵活性。在本篇博客中,我们将深入探究STM32上的FreeRTOS,并了解其核心概念、任

    2024年02月16日
    浏览(42)
  • STM32初学者入门FreeRTOS操作系统,多任务实时系统

            FreeRTOS(Free Real-Time Operating System)是一个开源的嵌入式实时操作系统,它专门设计用于在资源有限的嵌入式系统中运行。FreeRTOS提供了一些用于任务管理、调度、同步和通信的功能,使开发者能够轻松地创建可靠的嵌入式系统。 以下是FreeRTOS的一些特点和功能: 轻量

    2024年02月11日
    浏览(32)
  • 基于stm32单片机和rt-thread操作系统的智能灯

    目    录 一、 总体概况 二、 各部分介绍 2.1  STM32F4开发板 2.2  光敏模块 2.3  麦克风模块 2.4  超声波模块 三、 RT-Thread介绍 四、 开发过程 五、 未来设想 六、 开发心得 总体概况 本次测试技术与信号处理课程作业,我利用了stm32单片机和rt-thread实时操作系统进行实践。

    2023年04月16日
    浏览(66)
  • FreeRTOS事件组 基于STM32

    文章对事件组的,应用场景,运作机制,以及事件的创建,删除,等待,置位,同步等操作 文章目录 概述 一、事件标志组简介 1、事件位(事件标志) 2、事件组 3、事件标志组和事件位的数据类型 二、事件的应用场景 三、事件运作机制 四、事件控制块  五、事件组函数 1.事

    2024年02月11日
    浏览(29)
  • FreeRTOS内存管理 基于STM32

    目录 一、内存管理的基本概念 二、内存管理的应用场景 三、heap_4.c 1.内存申请函数 pvPortMalloc() 2.内存释放函数 vPortFree()  四、内存管理的实验 五、内存管理的实验现象       在计算系统中,变量、中间数据一般存放在系统存储空间中,只有在实际使用时才将 它们从存储空

    2024年02月14日
    浏览(43)
  • 【STM32】STM32 移植鸿蒙操作系统

    随着 OpenHarmony3.1 的正式发布,其功能也在不断完善。OpenHarmony LiteOS-M 内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点,其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等,分为硬件相关层以及硬件无

    2024年02月09日
    浏览(45)
  • FreeRTOS软件定时器 基于STM32

    文章目录 一·、软件定时器的基本概念 二、软件定时器应用场景 三、软件定时器的精度 四、软件定时器的运作机制 五、软件定时器函数接口讲解 1.软件定时器创建函数 xTimerCreate() 2.软件定时器启动函数 xTimerStart()  3.软件定时器停止函数  xTimerStop()  4.软件定时器任务 5.软件

    2024年02月11日
    浏览(34)
  • FreeRTOS小项目实战------基于FreeRTOS和stm32的门禁系统

    目录 收获 系统总体框架 程序框架 具体程序实现 工程文件网盘链接 收获 学习 freertos的移植与裁剪 ,对任务间通信的认识更加深刻,加深了实时操作系统的理解,学习了as608指纹模块,rc522刷卡模块等模块的简单使用。 系统总体框架 该系统采用STM32F407ZGT6为主控芯片,在Fre

    2024年02月02日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包