STM32智能家居(4)ESP8266连接WIFI

简介: STM32智能家居(4)ESP8266连接WIFI

前言

今天是学习百问网智能家居项目的第4天,本文我们将会介绍如何使用ESP8266进行连接WIFI


一、ESP8266和WIFI的连接

STM32通过串口和ESP8266进行通信,发送指定的AT指令即可实现联网。ESP8266可以单独进行联网也可以通过上面方式进行联网。

注意:ESP8266只能连接2.4GHZ的WIFI,很多人可能因为连接到的是5GHZ的WIFI导致ESP8266无法和WIFI进行连接。


二、代码展示

main.c

  USART3_StartRx();//开启串口3接收函数
  esp8266_Init();

串口代码

static uint8_t rx_len;
static uint8_t rx_data;
static uint8_t usart_rx_buf[200];
// 串口3启动接收
void USART3_StartRx(void)
{
  HAL_UART_Receive_IT(&huart3, (uint8_t*)&rx_data, 1);
}
// 串口3中断回调函数(保存每次接收的数据,并启动下一次接收)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  usart_rx_buf[rx_len%200] = rx_data;
  rx_len++;
  HAL_UART_Receive_IT(&huart3, (uint8_t*)&rx_data, 1);
}
// 串口3接收的数据
uint16_t USART3_Receive(uint8_t *pdata)
{
  memcpy(pdata, (uint8_t*)usart_rx_buf, rx_len);
  return rx_len;
}
// 串口3发送数据
void USART3_Transmit(uint8_t *pData, uint16_t Size, uint32_t Timeout)
{
  HAL_UART_Transmit(&huart3, pData, Size, Timeout);
}
// 清理串口3接收的数据
void USART3_ClearBuf(void)
{
  rx_len = 0;
  memset((uint8_t*)usart_rx_buf, 0, 200);//将数据都清除为0
}

ESP8266.c

#include "esp8266.h"
#include "log.h"
#include <string.h>
u8 esp8266_sendcmd(char *cmd,char *reply,u16 timeout)
{
  //保存传入的指令
  u8 buf[256]={0};
  strcat(buf,cmd);//将AT指令拼接到buf
  //处理AT指令
  if(0==strstr(buf,"\r\n"))//判断是否有换行符
  {
    strcat(buf,"\r\n");//加上换行符
  }
  //清理前面接收的buf
  USART3_ClearBuf();
  //发送数据
  USART3_Transmit((u8*)buf,sizeof(buf),500);
  //接收数据
  memset(buf,0,256);
  while(timeout!=0)
  {
    if(USART3_Receive((u8*)buf))
    {
      if(strstr(buf,reply))
      {
        PRINTF("%s Send ok!\r\n", cmd); // 发送成功
        if (strstr(buf, "CIFSR"))
        {
            PRINTF("%s\r\n", buf); // 打印IP地址
        }
        return 0;
      }
    }
    else
    {
      timeout--;
      HAL_Delay(1);
    }
  }
  PRINTF("%s send error\r\n",cmd);
  return 1;
}
void esp8266_Init(void)
{
  esp8266_sendcmd("AT+RST", "OK", 500);//重启模块
  HAL_Delay(1000);
  esp8266_sendcmd("AT+CWMODE=1", "OK", 500);//模式设置
  esp8266_sendcmd("AT+CWJAP=\"MERCURY_2446\",\"740740740\"", "OK", 5000);//连接路由
  esp8266_sendcmd("AT+CIPMUX=1", "OK", 500);//设置多连接
  esp8266_sendcmd("AT+CIPSERVER=1,9999", "OK", 500);//创建TCP服务
  esp8266_sendcmd("AT+CIFSR", "OK", 500);//查询IP地址
}
void esp8266_Task(void)
{
}
void esp8266_Handle(void)
{
}

ESP8266.h

