Hi,
ich möchte zwei Senseboxen remote aufstellen, diese mit Solarpanelen mit Strom versorgen und sie alle 6 Stunden Daten aufnehmen lassen.
Leider scheint mein Code nicht zu funktionieren. Da ich mit meiner Weisheit am Ende bin, würde ich mich über Unterstützung freuen.
Es handelt sich um die sensebox:home und das sensebox Solarset mit 20W solarpanel und ihrem neuesten Sensebox Laderegler.
Folgenden Code verwende ich:
//Initialisierung
#include <senseBoxIO.h>
#include <SPI.h>
#include <SD.h>
#include <Wire.h> //I2C Library
#include <Adafruit_HDC1000.h> // http://librarymanager/All#Adafruit_HDC1000_Library
#include <SdsDustSensor.h> // http://librarymanager/All#Nova_Fitness_Sds_dust_sensors_library
float Temp;
float humidity;
float soiltemp;
float soilhum;
float pm25;
float pm10;
File Data;
Adafruit_HDC1000 hdc = Adafruit_HDC1000();
SdsDustSensor sds(Serial1);
float getSMT50Temperature(int analogPin){
int sensorValue = analogRead(analogPin);
float voltage = sensorValue * (3.3 / 1024.0);
return (voltage - 0.5) * 100;
}
float getSMT50Moisture(int analogPin){
int sensorValue = analogRead(analogPin);
float voltage = sensorValue * (3.3 / 1024.0);
return (voltage * 50) / 3;
}
//Initialisierung
void setup()
{
senseBoxIO.powerXB1(false); // Schaltet den XB1 Port aus
pinMode(7, OUTPUT);
SD.begin(28);
Serial.begin(9600);
Data = SD.open("daten.csv", FILE_WRITE);
Data.print("lora");
Data.println();
Data.print("Lufttemperatur in C");
Data.print(";");
Data.print("Luftfeuchtigkeit in rel%");
Data.print(";");
Data.print("Feinstaub 2,5PM");
Data.print(";");
Data.print("Feinstaub 10PM");
Data.print(";");
Data.print("Bodentemperatur in C");
Data.print(";");
Data.print("Bodenfeuchte in VW");
Data.print(";");
Data.println();
Data.close();
hdc.begin();
sds.begin();
sds.setQueryReportingMode();
}
void loop()
{
//senseBoxIO.powerNone();
//senseBoxIO.powerI2C(true);
digitalWrite(7,HIGH);
sds.wakeup();
delay(60000);
PmResult pm = sds.queryPm();
Temp = hdc.readTemperature();
humidity = hdc.readHumidity();
soiltemp = getSMT50Temperature(1);
soilhum = getSMT50Moisture(2);
//delay(30000);
//Serial.print("air temp = ");
//Serial.print(Temp);
//Serial.println();
//Serial.print("air humid = ");
//Serial.print(humidity);
//Serial.println();
Data = SD.open("daten.csv", FILE_WRITE);
Data.print(Temp);
Data.print(";");
Data.print(humidity);
Data.print(";");
Data.print(pm.pm25);
Data.print(";");
Data.print(pm.pm10);
Data.print(";");
Data.print(soiltemp);
Data.print(";");
Data.print(soilhum);
Data.print(";");
Data.println();
Data.close();
WorkingStateResult state = sds.sleep();
digitalWrite(7,LOW);
delay(21600000);
}
Ich freue mich über Unterstützung.