ESP32云开发二( http + led + lcd)

文章目录

前言

阅读此篇前建议先看 此片熟悉下wokwi
https://blog.csdn.net/qq_20330595/article/details/144289986

先上效果图
Column 1 Column 2
platformio.ini
wokwi.toml
diagram.json

注意这里代码是自动生成的

源代码
c 复制代码
// Learn about the ESP32 WiFi simulation in
// https://docs.wokwi.com/guides/esp32-wifi

#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <HTTPClient.h>

LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);

#define NTP_SERVER "pool.ntp.org"
#define UTC_OFFSET 0
#define UTC_OFFSET_DST 0

const int ledPin = 27; // 定义27号引脚为LED引脚

void sendHttpRequest()
{
  if (WiFi.status() == WL_CONNECTED)
  {
    WiFiClientSecure client;
    HTTPClient http;

    client.setInsecure(); // 如果是自签名证书可以使用此行

    http.begin(client, "https://wanandroid.com/harmony/index/json");

    int httpCode = http.GET();
    /**/
    LCD.clear();
    LCD.setCursor(0, 0);
    LCD.print("Sending Http");
    LCD.setCursor(0, 1);
    LCD.print("Request..... ");
    if (httpCode > 0)
    {
      String payload = http.getString();
      Serial.println("HTTP Response code: " + String(httpCode));
      // Serial.println("Response payload: " + payload);

      // 在LCD的第二行显示HTTP返回值的长度
      LCD.clear();
      LCD.setCursor(0, 0);
      LCD.print("httpCode: ");
      LCD.print(String(httpCode));

      LCD.setCursor(0, 1);
      LCD.print("Len: ");
      LCD.print(payload.length());
    }
    else
    {
      Serial.print("Error on HTTP request: ");      // 输出错误信息
      Serial.println(http.errorToString(httpCode)); // 转换错误代码为可读格式
    }
    http.end(); // 结束请求
  }
  else
  {
    Serial.println("WiFi Disconnected");
  }
}

void spinner()
{
  static int8_t counter = 0;
  const char *glyphs = "\xa1\xa5\xdb";
  LCD.setCursor(15, 1);
  LCD.print(glyphs[counter++]);
  if (counter == strlen(glyphs))
  {
    counter = 0;
  }
}

void printLocalTime()
{
  struct tm timeinfo;
  // 如果获取本地时间失败,则打印错误信息并返回
  if (!getLocalTime(&timeinfo))
  {
    // 在LCD的第二行显示连接错误信息
    LCD.setCursor(0, 1);
    LCD.println("Connection Err");
    return;
  }

  // 在LCD的第一行第9列开始显示当前时间
  LCD.setCursor(8, 0);
  LCD.println(&timeinfo, "%H:%M:%S");

  // 在LCD的第二行显示当前日期和时区
  LCD.setCursor(0, 1);
  LCD.println(&timeinfo, "%d/%m/%Y   %Z");
}

/**
 * @brief 初始化设置函数
 *
 * 该函数用于初始化串口通信、LCD显示屏,并连接到WiFi网络。
 * 它会在设备启动时执行一次。
 */
void setup()
{
  // 设置27号引脚为输出模式
  pinMode(ledPin, OUTPUT);

  // 初始化串口通信,波特率为115200
  Serial.begin(115200);

  // 初始化LCD显示屏
  LCD.init();
  // 打开LCD背光
  LCD.backlight();
  // 在LCD的第一行显示连接信息
  LCD.setCursor(0, 0);
  LCD.print("Connecting to ");
  // 在LCD的第二行显示WiFi信息
  LCD.setCursor(0, 1);
  LCD.print("WiFi ");

  // 开始连接到WiFi网络,SSID为"Wokwi-GUEST",密码为空,超时时间为6秒
  WiFi.begin("Wokwi-GUEST", "", 6);
  // 等待WiFi连接成功
  while (WiFi.status() != WL_CONNECTED)
  {
    // 延迟250毫秒
    delay(250);
    // 显示连接状态的旋转图标
    spinner();
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  LCD.clear();
  LCD.setCursor(0, 0);
  LCD.println("Online");
  LCD.setCursor(0, 1);
  LCD.println("Updating time...");

  configTime(UTC_OFFSET, UTC_OFFSET_DST, NTP_SERVER);
}

void loop()
{
  // printLocalTime();
  // delay(250);

  // delay(4000);
  // sendHttpRequest();

  // 循环输出高低电平
  digitalWrite(ledPin, HIGH);
  LCD.clear();
  LCD.setCursor(0, 0);
  LCD.println("HIGH");
  delay(1000);
  
  digitalWrite(ledPin, LOW);
  LCD.clear();
  LCD.setCursor(0, 0);
  LCD.println("LOW");
  delay(1000);
}
编译

Ctrl+Alt+B

编译成功


注意这里输出的固件路径对应前面wokwi.toml的内容

上传云端

Ctrl+Shift+P

完结撒花⭐⭐⭐⭐⭐
相关推荐
优信电子4 天前
ESP8266_ESP32 Smartconfig一键配网功能
esp32·esp8266·smartconfig·无线配网
ling9134 天前
微信小程序通过mqtt控制esp32
mqtt·微信小程序·小程序·esp32·巴法云
Freddy_Ssc8 天前
ESP32之阿里云IoT物模型通信(MQTT-TLS连接通信),基于VSCode环境下的ESP-IDF开发(附源码)
vscode·物联网·阿里云·esp32·物模型
宁子希9 天前
如何将 ESP32 快速接入高德、心知、和风天气API 获取天气信息
android·单片机·嵌入式硬件·esp32
mingupup9 天前
ESP32+Arduino入门(三):连接WIFI获取当前时间
esp32·arduino
~照猫画虎~16 天前
ESP32系列,IDF官方实例——外设:通用GPIO
esp32·esp idf
余衫马1 个月前
从零到一:ESP32与豆包大模型的RTC连续对话实现指南
esp32·实时音视频·智能对话·esp-adf·sparkbot
公子无缘1 个月前
【嵌入式】复刻SQFMI开源的Watchy墨水屏电子表——(2)软件部分
c语言·嵌入式硬件·物联网·开源·esp32
古希腊掌握嵌入式的神1 个月前
ESP32学习 -从STM32工程架构进阶到ESP32架构
stm32·学习·架构·esp32
集大周杰伦1 个月前
深入理解 Xtensa 架构 ESP32 内存架构(SRAM、IRAM、IROM、DRAM、DROM详解)
架构·系统架构·esp32·esp·内存架构·xtensa