Přejít k navigační liště

Zdroják » Různé » Moje garáž, můj hrad – zapojujeme Arduino Yún

Moje garáž, můj hrad – zapojujeme Arduino Yún

Články Různé

Arduino Yún kombinuje na jedné desce Arduino Leonardo a linuxový počítač s distribucí Linino odvozenou od OpenWRT. Tato kombinace spojuje jednoduchost Arduina pro komunikaci se senzory s výpočetním výkonem a síťovou komunikací na Linuxu. V článku se budeme věnovat konfiguraci Arduino Yún a propojení Arduino – Linux.

Nálepky:

Napájení

Před prvním zapojením Arduina Yún si uvědomte, že nemá regulátor napětí a je třeba ho napájet 5 V. To v případě, že byste napájení zapojili na pin Vin. Pro napájení se používá mikro-USB kabel s příslušným zdrojem. Špičkový odběr Arduino Yún se zapnutou Wifi a SD kartou je cca 315 mA, takže bude stačit běžný napájecí adaptér. Lze také dokoupit modul PoE, který si pak musíte na příslušné místo sami připájet. Pozor, aby byl modul s Arduino Yún kompatibilní.

Základní konfigurace

Předpokládám, že jste na Arduino rozblikali alespoň LED a nebudu se zabývat instalací Arduino IDE, nastavením komunikace s deskou, atd.

Základní konfigurace probíhá přes webové rozhraní. Připojte se na Wifi, který se jmenuje Arduino Yun-xxxxxxxxxxxx. To za pomlčkou je MAC adresa Wifi adaptéru vašeho Arduino Yún.

image1

V prohlížeči potom otevřete stránku http://arduino.local/ nebo http://192.168.240.1

image2

Výchozí heslo je arduino.

image3

Pomocí tohoto rozhraní provedete potřebnou konfiguraci, zejména změnu hesla a jména desky.

K desce se můžete samozřejmě připojit i přes SSH.

image4

SD karta

Vnitřní paměť Arduino Yún není nijak veliká. Je ji možné rozšířit na SD kartu, ale mě stačila. Python skripty a konfiguraci budeme ukládat na SD kartu. Aby systém SD kartu automaticky rozpoznal a připojil, tak je na ní třeba vytvořit adresář arduino s podadresářem www. Takto vložená karta se připojí na /mnt/sda1.

Knihovna Bridge

Komunikace Arduino – Linux probíhá přes sériovou linku a je zapouzdřena do knihovny Bridge.

image5

Zdroj: http://arduino.cc/en/uploads/Main/BridgeInShort.png

Díky knihovně Bridge můžete využívat veškeré zdroje linuxového prostředí v prostředí Arduino.

V tomto projektu budeme z knihovny Bridge potřebovat jen malou část, která nám umožní z Python skriptu načíst hodnotu z dálkoměru. Jedná se konkrétně o třídy YunServer a YunClient. Vestavěný server v linuxovém prostředí umožňuje předávat parametry do aplikace, která běží v prostředí Arduino a z Arduino prostředí pak můžete zapsat informaci zpět.

Příklad: Ovládání LED na desce přes web

Každý zná aplikaci „Hello world!“ v mnoha jazycích. „Hello world!“ pro Arduino je blikání LED, která je umístěna přímo na desce na pin 13. Následující příklad bude rozsvěcet a zhasínat LED přes URL.

#include <Bridge.h>
#include <YunClient.h>
#include <YunServer.h>

const int LED = 13;
YunServer server;

void setup() {
  pinMode(LED,OUTPUT);
  digitalWrite(LED, LOW);
  Bridge.begin();
  
  server.listenOnLocalhost();
  server.begin();
}

void loop() {
  YunClient client = server.accept();
  
  if (client) {
    String command = client.readString();
    command.trim();
    if (command == "on") {
      digitalWrite(LED, HIGH);
      client.print("ON");
    } else if (command == "off") {
      digitalWrite(LED, LOW);
      client.print("OFF");
    } else {
      client.print("ERROR: " + command);
    }
    
    client.stop();
  }
  delay(50);  
}

Pokud nyní zavoláte z prohlížeče URL ve tvaru

http://[adresa Arduino]/arduino/[command]

tak vše od arduino/ dál bude předáno do prostředí Arduino a načteno metodou readString() třídy YunClient. Odpověď pak zapisujete metodou print(). Důležité je nezapomenout na ukončení spojení metodou stop().

Při prvním pokusu nejspíš budete požádáni o jméno a heslo k Arduino Yún. Ve výchozím nastavení je toto volání chráněno heslem. Vypnutí provedete přes webovou konfiguraci, nebo budete jméno a heslo používat.

image6

Python skript pro ovládání LED

Na Arduino Yún je předinstalovaný Python 2.7.3. Pokud chcete z Python skriptu předat požadavek do Arduino prostředí a získat odpověď, stačí komunikovat přes localhost. V opačném případě, kdy potřebujete z Arduino prostředí spustit Python skript, resp. libovolný program v linuxovém prostředí, a předat mu parametry, tak použijete třídu Process.

Jednoduchý skript pro ovládání LED pomocí Python:

#!/usr/bin/env python

import urllib
import sys

if len(sys.argv) != 2:
    sys.exit(1)

if sys.argv[1] == "on" or sys.argv[1] == "off":
    u = urllib.urlopen('http://localhost/arduino/' + sys.argv[1])
    print u.read()

Závěr

Velkou výhodou Arduino Yún jsou možnosti komunikace přes ethernet nebo Wifi díky vestavěnému linuxovému prostředí s přijatelnými nároky na energii. Samozřejmě provozovat Arduino Yún se zapnutou Wifi na baterii nebude mít asi dlouhého trvání. V dalším díle se zaměříme na službu IAM a SQS z Amazon Web Services.

Komentáře

Odebírat
Upozornit na
guest
2 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
McHa

Díky za pěknou serii ;) článků, moc se těším na další.

Spíš filozofujici otazka:
Sám mám Yun a dost přemýšlím proč je to udělané tak jak to je? Proč používat Bridge knihovnu a nekomunikovat
z Linuxu pěkně, např. z pythonu přes serial port, rovnou s AVR částí přímo? Tedy proč tam vkládat mezičlánek Bridge knihovny. Chápu, že pro některé aplikace to může být fajn, ale pro některé by bylo asi klidnější a hlavně paměťově-úspornější, rovnou sahat z linuxu na AVR a neřešit univerzální seriový protokol přes mezičlánek. Zatím jsem si jen hrál, ale obávám se, že až budu chtít udělat něco opravdovějšího, bude mi na AVR docházet místo a pak každý bajt jako když najdeš :). Ale to je spíš otázka na někoho kdo Yun navrhoval. ;)

Jinak k vaší serii. Moc se těším na další pokračování :)

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.

Zapřáhněte AI jako nikdy předtím. Květnová konference WebExpo přivítá hvězdy technologického světa

Od 28. do 30. května 2025 promění pražský Palác Lucerna na tři dny technologická konference WebExpo. Na programu je více než 80 přednášek a workshopů od expertů z celého světa. WebExpo tradičně propojuje vývojáře, designéry, marketéry i byznysové lídry a nabízí praktické dovednosti, strategické myšlení a přináší nejnovější trendy nejen v oblasti AI.