forest-all-around/broadcast/src/main.cpp
Dooho Yi 288ddd88d5 updates for simpler communication
+ peer book listing (debug)
+ no addressbook/peer list -> all go broadcast!
+ wifi_channel == 1 for later 
(https://github.com/espressif/arduino-esp32/issues/878#issuecomment-578885352)
2022-04-26 10:40:54 +09:00

125 lines
2.5 KiB
C++

//
// 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
//============<parameters>============
//
#define LED_PERIOD (11111)
#define LED_ONTIME (1)
#define LED_GAPTIME (222)
//
#define WIFI_CHANNEL 1
//
//============</parameters>===========
//============<board-specifics>============
#if defined(ARDUINO_FEATHER_ESP32) // featheresp32
#define LED_PIN 13
#else
#define LED_PIN 2
#endif
//============</board-specifics>===========
//arduino
#include <Arduino.h>
//espnow
#include <ESP8266WiFi.h>
#include <espnow.h>
// 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 <TaskScheduler.h>
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();
//
}