Arduino D1开发板 ESP8266 ESP01-S Wifi 模块 手机控制继电器 学习手记

这篇具有很好参考价值的文章主要介绍了Arduino D1开发板 ESP8266 ESP01-S Wifi 模块 手机控制继电器 学习手记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

因为以前学过一次,但是不深入。所以这次重学,记录一下。

这次用了最新的东东,畅快无极限!


  1. 官网在这里:https://arduino-esp8266.readthedocs.io/en/3.1.1/index.html

  2. 在ArduinoIDE里下载开发板esp8266是一件很痛苦的事情,虽然成功过,但是后来找到最好的方法还是下载中国的离线版,Arduino中文社区和点灯科技是个好东西;

  3. 目录没变,还是C:\Users\Administrator\AppData\Local\Arduino15,这个目录还有个好东西,就是引脚映射:C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.1\variants

  4. D1的板子 #define LED_BUILTIN 2,这个2对应着Arduino板子上的D9这个引脚,D9它呢,又对应着内部esp12-F的第11个引脚,名称是IO2,功能是GPIO2/UART1_TXD,奇怪的是它没有接收引脚对应;另外,这个LED是低电平点亮的;

  5. ESP模块貌似有个好处,它内部GPIO是什么数字,它对应的整数值也是那个数值。比如GPIO2就是数字2,GPIO0就是0,这一点又跟Arduino官方版一样方便了;

  6. 仅有的模拟输入口A0,它内部的值是17;

  7. esp12-F的外壳就是GND

  8. Server — ESP8266 Arduino Core 3.1.1 documentation

  9. esp01s进入下载模式的方法是:将IO0接地,用杜邦线触碰RST一点时间即可

  10. 安信可启动的乱码问题,要先把VCC拔掉,把USBTLL串口波特率设置为74880,然后插上就可以显示前面那部分乱码的真实文字,不过后半部分的波特率还是115200的

  11. 以下代码是可用的,主要是一些连接的逻辑花了很多时间,无法确知available、accepted、connected的内在含义,但是经过参考了官方文档、示例并进行了试验,得到了这个稳定版本,可助理解。

  12. WiFi - client.connected()

    Description

    Whether or not the client is connected. Note that a client is considered connected if the connection has been closed but there is still unread data.

WiFi - client.available()

Description

Returns the number of bytes available for reading (that is, the amount of data that has been written to the client by the server it is connected to).

available() inherits from the Stream utility class.

WiFi - server.available()

Description

Gets a client that is connected to the server and has data available for reading. The connection persists when the returned client object goes out of scope; you can close it by calling client.stop().

available() inherits from the Stream utility class.

WiFi - client.stop()

Disconnect from the server文章来源地址https://www.toymoban.com/news/detail-506068.html

这是官方版本。

void loop()
{
  WiFiClient client = server.accept();
  // wait for a client (web browser) to connect
  if (client)
  {
    Serial.println("\n[Client connected]");
    while (client.connected())
    {
      // read line by line what the client (web browser) is requesting
      if (client.available())
      {
        String line = client.readStringUntil('\r');
        Serial.print(line);
        // wait for end of client's request, that is marked with an empty line
        if (line.length() == 1 && line[0] == '\n')
        {
          client.println(prepareHtmlPage());
          break;
        }
      }
    }

    while (client.available()) {
      // but first, let client finish its request
      // that's diplomatic compliance to protocols
      // (and otherwise some clients may complain, like curl)
      // (that is an example, prefer using a proper webserver library)
      client.read();
    }

    // close the connection:
    client.stop();
    Serial.println("[Client disconnected]");
  }
}
以下为我编写的控制继电器版本

#include <ESP8266WiFi.h>
#define DEBUG

#define GPIO0 0
#define GPIO2 2

#define L false
#define H true
#define DELAYTRIGGER(GPIO, LEVEL) \
  do { \
    digitalWrite(GPIO, LEVEL); \
    delay(200); \
    digitalWrite(GPIO, !LEVEL); \
  } while (0)

const char* ssid = "14-2001";
const char* password = "******";
IPAddress local_IP(192, 168, 3, 31);
IPAddress gateway(192, 168, 3, 1);
IPAddress subnet(255, 255, 255, 0);

WiFiServer server(80);

