Created
July 7, 2015 22:29
-
-
Save AutomationD/1f512ef4cbfb09ac918c to your computer and use it in GitHub Desktop.
Arduino 2 Nodemcu Passthrough
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <dht.h> | |
#define DHT11_PIN 4 | |
dht DHT; | |
HardwareSerial trm = Serial2; | |
HardwareSerial esp = Serial1; | |
HardwareSerial dbg = Serial; | |
const int moistureAO = 7; | |
float moisture = 0.0; | |
float temperature = 0.0; | |
float humidity = 0.0; | |
boolean flash = false; | |
void setup() { | |
dbg.begin(9600); | |
esp.begin(9600); | |
trm.begin(9600); | |
pinMode(moistureAO, INPUT); | |
delay(2000); | |
dbg.println("Restarting esp8266"); | |
execLuaCommand("node.restart()"); | |
while (!esp.find("IP:")) { | |
dbg.println("Waiting for nodemcu IP"); | |
delay(1000); | |
} | |
dbg.println("Aquired IP address"); | |
dbg.println("Executing main program"); | |
execLuaCommand("run()"); | |
dbg.println("Executed. Entering loop."); | |
} | |
void loop() { | |
if (flash) { | |
if (trm.available()) { | |
char inByte = trm.read(); | |
esp.print(inByte); | |
} | |
if (esp.available()) { | |
char inByte = esp.read(); | |
trm.print(inByte); | |
} | |
} else { | |
if (esp.available()) { | |
if (esp.find("GET DATA")) { | |
dbg.println("GET DATA"); | |
getDHT(); | |
getMoisture(); | |
postData(); | |
} | |
} | |
delay(1000); | |
} | |
} | |
void getDHT() { | |
int chk = DHT.read11(DHT11_PIN); | |
switch (chk) | |
{ | |
case DHTLIB_OK: | |
temperature = DHT.temperature; | |
humidity = DHT.humidity; | |
break; | |
case DHTLIB_ERROR_CHECKSUM: | |
dbg.println("error('Checksum error')"); | |
break; | |
case DHTLIB_ERROR_TIMEOUT: | |
dbg.println("error('Time out error'"); | |
break; | |
default: | |
dbg.println("error('Unknown error')"); | |
break; | |
} | |
} | |
void getMoisture () { | |
int tmp=analogRead( moistureAO ); | |
if ( tmp != moisture ) | |
{ | |
moisture=tmp; | |
} | |
} | |
void postData() { | |
esp.print("{\""); | |
esp.print("t"); | |
esp.print("\":"); | |
esp.print(temperature,1); | |
esp.print(","); | |
esp.print("\""); | |
esp.print("h"); | |
esp.print("\":"); | |
esp.print(humidity,1); | |
esp.print(","); | |
esp.print("\""); | |
esp.print("m"); | |
esp.print("\":"); | |
esp.print(moisture,1); | |
esp.print("}"); | |
esp.print("\n"); | |
dbg.print("{\""); | |
dbg.print("t"); | |
dbg.print("\":"); | |
dbg.print(temperature,1); | |
dbg.print(","); | |
dbg.print("\""); | |
dbg.print("h"); | |
dbg.print("\":"); | |
dbg.print(humidity,1); | |
dbg.print(","); | |
dbg.print("\""); | |
dbg.print("m"); | |
dbg.print("\":"); | |
dbg.print(moisture,1); | |
dbg.print("}"); | |
dbg.print("\n"); | |
} | |
void execLuaCommand(char* command) { | |
delay(1000); | |
Serial1.println(""); | |
Serial1.println(command); | |
delay(1000); | |
} | |
boolean find(char* command) { | |
return Serial1.find(command); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment