ESP RainMaker เป็นแพลตฟอร์มที่ช่วยให้นักพัฒนาสร้างอุปกรณ์ที่เชื่อมต่อกับ ESP32-S2 SoC ของ Espressif โดยไม่ต้องวุ่นวายกับการจัดการโครงสร้างพื้นฐาน มี SDK ของอุปกรณ์ แอปโทรศัพท์ที่ปรับเปลี่ยนได้เอง มิดเดิลแวร์คลาวด์แบบโปร่งใส และยูทิลิตีโฮสต์เพื่อลดความซับซ้อนในการพัฒนาอุปกรณ์ที่เชื่อมต่อ ESP RainMaker ยังเสนอการผสานรวมกับ Amazon Alexa และ Google Voice Services โดยรองรับอุปกรณ์มาตรฐาน บางประเภท สำหรับหมวดหมู่ต่อไปนี้

  • ไฟ
  • สวิตช์
  • เต้ารับ/เต้ารับ
  • พัดลม
  • เซ็นเซอร์อุณหภูมิ


ESP RainMaker เป็นโซลูชัน IoT แบบ end-to-end โดยมีระบบคลาวด์แบ็คเอนด์เป็นแกนหลัก แบ็กเอนด์สร้างขึ้นโดยใช้สถาปัตยกรรมแบบไร้เซิร์ฟเวอร์ของ AWS ซึ่งมอบความยืดหยุ่นและความสามารถในการปรับขนาดที่เหนือชั้นในแง่ของการประมวลผล การจัดเก็บข้อมูล และความสามารถในการรับส่งข้อมูล Serverless ไม่ได้หมายความว่าไม่มีเซิร์ฟเวอร์ มันซ่อนการจัดการโครงสร้างพื้นฐานของฮาร์ดแวร์และซอฟต์แวร์และให้บริการที่ใช้งานได้สำหรับแอปพลิเคชัน แอปพลิเคชันยังได้รับการออกแบบให้ไม่ทำงานบนอินสแตนซ์ของเซิร์ฟเวอร์เฉพาะ แต่ขับเคลื่อนด้วยเหตุการณ์และสามารถใช้บริการที่มีอยู่ได้ สิ่งนี้ทำให้ ESP RainMaker ง่ายต่อการบำรุงรักษาและจัดการ นอกจากนี้ยังมีเลเยอร์แอ็พพลิเคชัน API แบบเปิดซึ่งช่วยให้สามารถปรับแต่งและตอบสนองความต้องการที่หลากหลายของสภาพแวดล้อมที่แตกต่างกันได้


ESP RainMaker เป็นมากกว่าการให้บริการคลาวด์ มีเฟิร์ มแวร์ SDK แบบโอเพ่นซอร์สซึ่งสามารถเข้าถึงได้บนGitHub สามารถใช้สร้างผลิตภัณฑ์มาตรฐาน เช่น ไฟ สวิตช์ พัดลม ฯลฯ รวมถึงผลิตภัณฑ์ IoT แบบกำหนดเองโดยใช้โมเดลข้อมูล fkexible และ API โดยยังมีแอพโทรศัพท์สองประเภท: แอพ ESP RainMaker และแอพ Nova Home อีกด้วย

เราจะดูวิธีเริ่มต้นใช้งาน ESP Rainmaker สิ่งแรกที่เราต้องทำคือติดตั้ง Arduino IDE และเราจะกำหนดค่าให้ รองรับบอร์ด ESP32 จากนั้นเราจะกำหนดค่าให้รองรับ ESP Rainmaker แล้วอัปโหลดโค้ดแรกของเราเข้าไป


  1. ติดตั้ง Arduino IDE


สิ่งแรกคือการติดตั้ง Arduino IDE เพื่อให้คุณสามารถค้นหา Arduino IDE ใน Google

จากนั้นคุณมีสองทางเลือก

หนึ่งคือการติดตั้งเวอร์ชัน1 หรือเพื่อติดตั้งเวอร์ชัน 2

เราจะติดตั้งเวอร์ชัน 2 เพราะมีคุณสมบัติเพิ่มเติมบางอย่าง แต่ไม่ว่าคุณจะเลือกอะไรมันจะทำงานเช่นกัน ดังนั้นคุณสามารถเลือกอย่างใดอย่างหนึ่ง

