-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathwater-pump.ino
More file actions
68 lines (54 loc) · 1.75 KB
/
water-pump.ino
File metadata and controls
68 lines (54 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "_config.h"
#include <DHT.h>
#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <LedControl.h>
#define INTERVALO_ENVIO_THINGSPEAK 60000 // intervalo entre envios de dados ao ThingSpeak (em ms)
#define INTERVALO_LEITURA_THINGSPEAK 5000 // intervalo entre leitura de dados do ThingSpeak (em ms)
#define INTERVALO_LEITURA_SOLO 3000 // intervalo entre leitura de dados do sensor de solo (em ms)
#define INTERVALO_RESTART 3600000 // reboot a cada 1h (em ms)
#define FUSO -3 // UTC -3:00 Brazil
#define NTP_ADDRESS "a.st1.ntp.br" // NTP Server
#define SOIL_SENSOR_PIN A0
#define WATER_PUMP_PIN D2
#define DISPLAY_DIN_PIN D8
#define DISPLAY_CS_PIN D7
#define DISPLAY_CLK_PIN D6
char EnderecoAPIThingSpeak[] = "api.thingspeak.com"; // endereço do thingspeak
long ultimaLeituraSolo = 0;
long ultimaConexaoGravacao = 0;
long ultimaConexaoLeitura = 0;
long ultimoValorSolo = 0;
WiFiClient client;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, NTP_ADDRESS, FUSO * 3600, 60000);
LedControl lc=LedControl(DISPLAY_DIN_PIN, DISPLAY_CLK_PIN, DISPLAY_CS_PIN, 0);
void setup()
{
Serial.begin(9600);
Serial.println();
pinMode(WATER_PUMP_PIN, OUTPUT);
pinMode(SOIL_SENSOR_PIN, INPUT);
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
connectWifi();
}
void loop()
{
connectWifi();
ArduinoOTA.handle();
timeClient.update();
solo();
enviaDados();
recebeDados();
delay(2000);
// restartando a cada 1h ou quando o link cai
if (client.status() == WL_DISCONNECTED || millis() >= INTERVALO_RESTART)
{
ESP.restart();
}
}