Arduino:ESP32 WIFI 获取网页内容并显示在OLED上

让ESP32通过网络访问Web Server指定网页,并将内容显示在显示屏上应该是个很实用的应用场景。

今天在家休息,手头正好有一台树莓派和一个小OLED做这个实验。树莓派连接到家里的WIFI上,并sudo apt-get install apache2,让树莓派充当网页服务器。在/var/www/html下新建了a.html,内容就写TEST,看看是啥结果。

#include <WiFi.h>
#include <HTTPClient.h>
HTTPClient http;

#include "SSD1306.h"
SSD1306 display(0x3c, 21, 22);

unsigned long startTime = millis();

void setup() {

  //Serial.begin(115200);

  display.init();
  display.setFont(ArialMT_Plain_16);
  display.drawString(0, 0, "Starting...");
  display.display();

  WiFi.mode(WIFI_STA); //设置为STA模式
  WiFi.disconnect();   //断开当前可能的连接
  delay(1000);

  const char *ssid = "WIFI名称"; //你的网络名称,区分大小写
  const char *password = "****马赛克****"; //你的网络密码

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) //等待网络连接成功
  {
    if (millis() - startTime >= 15000) // 15秒连接超时
    {
      //Serial.println("Timed Out...");
      display.clear();
      display.drawString(0, 0, "Timed Out...");
      display.display();
      
      break;
    }
    else
    {
      display.clear();
      display.drawString(0, 0, "Connecting....");
      display.display();      
    }

    delay(500);
  }

}

void loop() {

  if (WiFi.status() == WL_CONNECTED)
  {
    http.begin("http://192.168.1.9/a.html"); // 访问指定URL

    int httpCode = http.GET();
    if (httpCode == HTTP_CODE_OK) {
      String pageData = http.getString();

      //Serial.println(pageData); // 网页内容

      display.clear();
      display.drawString(0, 0, pageData);
      display.display();
    }
    else
    {
      display.clear();
      display.drawString(0, 0, "GET Error.");
      display.display();
    }

    http.end();
  }
  else
  {
    display.clear();
    display.drawString(0, 0, "WIFI Error.");
    display.display();

  }

  delay(5000);
}

发布了122 篇原创文章 · 获赞 61 · 访问量 53万+

猜你喜欢

转载自blog.csdn.net/ki1381/article/details/88625039