Witam.
Mam problem z kodem do stacji meteo mierzącej wilgotność, temperaturę oraz zanieczyszczenie powietrza w cząstkach PM2.5 i PM10.
Stacja składa się z nadajnika i odbiornika. Do nadajnika czyli do arduino nano są podłączone czujniki: DHT22 i PMS7003 oraz moduł transmisji radiowej NRF24L01, a do odbiornika czyli arduino nano jest podłączony moduł NRF24L01 i wyświetlacz, na którym są wyświetlone dane przesłane przez nadajnik. Problem tkwi w tym, że dane z DHT22 są wyświetlane normalnie na wyświetlaczu, a dane z PMS7003 przybierają wartość 0. Czujnik PMS7003 był sprawdzany przykładem z biblioteki przy aktualnym podłączeniu czujnika.
Dlatego prosiłbym o pomoc i sprawdzenie kodu.
Biblioteka PMS7003:https://github.com/fu-hsi/PMS
Kod-Nadajnik
Kod-Odbiornik
Mam problem z kodem do stacji meteo mierzącej wilgotność, temperaturę oraz zanieczyszczenie powietrza w cząstkach PM2.5 i PM10.
Stacja składa się z nadajnika i odbiornika. Do nadajnika czyli do arduino nano są podłączone czujniki: DHT22 i PMS7003 oraz moduł transmisji radiowej NRF24L01, a do odbiornika czyli arduino nano jest podłączony moduł NRF24L01 i wyświetlacz, na którym są wyświetlone dane przesłane przez nadajnik. Problem tkwi w tym, że dane z DHT22 są wyświetlane normalnie na wyświetlaczu, a dane z PMS7003 przybierają wartość 0. Czujnik PMS7003 był sprawdzany przykładem z biblioteki przy aktualnym podłączeniu czujnika.
Dlatego prosiłbym o pomoc i sprawdzenie kodu.
Biblioteka PMS7003:https://github.com/fu-hsi/PMS
Kod-Nadajnik
Kod:
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <DHT.h>
#include "PMS.h"
#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
PMS pms(Serial);
PMS::DATA data2;
RF24 transmit (7,8);
byte address [5] = "00001";
struct package
{
int temperature = 0;
int humidity = 0;
int PM25 = 0;
int PM10 = 0;
};
typedef struct package Package;
Package data;
void setup() {
dht.begin();
transmit.begin();
transmit.openWritingPipe(address);
transmit.setPALevel(RF24_PA_MAX);
transmit.setDataRate(RF24_250KBPS);
transmit.setChannel(100);
transmit.stopListening();
Serial.begin(9600);
}
void loop() {
data.temperature = dht.readTemperature();
data.humidity = dht.readHumidity();
data.PM25 = (data2.PM_AE_UG_2_5);
data.PM10 = (data2.PM_AE_UG_10_0);
pms.requestRead();
transmit.write(&data,sizeof(data));
delay(1000);
}
Kod-Odbiornik
Kod:
#include <LiquidCrystal_I2C.h>
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <Timers.h>
RF24 receive (7,8);
byte address [5] = "00001";
LiquidCrystal_I2C lcd(0x27, 16, 2);
struct package
{
int temperature = 0;
int humidity = 0;
int PM25 = 0;
int PM10 = 0;
};
typedef struct package Package;
Package data;
void setup() {
lcd.begin();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Otrzymane dane");
receive.begin();
receive.openReadingPipe(0,address);
receive.setPALevel(RF24_PA_MIN);
receive.setDataRate(RF24_250KBPS);
receive.setChannel(100);
receive.startListening();
}
void loop() {
if (receive.available())
{
receive.read(&data, sizeof(data));
lcd.setCursor(0,0);
lcd.print(data.temperature);
lcd.print("C ");
lcd.print(data.humidity);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print(data.PM25);
lcd.print("ug/m3 ");
lcd.print(data.PM10);
lcd.print("ug/m3");
}
delay(5000);
lcd.clear();
}