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

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.

Seriál: Moje garáž, můj hrad (7 dílů)

  1. Moje garáž, můj hrad – začíná seriál nejen pro kutily 7.1.2015
  2. Moje garáž, můj hrad – zapojujeme Arduino Yún 14.1.2015
  3. Moje garáž, můj hrad – připojujeme Amazon 23.1.2015
  4. Moje garáž, můj hrad – boto nám to zařídí 30.1.2015
  5. Moje garáž, můj hrad – posíláme dotaz do garáže 6.2.2015
  6. Moje garáž, můj hrad – měříme vzdálenost ultrazvukem 13.2.2015
  7. Moje garáž, můj hrad – a konečně parkujeme 20.2.2015

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: 2

Přehled komentářů

McHa díky
Štěpán Bechynský Re: díky
Zdroj: https://www.zdrojak.cz/?p=14119