-
Notifications
You must be signed in to change notification settings - Fork 7.7k
Description
Board
ESP32 dev module
Device Description
ets Jun 8 2016 00:22:57
rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13516
load:0x40080400,len:3604
entry 0x400805f0
ets Jun 8 2016 00:22:57
rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13516
load:0x40080400,len:3604
entry 0x400805f0
ets Jun 8 2016 00:22:57
rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13516
load:0x40080400,len:3604
entry 0x400805f0
ets Jun 8 2016 00:22:57
rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13516
load:0x40080400,len:3604
entry 0x400805f0
ets Jun 8 2016 00:22:57
rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13516
load:0x40080400,len:3604
entry 0x400805f0
ets Jun 8 2016 00:22:57
Hardware Configuration
LoRa moduole connected to ESP32
Version
v2.0.4
IDE Name
ARDUINO IDE
Operating System
WINDOWS 11
Flash frequency
80MHZ
PSRAM enabled
yes
Upload speed
115200
Description
Board resetting again and again
Sketch
#include <EEPROM.h>
#include <RHRouter.h>
#include <RHMesh.h>
#include <RH_RF95.h>
#define RH_HAVE_SERIAL
#define LED 9
#define N_NODES 4
uint8_t nodeId;
uint8_t routes[N_NODES]; // full routing table for mesh
int16_t rssi[N_NODES]; // signal strength info
// Singleton instance of the radio driver
RH_RF95 rf95;
// Class to manage message delivery and receipt, using the driver declared above
RHMesh *manager;
// message buffer
char buf[RH_MESH_MAX_MESSAGE_LEN];
//int freeMem() {
// extern int __heap_start, *__brkval;
// int v;
// return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
//}
void setup() {
randomSeed(analogRead(0));
pinMode(LED, OUTPUT);
Serial.begin(115200);
while (!Serial) ; // Wait for serial port to be available
nodeId = EEPROM.read(0);
if (nodeId > 10) {
Serial.print(F("EEPROM nodeId invalid: "));
Serial.println(nodeId);
nodeId = 1;
}
Serial.print(F("initializing node "));
manager = new RHMesh(rf95, nodeId);
if (!manager->init()) {
Serial.println(F("init failed"));
} else {
Serial.println("done");
}
rf95.setTxPower(23, false);
rf95.setFrequency(915.0);
rf95.setCADTimeout(500);
// Possible configurations:
// Bw125Cr45Sf128 (the chip default)
// Bw500Cr45Sf128
// Bw31_25Cr48Sf512
// Bw125Cr48Sf4096
// long range configuration requires for on-air time
boolean longRange = false;
if (longRange) {
RH_RF95::ModemConfig modem_config = {
0x78, // Reg 0x1D: BW=125kHz, Coding=4/8, Header=explicit
0xC4, // Reg 0x1E: Spread=4096chips/symbol, CRC=enable
0x08 // Reg 0x26: LowDataRate=On, Agc=Off. 0x0C is LowDataRate=ON, ACG=ON
};
rf95.setModemRegisters(&modem_config);
if (!rf95.setModemConfig(RH_RF95::Bw125Cr48Sf4096)) {
Serial.println(F("set config failed"));
}
}
Serial.println("RF95 ready");
for(uint8_t n=1;n<=N_NODES;n++) {
routes[n-1] = 0;
rssi[n-1] = 0;
}
// Serial.print(F("mem = "));
// Serial.println(freeMem());
}
const __FlashStringHelper* getErrorString(uint8_t error) {
switch(error) {
case 1: return F("invalid length");
break;
case 2: return F("no route");
break;
case 3: return F("timeout");
break;
case 4: return F("no reply");
break;
case 5: return F("unable to deliver");
break;
}
return F("unknown");
}
void updateRoutingTable() {
for(uint8_t n=1;n<=N_NODES;n++) {
RHRouter::RoutingTableEntry *route = manager->getRouteTo(n);
if (n == nodeId) {
routes[n-1] = 255; // self
} else {
routes[n-1] = route->next_hop;
if (routes[n-1] == 0) {
// if we have no route to the node, reset the received signal strength
rssi[n-1] = 0;
}
}
}
}
// Create a JSON string with the routing info to each node
void getRouteInfoString(char *p, size_t len) {
p[0] = '\0';
strcat(p, "[");
for(uint8_t n=1;n<=N_NODES;n++) {
strcat(p, "{\"n\":");
sprintf(p+strlen(p), "%d", routes[n-1]);
strcat(p, ",");
strcat(p, "\"r\":");
sprintf(p+strlen(p), "%d", rssi[n-1]);
strcat(p, "}");
if (n<N_NODES) {
strcat(p, ",");
}
}
strcat(p, "]");
}
void printNodeInfo(uint8_t node, char *s) {
Serial.print(F("node: "));
Serial.print(F("{"));
Serial.print(F("\""));
Serial.print(node);
Serial.print(F("\""));
Serial.print(F(": "));
Serial.print(s);
Serial.println(F("}"));
}
void loop() {
for(uint8_t n=1;n<=N_NODES;n++) {
if (n == nodeId) continue; // self
updateRoutingTable();
getRouteInfoString(buf, RH_MESH_MAX_MESSAGE_LEN);
Serial.print(F("->"));
Serial.print(n);
Serial.print(F(" :"));
Serial.print(buf);
// send an acknowledged message to the target node
uint8_t error = manager->sendtoWait((uint8_t *)buf, strlen(buf), n);
if (error != RH_ROUTER_ERROR_NONE) {
Serial.println();
Serial.print(F(" ! "));
Serial.println(getErrorString(error));
} else {
Serial.println(F(" OK"));
// we received an acknowledgement from the next hop for the node we tried to send to.
RHRouter::RoutingTableEntry *route = manager->getRouteTo(n);
if (route->next_hop != 0) {
rssi[route->next_hop-1] = rf95.lastRssi();
}
}
if (nodeId == 1) printNodeInfo(nodeId, buf); // debugging
// listen for incoming messages. Wait a random amount of time before we transmit
// again to the next node
unsigned long nextTransmit = millis() + random(3000, 5000);
while (nextTransmit > millis()) {
int waitTime = nextTransmit - millis();
uint8_t len = sizeof(buf);
uint8_t from;
if (manager->recvfromAckTimeout((uint8_t *)buf, &len, waitTime, &from)) {
buf[len] = '\0'; // null terminate string
Serial.print(from);
Serial.print(F("->"));
Serial.print(F(" :"));
Serial.println(buf);
if (nodeId == 1) printNodeInfo(from, buf); // debugging
// we received data from node 'from', but it may have actually come from an intermediate node
RHRouter::RoutingTableEntry *route = manager->getRouteTo(from);
if (route->next_hop != 0) {
rssi[route->next_hop-1] = rf95.lastRssi();
}
}
}
}
}
Debug Message
Sketch uses 263169 bytes (20%) of program storage space. Maximum is 1310720 bytes.
Global variables use 18352 bytes (5%) of dynamic memory, leaving 309328 bytes for local variables. Maximum is 327680 bytes.
esptool.py v3.3
Serial port COM7
Connecting..............
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 8c:aa:b5:96:45:30
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00050fff...
Compressed 18560 bytes to 12759...
Writing at 0x00001000... (100 %)
Wrote 18560 bytes (12759 compressed) at 0x00001000 in 0.6 seconds (effective 268.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.1 seconds (effective 195.1 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.2 seconds (effective 324.4 kbit/s)...
Hash of data verified.
Compressed 263552 bytes to 142322...
Writing at 0x00010000... (11 %)
Writing at 0x0001e01e... (22 %)
Writing at 0x00025119... (33 %)
Writing at 0x0002a737... (44 %)
Writing at 0x0002fbad... (55 %)
Writing at 0x00035ea8... (66 %)
Writing at 0x00040663... (77 %)
Writing at 0x0004718d... (88 %)
Writing at 0x0004c72a... (100 %)
Wrote 263552 bytes (142322 compressed) at 0x00010000 in 2.8 seconds (effective 747.9 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Other Steps to Reproduce
I tried on 2 more boards
I have checked existing issues, online documentation and the Troubleshooting Guide
- I confirm I have checked existing issues, online documentation and Troubleshooting guide.