Есть насущный проект из двух плат:nano-отдаёт данные в сериал,нода принимает.
Не могу понять,как построить приём переменных из сериал в flp.
► Показать
Код: Выделить всё
#include <Wire.h>
#include <Adafruit_AHTX0.h>
#include "SparkFun_ENS160.h"
#include <ArduinoJson.h>
#include <SoftwareSerial.h>
// Объекты датчиков
Adafruit_AHTX0 aht;
SparkFun_ENS160 myENS;
// SoftwareSerial (если нужно)
SoftwareSerial mySerial(10, 11);
// Переменные для millis()
unsigned long previousMillis = 0;
const long interval = 1000; // Интервал обновления данных (1 секунда)
void setup() {
// Инициализация Serial порта
Serial.begin(115200);
Serial.println("AHT21 и ENS160");
// Инициализация I2C
Wire.begin();
// Инициализация SoftwareSerial (если нужно)
mySerial.begin(9600);
// Проверка подключения AHT21
if (!aht.begin()) {
Serial.println("Ошибка: AHT21 не найден. Проверьте подключение.");
while (1) ; // Остановка выполнения
}
Serial.println("AHT21 подключен.");
// Проверка подключения ENS160
if (!myENS.begin()) {
Serial.println("Ошибка: ENS160 не найден. Проверьте подключение.");
while (1) ; // Остановка выполнения
}
Serial.println("ENS160 подключен.");
// Инициализация ENS160
if (myENS.setOperatingMode(SFE_ENS160_RESET)) {
Serial.println("ENS160 сброшен.");
} else {
Serial.println("Ошибка сброса ENS160.");
}
delay(100);
myENS.setOperatingMode(SFE_ENS160_STANDARD);
int ensStatus = myENS.getFlags();
Serial.print("Статус ENS160 (0 - норм, 1 - разогрев, 2 - запуск): ");
Serial.println(ensStatus);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Чтение данных с AHT21
sensors_event_t humidity, temp;
aht.getEvent(&humidity, &temp);
// Обработка ошибок AHT21 (опционально)
if (isnan(temp.temperature) || isnan(humidity.relative_humidity)) {
Serial.println("Ошибка чтения данных с AHT21.");
return; // Выход из цикла loop() для текущей итерации
}
float temperature = temp.temperature;
float relative_humidity = humidity.relative_humidity;
// Чтение данных с ENS160
if (myENS.checkDataStatus()) {
int aqi = myENS.getAQI();
int tvoc = myENS.getTVOC();
int eco2 = myENS.getECO2();
int ensStatus = myENS.getFlags();
// Формирование JSON
StaticJsonDocument<200> doc;
doc["temperature"] = temperature;
doc["humidity"] = relative_humidity;
doc["aqi"] = aqi;
doc["tvoc"] = tvoc;
doc["eco2"] = eco2;
doc["ens_status"] = ensStatus;
// Отправка JSON через Serial
serializeJson(doc, Serial);
Serial.println();
// Отправка JSON через SoftwareSerial (если нужно)
serializeJson(doc, mySerial);
mySerial.println();
} else {
Serial.println("Данные с ENS160 пока не готовы.");
}
}
// Другой код, который может выполняться параллельно
}