ดาวน์โหลด Arduino IDE จากที่นี่

https://www.arduino.cc/en/software


2. กำหนดค่าให้ รองรับบอร์ด ESP32


ไปที่ File > Preferences


คัดลอกและวางบรรทัดต่อไปนี้ลงในฟิลด์ Boards Manager URLs

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json



คลิกไอคอนตัวจัดการบอร์ดที่มุมด้านซ้าย ค้นหา ESP32 และกดปุ่มติดตั้งสำหรับ esp32 โดย Espressif Systems



เลือกบอร์ด ESP32 ตามรุ่นที่ใช้ เช่น ESP32S2 , ESP32C3 , ESP32S3



3. กำหนดค่าให้รองรับ ESP Rainmaker

กำหนดค่าให้รองรับ ESP Rainmaker



เลือก Enabled

esptool --chip ESP32 --port COM5 erase_flash


4. อัปโหลดโค้ดแรก


เลือกตัวอย่างโค้ด


// This example demonstrates the ESP RainMaker with a standard Switch device.
#include "RMaker.h"
#include "WiFi.h"
#include "WiFiProv.h"
#include "AppInsights.h"

#define DEFAULT_POWER_MODE true
const char *service_name = "PROV_1234";
const char *pop = "abcd1234";

// GPIO for push button
#if CONFIG_IDF_TARGET_ESP32C3
static int gpio_0 = 9;
static int gpio_switch = 7;
#else
// GPIO for virtual device
static int gpio_0 = 0;
static int gpio_switch = 16;
#endif

/* Variable for reading pin status*/
bool switch_state = true;

// The framework provides some standard device types like switch, lightbulb,
// fan, temperaturesensor.
static Switch *my_switch = NULL;

void sysProvEvent(arduino_event_t *sys_event)
{
    switch (sys_event->event_id) {
    case ARDUINO_EVENT_PROV_START:
#if CONFIG_IDF_TARGET_ESP32S2
        Serial.printf("\nProvisioning Started with name \"%s\" and PoP \"%s\" on SoftAP\n",
                      service_name, pop);
        printQR(service_name, pop, "softap");
#else
        Serial.printf("\nProvisioning Started with name \"%s\" and PoP \"%s\" on BLE\n",
                      service_name, pop);
        printQR(service_name, pop, "ble");
#endif
        break;
    case ARDUINO_EVENT_PROV_INIT:
        wifi_prov_mgr_disable_auto_stop(10000);
        break;
    case ARDUINO_EVENT_PROV_CRED_SUCCESS:
        wifi_prov_mgr_stop_provisioning();
        break;
    default:;
    }
}

void write_callback(Device *device, Param *param, const param_val_t val,
                    void *priv_data, write_ctx_t *ctx)
{
    const char *device_name = device->getDeviceName();
    const char *param_name = param->getParamName();

    if (strcmp(param_name, "Power") == 0) {
        Serial.printf("Received value = %s for %s - %s\n",
                      val.val.b ? "true" : "false", device_name, param_name);
        switch_state = val.val.b;
        (switch_state == false) ? digitalWrite(gpio_switch, LOW)
        : digitalWrite(gpio_switch, HIGH);
        param->updateAndReport(val);
    }
}

