Pozdrav za sve vutroljpce!
Hteo sam sa vama da podelim svoj zadnji Arduino projekat a tice se wireless monitoringa temperature i vlaznosti vazduha u grow boksu, uz istovremenu kontrolu temperature i vlaznosti vazduha uredjajima koji su prikljuceni na ovaj uredjaj (ovlazivac, ventilatori).
Trenutno stanje uslova u boksu moguce je pratiti na internetu.Takodje je moguc pregled uslova unazad, recimo nedelju dana, mesec dana unazad.
Znaci odlicna stvar kada niste kod kuce, recimo na poslu u skoli ili kod rodbine na selu
Uredjaj nije uopste tesko napraviti, a njegove blagodeti ce te tek videti ukoliko ga napravite i sami...
Zaboravite na malo malo otvaranje boksa da bi ste videli kolika je temp ili vlaznost. samo otvorite browser na pc ili na telefonu
Kako izgelda prikaz na netu mozete videti na slici ispod.
Srce uredjaja je Arduino Uno, a moguce je koristiti i druge Arduino proizvode uz prilagodjenje programa.
SLIKA ARDUINO UNO
Senzor za merenje temperature i vlaznosti vazduha je SHT11. jedan od malo mozda skupljih senzora koji se mogu nabaviti ali isto tako mnogo mnogo tacniji od jeftinih kineskih koji pojavljuju u zadnje vreme.
Naravno uz korigovanje programa moguce je iskoristiti i neki od tih jeftinih. Tipa DHT11, DHT22 itd...
SLIKA SHT11
Upravljanje uredjajima se vrsi uz pomoc dvostrukog relejnog modula za arduino procesore.
svaki od releja ima normalno otvorene i normalno zatvorene kontakte.
Tako da, ukoliko recimo koristimo jedan relej za kontrolisanje temperature, moguce je vezati uredja tako da bude ukljucen DOK se ne dostigne odredjena temperatura,
ili pak KAD se dostigne odredjena temperatura. Isto vazi i za relej za kontrolisanje vlaznosti...
SLIKA RELEJNOG MODULA
Prikaz trenutnog stanja na uredjaju se vrsi uz pomoc 16x2 LCD dispeja.
Na njemu mozete procitati trenutnu temeraturu i vlaznost.
SLIKA DISPLEJA
Prenos podataka izmedju naseg uredjaja i interneta je izveden wifi modulom koji se skoro pojavio na trzistu,
izuzetno je jeftin (3$-5$) i sve vise nalazi primenu medju mikrokontrolerima.
SliKA ESP8266
Spajanje Komponenti mozete izvrsiti i sa jumper zicama kojih ima po isto tako povoljnim cenama.
Znaci da skoro ceo projekat mozete uraditi bez upotrebe lemilice
Bice nam potrebni musko zenski kablovi. MALE to FEMALE...
Uredjaj treba spojiti prema sledecoj semi...
povezivanje sht11 na Arduino
-----------------------------
dataPin na pin 11 na Arduinu
clockPin na pin 12 na Arduinu
vcc na 5v na Arduinu
gnd na gnd na Arduinu
povezivanje lcd na Arduino
-----------------------------
vcc na 5v na Arduinu
gnd na gnd na Arduinu
SDA na analog pin 4 na Arduinu
SCL na analog pin 5 na Arduinu
Povezivanje Relejne ploce na Arudino
------------------------------------
vcc na 5v na Arduinu
gnd na gnd na Arduinu
IN1 na digital pin 6 na Arduinu
IN2 na digital pin 7 na Arduinu
povezinje ESP8266 wifi modula na Arduino
-----------------------------------------
gnd na gnd na Arduinu
tx na digital pin 2 na Arduinu
rx na digital pin 3 na Arduinu
vcc na +3.3 pin na Arduinu
ch_pd na +3.3 pin na Arduinu
Kada smo uspesno spojili sve prema prilozenoj semi, potrebno je isprogramirati mikrokontroler preko USB porta na PC.
Za to je potrebo da skinemo Arduino software sa http://www.arduino.cc/download_handler.php?f=/arduino-1.6.5-r2-windows.exe
Ukoliko koristite Windows operativni sistem. Za Linux i MacOs posetite http://www.arduino.cc/en/Main/Software
Instalirajte softver koji ste skinuli, odaberite COM port na kome se nalazi vas prikljuceni Arduino uredjaj(TOOLS,PORT)
i da odaberete tip Arduina koji je prikljucen (TOOLS,BOARD,Arduino Uno)
Izaberite novi projekat (FILE,NEW)i sa copy paste ubacite sadrzaj programa koji se nalazi ispod.
Programiranje Arduina vrsite sa FILE, UPLOAD.
U samom kodu programa je potrebno izmeniti nekoliko promenljivih koji se ticu vasih potreba.
-Vrednost za zeljenu temperaturu i vlaznost trenutne vredonsti su 27 za temperaturu i 60% za vlagu
-Pristupna sifra i ime vaseg AP (Acess Point, wifi router)
-pristupna sifra (API KEY) za www.ThingSpeak.com preko kog se vrsi prikazivanje trenutnih vrednosti iz boxa
Pre programiranja samog mikrokontrolera, potrebno je registrovati se na www.thingspeak.com radi dobijanja sifre za upload podataka
iz uredjaja na internet.
Novi kanal kreirate sa NEW CHANEL i potrebno je kreirate FIELD1 i FIELD2.Field1 za temperaturu i Field2 za vlaznost vazduha.
U field1 upisite "temp" a u field2 "humi"
API KEY koji je potrebno uneti u program mozete pronaci u tabu API KEYS, pod Read Api Keys:
Njega ubacite u program pre programiranja mikrokontrolera.
Za nastavak je potrbno definisati kako ce izgledati prikaz temperature i vlaznosti na internetu.
To radite isto na thingspeak sajtu pod PLUGINS.
POtrebno je kreirati dva plugina, jedan za temp, drugi za humi. To radite sa NEW PLUGIN, GOOGLE GAUGE,CREATE PLUGIN
Crvena, zelena i zuta polja odnosno njihove vrednosti mozete promeniti na vec kreiranim prikazima na samom sajtu,
u PLUGINS pa EDIT.Sve imate i zadnjem polju pod javascript.Tu je moguce i korigovati velicinu sata za prikaz, ime itd...
Ukoliko ste sve dobro spojili na Arudinu, lepo definisali ime i sifru za wireless i API key,isprogramirali ARduino,
svakih 60 sekundi bi trebalo da imate prikaz nove vrednosti na internetu. A prikaz mozete pratiti i na LCD displeju na samom uredjaju.
Moguce je i izbaciti odredjene komponente ukoliko vas nisu potrebne, recimo LCD DISPLEJ i RELEJNI MODUL.
Znaci necete imate prikaz u boksu, i necete imati kontrolu ventilatora i ovlazivaca/deovlazivaca, ali ce te imati online
prikaz trenutne temperature u boksu, dok ste na poslu
Ukoliko imate neki problem pri sastavljanju, programiranju i slicno, mozete da kontaktirate na PM ili direktno ovde.
Probacu da vam pomognem, koliko je u mojoj moci.
Sve komponente mozete da nabavite na Ebay ili Aliexpress po jako jako povoljnim cenama.
izvorni kod za Arduino:
I neke slike uredjaja u razvoju i primene u pc boksu mada mu je primena u svim boksovima
Srecna samogradnja ovog korisnog uredjaja!
Hteo sam sa vama da podelim svoj zadnji Arduino projekat a tice se wireless monitoringa temperature i vlaznosti vazduha u grow boksu, uz istovremenu kontrolu temperature i vlaznosti vazduha uredjajima koji su prikljuceni na ovaj uredjaj (ovlazivac, ventilatori).
Trenutno stanje uslova u boksu moguce je pratiti na internetu.Takodje je moguc pregled uslova unazad, recimo nedelju dana, mesec dana unazad.
Znaci odlicna stvar kada niste kod kuce, recimo na poslu u skoli ili kod rodbine na selu
Uredjaj nije uopste tesko napraviti, a njegove blagodeti ce te tek videti ukoliko ga napravite i sami...
Zaboravite na malo malo otvaranje boksa da bi ste videli kolika je temp ili vlaznost. samo otvorite browser na pc ili na telefonu
Kako izgelda prikaz na netu mozete videti na slici ispod.
Srce uredjaja je Arduino Uno, a moguce je koristiti i druge Arduino proizvode uz prilagodjenje programa.
SLIKA ARDUINO UNO
Senzor za merenje temperature i vlaznosti vazduha je SHT11. jedan od malo mozda skupljih senzora koji se mogu nabaviti ali isto tako mnogo mnogo tacniji od jeftinih kineskih koji pojavljuju u zadnje vreme.
Naravno uz korigovanje programa moguce je iskoristiti i neki od tih jeftinih. Tipa DHT11, DHT22 itd...
SLIKA SHT11
Upravljanje uredjajima se vrsi uz pomoc dvostrukog relejnog modula za arduino procesore.
svaki od releja ima normalno otvorene i normalno zatvorene kontakte.
Tako da, ukoliko recimo koristimo jedan relej za kontrolisanje temperature, moguce je vezati uredja tako da bude ukljucen DOK se ne dostigne odredjena temperatura,
ili pak KAD se dostigne odredjena temperatura. Isto vazi i za relej za kontrolisanje vlaznosti...
SLIKA RELEJNOG MODULA
Prikaz trenutnog stanja na uredjaju se vrsi uz pomoc 16x2 LCD dispeja.
Na njemu mozete procitati trenutnu temeraturu i vlaznost.
SLIKA DISPLEJA
Prenos podataka izmedju naseg uredjaja i interneta je izveden wifi modulom koji se skoro pojavio na trzistu,
izuzetno je jeftin (3$-5$) i sve vise nalazi primenu medju mikrokontrolerima.
SliKA ESP8266
Spajanje Komponenti mozete izvrsiti i sa jumper zicama kojih ima po isto tako povoljnim cenama.
Znaci da skoro ceo projekat mozete uraditi bez upotrebe lemilice
Bice nam potrebni musko zenski kablovi. MALE to FEMALE...
Uredjaj treba spojiti prema sledecoj semi...
povezivanje sht11 na Arduino
-----------------------------
dataPin na pin 11 na Arduinu
clockPin na pin 12 na Arduinu
vcc na 5v na Arduinu
gnd na gnd na Arduinu
povezivanje lcd na Arduino
-----------------------------
vcc na 5v na Arduinu
gnd na gnd na Arduinu
SDA na analog pin 4 na Arduinu
SCL na analog pin 5 na Arduinu
Povezivanje Relejne ploce na Arudino
------------------------------------
vcc na 5v na Arduinu
gnd na gnd na Arduinu
IN1 na digital pin 6 na Arduinu
IN2 na digital pin 7 na Arduinu
povezinje ESP8266 wifi modula na Arduino
-----------------------------------------
gnd na gnd na Arduinu
tx na digital pin 2 na Arduinu
rx na digital pin 3 na Arduinu
vcc na +3.3 pin na Arduinu
ch_pd na +3.3 pin na Arduinu
Kada smo uspesno spojili sve prema prilozenoj semi, potrebno je isprogramirati mikrokontroler preko USB porta na PC.
Za to je potrebo da skinemo Arduino software sa http://www.arduino.cc/download_handler.php?f=/arduino-1.6.5-r2-windows.exe
Ukoliko koristite Windows operativni sistem. Za Linux i MacOs posetite http://www.arduino.cc/en/Main/Software
Instalirajte softver koji ste skinuli, odaberite COM port na kome se nalazi vas prikljuceni Arduino uredjaj(TOOLS,PORT)
i da odaberete tip Arduina koji je prikljucen (TOOLS,BOARD,Arduino Uno)
Izaberite novi projekat (FILE,NEW)i sa copy paste ubacite sadrzaj programa koji se nalazi ispod.
Programiranje Arduina vrsite sa FILE, UPLOAD.
U samom kodu programa je potrebno izmeniti nekoliko promenljivih koji se ticu vasih potreba.
-Vrednost za zeljenu temperaturu i vlaznost trenutne vredonsti su 27 za temperaturu i 60% za vlagu
-Pristupna sifra i ime vaseg AP (Acess Point, wifi router)
-pristupna sifra (API KEY) za www.ThingSpeak.com preko kog se vrsi prikazivanje trenutnih vrednosti iz boxa
Pre programiranja samog mikrokontrolera, potrebno je registrovati se na www.thingspeak.com radi dobijanja sifre za upload podataka
iz uredjaja na internet.
Novi kanal kreirate sa NEW CHANEL i potrebno je kreirate FIELD1 i FIELD2.Field1 za temperaturu i Field2 za vlaznost vazduha.
U field1 upisite "temp" a u field2 "humi"
API KEY koji je potrebno uneti u program mozete pronaci u tabu API KEYS, pod Read Api Keys:
Njega ubacite u program pre programiranja mikrokontrolera.
Za nastavak je potrbno definisati kako ce izgledati prikaz temperature i vlaznosti na internetu.
To radite isto na thingspeak sajtu pod PLUGINS.
POtrebno je kreirati dva plugina, jedan za temp, drugi za humi. To radite sa NEW PLUGIN, GOOGLE GAUGE,CREATE PLUGIN
Crvena, zelena i zuta polja odnosno njihove vrednosti mozete promeniti na vec kreiranim prikazima na samom sajtu,
u PLUGINS pa EDIT.Sve imate i zadnjem polju pod javascript.Tu je moguce i korigovati velicinu sata za prikaz, ime itd...
Ukoliko ste sve dobro spojili na Arudinu, lepo definisali ime i sifru za wireless i API key,isprogramirali ARduino,
svakih 60 sekundi bi trebalo da imate prikaz nove vrednosti na internetu. A prikaz mozete pratiti i na LCD displeju na samom uredjaju.
Moguce je i izbaciti odredjene komponente ukoliko vas nisu potrebne, recimo LCD DISPLEJ i RELEJNI MODUL.
Znaci necete imate prikaz u boksu, i necete imati kontrolu ventilatora i ovlazivaca/deovlazivaca, ali ce te imati online
prikaz trenutne temperature u boksu, dok ste na poslu
Ukoliko imate neki problem pri sastavljanju, programiranju i slicno, mozete da kontaktirate na PM ili direktno ovde.
Probacu da vam pomognem, koliko je u mojoj moci.
Sve komponente mozete da nabavite na Ebay ili Aliexpress po jako jako povoljnim cenama.
izvorni kod za Arduino:
Kod:
/**
* ReadSHT1xValues
* Display values on lcd display and to thingspeak server over esp8266
*/
#include <SHT1x.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
#include <stdlib.h>
#define SSID "IMEVASEGWIFI" //name of wireless access point to connect to
#define PASS "evdeupisitepassword" //wifi password
String apiKey = "123123123123"; //Ovde upisite vas API Key sa ThingSpeak
// connect 2 to TX
// connect 3 to RX
SoftwareSerial ser(2, 3); // RX, TX
// Specify data and clock connections and instantiate SHT1x object
#define dataPin 11
#define clockPin 12
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
SHT1x sht1x(dataPin, clockPin);
int maxtemp=27; //set the max temp
int minhumi=60;// set the min humidity
float temp_c;
float temp_f;
float humidity;
long previousMillis = 0;
long interval = 60000; //one minute sending interval
void setup()
{
pinMode(13, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(13, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
ser.begin(9600);
Serial.begin(9600); // Open serial connection to report values to host
Serial.println("Starting up");
lcd.init(); // initialize the lcd
lcd.backlight();
// reset ESP8266
ser.println("AT+RST");
delay (1000);
connectWiFi();
delay (1000);
}
void loop()
{
// Read values from the sensor
temp_c = sht1x.readTemperatureC();
humidity = sht1x.readHumidity();
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temp_c);
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
// Print the values to the serial port
Serial.print("Temperature: ");
Serial.print(temp_c, 1);
Serial.print("C / ");
// Serial.print(temp_f, DEC);
Serial.print(" Humidity: ");
Serial.print(humidity,1);
Serial.println("%");
/// SEND DATA TO SERVER
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
senddata();
}
if (temp_c - 0.5 > maxtemp)
{
digitalWrite(6, LOW);
}
if (temp_c < maxtemp)
{
digitalWrite(6, HIGH);
}
if (humidity - 1 > minhumi)
{
digitalWrite(7, LOW);
}
if (humidity < minhumi)
{
digitalWrite(7, HIGH);
}
// delay(2000);
}
void connectWiFi() {
Serial.println("SEarching for WiFi network");
ser.println("AT+cwmode=1");
delay(1000);
String cmd = "AT+CWJAP=\"";
cmd += SSID;
cmd += "\",\"";
cmd += PASS;
cmd += "\"";
ser.println(cmd);
delay(5000); //give it time - my access point can be very slow sometimes
if(ser.find("OK")) //ie a healthy response
{
Serial.println("Connected to WiFi...");
}
else
{
Serial.println("Not connected to WiFi.");
}
}
void senddata() {
// convert to temp:
float temp = temp_c;
float hum = humidity;
// convert to string
char buf[16];
String strTemp = dtostrf(temp, 4, 1, buf);
char test[16];
String strHumi = dtostrf(hum, 4, 1, test);
// TCP connection
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += "184.106.153.149"; // api.thingspeak.com
cmd += "\",80";
ser.println(cmd);
if(ser.find("Error")){
Serial.println("AT+CIPSTART error");
return;
}
// prepare GET string
String getStr = "GET /update?api_key=";
getStr += apiKey;
getStr +="&field1=";
getStr += String(strTemp);
getStr +="&field2=";
getStr += String(strHumi);
getStr += "\r\n\r\n";
// send data length
cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
ser.println(cmd);
if(ser.find(">")){
ser.print(getStr);
delay (1000);
ser.println("AT+CIPCLOSE");
}
else{
ser.println("AT+CIPCLOSE");
// alert user
Serial.println("AT+CIPCLOSE");
connectWiFi();
}
}
I neke slike uredjaja u razvoju i primene u pc boksu mada mu je primena u svim boksovima
Srecna samogradnja ovog korisnog uredjaja!
Poslednja izmena od urednika: