ESP-01S是一款基于ESP8266芯片的WiFi模塊,它提供了低成本、低功耗和高度集成的解決方案,適用于物聯(lián)網(wǎng)和嵌入式應(yīng)用。本文將介紹ESP-01S模塊的功能和特點(diǎn),并提供一個(gè)簡(jiǎn)單的WiFi控制示例。
前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站:人工智能
目錄
ESP-01S模塊管腳功能:
ESP-01S特點(diǎn):
啟動(dòng)模式:
基礎(chǔ)TA指令介紹:
?ESP-01S硬件連接:
ESP-01S固件燒錄和配置:
通過(guò)stm32開(kāi)發(fā)板進(jìn)行WiFi控制:
HAL庫(kù)開(kāi)發(fā):
標(biāo)準(zhǔn)庫(kù)開(kāi)發(fā):
基于Arduino主控制器:
總結(jié):
ESP-01S模塊管腳功能:
Pin腳編號(hào) | Pin腳名稱 | 備注 |
1 | GND | GND |
2 | IO2 | U1_TXD,I2C_SDA,I2S0_BCK |
3 | IO0 | GPIO0,HSPI_MISO,I2SI_DATA |
4 | RXD | GPIO3,I2SO_DATA |
5 | TXD | GPIO1 |
6 | EN | 芯片使能端,高電平有效 |
7 | RST | 復(fù)位引腳,低電平有效 |
8 | VCC | 模塊供電引腳,電壓范圍3.0~3.6 |
?注意:不可以使用USB轉(zhuǎn)TTL的3.3v或5v進(jìn)行供電,建議使用2節(jié)干電池或經(jīng)過(guò)LDO轉(zhuǎn)換后的3.3v
ESP-01S特點(diǎn):
- 小巧的尺寸:ESP-01S模塊具有緊湊的設(shè)計(jì),適用于空間有限的應(yīng)用。
- WiFi功能:它支持802.11b/g/n標(biāo)準(zhǔn),允許設(shè)備連接到無(wú)線網(wǎng)絡(luò)。
- 高度集成:ESP-01S集成了WiFi功能和處理器,減少了外部組件的需求。
- AT指令支持:通過(guò)串口通信,可以使用AT指令進(jìn)行配置和控制。
- 低功耗:ESP-01S模塊具有低功耗特性,適用于長(zhǎng)時(shí)間運(yùn)行的應(yīng)用。
- 容易使用:ESP-01S模塊易于配置和應(yīng)用,有許多開(kāi)發(fā)資源和示例代碼可用。
啟動(dòng)模式:
模式 | CH-PD (EN) |
RST | GPIO5 | GPIO0 | GPIO2 | TXD0 |
下載方式 | 高 | 高 | 低 | 低 | 高 | 高 |
運(yùn)行模式 | 高 | 高 | 低 | 高 | 高 | 高 |
測(cè)試模式 | 高 | 高 | - | - | - | 低 |
基礎(chǔ)TA指令介紹:
指令 | 說(shuō)明 | 示例 |
AT | 測(cè)試AT是否OK | AT OK |
AT+GMR | 返回固件版本信息 | AT+GMR AT Version:1.2.0.0(Jul 1 2016 20:04:45) SDK version:1.5.4.1(39cb9a32) Ai-Tinker Technology Co.Ltd. Dec 2 2016 14:21:16 OK |
AT+RST | 軟重啟模組 | AT+RST OK |
AT+RESTORE | 重啟模組為出廠設(shè)置 | AT+RESTORE OK |
?ESP-01S硬件連接:
要使用ESP-01S模塊,你需要將其與主控制器(如Arduino、STM32等)進(jìn)行連接。下面是一個(gè)示例的硬件連接圖,以ESP-01S與STM32開(kāi)發(fā)板連接為例:
ESP-01S STM32
TX <----> RX
RX <----> TX
GND <----> GND
VCC <----> 3.3V
通過(guò)將ESP-01S的TX引腳連接到STM32的RX引腳,并將ESP-01S的RX引腳連接到STM32的TX引腳,你可以通過(guò)串口實(shí)現(xiàn)兩者之間的通信。
ESP-01S固件燒錄和配置:
在使用ESP-01S模塊之前,你需要將合適的固件燒錄到模塊中,并進(jìn)行相應(yīng)的配置。以下是一個(gè)簡(jiǎn)單的步驟:
- 下載并安裝ESP8266固件燒錄工具,如ESP8266 Flasher,可以在Espressif Systems的官方網(wǎng)站上找到。
- 下載適用于ESP-01S的固件,通常是基于ESP8266的AT固件。
- 使用燒錄工具將固件燒錄到ESP-01S模塊中。確保選擇正確的串口和固件文件。
- 配置串口通信參數(shù),如波特率等。通常,ESP-01S默認(rèn)波特率為115200。
完成以上步驟后,你的ESP-01S模塊就準(zhǔn)備好進(jìn)行WiFi控制了。
通過(guò)stm32開(kāi)發(fā)板進(jìn)行WiFi控制:
要使用STM32開(kāi)發(fā)板與ESP-01S模塊進(jìn)行WiFi控制,你可以通過(guò)串口通信將STM32與ESP-01S連接起來(lái),并利用STM32的UART功能與ESP-01S進(jìn)行通信。
下面的例子是使用stm32上的uart通信協(xié)議進(jìn)行控制的:
HAL庫(kù)開(kāi)發(fā):
#include "stm32f4xx_hal.h"
#define ESP_UART_PORT ? ? ? ? ? ? USART2
#define ESP_UART_BAUDRATE ? ? ? ? 115200
UART_HandleTypeDef huart2;
void SystemClock_Config(void);
void uart_init(void) {
? huart2.Instance = ESP_UART_PORT;
? huart2.Init.BaudRate = ESP_UART_BAUDRATE;
? huart2.Init.WordLength = UART_WORDLENGTH_8B;
? huart2.Init.StopBits = UART_STOPBITS_1;
? huart2.Init.Parity = UART_PARITY_NONE;
? huart2.Init.Mode = UART_MODE_TX_RX;
? huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
? huart2.Init.OverSampling = UART_OVERSAMPLING_16;
? if (HAL_UART_Init(&huart2) != HAL_OK) {
? ? // 初始化錯(cuò)誤處理
? ? while (1);
? }
}
void uart_send_byte(uint8_t data) {
? HAL_UART_Transmit(&huart2, &data, 1, HAL_MAX_DELAY);
}
uint8_t uart_receive_byte(void) {
? uint8_t data;
? HAL_UART_Receive(&huart2, &data, 1, HAL_MAX_DELAY);
? return data;
}
int main(void) {
? HAL_Init();
? SystemClock_Config();
? uart_init();
? while (1) {
? ? // 與ESP-01S進(jìn)行通信
? ? uart_send_byte('H'); ?// 發(fā)送數(shù)據(jù)到ESP-01S
? ? uint8_t received_data = uart_receive_byte(); ?// 接收ESP-01S發(fā)來(lái)的數(shù)據(jù)
? }
}
void SystemClock_Config(void) {
? // 配置系統(tǒng)時(shí)鐘
? // ...
}
標(biāo)準(zhǔn)庫(kù)開(kāi)發(fā):
#include "stm32f4xx.h"
#include <stdio.h>
#define ESP_UART_PORT USART2
#define ESP_UART_BAUDRATE 115200
void uart_init(void) {
USART_InitTypeDef USART_InitStruct;
GPIO_InitTypeDef GPIO_InitStruct;
// 使能USART2時(shí)鐘和GPIO時(shí)鐘
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
// 配置USART2的TX引腳(PA2)為輸出、推挽模式
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);
// 將PA2引腳復(fù)用為USART2的TX功能
GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2);
// 初始化USART2的參數(shù)
USART_InitStruct.USART_BaudRate = ESP_UART_BAUDRATE;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode = USART_Mode_Tx;
USART_Init(ESP_UART_PORT, &USART_InitStruct);
// 使能USART2
USART_Cmd(ESP_UART_PORT, ENABLE);
}
void uart_send_byte(uint8_t data) {
while (!(ESP_UART_PORT->SR & USART_FLAG_TXE)); // 等待發(fā)送完成
ESP_UART_PORT->DR = (data & 0xFF);
}
uint8_t uart_receive_byte(void) {
while (!(ESP_UART_PORT->SR & USART_FLAG_RXNE)); // 等待接收完成
return (ESP_UART_PORT->DR & 0xFF);
}
int main(void) {
uart_init();
while (1) {
// 與ESP-01S進(jìn)行通信
uart_send_byte('H'); // 發(fā)送數(shù)據(jù)到ESP-01S
uint8_t received_data = uart_receive_byte(); // 接收ESP-01S發(fā)來(lái)的數(shù)據(jù)
}
}
通過(guò)ESP-01S模塊使用AT指令進(jìn)行WiFi連接和控制。你可以在STM32的代碼中使用uart_send_byte()函數(shù)發(fā)送AT指令到ESP-01S,并使用uart_receive_byte()函數(shù)接收ESP-01S的響應(yīng)。根據(jù)ESP-01S的文檔,你可以發(fā)送AT+CWMODE、AT+CWJAP等指令來(lái)配置WiFi連接和進(jìn)行其他控制操作。
基于Arduino主控制器:
#include <SoftwareSerial.h>
SoftwareSerial espSerial(2, 3); ?// 設(shè)置ESP-01S的RX和TX引腳
void setup() {
? Serial.begin(9600); ? ? ? ? ? // 打開(kāi)串口監(jiān)視器
? espSerial.begin(115200); ? ? ?// 設(shè)置ESP-01S的波特率
? delay(1000); ? ? ? ? ? ? ? ? ?// 等待ESP-01S模塊初始化
? WiFiConnect(); ? ? ? ? ? ? ? ?// 連接到WiFi網(wǎng)絡(luò)
}
void loop() {
? if (espSerial.available()) {
? ? char data = espSerial.read(); ?// 讀取ESP-01S發(fā)來(lái)的數(shù)據(jù)
? ? Serial.write(data); ? ? ? ? ? ?// 將數(shù)據(jù)發(fā)送到串口監(jiān)視器
? ? if (data == '1') {
? ? ? digitalWrite(LED_BUILTIN, HIGH); ?// 打開(kāi)LED燈
? ? } else if (data == '0') {
? ? ? digitalWrite(LED_BUILTIN, LOW); ? // 關(guān)閉LED燈
? ? }
? }
}
void WiFiConnect() {
? espSerial.println("AT+CWJAP=\"your-ssid\",\"your-password\""); ?// 輸入你的WiFi名稱和密碼
? delay(5000); ?// 等待5秒鐘,等待ESP-01S連接到WiFi網(wǎng)絡(luò)
? espSerial.println("AT+CIPMUX=0"); ?// 設(shè)置單連接模式
? delay(1000); ?// 等待1秒鐘
? espSerial.println("AT+CIPMODE=1"); ?// 設(shè)置透?jìng)髂J?? delay(1000); ?//等待1秒鐘
espSerial.println(“AT+CIPSTART=“TCP”,“your-server-ip”,your-port”); // 輸入你的服務(wù)器IP地址和端口號(hào)
delay(2000); // 等待2秒鐘,建立TCP連接
espSerial.println(“AT+CIPSEND”); // 進(jìn)入發(fā)送模式
delay(1000); // 等待1秒鐘
espSerial.println(“GET /api/control?command=1 HTTP/1.1\r\nHost: your-server-ip\r\nConnection: close”); // 發(fā)送請(qǐng)求到服務(wù)器
delay(1000); // 等待1秒鐘
espSerial.println(“+++”); // 退出透?jìng)髂J?delay(1000); // 等待1秒鐘
espSerial.println(“AT+CIPCLOSE”); // 關(guān)閉TCP連接
delay(1000); // 等待1秒鐘
espSerial.println(“AT+RST”); // 重啟ESP-01S
}
在上述代碼中,首先我們需要通過(guò)軟串口(SoftwareSerial)庫(kù)將Arduino的兩個(gè)數(shù)字引腳與ESP-01S的RX和TX引腳相連。然后,在setup()函數(shù)中,我們初始化了串口,并使用WiFiConnect()函數(shù)連接到WiFi網(wǎng)絡(luò)。 在loop()函數(shù)中,我們檢測(cè)ESP-01S是否有數(shù)據(jù)可讀取,如果有,我們將數(shù)據(jù)發(fā)送到串口監(jiān)視器,并根據(jù)數(shù)據(jù)的值控制LED燈的開(kāi)關(guān)。 WiFiConnect()函數(shù)中,我們發(fā)送了一系列的AT指令來(lái)配置ESP-01S模塊。請(qǐng)確保根據(jù)你的實(shí)際情況修改相應(yīng)的參數(shù),例如WiFi的名稱和密碼,服務(wù)器的IP地址和端口號(hào)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-634944.html
總結(jié):
本文介紹了ESP-01S模塊的串口、功能、特點(diǎn)以及如何進(jìn)行WiFi控制。我們通過(guò)與stm32和Arduino進(jìn)行串口通信,并使用AT指令實(shí)現(xiàn)了簡(jiǎn)單的WiFi連接和控制示例。 ESP-01S模塊具有廣泛的應(yīng)用領(lǐng)域,特別適用于物聯(lián)網(wǎng)和嵌入式系統(tǒng)。你可以根據(jù)自己的項(xiàng)目需求,進(jìn)一步探索ESP-01S的功能和特性,并結(jié)合其他傳感器或執(zhí)行器進(jìn)行更復(fù)雜的應(yīng)用開(kāi)發(fā)。?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-634944.html
到了這里,關(guān)于【物聯(lián)網(wǎng)】全面了解ESP-01SWiFi模塊的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!