void setup()
{
    Serial.begin(115200);
    pinMode(gpio_0, INPUT);
    pinMode(gpio_switch, OUTPUT);
    digitalWrite(gpio_switch, DEFAULT_POWER_MODE);

    Node my_node;
    my_node = RMaker.initNode("ESP RainMaker Node");

    // Initialize switch device
    my_switch = new Switch("Switch", &gpio_switch);
    if (!my_switch) {
        return;
    }
    // Standard switch device
    my_switch->addCb(write_callback);

    // Add switch device to the node
    my_node.addDevice(*my_switch);

    // This is optional
    RMaker.enableOTA(OTA_USING_TOPICS);
    // If you want to enable scheduling, set time zone for your region using
    // setTimeZone(). The list of available values are provided here
    // https://rainmaker.espressif.com/docs/time-service.html
    //  RMaker.setTimeZone("Asia/Shanghai");
    //  Alternatively, enable the Timezone service and let the phone apps set the
    //  appropriate timezone
    RMaker.enableTZService();

    RMaker.enableSchedule();

    RMaker.enableScenes();
    // Enable ESP Insights. Insteads of using the default http transport, this function will
    // reuse the existing MQTT connection of Rainmaker, thereby saving memory space.
    initAppInsights();

    RMaker.enableSystemService(SYSTEM_SERV_FLAGS_ALL, 2, 2, 2);

    RMaker.start();

    WiFi.onEvent(sysProvEvent);
#if CONFIG_IDF_TARGET_ESP32S2
    WiFiProv.beginProvision(WIFI_PROV_SCHEME_SOFTAP, WIFI_PROV_SCHEME_HANDLER_NONE,
                            WIFI_PROV_SECURITY_1, pop, service_name);
#else
    WiFiProv.beginProvision(WIFI_PROV_SCHEME_BLE, WIFI_PROV_SCHEME_HANDLER_FREE_BTDM,
                            WIFI_PROV_SECURITY_1, pop, service_name);
#endif
}

void loop()
{
    if (digitalRead(gpio_0) == LOW) {  // Push button pressed

        // Key debounce handling
        delay(100);
        int startTime = millis();
        while (digitalRead(gpio_0) == LOW) {
            delay(50);
        }
        int endTime = millis();

        if ((endTime - startTime) > 10000) {
            // If key pressed for more than 10secs, reset all
            Serial.printf("Reset to factory.\n");
            RMakerFactoryReset(2);
        } else if ((endTime - startTime) > 3000) {
            Serial.printf("Reset Wi-Fi.\n");
            // If key pressed for more than 3secs, but less than 10, reset Wi-Fi
            RMakerWiFiReset(2);
        } else {
            // Toggle device state
            switch_state = !switch_state;
            Serial.printf("Toggle State to %s.\n", switch_state ? "true" : "false");
            if (my_switch) {
                my_switch->updateAndReportParam(ESP_RMAKER_DEF_POWER_NAME,
                                                switch_state);
            }
            (switch_state == false) ? digitalWrite(gpio_switch, LOW)
            : digitalWrite(gpio_switch, HIGH);
        }
    }
    delay(100);
}




แสดงการอัพโหลดสำเร็จ



เลือก Serial Monitor



เปลี่ยนเป็น 115200 baud



เลือกเป็น Both NL & CR




รีสตาร์ท ESP32 โดยกดปุ่ม EN



ก๊อบปี้ URL ด้านล่าง ไปใช้งานที่เว็บเบราว์เซอร์





5. ติดตั้งแอพ ESP Rainmaker

แอพ ESP RainMaker เป็นแอพเนทีฟแบบโอเพ่นซอร์สที่สร้างขึ้นสำหรับ Android และ iOS แอปเหล่านี้มี UI ที่ปรับเปลี่ยนได้เอง ซึ่งหมายความว่าฟังก์ชันใดๆ ที่เพิ่มเข้ามาในเฟิร์มแวร์ RainMaker สามารถใช้งานได้ผ่านแอปเหล่านี้โดยไม่มีการเปลี่ยนแปลงใดๆ ทำให้การพัฒนาผลิตภัณฑ์ง่ายและรวดเร็วขึ้นมาก เนื่องจากสิ่งเหล่านี้เป็นโอเพ่นซอร์สจึงสามารถกำหนดค่าและปรับแต่งตามความต้องการของคุณ


ใช้สมาร์ทโฟนดาวน์โหลดและติดตั้งแอพ ESP Rainmaker


เปิดแอพ ESP Rainmaker -> Add Devices



สแกนบาร์โค้ด จาก เว็บเบราว์เซอร์


เลือก Join Other Network




ลงชื่อเข้าใช้เครือข่าย WiFI และ รหัสผ่าน -> PROVISION




รอการติดตั้ง


แสดงการติดตั้งสำเร็จ



ทดสอบเปิดปิดไฟ LED ที่ต่อที่ขา 16

Leave a Reply

Your email address will not be published. Required fields are marked *

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save