如何使用 ESP-01S 模块

如何使用 ESP-01S 模块

原始PDF文档
参考:

  1. 将 ESP-01 用作 WiFi shield的更好方法 (e-tinkers.com)

  2. How do I use ESP8266 ESP-01S WiFi Module with ESP-01S Adapter - Using Arduino / Programming Questions - Arduino Forum

  3. ESP-01S WiFi 模块 – 配置布线 - 技术探索 (techexplorations.com)

它是如何工作的?

ESP8266 可以通过本地 Wi-Fi 网络或互联网(端口后)进行控制转发)。ESP-01 模块具有 GPIO 引脚,可通过互联网编程打开/关闭 LED 或继电器。该模块可通过串行引脚(RX、TX)使用 Arduino/USB 转 TTL 转换器进行编程。

在这里插入图片描述

将硬件连接到 ESP8266

我们可以使用 USB 到 TTL 转换器或使用 Arduino 对 ESP8266 进行编程。您可以遵循以下三种方法将代码上传到 ESP8266 — 选择最适合您的方法。请参阅每个图表的下图,并相应地设置硬件。
在这里插入图片描述

引脚排列成两行,每行有 4 个。有些型号在PCB上有pi n描述,这使得它变得简单。在顶行,您可以从左到右找到以下引脚:

  1. 接地(电源接地)
  2. GPIO2(数字 I/O 可编程)
  3. GPIO0 (数字 I/O 可编程,也用于引导模式)
  4. RX – UART 接收通道

在底部(第二行),您可以找到:

  1. TX – UART 传输通道
  2. CH_PD(使能/断电,必须直接或通过电阻上拉至3.3V)
  3. REST – 复位,必须拉至 3.3v)
  4. 可变电源-3.3V电源

电源和电流消耗

所有 esp8266 arduino 兼容模块必须由来自任何类型的直流电流供电,可以提供稳定的 3.3V 和至少 250mA.此外,逻辑信号的额定电压为3.3v,RX通道应由3.3V除数降压保护。将此模块与 Arduino 或其他提供 5v 的板一起使用时应小心,因为该模块通常不附带过功率保护,很容易损坏。

以下是乐鑫声明的功耗:

在这里插入图片描述

如果您打算在由电池或太阳能供电的项目中使用 ESP-01,它是必须了解有关 ESP8266 arduino 睡眠模式的所有信息。当前版本提供 3 种不同的睡眠模式,可以通过编程方式触发。ESP8266WiFi 库提供了调用睡眠模式的特定功能,这些函数可以采用设置参数,在唤醒后更改回调作业,例如在射频模块断电或打开的情况下醒来。

最重要的模式是DEEP_SLEEP,因为睡眠期间的功耗非常低。深度睡眠模式在以特定间隔进行数据记录并在测量之间空闲的项目中非常常见。

为了在使用 esp8266 arduino 兼容模块时利用此模式,ESP-01标准,您需要做一些解决方法并将 REST 引脚与 GPIO16 引脚连接(在默认的 6 个六针中不可用)。

这是一个示例

在这里插入图片描述

完成此连接后,您可以使用以下命令触发深度睡眠模式:

与 ESP-01 对话 (AT / LUA / Arduino)

ESP8266-01 为您提供了多种通过 RX/TX 引脚或空中 (OTA) 与其通信的方法。区别不仅在于硬件,还在于开箱即用的固件类型。无论默认安装什么固件,您都应该能够按照数据表中的固件刷新说明刷新首选固件。该模块可以使用LUA代码,Arduino代码或直接通过AT命令进行编程,这使我们在项目中嵌入此设备时具有更大的自由度。另外,很少有python固件模式,但我还没有机会测试它们。我个人选择与Arduino合作是因为过去的经验和可用库的音调。开箱即用,该模块已准备好通过 AT 命令进行通信,无需任何其他额外的设置或配置。有许多软件应用程序可用于通过AT进行通信,并具有现成的工具和功能的音调,这将使一切变得更容易。我使用了ESPlorer,我完全推荐它,你可以在这里找到它。启动后,为了能够使用 AT 命令,模块应在串行监视器上显示“就绪”。

几个基本的 AT 命令示例:

AT – 响应正常AT+CWLAP – 列出附近可用的 WiFi 网络AT+GMR – 检查固件版本AT+CWJAP=“ ”,“” – 使用凭据加入 WiFi 网络AT+CIFSR – 获取当前分配的 IP 地址

为了能够与 ESP8266 arduino 兼容模块通信,您需要选择一种将其与计算机连接的方式。您可以通过标准串行与模块通信

