【雕爷学编程】Arduino动手做(172)---WeMos D1开发板模块4

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266

在这里插入图片描述
知识点:ESP8266
低功耗、高集成度的 Wi-Fi 芯片
仅需 7 个外围元器件
超宽工作温度范围:-40°C 至 +125°C
ESP8285 - ESP8266 内封 8 Mbit Flash

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266

项目十:Station模式下的操作实例,查询当前WiFi的IP地址

Arduino实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
  项目十:Station模式下的操作实例,查询当前WiFi的IP地址
*/

#include <ESP8266WiFi.h>

#define AP_SSID "zhz" //这里改成你的wifi名字
#define AP_PSW  "156721"//这里改成你的wifi密码

void setup() {
  //设置串口波特率,以便打印信息
  Serial.begin(9600);
  Serial.println("");
  Serial.println("ESP8266准备就绪");

  //启动STA模式,并连接到wifi网络
  WiFi.begin(AP_SSID, AP_PSW);

  Serial.print(String("连接到---") + AP_SSID);
  //判断网络状态是否连接上,没连接上就延时500ms,并且打出一个点,模拟连接过程
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println("");
  Serial.print("已连接,IP地址: ");
  //输出station IP地址,这里的IP地址由DHCP分配
  Serial.println(WiFi.localIP());
  Serial.println("设置结束");
}

void loop() {
}

项目十:Station模式下的操作实例,查询当前WiFi的IP地址

实验串口返回情况

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
WeMos D1开发板电原理图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266

项目十一:创建一个服务器实例,在手机浏览器输入1关灯,输入0开灯

Arduino实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
  项目十一:创建一个服务器实例,在手机浏览器输入1关灯,输入0开灯
*/

#include <ESP8266WiFi.h>

const char* ssid = "zhz";
const char* password = "567890";

// 创建一个服务器实例
// 指定要监听的端口作为参数
WiFiServer server(80);

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

  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
  /* pinMode(3, OUTPUT);
    digitalWrite(3, 0);
    /*pinMode(4, OUTPUT);
    digitalWrite(4, 0);
    pinMode(5, OUTPUT);
    digitalWrite(5, 0);
    pinMode(6, OUTPUT);
    digitalWrite(6, 0);
    pinMode(7, OUTPUT);
    digitalWrite(7, 0);
    pinMode(8, OUTPUT);
    digitalWrite(8, 0);
    pinMode(9, OUTPUT);
    digitalWrite(9, 0);
    pinMode(10, OUTPUT);
    digitalWrite(10, 0);
    pinMode(11, OUTPUT);
    digitalWrite(11, 0);
    pinMode(12, OUTPUT);
    digitalWrite(2, 0);
    pinMode(13, OUTPUT);
    digitalWrite(13, 0);
    pinMode(14, OUTPUT);
    digitalWrite(14, 0);
    pinMode(15, OUTPUT);
    digitalWrite(15, 0);
    pinMode(16, OUTPUT);
    digitalWrite(16, 0);*/

  // 连接到 WiFi 网络
  Serial.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");

  // 启动服务器
  server.begin();
  Serial.println("Server started @ ");

  // 打印 IP 地址和说明
  Serial.println(WiFi.localIP());
  Serial.println("To control GPIO, open your web browser.");
  Serial.println("To set GPIO 0 high, type:");
  Serial.print(WiFi.localIP());
  Serial.println("/gpio/1");
  Serial.println("To set GPIO 0 low, type:");
  Serial.print(WiFi.localIP());
  Serial.println("/gpio/0");
  Serial.println("To toggle GPIO 0, type:");
  Serial.print(WiFi.localIP());
  Serial.println("/gpio/0");
}

void loop() {
  // 检查客户端是否已连接
  WiFiClient client = server.available();
  if (!client) {
    delay(100);
    return;
  }

  // Commented out by BB as gets stuck in while loop.
  // Wait until the client sends some data
  //Serial.println("new client");
  //while(!client.available()){
  //  delay(1);
  //}

  // 读取请求的第一行
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();

  // 匹配请求
  int val;
  if (req.indexOf("/gpio/1") != -1)
    val = 1;
  else if (req.indexOf("/gpio/0") != -1)
    val = 0;
  else if (req.indexOf("/gpio/4") != -1)
    val = (!digitalRead(0)); // <<<<< Edit: insert /gpio/3 lines after this line.
  else {
    Serial.println("invalid request");
    client.print("HTTP/1.1 404\r\n");
    client.stop();
    return;
  }

  // Set GPIO2 according to the request
  digitalWrite(2, val);
  /*digitalWrite(3, val);
    /* digitalWrite(4, val);
    digitalWrite(5, val);
    digitalWrite(6, val);
    digitalWrite(7, val);
    digitalWrite(8, val);
    digitalWrite(9, val);
    digitalWrite(10, val);
    digitalWrite(11, val);
    digitalWrite(12, val);
    digitalWrite(13, val);
    digitalWrite(14, val);
    digitalWrite(15, val);
    digitalWrite(16, val);*/


  client.flush();

  // 准备响应
  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);
  delay(1);
  Serial.println("Client disonnected");

  // 客户端实际上会断开连接
  // 当函数返回并且 'client' 对象被销毁时
}

实验串口返回情况

在这里插入图片描述
打开手机浏览器,输入
192.168.31.90/gpio/1或者
192.168.31.90/gpio/0

即可控制板载LED的亮灭

在这里插入图片描述
在这里插入图片描述

打开电脑上任何一款浏览器,输入“192.168.31.90/gpio/1”或者“192.168.31.90/gpio/0”,即可控制板载灯

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值