void connectToWiFi() {
  Serial.print("\n\nConnecting to ");
  Serial.println(ssid);
  WiFi.config(local_IP, gateway, subnet);  //设置静态IP
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("\nWiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void setup() {
  Serial.begin(115200);

  pinMode(GPIO0, OUTPUT);
  pinMode(GPIO2, OUTPUT);
  digitalWrite(GPIO0, HIGH);
  digitalWrite(GPIO2, HIGH);

  connectToWiFi();
  server.begin();
  Serial.println("Server started : To control GPIO, use Android APP [esp8266 controller].");
}

void loop() {
  WiFiClient client = server.accept();
  if (!client) {
    Serial.print("A");
    delay(200);
    return;
  }

  Serial.println("\n\n");
  Serial.println("Client " + client.remoteIP().toString() + " connected.");

  while (client.connected()) {
    Serial.print("C");
    delay(100);
    if (client.available()) {
      Serial.println("\nclient available...");
      String req = client.readStringUntil('\r');
      Serial.println("client request:");
      Serial.println(req);

      // Match the request
      int val;
      if (req.indexOf("ON1") != -1) {  //IO0 ON  高电平触发
        Serial.println("ON1");
        DELAYTRIGGER(GPIO0, H);
      } else if (req.indexOf("OFF1") != -1) {  //IO0 OFF 低电平触发
        Serial.println("OFF1");
        DELAYTRIGGER(GPIO0, L);
      } else if (req.indexOf("ON2") != -1) {  //IO2 ON  高电平触发
        Serial.println("ON2");
        DELAYTRIGGER(GPIO2, H);
      } else if (req.indexOf("OFF2") != -1) {  //IO2 OFF 低电平触发
        Serial.println("OFF2");
        DELAYTRIGGER(GPIO2, L);
      } else {
        Serial.println("invalid request, reset...");
        client.print("HTTP/1.1 404\r\n");
        client.stop();
        return;
      }

      // Prepare the response
      String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
      s += (val) ? "high" : "low";
      s += "</html>\n";

      client.print(s);
      client.flush();
      client.stop();
    }
  }
  Serial.println("\n[Client disonnected]");
}

到了这里,关于Arduino D1开发板 ESP8266 ESP01-S Wifi 模块 手机控制继电器 学习手记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Arduino uno 通过esp8266WIFI模块连接onenet平台(TCP协议)(1接线、代码篇)

    1.可以用esp8266开发板,也可以用esp01s,有引脚说明(左)或esp01(右)  ESP8266Node-MCU(ESP-12E) esp01s接线如下:  esp01接线: 2.代码1:设置连接方式,WiFi账号密码,tcp协议等 打开串口监视器(右上角放大镜图标) 等待显示“ok ready” 输入AT 返回ok 输入AT+RST 返回 ok 一长段乱码

    2024年02月04日
    浏览(56)
  • 自制ESP8266 WIFI模块 ESP-01/阻抗匹配、射频天线高频电路学习笔记 射频模块天线匹配思路总结

    1 引言 存在决定意识。野火的指南者开发板板载ESP8266模块,一次比赛使用过ESP-01,并且这次比赛总结大会上老师说高集成度才算有技术含量,萌生了自制一个WIFI模块的想法,算是大学四年的心愿。春招在一次电话技术面试中坐了40min牢,被教训:做项目要把每个地方搞懂,否

    2024年02月16日
    浏览(46)
  • STM32--ESP8266物联网WIFI模块(贝壳物联)--远程无线控制点灯

    本文适用于STM32F103C8T6等MCU,其他MCU可以移植,完整资源见文末链接 一、简介 随着移动物联网的发展,各场景下对于物联控制、数据上传、远程控制的诉求也越来越多,基于此乐鑫科技推出了便宜好用性价比极高的wifi物联模块——ESP8266,话不多少我们先来看看这个神奇的模

    2024年02月08日
    浏览(64)
  • 【STM32】ESP8266 WiFi模块实时上报温湿度及控制LED灯项目笔记

    本项目无线通讯模块使用的是WiFi模块ESP8266,乐鑫公司推出的高性能、低功耗串口WiFi模块ESP8266应该是使用最广泛的一种WIFI模块之一了,它自身带有高性能的MCU(Microcontroller Unit),因此它既可以通过串口连接为外部MCU提供 WiFi通信功能,也就是我们本项目所用到的功能;当然

    2024年01月21日
    浏览(65)
  • 使用ATK-ESP8266 WIFI 模块实现手机APP与DSP28027的数据传输(1)

           首先对AT--ESP8266进行简单的介绍,该模块有六个引脚,各引脚的功能如下图所示,在28027上留入SCI接口来进行数据的发送和接收。    28027硬件接口  对于AT--ESP8266,该WIFI集成模块可以有三个模式: 串口无线AP模式:产生WIFI信号,让其他设备连接 串口无线STA模式:站点

    2024年02月06日
    浏览(45)
  • STM32f103增加ESP8266模块,通过Wifi用手机TCP服务端远程与STM32通信

    提示:esp8266开启透传模式,连上路由器Wifi(电脑热点),接入STM32串口引脚。另外手机TCP服务端是手机IP地址+串口号(大于8000滴) 最近对ESP8266模块进行小了解,知道只要对8266通过串口发送AT指令进行配置其工作模式,就能够通过手机调试APP创建什么TCP/UDP服务端/客户端和8266进行

    2024年02月16日
    浏览(56)
  • 毕业设计——基于STM32的智能家具控制系统(ESP-01S(8266)、手机app远程控制、远程显示温度)

    智能家具系统分为两个不同版本系列: ①系列一:手机app远程控制、远程检测温湿度显示在app,(云平台)    ---------本文章 ②系列二:语音识别控制                https://blog.csdn.net/m0_59113542/article/details/123742383 步进电机及相关驱动 步进电机28BYJ48 uln2003驱动板器4相5线

    2023年04月09日
    浏览(77)
  • 51系列单片机---ESP-01S无线WiFi模块的开发(路由服务器模式)

    记录一下基于STC89C52RC单片机对ESP-01S无线WiFi模块的开发(路由服务器模式)。 ESP-01S模块的路由服务器模式和设备模式开发思路相似,开发之前对ESP-01S模块的测试和波特率修改是一样的,差别只在于AT指令的不同。 记录一下代码编写的逻辑和过程: 1、用到的AT指令(发送AT指

    2024年04月11日
    浏览(38)
  • 【雕爷学编程】Arduino智能家居之使用ESP8266WiFi库和DHTesp库

    Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来

    2024年01月18日
    浏览(51)
  • 关于ESP8266WIFI模块的介绍

    ESP8266是曾经缔造了以低成本引爆物联网是换成那个的佳话,ESP8266模块是单核32位mcuwifi芯片为主。其特点是拥有高性能无线soc,是一个完整且自成体系的wifi网络方案,能够独立运行,也可以作为slave搭载其他host运行。 该命令用于查询设置指令的参数以及取值的范围 该命令用

    2024年02月06日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包