Nguyễn Yến — ESP32 simulation

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by yennguyen040405.

Components

Sketch code

#include <Arduino.h>
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <HTTPClient.h>

// ================= WIFI =================
const char* WIFI_SSID = "Velxio-GUEST";
const char* WIFI_PASSWORD = "";

// ================= THINGSBOARD =================
const char* TB_TOKEN = "6FaBNnzmQYsavlGUYAyG";

// ================= UART =================
#define UART_RX    16
#define UART_TX    17
#define UART_BAUD  9600

HardwareSerial MySerial(2);

unsigned long lastWiFiRetry = 0;

// ================= WIFI =================
bool connectWiFi()
{
    Serial.println("Dang ket noi WiFi...");

    WiFi.mode(WIFI_STA);
    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

    unsigned long start = millis();

    while (WiFi.status() != WL_CONNECTED &&
           millis() - start < 20000)
    {
        delay(500);
        Serial.print(".");
    }

    Serial.println();

    if (WiFi.status() == WL_CONNECTED)
    {
        Serial.println("Ket noi WiFi thanh cong.");
        Serial.print("IP: ");
        Serial.println(WiFi.localIP());

        return true;
    }

    Serial.println("Khong ket noi duoc WiFi.");
    return false;
}

// ================= THINGSBOARD =================
void sendTelemetry(float temperature, float humidity)
{
    if (WiFi.status() != WL_CONNECTED)
    {
        Serial.println("[TB] WiFi chua ket noi.");
        return;
    }

    if (strlen(TB_TOKEN) == 0)
    {
        Serial.println("6FaBNnzmQYsavlGUYAyG");
        return;
    }

    String url =
        String("https://thingsboard.cloud/api/v1/") +
        TB_TOKEN +
        "/telemetry";

    String payload =
        String("{\"temperature\":") +
        String(temperature, 1) +
        ",\"humidity\":" +
        String(humidity, 1) +
        "}";

    Serial.println("[TB] Bat dau gui Telemetry");
    Serial.println("[TB] URL: " + url);
    Serial.println("[TB] Payload: " + payload);

    WiFiClientSecure client;
    client.setInsecure();
    client.setTimeout(15000);

    HTTPClient http;
    http.setTimeout(15000);

    if (!http.begin(client, url))
    {
        Serial.println("[TB] Khoi tao HTTPS that bai.");
        return;
    }

    http.addHeader("Content-Type", "application/json");

    int httpCode = http.POST(payload);

    Serial.print("[TB] HTTP Response: ");
    Serial.println(httpCode);

    if (httpCode >= 200 && httpCode < 300)
    {
        Serial.println("[TB] GUI THANH CONG");
    }
    else if (httpCode > 0)
    {
        Serial.println("[TB] Loi may chu:");
        Serial.println(http.getString());
    }
    else
    {
        Serial.print("[TB] Loi ket noi: ");
        Serial.println(http.errorToString(httpCode));
    }

    http.end();
}

// ================= UART =================
void receiveUART()
{
    static uint8_t frame[6];
    static int index = 0;

    while (MySerial.available() > 0)
    {
        uint8_t b = MySerial.read();

        if (index == 0)
        {
            if (b == 0xFD)
            {
                frame[index++] = b;
            }
 

More projects by yennguyen040405