// // wirelessly connected cloud (based on ESP-NOW, a kind of LPWAN?) // // // Conversation about the ROOT @ SEMA storage, Seoul // // // 2021 02 21 // // broadcast tx/rx test with esp8266 //======================== // #define LED_PERIOD (11111) #define LED_ONTIME (1) #define LED_GAPTIME (222) // #define WIFI_CHANNEL 1 // //======================= //======================== #if defined(ARDUINO_FEATHER_ESP32) // featheresp32 #define LED_PIN 13 #else #define LED_PIN 2 #endif //======================= //arduino #include //espnow #include #include // on 'sent' void onDataSent(uint8_t *mac_addr, uint8_t sendStatus) { if (sendStatus != 0) Serial.println("Delivery failed!"); } // on 'receive' void onDataReceive(uint8_t * mac, uint8_t *incomingData, uint8_t len) { Serial.write(incomingData, len); Serial.println(); } //task #include Scheduler runner; //task #0 : blink led extern Task blink_task; void blink() { // static int count = 0; count++; // switch (count % 4) { case 0: digitalWrite(LED_PIN, LOW); // first ON blink_task.delay(LED_ONTIME); break; case 1: digitalWrite(LED_PIN, HIGH); // first OFF blink_task.delay(LED_GAPTIME); break; case 2: digitalWrite(LED_PIN, LOW); // second ON blink_task.delay(LED_ONTIME); break; case 3: digitalWrite(LED_PIN, HIGH); // second OFF blink_task.delay(LED_PERIOD - 2* LED_ONTIME - LED_GAPTIME); break; } } Task blink_task(0, TASK_FOREVER, &blink, &runner, true); // -> ENABLED, at start-up. //task #1 : regular tx void espnow_transmit() { // String hello = "hello. from ... " + String(WiFi.macAddress()); esp_now_send(NULL, (uint8_t *) hello.c_str(), hello.length()); // } Task espnow_transmit_task(1000, TASK_FOREVER, &espnow_transmit, &runner, true); // by default, ENABLED // void setup() { //led pinMode(LED_PIN, OUTPUT); //serial Serial.begin(115200); delay(100); //wifi WiFiMode_t node_type = WIFI_AP_STA; WiFi.mode(node_type); //esp-now if (esp_now_init() != 0) { Serial.println("Error initializing ESP-NOW"); return; } esp_now_set_self_role(ESP_NOW_ROLE_COMBO); esp_now_register_send_cb(onDataSent); esp_now_register_recv_cb(onDataReceive); // uint8_t broadcastmac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; esp_now_add_peer(broadcastmac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); } void loop() { // runner.execute(); // }