potřebuji každých 15 minut bezdrátově odesílat hodnoty ze stanice na Sigfox. Stanice hned po připojení napájení pošle zprávu dobře, ale po probuzení ESP32 z deep sleep se nepošle nic.
Kód: Vybrat vše
#include <Arduino.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"
#define uS_TO_S_FACTOR 1000000
#define TIME_TO_SLEEP 899 //v sekundách
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
delay(500);
sht31.begin(0x44); //sht31
Serial.begin(9600); //PC
Serial2.begin(9600); //sigfox
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR); //nastavení deep sleep
float t = sht31.readTemperature(); //načtení teploty a vlhkosti
uint8_t h = sht31.readHumidity();
uint8_t zprava[3];
char hexBajt[3];
int16_t teplota16 = t * 100; //převedení
memcpy(&zprava[0], &teplota16, 2); //zkopírování do zprávy
memcpy(&zprava[2], &h, 1);
Serial.println(teplota16);
Serial.println(t);
Serial.println(h);
Serial2.print("AT$SF=");
// Projde pole bajt po bajtu
for (int i = 0; i < sizeof(zprava); i++) {
// Pomoci funkce sprintf prevedu bajt na hexadecimalni zapis
Serial.println(i);
sprintf(hexBajt, "%02X", zprava[i]);
// Poslu hexadecimalni podobu bajtu do modemu a pokracuji
Serial2.print(hexBajt);
}
// uzavreni zpravy
Serial2.print("\r");
Serial.println("odesláno");
delay(500);
esp_deep_sleep_start();
Serial.print("chyba");
}
void loop() {
}