Seeeduino Lotus – Hlídání stoupání hladiny vody

Jedním z nejpovedenějších klonů Arduina jsou desky od společnosti Seeed, které se trefně nazývají Seeeduino. My si představíme desku Seeeduino Lotus. Oproti Arduinu můžete pro své projekty použít velké množství Grove konektorů, které jsou součástí desky. Jejich využití spolu s Grove moduly si ukážeme na malém projektu.

Seeeduino vychází z open-source Arduina. Použitý model Seeeduino Lotus oproti verzi Arduino Uno nabízí navíc Grove konektory, díky kterým je zajištěna jednodušší konektivita s dalšími moduly, které se dají k mikropočítači připojit. Ke komunikaci mezi počítačem a Seeeduinem slouží dostupnější microUSB port, přes který lze desku také napájet.

Arduinu se deska výbavou nejen podobá, ale lze ji i naprogramovat pomocí Arduino IDE editoru, takže pro znalé Arduina nebude přechod na Seeeduino žádný problém.

Příprava před samotným programováním

Hned na úvod je nutné zkontolovat, zda jsou v počítači naistalovány potřebné drivery a případně tyto drivery doinstalovat.

Následně je důležité desku přidat do programovacího prostředí Arduino IDE.

https://raw.githubusercontent.com/Seeed-Studio/Seeed_Platform/master/package_seeeduino_boards_index.json

Odkaz je nutné zkopírovat a vložit do kolonky Aditional Boards Manager URLs, ke které se dostaneme cestou File - Preferences.

Mezi deskami se Seeeduino objeví až po instalaci balíčku Seeeduino AVR, kterou je nutné provést v nabídce dostupné cestou Tools - Board - Boards Manager a vyhledáním Seeeduina.

Popis projektu

Projekt bude sloužit k vizuálnímu i zvukovému upozornění na plnící se nádobu vodou. Na projekt je potřeba:

Spouštěčem všech akcí bude senzor vody. Použitý senzor slouží primárně k indikaci vody, nicméně po připojení modulu na analogový pin můžeme porovnávat měnící se hodnoty odporu podle toho, z kolika procent je senzor potopen. Po vhodném zmapování odporů v závislosti na zatopené ploše je takto možné vyčlenit si 10 oblastí. Deset kvůli tomu, že LED Bar modul má celkem 10 diod, které můžeme postupně rozsvěcet podle zatopení. LED Bar se stejně, jako další moduly připojují na digitální pin. Pokud hladina vody bude přibližně na 90%, rozsvítí se navíc červená dioda, při úplném zatopení senzoru začne navíc pískat bzučák.

Programování Seeeduina

#include <Grove_LED_Bar.h>  // vložení knihovny pro ovládání LED Baru

Grove_LED_Bar bar(4,3,1);  // konfigurace LED Baru (x,y,z)

int i = 1023;  // vytvoření proměnné i s počáteční hodnotou 0

LED Bar není jednoduché zařízení, neboť pomocí dvou digitálních pinů je ovládáno 10 diod. Proto k obsluze slouží knihovna, která naprogramování usnadňuje. Knihovnu je potřeba nainstalovat v Tools - Manage Libraries, kde se nachází pod názvem Grove LED Bar. Až po instalaci je možné ji vložit do kódu, aby se její funkce daly dále používat.

LED Baru se nastaví jméno, v našem případě bar. První dvojicí čísel se určí piny, přes které LED Bar komunikuje se Seeeduinem. Poslední číslice značí, odkud se budou diody na LED Baru rozsvěcet. V případě nuly to je od červené diody, v případě jedničky od zelených diod.

Poslední v této části kódu je definice proměnné i, za kterou budou ukládány naměřené hodnoty ze senzoru. Pro začátek bude mít nastavenou hodnotu 1023, což je maximální měrná hodnota odporu, která nám může ze senzoru přijít (senzor je na suchu).

void setup() {
  bar.begin();  // zahájení komunikace s LED Barem
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

Void setup() je nastavení, které proběhne jednorázově okamžitě po spuštění desky. Proto je v tomto bloku kódu zahájena komunikace s LED Barem (pojmenovaném jako bar) a definována funkce pinů 6 a 7 jako výstupní. Na pinu 6 je totiž připojena červená LED a na pinu 7 bzučák.

void loop() {
  i = analogRead(2);  // přiřazení proměnné i hodnotu přečtenou ze senzoru připojeného na pinu 2
  if(i > 200) {
    bar.setLevel(0);  // nastavení počtu rozsvícených diod na LED Baru
    output_low();  // spuštění funkce output_low
...
  } else if(i > 136) {
    bar.setLevel(9);
    digitalWrite(6, HIGH);  // zapnutí LED na pinu 6
    digitalWrite(7, LOW);  // vypnutí bzučáku na pinu 7
  } else {
    bar.setLevel(10);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
  }
}

Vlastní program se skládá ze smyčky, ve které se aktualizuje hodnota i a podle její velikosti se pomocí podmínky rozsvěcí diody a bzučí bzučák. V podmínce je odvolání se na funkci output_low().

void output_low() {
  digitalWrite(6, LOW);  // vypnutí LED
  digitalWrite(7, LOW);  // vypnutí bzučáku
}

Funkce má za úkol hlídat, že červená LED je vypnutá a bzučák je zticha. Jelikož by bylo potřebné tuto dvojici popisovat u každého z osmi levelů, je jednodušší a kratší vytvořit funkci, kterou opakovaně volat.

Finální program

#include <Grove_LED_Bar.h>

Grove_LED_Bar bar(4,3,1);

int i = 1023;

void setup() {
  bar.begin();
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop() {
  i = analogRead(2);
  if(i > 200) {
    bar.setLevel(0);
    output_low();
  } else if(i > 170) {
    bar.setLevel(1);
    output_low();
  } else if(i > 150) {
    bar.setLevel(2);
    output_low();
  } else if(i > 148) {
    bar.setLevel(3);
    output_low();
  } else if(i > 145) {
    bar.setLevel(4);
    output_low();
  } else if(i > 143) {
    bar.setLevel(5);
    output_low();
  } else if(i > 140) {
    bar.setLevel(6);
    output_low();
  } else if(i > 138) {
    bar.setLevel(7);
    output_low();
  } else if(i > 137) {
    bar.setLevel(8);
    output_low();
  } else if(i > 136) {
    bar.setLevel(9);
    digitalWrite(6, HIGH);
    digitalWrite(7, LOW);
  } else {
    bar.setLevel(10);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
  }
}

void output_low() {
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
}

Video ukázka hotového projektu

Po správném zapojení komponentů a zapsání kódu do Seeeduina je projekt dokončen. Pro vyzkoušení postačí miska s vodou, do které se senzor vody ponoří. Pokud byly správně nastaveny zóny ponoření, zobrazí míru ponoření LED Bar. V případě potopení celé plochy se rozsvítí přídavná červená dioda a bzučák začne pískat.


E-shop

Eshop

Seeeduino Lotus

Seeeduino Lotus V1.1 kombinuje výhody Seeeduina a Base shieldu a také je velmi efektivní z hlediska nákladů.

Doporučené příslušenství


2 komentáře u “Seeeduino Lotus – Hlídání stoupání hladiny vody

Leave a Reply