#ifndef _ESP8266_H_
#define _ESP8266_H_
#include "main.h"
#define u8 unsigned char
#define u16 unsigned short
#define u32 unsigned int
#define WIFI_NAME   "Dongsan201"
#define WIFI_PASSWORD   "66666666"
u8 esp8266_sendcmd(char *cmd,char *reply,u16 time);//向esp8266发送AT指令
void esp8266_Init(void);//初始化调用
void esp8266_Task(void);//后台轮询调用
void esp8266_Handle(void);//中断调用
#endif

main.c

esp8266_Init();

总结

感谢百问网让我了解到了如何使用ESP8266进行联网。

相关文章
|
7月前
|
数据处理 C语言 智能硬件
STM32微控制器在智能家居中的应用
STM32微控制器在智能家居中的应用
251 0
|
2月前
|
传感器 数据采集 移动开发
基于STM32的智能手环wifi连接手机APP(下)
基于STM32的智能手环wifi连接手机APP(下)
109 0
|
2月前
|
传感器 测试技术 芯片
基于STM32的环境监测系统 (esp8266)(上)
基于STM32的环境监测系统 (esp8266)(上)
410 0
|
2月前
|
传感器 存储 编解码
基于STM32的智能手环wifi连接手机APP(上)
基于STM32的智能手环wifi连接手机APP(上)
74 0
|
6月前
|
网络协议
了解AT指令以及STM32F103如何通过ESP8266连接到WiFi
AT指令是一组用于控制调制解调器的命令,最早由Hayes公司为其智能调制解调器开发。如今,AT指令已被广泛应用于各种通信模块中,包括GSM、Bluetooth和WiFi模块。AT指令通常以“AT”开头,后跟特定的命令和参数。通过这些指令,我们可以执行一系列操作,如设置网络参数、发送数据和查询状态等。
273 0
|
运维 小程序 API
STM32实战项目—WIFI远程开关灯
本文介绍了如何利用正点原子ESP8266和STM32F103C8T6连接腾讯云,利用舵机实现远程开关灯。给出了详细的腾讯云配置和调试步骤,给出了部分程序设计。
327 0
STM32实战项目—WIFI远程开关灯
|
2月前
|
传感器 监控 搜索推荐
探索智能家居技术的未来
【10月更文挑战第6天】 本文深入探讨了智能家居技术的发展历程、当前应用及其未来前景。通过分析物联网(IoT)的基本原理和智能家居设备的实际应用案例,揭示了该领域面临的挑战与机遇,并提出了未来发展的趋势和可能性。
72 3
|
19天前
|
机器学习/深度学习 搜索推荐 语音技术
智能语音识别技术在智能家居中的应用与挑战####
本文深入探讨了智能语音识别技术的基本原理、关键技术环节,以及其在智能家居领域的广泛应用现状。通过分析当前面临的主要挑战,如环境噪音干扰、方言及口音识别难题等,文章进一步展望了未来发展趋势,包括技术融合创新、个性化服务定制及安全隐私保护的加强。本文旨在为读者提供一个关于智能语音识别技术在智能家居中应用的全面视角,同时激发对该领域未来发展方向的思考。 ####
59 6
|
2月前
|
传感器 人工智能 物联网
探索智能家居技术:现状与未来
本文深入探讨了智能家居技术的发展历程、当前主要技术和应用,并展望了其未来的发展趋势。通过对现有技术的详细解析和案例分析,揭示了智能家居在提升生活品质、节能减排等方面的潜力,同时指出了目前面临的挑战和可能的解决方案。
|
3月前
|
机器学习/深度学习 人工智能 物联网
智能家居技术的未来:从自动化到智能化的跨越
本文将探讨智能家居技术的发展趋势,从早期的自动化设备到现代的智能系统,分析其背后的技术驱动因素和市场动态。文章将详细讨论物联网(IoT)、人工智能(AI)、机器学习等技术如何推动智能家居的发展,并展望智能家居未来的发展方向。