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í :)

Cesta URL: co se děje, než se načte webová stránka

Když do adresního řádku prohlížeče napíšete webovou adresu a stisknete Enter, spustí se fascinující řetězec procesů, které propojují váš počítač s celým světem. Od překladu doménového jména na IP adresu, přes navázání šifrovaného spojení, až po vykreslení každého pixelu na obrazovce - to všechno se odehraje během zlomků sekundy. Pojďme se podívat, co se mezitím děje pod kapotou webu.

Stav SIMD v Rustu v roce 2025

Různé
Komentáře: 1
SIMD - neboli Single Instruction, Multiple Data - znamená, že procesor může jednou instrukcí zpracovat více datových prvků najednou. Typicky to znamená, že místo sčítání dvou čísel přičtete dvě sady čísel paralelně. To může přinést výrazné zrychlení například při zpracování obrazu, audia nebo numerických výpočtů. Pokud již SIMD znáte, tato tabulka je vše, co budete potřebovat. A pokud s SIMD teprve začínáte, tabulku pochopíte do konce tohoto článku