About sensors and GPIO
-
Hello.
I want to connect the sensors DHT22 and DS18B20 and the capacitive soil moisture sensor to Core 2 for operation.
Below is the sketch. However, when I wrote the sketch with the pin stuck, fatal error occurred.And after that, I couldn't write.Core 2 has been lucky enough to come back, but it's scary.Therefore, I would like to know the GPIO that should point to the sensor. Please let me know.
Thank you.//#include <M5Stack.h> #include <M5Core2.h> #include "DHT.h" //#define DHTPIN 13 // Basic.DHT22. #define DHTPIN 27 // Core2.DHT22 .19.27 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); #include <OneWire.h> //DS18B20 #include <DallasTemperature.h> //DS18B20 //#define ONE_WIRE_BUS 0 // Basic.DS18B20. #define ONE_WIRE_BUS 26 // Core2.DS18B20.25.26.27 OneWire oneWire(ONE_WIRE_BUS); // OneWire DallasTemperature sensors(&oneWire);// Dallas Temperature sensor #define PinSoilMoist 35 //CapSoilMoistSensor const int dry = 3700; const int wet = 1400; int inttemp , inthumid ; int intsoilmoist , soilval , intsoiltemp; float temperature, humidity, soilMoist, soilTemp; void getData() { delay(2000); dht.begin(); float temperature = dht.readTemperature(); float humidity = dht.readHumidity(); if (isnan(temperature) || isnan(humidity) ) { Serial.println(F("Failed to read from DHT sensor!")); return; } inttemp = int ( temperature ); inthumid = int ( humidity ); Serial.print( inttemp ); Serial.println(" *C, "); Serial.print( inthumid ); Serial.println(" RH% "); soilMoist = analogRead(PinSoilMoist); soilval = map(soilMoist, dry, wet, 0, 100); if(soilval >= 99) { intsoilmoist = 99; } else if(soilval <=20) { intsoilmoist = 20; } else if(soilval >21 && intsoilmoist < 99) { intsoilmoist = soilval ; } // Serial.print( soilMoist ); Serial.println(" Pin "); Serial.print( intsoilmoist ); Serial.println(" soil% "); delay(250); sensors.requestTemperatures(); float soilTemp = sensors.getTempCByIndex(0); intsoiltemp = int ( soilTemp ); Serial.print( intsoiltemp ); Serial.println(" soil*C, "); } void sendSigfox() { String msg = String (inttemp, HEX) + String (inthumid, HEX) + String (intsoilmoist, HEX) + String (intsoiltemp, HEX); Serial2.println("AT$SF=" + msg); Serial.println("AT$SF=" + msg); } void setup() { M5.begin(true, false, true); // M5.Speaker.write(0); // M5.Axp.SetSpkEnable(0); // Serial2.begin(9600, SERIAL_8N1, 16, 17); Serial2.begin(9600, SERIAL_8N1, 13, 14); // Serial.begin(9600); } void loop() { getData(); sendSigfox(); // M5.Power.deepSleep(SLEEP_SEC(60*15)); M5.Axp.DeepSleep(SLEEP_SEC(60*0.5)); }
-
@takero hello, is the DHT, DS18B20 and soil moisture sensor are M5 products? have you tried to use UIFlow for this or you'd prefer Arduino instead?
-
@zontex Thank you.
DHT, DS18B20 and Soil Moisture Sensor are not M5 products. Use Arduino.
Thank you.