通过使用Arduino板作为代理/网桥进行通信RS232

Arduino Uno 与之前的所有主板的不同之处在于它不使用 FTDI USB 转串行驱动程序芯片。相反,它具有编程为USB到串行转换器的Atmega16U2(Atmega8U2至版本R2)。为了使用Arduino作为桥接器,首先您需要在其上加载一个空程序。完成此操作后,您需要建立以下连接才能工作:

在这里插入图片描述

注意图中接地引脚

UNOESP-01S
RXRX
TXTX
3.3V3.3V
GNDGND
RSTRST
CH_PD OR EN3.3V

之后,您应该能够通过选择Arduino的COM端口,设置适当的波特率,在串行监视器中查看数据并发送AT命令,默认值应为115200,并进行其他设置以读取“NL和CR,

当每个项目核心都需要可扩展时,每个嵌入式 DIY 或商业项目中的无线固件 (FOTA) 解决方案即使不是必需的功能,也是非常理想的功能。因此,通过Wi-Fi连接而不是串行从远程计算机上传代码的可能性在每个项目中都是一个很高的优势。首先,您需要FOTA需求先决条件。第一个固件上传需要通过串行完成,如果在程序中正确实现了 OTA 例程,则可以通过无线方式完成后续上传。

由于该模块需要无线暴露,因此存在被黑客入侵并加载恶意代码的机会。您可以通过设置自定义端口和密码来提高安全性。检查ArduinoOTA库中的功能,这些功能可以帮助您提高安全性。由于此过程的复杂性,我们将在以后的文章中介绍完整的故事,但现在请注意此选项存在并且效果很好。

将 esp8266 arduino 模块连接到计算机的另一种方法是使用 TTL 或 FTDI USB 转串行专用模块。市场上有很多,而且很便宜,但不要搞错,这里的质量确实很重要。如果最终使用便宜的,您可能会在使用它时遇到问题,因为连接和驱动程序兼容性的差异。

最常用的TTL / FTDI转换器芯片是CH340G,CP2102和FT232RL。我个人使用了前两个,加载程序时没有问题。需要完成以下连接:

ESP-01STTL/FTDI
RXTX
TXRX
VCC3.3V
GNDGND
RST3.3V/Float
CH_PD OR EN3.3V

我强烈建议您不要使用 TTL 3.3v 电源,因为它们中的大多数都无法提供足够的功率来处理 esp8266 arduino 兼容设备。此模块上使用的嵌入式稳压器不是最满意的选择,如果它不支持 ESP 窥视,您可能会遇到麻烦。如果您选择使用外部电源,请不要忘记设置公共接地以获得工作电路。

您可以找到 TX 额定值为 3.3v 的 TTL 模块,如果没有,您可以降低 TX 通道以保护您的 ESP-01 模块。您可以在下面看到 ESP-01 和 ESP-01 之间的接线方案

CP2102 包括一个接地的复位按钮,以及用于启动开关的 GPIO0。

在这里插入图片描述

下面是使用电阻的简单3.3v除数草图:

在这里插入图片描述

为了设置您的 Arduino IDE 以与您的 esp8266 arduino 兼容模块一起使用,您需要执行以下步骤:

  1. 将 ESP8266-01 模组连接到电脑

  2. 打开您的Arduino IDE。

  3. 转到文件 -> 首选项

  4. 将此链接添加到其他董事会经理

  5. 转到工具 - >板经理

  6. 找到 ESP8266 开发板套装并激活

  7. 从工具->板中选择通用 ESP8266 开发板

  8. 选择您的编程器COM端口

  9. 你准备好了!

在这里插入图片描述

现在,为了能够将程序下载到您的 ESP-01 模块,您首先需要将设备处于正确的引导模式(从UART下载代码)。ESP8266-01 具有以下开机模式:

MTDO / GPIO15GPIO0GPIO2ModeDescription
LLHUARTDownload code from UART
LHHFlashBoot from SPI Flash
HXXSDIOBoot from SD-card

在从UART下载代码中重置模块后,如果您使用的是正确的波特率,您应该会在串行监视器中看到一条包含“引导模式:[1,6]”的消息。错误的波特率设置将显示垃圾文本/字符或根本不显示任何内容。之后,您应该能够将草图上传到 ESP8266。上传完成后,模块应自行重置。不要忘记拉高GPI0,否则模块将再次进入下载模式,您将无法看到它工作。该模块可以随时通过将 REST 引脚拉至低电平来重新启动。每次重置后,它将遵循引导顺序和程序加载。

