Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

[经验] 【Arduino】168种传感器模块系列实验(125)---WeMos D1开发板

[复制链接]
 楼主| 发表于 2021-8-4 14:56 | 显示全部楼层
本帖最后由 eagler8 于 2021-8-4 14:58 编辑

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

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

  6. #include <ESP8266WiFi.h>

  7. const char* ssid = "zhz";
  8. const char* password = "567890";

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

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

  15.   // prepare GPIO2
  16.   pinMode(2, OUTPUT);
  17.   digitalWrite(2, 0);
  18.   /* pinMode(3, OUTPUT);
  19.     digitalWrite(3, 0);
  20.     /*pinMode(4, OUTPUT);
  21.     digitalWrite(4, 0);
  22.     pinMode(5, OUTPUT);
  23.     digitalWrite(5, 0);
  24.     pinMode(6, OUTPUT);
  25.     digitalWrite(6, 0);
  26.     pinMode(7, OUTPUT);
  27.     digitalWrite(7, 0);
  28.     pinMode(8, OUTPUT);
  29.     digitalWrite(8, 0);
  30.     pinMode(9, OUTPUT);
  31.     digitalWrite(9, 0);
  32.     pinMode(10, OUTPUT);
  33.     digitalWrite(10, 0);
  34.     pinMode(11, OUTPUT);
  35.     digitalWrite(11, 0);
  36.     pinMode(12, OUTPUT);
  37.     digitalWrite(2, 0);
  38.     pinMode(13, OUTPUT);
  39.     digitalWrite(13, 0);
  40.     pinMode(14, OUTPUT);
  41.     digitalWrite(14, 0);
  42.     pinMode(15, OUTPUT);
  43.     digitalWrite(15, 0);
  44.     pinMode(16, OUTPUT);
  45.     digitalWrite(16, 0);*/

  46.   // 连接到 WiFi 网络
  47.   Serial.println();
  48.   Serial.println();
  49.   Serial.print("Connecting to ");
  50.   Serial.println(ssid);

  51.   WiFi.begin(ssid, password);

  52.   while (WiFi.status() != WL_CONNECTED) {
  53.     delay(500);
  54.     Serial.print(".");
  55.   }
  56.   Serial.println("");
  57.   Serial.println("WiFi connected");

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

  61.   // 打印 IP 地址和说明
  62.   Serial.println(WiFi.localIP());
  63.   Serial.println("To control GPIO, open your web browser.");
  64.   Serial.println("To set GPIO 0 high, type:");
  65.   Serial.print(WiFi.localIP());
  66.   Serial.println("/gpio/1");
  67.   Serial.println("To set GPIO 0 low, type:");
  68.   Serial.print(WiFi.localIP());
  69.   Serial.println("/gpio/0");
  70.   Serial.println("To toggle GPIO 0, type:");
  71.   Serial.print(WiFi.localIP());
  72.   Serial.println("/gpio/0");
  73. }

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

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

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

  91.   // 匹配请求
  92.   int val;
  93.   if (req.indexOf("/gpio/1") != -1)
  94.     val = 1;
  95.   else if (req.indexOf("/gpio/0") != -1)
  96.     val = 0;
  97.   else if (req.indexOf("/gpio/4") != -1)
  98.     val = (!digitalRead(0)); // <<<<< Edit: insert /gpio/3 lines after this line.
  99.   else {
  100.     Serial.println("invalid request");
  101.     client.print("HTTP/1.1 404\r\n");
  102.     client.stop();
  103.     return;
  104.   }

  105.   // Set GPIO2 according to the request
  106.   digitalWrite(2, val);
  107.   /*digitalWrite(3, val);
  108.     /* digitalWrite(4, val);
  109.     digitalWrite(5, val);
  110.     digitalWrite(6, val);
  111.     digitalWrite(7, val);
  112.     digitalWrite(8, val);
  113.     digitalWrite(9, val);
  114.     digitalWrite(10, val);
  115.     digitalWrite(11, val);
  116.     digitalWrite(12, val);
  117.     digitalWrite(13, val);
  118.     digitalWrite(14, val);
  119.     digitalWrite(15, val);
  120.     digitalWrite(16, val);*/


  121.   client.flush();

  122.   // 准备响应
  123.   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 ";
  124.   s += (val) ? "high" : "low";
  125.   s += "</html>\n";

  126.   // 将响应发送给客户端
  127.   client.print(s);
  128.   delay(1);
  129.   Serial.println("Client disonnected");

  130.   // 客户端实际上会断开连接
  131.   // 当函数返回并且 'client' 对象被销毁时
  132. }
复制代码


 楼主| 发表于 2021-8-4 14:58 | 显示全部楼层
实验串口返回情况

29.jpg
 楼主| 发表于 2021-8-4 15:03 | 显示全部楼层
打开手机浏览器,输入
192.168.31.90/gpio/1或者
192.168.31.90/gpio/0

即可控制板载LED的亮灭

30.jpg



 楼主| 发表于 2021-8-4 15:05 | 显示全部楼层
31.jpg
 楼主| 发表于 2021-8-4 15:49 | 显示全部楼层
打开电脑上任何一款浏览器,输入“192.168.31.90/gpio/1”或者“192.168.31.90/gpio/0”,即可控制板载灯


32.jpg





 楼主| 发表于 2021-8-4 16:27 | 显示全部楼层
本帖最后由 eagler8 于 2021-8-4 16:30 编辑

下面是尝试使用点灯科技平台连接物联网
(官网 https://diandeng.tech/home

blinker

先安装APP,手机上打开应用宝搜blinker,安装后注册一个账号,添加新设备


32-.jpg







 楼主| 发表于 2021-8-4 16:30 | 显示全部楼层
添加独立设备

33.jpg
 楼主| 发表于 2021-8-4 16:31 | 显示全部楼层


34.jpg
 楼主| 发表于 2021-8-4 16:32 | 显示全部楼层
网络接入,这里选择点灯

35.jpg
 楼主| 发表于 2021-8-4 19:29 | 显示全部楼层
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目十二:使用blinker平台,在APP上点按键,控制开关灯
实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
  4.   项目十二:使用blinker平台,在APP上点按键,控制开关灯
  5. */

  6. #define BLINKER_WIFI
  7. #include <Blinker.h>

  8. char auth[] = "dbed1b7b31d4ad";//点灯科技app获取的秘钥
  9. char ssid[] = "zhz";//wifi账号
  10. char pswd[] = "567890";//wifi密码

  11. // 新建组件对象
  12. BlinkerButton Button1("btn-abc");

  13. // 按下按键即会执行该函数
  14. void button1_callback(const String & state) {
  15.   BLINKER_LOG("get button state: ", state);
  16.   digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
  17.   Blinker.vibrate();
  18. }

  19. void setup() {
  20.   // 初始化串口,并开启调试信息
  21.   Serial.begin(115200);
  22.   BLINKER_DEBUG.stream(Serial);
  23.   // 初始化有LED的IO
  24.   pinMode(LED_BUILTIN, OUTPUT);
  25.   digitalWrite(LED_BUILTIN, HIGH);
  26.   // 初始化blinker
  27.   Blinker.begin(auth, ssid, pswd);
  28.   Button1.attach(button1_callback);
  29. }

  30. void loop() {
  31.   Blinker.run();
  32. }
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino爱好者

GMT+8, 2023-2-1 00:11 , Processed in 0.074425 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表