Hello all,
I for some reason the variable heater is not turning on anymore with the code. I have tried setting HEATER output to high at the beginning to try and see what happens and it works. It seems like there is a problem with the output I guess.
// SERIAL
#include <SoftwareSerial.h>
const byte rx = 15 ;
const byte tx = 14 ;
SoftwareSerial myserial(rx, tx);
// PID
#include <PID_v1.h>
// HEATING PID
double Setpoint, Input, Output ;
double Kp = 1, Ki = 0, Kd = 20 ;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT) ;
// DHT
#include "DHT.h"
#define DHT0PIN 2 // Inside
#define DHT1PIN 4 // Outside
#define DHT2PIN 7 // Outside
#define DHT3PIN 8 // Outside
#define DHT4PIN 9 // On heating element
#define DHT0TYPE DHT22
#define DHT1TYPE DHT22
#define DHT2TYPE DHT22
#define DHT3TYPE DHT22
#define DHT4TYPE DHT22
DHT dht0(DHT0PIN, DHT0TYPE) ;
DHT dht1(DHT1PIN, DHT1TYPE) ;
DHT dht2(DHT2PIN, DHT2TYPE) ;
DHT dht3(DHT3PIN, DHT3TYPE) ;
DHT dht4(DHT4PIN, DHT4TYPE) ;
// MILLIS
unsigned long previousTime = 0 ;
unsigned long interval = 10000 ;
// Heater
const int SWARM = 5; // SWARM PIN
const int HEATER = 6 ; // HEATER PIN
// GSM
const int GSM_ON = 12 ;
void setup() {
pinMode(GSM_ON, OUTPUT) ;
digitalWrite(GSM_ON, HIGH) ;
delay(15000) ;
pinMode(SWARM, OUTPUT) ; // Set heater as output
digitalWrite(SWARM, LOW) ; // Initial stage to heater OFF
pinMode(HEATER, OUTPUT) ; // Set heating as output
digitalWrite(HEATER, LOW) ; // Initial stage to heater OFF
myserial.begin(115200) ; //Initialize virtual serial port
Serial.begin(115200) ; //Initialize Arduino default serial port
while(!Serial) ;
gsm_setup() ;
label() ;
dht_begin() ;
dht_init() ;
//turn the PID on
myPID.SetMode(AUTOMATIC);
Input = 9 ;
Setpoint = 36 ;
// analogWrite(SWARM, 26) ;
}
void loop() {
DHTread() ;
analogWrite(SWARM, 26) ;
float t0 = dht0.readTemperature() ;
float h0 = dht0.readHumidity() ;
float f0 = dht0.readTemperature(false) ;
float t1 = dht1.readTemperature() ;
float h1 = dht1.readHumidity() ;
float f1 = dht1.readTemperature(false) ;
float t2 = dht2.readTemperature() ;
float h2 = dht2.readHumidity() ;
float f2 = dht2.readTemperature(false) ;
float t3 = dht3.readTemperature() ;
float h3 = dht3.readHumidity() ;
float f3 = dht3.readTemperature(false) ;
// float outside = ( t1 + t2 + t3 ) / 3 ;
Input = 9 ;
myPID.Compute() ;
}
void sendMessage(String input) {
int stringLength = input.length() + 2;
String sendConfig = "AT+CIPSEND=0,";
sendConfig += stringLength;
myserial.println(sendConfig);
String sendConfigDebug = sendConfig + "\r\n";
Serial.write(sendConfigDebug.c_str());
delay(200) ;
myserial.println(input + "\n") ; // Send Message
delay(1000) ;
}
void gsm_setup() {
myserial.println("ECHO") ; // Removes ECHO
delay(500) ;
myserial.println("AT+CPIN=0000") ; // Entres SIM PIN No
delay(5000) ;
myserial.println("AT+CGDCONT=1,\"IP\",\"orange\"") ; // Connect to ORANGE APN
delay(5000) ;
myserial.println("AT+NETOPEN") ; // Opens network
delay(1000) ;
myserial.println("AT+CIPOPEN=0,\"TCP\",\"172.111.250.41\",666") ; // Connect to VPN TCP Server
delay(3000) ;
sendMessage("BEEHIVE 1 RIOU GLASS");
myserial.println("AT+CIPSEND=0,1") ; // Send 5 characters
delay(500) ;
myserial.println() ; // Send new line
delay(500) ;
myserial.println("AT+CIPSEND=0,1") ; // Send 5 characters
delay(500) ;
myserial.println() ; // Send new line
delay(500) ;
//myserial.println("0x1a") ; // Ctrl + Z to send message
//delay(500) ;
}
void singleDHTread(DHT dht, String label) {
float t = dht.readTemperature() ;
float h = dht.readHumidity() ;
float f = dht.readTemperature(true) ;
String dhtString = label;
dhtString += ": ";
dhtString += t;
// dhtString += "C humidity: ";
// dhtString += h;
// dhtString += " ";
// dhtString += f;
// dhtString += "F";
sendMessage(dhtString);
}
void DHTread () {
unsigned long currentTime = millis() ;
Serial.write("Start of DHTread():\n");
//float t0 = dht0.readTemperature() ;
//float h0 = dht0.readHumidity() ;
//float f0 = dht0.readTemperature(true) ;
Serial.write("read the t0 h0 f0 values...\n");
float t1 = dht1.readTemperature() ;
float h1 = dht1.readHumidity() ;
float f1 = dht1.readTemperature(false) ;
float t2 = dht2.readTemperature() ;
float h2 = dht2.readHumidity() ;
float f2 = dht2.readTemperature(false) ;
float t3 = dht3.readTemperature() ;
float h3 = dht3.readHumidity() ;
float f3 = dht3.readTemperature(false) ;
float outside = ( t1 + t2 + t3 ) / 3 ;
float outsidehum = ( h1 + h2 + h3 ) / 3 ;
if ( currentTime - previousTime >= interval ) {
// \r\n CR + LF
//String dht0string = "DHT0: ";
//dht0string += t0;
//dht0string += "C humidity: ";
//dht0string += h0;
//dht0string += " ";
// dht0string += f0;
// dht0string += "F";
// sendMessage(dht0string);
singleDHTread(dht0, "DHT0 sensor values");
singleDHTread(dht1, "DHT1 sensor values");
singleDHTread(dht2, "DHT2 sensor values");
singleDHTread(dht3, "DHT3 sensor values");
singleDHTread(dht4, "DHT4 sensor values");
//myserial.println("AT+CIPSEND=0,9") ;
//delay(500) ;
//myserial.println("HELLO\r\n") ;
Serial.write("I just came to say HELLO.\n");
//delay(500) ;
//myserial.println("AT+CIPSEND=0,1") ;
//delay(500) ;
//myserial.println() ;
//delay(500) ;
//myserial.println("0x1a") ; // Ctlr + Z to send message
//delay(500) ;
Serial.write("End of DHTread():\n");
// myserial.println("AT+CIPSEND=0,4") ;
// delay(500) ;
// myserial.println(t1) ;
// delay(500) ;
// myserial.println("AT+CIPSEND=0,1") ;
// delay(500) ;
// myserial.println() ;
// delay(500) ;
//
// myserial.println("AT+CIPSEND=0,4") ;
// delay(500) ;
// myserial.println(t2) ;
// delay(500) ;
// myserial.println("AT+CIPSEND=0,1") ;
// delay(500) ;
// myserial.println() ;
// delay(500) ;
//
// myserial.println("AT+CIPSEND=0,4") ;
// delay(500) ;
// myserial.println(t3) ;
// delay(500) ;
// myserial.println("AT+CIPSEND=0,1") ;
// delay(500) ;
// myserial.println() ;
// delay(500) ;
previousTime = currentTime ;
}
}
void dht_begin() {
dht0.begin() ;
dht1.begin() ;
dht2.begin() ;
dht3.begin() ;
dht4.begin() ;
}
void dht_init() {
float t0 = dht0.readTemperature() ;
float h0 = dht0.readHumidity() ;
float f0 = dht0.readTemperature(false) ;
float t1 = dht1.readTemperature() ;
float h1 = dht1.readHumidity() ;
float f1 = dht1.readTemperature(false) ;
float t2 = dht2.readTemperature() ;
float h2 = dht2.readHumidity() ;
float f2 = dht2.readTemperature(false) ;
float t3 = dht3.readTemperature() ;
float h3 = dht3.readHumidity() ;
float f3 = dht3.readTemperature(false) ;
}
void label() {
//myserial.println("AT+CIPSEND=0,34") ; // Send 5 characters
//delay(500) ;
//myserial.println("Outside swarm Inside swarm") ; // Send Message
//delay(500) ;
sendMessage("Outside swarm Inside swarm");
myserial.println("AT+CIPSEND=0,1") ; // Send 5 characters
delay(500) ;
myserial.println() ; // Send new line
delay(500) ;
myserial.println("AT+CIPSEND=0,1") ; // Send 5 characters
delay(500) ;
myserial.println() ; // Send new line
delay(500) ;
//myserial.println("0x1a") ; // Ctlr + Z to send message
// delay(500) ;
}
Any advice would be great.
Thank you.