Grower.cz je největší autorita v oblasti pěstování konopí na českém i slovenském internetu. Veškeré sekce jsou přístupné pro anonymní čtení. Pokud se nespokojíš s pouhou návštěvou a chceš se aktivně zapojit do diskusí ve fóru a na chatu, odpovídat na inzeráty a šifrovaně komunikovat s tisíci dalších pěstitelů soukromými vzkazy anebo se pochlubit svou fotogalerií - Registruj se! - Získáš inspiraci i cenné rady!
Tady jsou grafy. Je to screenshot z telefonu. Mají svou app. S widgetem.Foto jde jen jedno k příspěvku. Je tam vidět teplota a vlhkost v různých časových intervalech.
Displejů je mnoho druhů, já chtěl jednoduchý, dobře čitelný, levný s pokud možno co nejjednodušším zapojením. Nakonec jsem zvolil LCD 20*4 (4 řádky po dvaceti znacích)s připojením pomocí I2C (toto je důležité, vysvětlím později) . Lze koupit například zde:
Mimochodem je to to samé, ty české ceny opravdu někdy nechápu.
Protokol I2C má pro mne 2 zásadní výhody - jsou potřeba jen 2 dráty (+ napájení, vs 4 -6 u klasických displejů) a hlavně,jak jednou I2C použiji, mohu na něj připojit až 127 periferií vše pouze z oněch 2 drátů, takže budeme moci přidávat displeje a další I2C příslušenství bez nároku na piny Arduina, já hamoun toho mam na Arduino mega malo...
Krásný návod a odisplejích je zde (i2c displej začíná někde v půlce cca).
Dál jsem postupoval podle toho návodu, stáhl jsem a přidal knihovnu https://bitbucket.org/fmalpartida/n...stal/downloads/ - poslední verzi, pomocí programu viz návod jsem určil I2C adresu - byla jiná než psal prodejce, zkopíroval jsem zkušební kod a jelo to.
Vzadu na displeji je malý potenciometr - křížový šroubek - tím jsem vyladil jas aby byl displej čitelný, před vyladěním to vypadalo skoro jako by nic nezobrazoval, jen tak divně svítil.
Potom jsem si vypsal funcke které budu používat.
lcd.clear() - vymaže displej
lcd.setCursor(0,3) - (znak, radek) - nastavi pozici kursoru / prvni znak i radek ma pozici 0. (zacatek je tedy 0.0);
lcd.print("Powered by Krtek") - vypise obsah v uvozovkach
lcd.backlight() - zapne podsviceni
lcd.noBacklight() - vypne podsviceni
lcd.autoscroll() - posouvani znaku / nefungovalo mi to spravne
lcd.noAutoscroll() - vypnuti posouvani
tech funkci je vice, ale já to chci jen na zobrazování textu.... Na začátku je potřeba napsat nekolik veci viz návod / v těch jsem upravil I2C adresu a rozlišeni displeje z 16*2 na 20*4, nic více není potřeba dělat.
Přikládám schéma zapojení já mám piny SCL a SDA na uno vyvedeny i na pinech nad pinem 13, tak jsem to zapojil tam.
Ať už máš celopéro, hátéčko, nebo žiletku, všude se musí makat... A to nemluvim o fetbajku!
Potom jsem to přendal na Mega, výsledný kod postuji níže, snažím se vyhnout pointerum, referencím, objektum, funkcim, headerum atd, asi to nepujde navždy, ale budu se snažit.
Dovolil jsem si naší mašinku pojmenovat Krtek :-)
Nechávám údaje duplicitně posílat i po serialu, hodí se to při hledání chyb - debugování. Základní arduina nemají debugavací čip.
Uvažuji, že si koupim raspberry pi, zlepším se v pythonu, naistaluji tam něaký MQTT server a vyrobím si něco podobného sám... To raspberry by byl takový hlavní uzel, casem chci mit arduino i u slepic kraliku a tak a vse se bude zbihat doma v tom raspberry...
Ať už máš celopéro, hátéčko, nebo žiletku, všude se musí makat... A to nemluvim o fetbajku!
dnes bude malá změna, zapojíme si fotodiodu a budeme kontrolovat (v kombinaci s modulem reálného času, který připojíme později )zda nám v boxe svítí světlo když má, a zda nám třeba v noci nevniká do boxu parazitární světlo, které nechceme, je to velmi jednoduché, levné a užitečné.
Přidání relé jsem nucen odložit, nestačil jsem Vám vyfotit svoji skříň se dvěma zásuvkama.
A teď už k té fotodiodě, pro: začátečníky - velmi jednoduchá součástka, která mění odpor podle množství světla, které na ní dopadá, to potom můžeme změřit pomocí 10ti bitového analogového pinu Arduina, který nám vyhodí hodnotu od 0 do 1023. Ve výsledku tedy víme nejen to, že na diodu dopadá světlo, ale i kolik ho je, což se nám bude hodit při řízení.
Například si změřím že s plně zapnutým světlem je hodnota kolem 1000, pokud druhý den bude hodnota kolem 400, vím že je něco špatně....Zrovna tak když zjistím že v noci, kdy chci úplnou tmu se drží světlo na hodnotě třeba kolem 80, vím, že mi tam někudy vniká světlo z venku a mohu podniknout příslušné kroky.
Zapojení je velmi jednoduché, jednu nožičku zapojíme na + a druhou zapojíme na analogový pin arduina ( u arduino uno je to A0 - A5), dále ještě druhou nožičku zapojíme na gnd přezn 10Kohm resistor, viz obrázek.
V programu potom jen analogově načteme příslušný pin a získáme příslušnou hodnotu. Čili jednoduchý kod, který po serial portu vypíše naměřenou hodnotu může vypadat například následovně.
lcd.setCursor(0,2);
lcd.print("Svetlo(0-1023): ");
lcd.print(mnozstvi_svetla);
lcd.setCursor(0,3);
lcd.print("Aktualizace po 60s");
delay (60000);
}
v pokoji při zhasnutém světle, vyplém PC a zatažených žaluziích jsem změřil hodnotu 3, při běžném osvětlení 100, a když jsem na rezistor svítil zblízka mobilem hodilo to kolem 750.
Tak a příště, pokud to stihnu, bude již relé, v opačném případě modul reálného času.
Ať už máš celopéro, hátéčko, nebo žiletku, všude se musí makat... A to nemluvim o fetbajku!
Tak jsem tu zase a jak jsem slíbil, dnes připojíme modul reálného času.
Doma mám k dispozici modul DS1302, tak jsem jej použil. Nicméně po chvíli hledání na netu jsem zjistitl, že lze sehnat i lepší v podobné cenové relaci. DS3231 má vlastní krystal zabudovaný přímo v čipu, navíc s teplotní kompenzací, a hlavně na něl exsitují kvalitní a jednoduše použitelné knihovny, takže jsem dnes objednal i ten a až bude k dispozici budu již nadále používat jen ten - potom to zde updatuji. Navíc se připojuje přez I2C, čili ušetříme 3 piny.
Problém byl najít knihovnu která data (hodiny, sekundy atd...) poskytla jednoduše jako int (aby se s tím dalo dále pracovat a používat v rozhodovacích algoritmech). Nakonec jsem našel tuto.
přidal jsem ji do arduino IDE a následně použil kod příkladu 1 (file, examples, arduinoRTClibraryMaster) a vyjel následující zkušební kod, jediné co je potřeba změnit je aktuální datum a čas, linak s jejich nastavením se použije jen jednou, modul má baterii, funguje i po restartu či odpojení proudu - a to je také důvod, proč jej přidáváme do našeho projektu. Může být klidně 3 dny blackout a hned jak se arduino zapne spojí se s DS 1302 a hned ví přesný datum a čas.
#include <virtuabotixRTC.h>
// Creation of the Real Time Clock Object
virtuabotixRTC myRTC(5, 4, 2);
void setup() {
Serial.begin(9600);
// Set the current date, and time in the following format:
// seconds, minutes, hours, day of the week, day of the month, month, year
// myRTC.setDS1302Time(00, 24, 18, 1, 18, 5, 2020); // - Při prvním zpuštění zapsat správné hodnoty a odstranit "//"znaky na začátku řádku, poté již navždy "//" vrátit.
}
void loop() { //|
// This allows for the update of variables for time or accessing the individual elements. //|
myRTC.updateTime(); //|
//|
// Start printing elements as individuals //|
Serial.print("Current Date / Time: "); //|
Serial.print(myRTC.dayofmonth); //|
Serial.print("/"); //|
Serial.print(myRTC.month); //|
Serial.print("/"); //|
Serial.print(myRTC.year); //|
Serial.print(" "); //|
Serial.print(myRTC.hours); //|
Serial.print(":"); //|
Serial.print(myRTC.minutes); //|
Serial.print(":"); //|
Serial.println(myRTC.seconds);
//|
// Delay so the program doesn't print non-stop //|
delay( 5000); //|
}
Poté se po otevření serial monituru začal po 5ti s vypisovat čas a datum
velmi jednoduše lze načíst jednotlivé hodnoty například:
int a {};
a = myRTC.hours;
A máme načtenou hodinu jako int hodnotu s kterou se dá normálně pracovat porovnávat atd.
Ať už máš celopéro, hátéčko, nebo žiletku, všude se musí makat... A to nemluvim o fetbajku!
Nějak mne to chytlo, objednal jsem senzory: CO2, Ph, EC a nějaké další součástky, ale asi bude trvat několik měsíců než dorazí.
Příště už snad přidáme ta relé.
Mám jeden nápad, udělám více verzí. První verze se bude jmenovat "Nano", poběží na Arduino nano, bude to verze základní, ale plně funkčí a podle mne pro většinu growerů dostatečná. Ještě kromě relé přidám senzor vytopení, plamene, kouře a myslím že bychom první verzi alespoň zhruba mohli mít hotovou. Uvidíme kolik zbyde volných pinů :-). Je ještě něco co by Vám po přidání výše uvedeného v základní verzi chybělo? Relé plánuji 4 kanálové.
Ať už máš celopéro, hátéčko, nebo žiletku, všude se musí makat... A to nemluvim o fetbajku!