一旦在 Arduino IDE 中安装并激活了 ESP8266 板,您就可以在其中包含
所有 ESP WiFi 库和示例。最常用的库是 ESP8266WiFi 提供了许多实现示例,如 WiFiClient、WiFiServer、WiFiAccessPoint 等。你可以在互联网上找到很多项目示例,比如我就在 arduino.com 上找到了很多好点子, 我就在 arduino.cc projecthub 上找到了很多好点子。下面是一个简单的 Arduino 闪烁示例,您可以
您可以用它来测试带有内置 LED 的 esp 模块:

Arduino 闪烁示例

/*
ESP8266 Arduino Blink by Simon Peter
Blink the blue LED on the ESP-01 module
This example code is in the public domain
The blue LED on the ESP-01 module is connected to GPIO1
(which is also the TXD pin; so we cannot use Serial.print() at the same time)
Note that this sketch uses LED_BUILTIN to find the pin with the internal LED
ESP8266 Arduino 闪烁 作者:Simon Peter
闪烁 ESP-01 模块上的蓝色 LED 灯
本示例代码属于公共领域
ESP-01 模块上的蓝色 LED 连接到 GPIO1
(同时也是 TXD 引脚,因此我们不能同时使用 Serial.print())。
请注意,此草图使用 LED_BUILTIN 来查找内部 LED 的引脚
*/
void setup() {pinMode(LED_BUILTIN, OUTPUT);  // Initialize the LED_BUILTIN pin as an output
}
// the loop function runs over and over again forever
void loop() {digitalWrite(LED_BUILTIN, LOW);  // Turn the LED on (Note that LOW is the voltage level// but actually the LED is on; this is because// it is acive low on the ESP-01)delay(1000);                      // Wait for a seconddigitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGHdelay(2000);                      // Wait for two seconds (to demonstrate the active low LED)
}

通过 WiFi 将数据发送到 data.spakfun.com 物联网平台

当然,之后您可以通过加载 ESP8266 Arduino WiFi 客户端示例程序来尝试更复杂的示例,该程序通过 WiFi 将数据发送到 data.spakfun.com 物联网平台:

/*
* This sketch sends data via HTTP GET requests to data.sparkfun.com service.
*
* You need to get streamId and privateKey at data.sparkfun.com and paste them
* below. Or just customize this script to talk to other HTTP servers.
* ESP8266 Arduino example
* 该草图通过 HTTP GET 请求向 data.sparkfun.com 服务发送数据。
*
* 您需要从 data.sparkfun.com 获取 streamId 和 privateKey,并将它们粘贴到下面。
* 粘贴到下面。或者自定义此脚本,以便与其他 HTTP 服务器通信。
* ESP8266 Arduino 示例
*/
#include <ESP8266WiFi.h>
const char* ssid = "your-ssid";
const char* password = "your-password";
const char* host = "data.sparkfun.com";
const char* streamId = "....................";
const char* privateKey = "....................";
void setup() {Serial.begin(115200);delay(10);// We start by connecting to a WiFi networkSerial.println();Serial.println();Serial.print("Connecting to ");Serial.println(ssid);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected");Serial.println("IP address: ");Serial.println(WiFi.localIP());
}
int value = 0;
void loop() {delay(5000);++value;Serial.print("connecting to ");Serial.println(host);// Use WiFiClient class to create TCP connectionsWiFiClient client;const int httpPort = 80;if (!client.connect(host, httpPort)) {Serial.println("connection failed");return;}// We now create a URI for the requestString url = "/input/";url += streamId;url += "?private_key=";url += privateKey;url += "&value=";url += value;Serial.print("Requesting URL: ");Serial.println(url);// This will send the request to the serverclient.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");unsigned long timeout = millis();while (client.available() == 0) {if (millis() - timeout > 5000) {Serial.println(">>> Client Timeout !");client.stop();return;}}// Read all the lines of the reply from server and print them to Serialwhile (client.available()) {String line = client.readStringUntil('\r');Serial.print(line);}Serial.println();Serial.println("closing connection");
}

ESP8266 Arduino Wifi 服务器示例程序

或者如果你需要在网络中做一个服务器,可以试试 ESP8266 Arduino Wifi 服务器示例程序:

/*
* This sketch demonstrates how to set up a simple HTTP-like server.
* The server will set a GPIO pin depending on the request
* http://server_ip/gpio/0 will set the GPIO2 low,
* http://server_ip/gpio/1 will set the GPIO2 high
* server_ip is the IP address of the ESP8266 Arduino module, will be
* printed to Serial when the module is connected.
*/
#include <ESP8266WiFi.h>
const char* ssid = "your-ssid";
const char* password = "your-password";
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);
void setup() {Serial.begin(115200);delay(10);// prepare GPIO2pinMode(2, OUTPUT);digitalWrite(2, 0);// Connect to WiFi networkSerial.println();Serial.println();Serial.print("Connecting to ");Serial.println(ssid);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected");// Start the serverserver.begin();Serial.println("Server started");// Print the IP addressSerial.println(WiFi.localIP());
}
void loop() {// Check if a client has connectedWiFiClient client = server.available();if (!client) {return;}// Wait until the client sends some dataSerial.println("new client");while (!client.available()) {delay(1);}// Read the first line of the requestString req = client.readStringUntil('\r');Serial.println(req);client.flush();// Match the requestint val;if (req.indexOf("/gpio/0") != -1)val = 0;else if (req.indexOf("/gpio/1") != -1)val = 1;else {Serial.println("invalid request");client.stop();return;}// Set GPIO2 according to the requestdigitalWrite(2, val);client.flush();// Prepare the responseString s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPEHTML>\r\n<html>\r\nGPIO is now ";s += (val) ? "high" : "low";s += "</html>\n";// Send the response to the clientclient.print(s);delay(1);erial.println("Client disonnected");// The client will actually be disconnected// when the function returns and 'client' object is detroyed
}

创建了托管 Web 服务器的 ESP8266 Arduino WiFi 接入点示例:

/* Create a WiFi access point and provide a web server on it.
ESP8266 Arduino example
创建一个 WiFi 接入点,并在其上提供网络服务器。
ESP8266 Arduino 示例
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
/* Set these to your desired credentials. */
const char *ssid = "ESPap";
const char *password = "thereisnospoon";
ESP8266WebServer server(80);
/* Just a little test message. Go to http://192.168.4.1 in a web browser
* connected to this access point to see it.
*/
void handleRoot() {server.send(200, "text/html", "<h1>You are connected</h1>");
}
void setup() {delay(1000);Serial.begin(115200);Serial.println();Serial.print("Configuring access point...");/* You can remove the password parameter if you want the AP to be open. */WiFi.softAP(ssid, password);IPAddress myIP = WiFi.softAPIP();Serial.print("AP IP address: ");Serial.println(myIP);server.on("/", handleRoot);server.begin();Serial.println("HTTP server started");
}
void loop() {server.handleClient();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/32881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

boost写日志

单个写日志 #include <boost/log/core.hpp> #include <boost/log/trivial.hpp> #include <boost/log/expressions.hpp> #include <boost/log/utility/setup/file.hpp> #include <boost/log/utility/setup/common_attributes.hpp> #include <…

1037:计算2的幂

【题目描述】 给定非负整数n&#xff0c;求2^n的值&#xff0c;即2的n次方。 【输入】 一个整数n。0<n<31。 【输出】 一个整数&#xff0c;即2的n次方。 【输入样例】 3 【输出样例】 8 【参考答案】&#xff1a; #include<bits/stdc.h> using namespa…

服务管理和计划任务

文章目录 服务管理计划任务 服务管理 systemctl 命令字 服务名 //配置服务与systemctl有关的命令字&#xff1a; 计划任务 一次性计划 at 时间 at now 5 min //当前时间五分钟后执行 at -l //列出计划任务 atrm 任务号 //删除计划任务执行完命令后Ctrld生效 周期性计…

Oracle数据迁移

问题描述&#xff1a; oracle数据库的所有表结构、数据、索引等需要需从测试库迁移到正式库。 解决步骤&#xff1a; oracle数据库迁移&#xff0c;主要通过expdp从测试库所在的源服务器将指定的数据表或数据源导出为一个或多个数据文件&#xff08;.dmp文件&#xff09;&…

黑马项目一完结后阶段面试45题 JavaSE基础部分20题(一)

一、Java数据类型 基本数据类型——四类八种 整数型 byte short int long 浮点型 float double 字符型 char 布尔型 boolean 引用数据类型 String字符串 类&#xff08;对象&#xff09; 接口类型 数组类型 枚举类型 二、面向对象的三大特性 1.封装 把同一类事物…

添加SQLCipher 到项目中

文章目录 一、克隆下载SQLCipher二、手动导入1. 生成sqlite3.c2. 在项目中添加命令3. 添加 Security.framework 三、CocoaPods导入 SQLCipher官方地址 一、克隆下载SQLCipher $ cd ~/Documents/code $ git clone https://github.com/sqlcipher/sqlcipher.git二、手动导入 1.…

二叉树小结

二叉树 树的遍历(如何遍历&#xff0c;如何利用特性问题) 前序遍历&#xff08;中前后&#xff09; 递归 class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res new ArrayList<>();inorder(root, res);return res…

电商系统架构设计系列(八):订单数据越来越多,数据库越来越慢该怎么办?

上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;订单数据越来越多&#xff0c;数据库越来越慢该怎么办&#xff1f; 今天这篇文章&#xff0c;我们来聊一下如何应对数据的持续增长&#xff0c;特别是像订单数据这种会随着时间一直累积的数据。 引言 为什么数据量越大…

shell从入门到精通(19)特殊变量

​ ​参考:Special Parameters (Bash Reference Manual) (gnu.org) 文章目录 $0$*$@$?变量名称作用$0当前脚本的文件名,不一定是全路径,取决于执行时传入的脚本路径$n叫做位置参数,n≥1 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第…

成考本科和国开本科哪个认可度高些 应该选择哪个

成考本科和国开本科都属于成人教育&#xff0c;两种学历都能为您提供知识、技能和学术背景&#xff0c;为您的职业道路打下坚实的基础。选择哪种学历取决于您的学习兴趣、时间安排和职业目标。 成考本科和国开本科谁认可度高 成人高等教育考试(成考)本科和国家开放大学(国开)本…

jenkins容器内CI/CD 项目失败问题

问题&#xff1a; 在jenkins 的docker容器内CI/CD制作vue项目镜像失败 1、docker权限问题 permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs%…

【idea】点击idea启动没反应

RT 点击idea启动的时候没反应&#xff0c;接着百度报错&#xff0c;基本跟他们的也不一样。 首先我是做版本升级。其次&#xff0c;我之前是破解的。如果你也是跟我一样的话&#xff0c;那问题可能就处在破解上了 解决方式 首先&#xff0c;是跟大部分解决思路一样。先找到项…

分清性能测试,负载测试,压力测试这三个的区别

做测试一年多来&#xff0c;虽然平时的工作都能很好的完成&#xff0c;但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺&#xff0c;所以&#xff0c;在工作之余也做了一些测试方面的知识的补充。不足之处&#xff0c;还请大家多多交流&#xff0c;互相学习。 …

C++笔记之单例模式

C笔记之单例模式 参考笔记&#xff1a;C笔记之call_once和once_flag code review 文章目录 C笔记之单例模式1.返回实例引用2.返回实例指针3.单例和智能指针share_ptr结合4.单例和std::call_once结合5.单例和std::call_once、unique_ptr结合 1.返回实例引用 代码 #include <…

ubuntu 如何命令行打开系统设置(Wifi,网络,应用程序...)

关于GNOME GNOME 是一个自由、开放源代码的桌面环境&#xff0c;它运行在 Linux 和其他类 UNIX 操作系统上。它是 GNU 项目的一部分&#xff0c;旨在为 Linux 操作系统提供一个现代化、易于使用的用户界面。 GNOME 桌面环境包括许多应用程序&#xff0c;例如文件管理器、文本编…

Java“牵手拼多多商品详情数据采集方法,拼多多API接口申请指南

拼多多详情接口 API 是开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取商品的详细信息&#xff0c;包括商品的标题、描述、图片等信息。在电商平台的开发中&#xff0c;详情接口API是非常常用的 API&#xff0c;因此本文将详细介绍详情接口 API 的使用。 一、拼…

前端-NVM,Node.js版本管理

NVM&#xff08;Node Version Manager&#xff09;是一个用于管理Node.js版本的工具&#xff0c;主要用于前端开发中。它允许开发者同时安装和切换不同版本的Node.js&#xff0c;以满足不同项目对Node.js版本的需求。 使用NVM可以带来以下几个好处&#xff1a; 多版本管理&…

侯捷 C++ part2 兼谈对象模型笔记——5 三个C++11新特性

5 三个C11新特性 5.1 variadic templates 模板参数可变化&#xff0c;其语法为 ... (加在哪看情况) // 当参数pack里没有东西了就调用这个基本函数结束输出 void print() { }// 用于打印多个参数的可变参数模板函数 template <typename T, typename... Args> void pri…

SQL Developer中的Data Redaction

SQL Developer中的Data Redaction用起来比命令行方便多了。可以选定表或视图&#xff0c;右键点击“遮盖保护”菜单。 但赋权方面有需要注意的地方。 假设Redact Admin是SYS&#xff0c;Redact User是HR。虽然SYS具备所有权限&#xff0c;但还是报以下错误。其实这个错误是针…

湖南科技学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》

湖南科技学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》