Jeffrey Cross
Jeffrey Cross

Projekt Galileo: Vytvorenie zobrazenia na sledovanie dní, kým MAKE nenarazí na novinové stánky

Toto je upravený výňatok z pripravovanej knihy Začíname s Intel Galileo.

Použitie systému Intel Galileo pre sieťové projekty v domácnosti je prirodzené. Vďaka kompatibilite s Arduino pinmi, sieťovým prepojeniam a Linuxom je to výkonná, ale flexibilná doska. Keďže tento týždeň skúmame pripojený domov, rád by som sa podelil o projekt Galileo, ktorý sa hodí do tejto témy. Myslím si, že pripojený domov nie je len o prepínaní prepínačov a získavaní teploty, ale je to aj o zobrazovaní informácií o cestujúcich.

Vytvoril som jednoduchú webovú stránku s názvom Koľko dní dokiaľ nevyjde? ktorý slúži na jeden jednoduchý účel: povie vám, koľko dní do ďalšieho vydania časopisu MAKE Magazine zasiahne novinové stánky. Údaje zadávam do databázy na základe výrobných kalendárov, ktoré dostávam ako editor MAKE Contributing Editor. Slúži to bezplatná vrstva služby Google App Engine a zdrojový kód stránky je k dispozícii na serveri Github, ak sa chcete pozrieť na to, ako som to urobil.

Keď vo webovom prehliadači prejdete na stránku http://nextmakemagazine.appspot.com/, uvidíte, že informácie sú naformátované tak, aby ich človek mohol prezerať a porozumieť im, ale server je tiež nakonfigurovaný tak, aby hovoril priamo do jednoduchých mikrokontrolérov. preč od všetkého extra štýlu a jazyka a vrátenie počtu hodín až do vydania ďalšieho vydania. Môžete to vidieť, ak prejdete na adresu URL http://nextmakemagazine.appspot.com/simple

Váš Galileo môže používať svoje internetové pripojenie cez Ethernet, aby sa pripojil k tejto adrese URL, prevzal prijaté údaje a vyhodnotil spôsob ich zobrazenia. Najprv sa uistite, že sa môže pripojiť k serveru.

POZNÁMKA: Pre tento projekt budete musieť vypnúť obraz karty SD systému Galileo, ktorý si môžete stiahnuť tu.

Testovanie pripojenia

  1. Pripojte svoj Galileo cez ethernetový kábel do vašej siete. Môžete ho buď pripojiť priamo do dostupného portu na smerovači, alebo ak ste pripojení k sieti Ethernet, zapojte ho do aktívneho konektora.
  2. Pripojte svoj prístroj Galileo k napájaniu.
  3. Pripojte počítač k systému Galileo cez port klienta USB.
  4. V rámci Arduino IDE vyberte File → Príklady → Ethernet → WebClient.
  5. Kliknite na položku Odovzdať.
  6. Otvorte sériový monitor.

Ak sa vaša doska úspešne pripojila k serveru, na sériovom monitore sa zobrazí text (ako je uvedené nižšie). Tento príklad naprogramuje váš Galileo, aby vykonal vyhľadávanie Google pre výraz „Arduino“. Keďže odpoveď HTML zo servera Google je prijatá, pošle tieto znaky do Serial Monitor.

Teraz, keď ste si istí, že sieťové pripojenie funguje, dajte svojmu systému Galileo pripojenie na stránku Koľko dní do ukončenia prevádzky? server:

  1. Vytvorte nový náčrt a zadajte kód zdola
  2. Nahrajte kód a potom otvorte sériový monitor.

Ak to fungovalo, mali by ste vidieť počet hodín, kým sa MAKE nevytlačí každých päť sekúnd v sériovom monitore.

void setup () {} void loop () {Serial.println (getHours ()); Oneskorenie (5000); } int getHours () {char output [5]; system ("curl http://nextmakemagazine.appspot.com/simple> response.txt"); FILE * fp; fp = fopen ("response.txt", "r"); pomôcky (výstup, 5, fp); fclose (FP); návrat atoi (výstup); }

Prvá vec, ktorú si môžete všimnúť vo vyššie uvedenom kóde je, že funkcia slučky má iba dva riadky kódu. Oneskorenie (5000) je to, čo zabezpečuje, že každá iterácia slučky sa deje len každých päť sekúnd. Ale čo Serial.println (getHours ()) ;? Vnútorná funkcia, getHours (), je vlastne definovaná priamo pod funkciou loop.

Prvý riadok definície funkcie naznačuje, že naša funkcia sa nazýva getHours a ako výsledok sa vráti celé číslo. Kedykoľvek sa funkcia vyvolá z funkcií nastavenia alebo slučky, vykoná sa kód vo vnútri funkcie. V prípade aplikácie getHours požiada o údaje zo servera, uloží túto odpoveď do súboru a potom si prečíta súbor a vráti celočíselnú hodnotu, ktorá predstavuje počet hodín, ktoré budete musieť čakať, kým nebude k dispozícii nový problém programu MAKE.

S príkazom Linux zapíšte údaje do súboru a potom, čo má skica Arduino čítať tento súbor je len jeden spôsob, ako môžete získať údaje do skice. Určite som ukázal túto jedinečnú funkciu Galileo, pretože je to silný spôsob, ako spojiť rôzne časti projektu, pretože existuje mnoho spôsobov, ako čítať a zapisovať súbory.

V tomto kóde sa deje ďalšia zaujímavá vec. Povedzme, že server poslal odpoveď 45. Je to vlastne odosielanie dvoch znakov ASCII, 4 a 5. Keď Arduino číta tieto znaky, nebude im rozumieť ako celé číslo 45, ale skôr dva bajty, ktoré predstavujú znaky 4 a 5. To znamená, že ak potrebujete urobiť matematiku s hodnotou, musíte ju previesť na celé číslo. To je funkcia atoi (). To sa bude pozerať na pole znakov a výstup ich hodnoty ako celé číslo, ktoré môžete použiť pre aritmetiku.

Analyzovanie JSON s Pythonom

Koľko dní dokiaľ nevyjde? server robí vyššie uvedený príklad celkom jednoduchý, pretože dodáva jeden jednoduchý údaj. Iné služby môžu poskytovať niekoľko rôznych údajov štruktúrovaných vo formáte volané JSON, alebo JavaScript Object Notation.

JSON sa stal štandardným formátom pre prenos štruktúrovaných dát cez web. Ak chcete čítať údaje z lokality, ktorá ponúka službu JSON, budete ju musieť analyzovať. Keďže by to bolo ťažké s kódom Arduino, na vykonanie tejto úlohy môžete použiť iné jazyky a odovzdať príslušné informácie do kódu spoločnosti Arduino.

Ak chcete zobraziť údaje služby JSON, navštívte webový prehliadač na stránke http://nextmakemagazine.appspot.com/json.

{totalHours: 1473, volumeNumber: "38", daysAway: 61}

Odpoveď bude pravdepodobne spolu na jednom riadku, ale ak by ste pridali prerušenia riadkov a odsadenie, vyzeralo by to ako príklad vyššie. Existujú tri páry kľúč / hodnota: počet hodín do nasledujúceho vydania, ďalšie číslo zväzku a počet dní do nasledujúceho vydania.

Nižšie uvedený kód používa programovací jazyk Python na pripojenie k serveru JSON na adrese http://nextmakemagazine.appspot.com/json a analyzuje číslo zväzku a počet hodín.

import json import urllib2 httpResponse = urllib2.urlopen ('http://nextmakemagazine.appspot.com/json') jsonString = httpResponse.read () jsonData = json.loads (jsonString) vytlačiť "Volume", jsonData ['volumeNumber'] , "bude uvoľnená v", jsonData ['totalHours'], "hours".
  1. Pripojte sa k príkazovému riadku Galileo pomocou SSH, Telnet alebo sériového
  2. Zmena domovského adresára používateľa root
# cd / home / root /
  1. Spustite textový editor vi s názvom _json-parse.py_ a vytvorte tento súbor.
# vi json-parse.py
  1. Pozdĺž ľavej strany obrazovky uvidíte stĺpec (~). Zadajte písmeno i pre vstup do režimu vkladania. V ľavom dolnom rohu obrazovky sa zobrazí „I“.
  2. Zadajte kód zhora do vi.
  3. Stlačte kláves uniknúť prepnúť z režimu vkladania do príkazového režimu. “I” v ľavom dolnom rohu zmizne a namiesto toho uvidíte pomlčku.
  4. Zadajte „: x“ a stlačte kláves enter na uloženie súboru a ukončenie vi.
  5. Test skriptu vykonaním kódu z príkazového riadka.
# python json-parse.py

Ak máte všetko v poriadku, mali by ste vidieť nasledujúci výstup na príkazovom riadku:

Zväzok 38 bude vydaný v roku 1473.0 hodín.

Ako môžete vidieť z vyššie uvedeného príkladu, analýza odpovede JSON z webovej stránky nie je veľmi ťažká, keď máte v programe Galileo k dispozícii Python. Teraz stačí jednoducho pripojiť odpoveď z Pythonu na váš Arduino kód.

Ak to chcete vyskúšať, najprv upravte súbor json-parse.py:

  1. Na príkazovom riadku programu Galileo sa uistite, že ste stále v domovskom adresári používateľa root:
# cd / home / root /
  1. Otvorte súbor na úpravu v jazyku vi:
# vi json-parse.py
  1. Zadajte písmeno i pre vstup do režimu vkladania. V ľavom dolnom rohu obrazovky sa zobrazí „I“.
  2. Upravte súbor tak, aby odrážal kód uvedený nižšie.
import json import urllib2 httpResponse = urllib2.urlopen ('http://nextmakemagazine.appspot.com/json') jsonString = httpResponse.read () jsonData = json.loads (jsonString) tlačiť jsonData ['daysAway']
  1. V IDE Arduino vytvorte nový náčrt s kódom z nižšie uvedeného kódu. Uvidíte, že je to veľmi podobné vyššie uvedenému kódu Arduino. Namiesto toho, aby zavolal curl z príkazového riadku, používa Python na spustenie skriptu, ktorý ste napísali.

void setup () {} void loop () {Serial.println (getDays ()); Oneskorenie (5000); } int getDays () {char output [5]; system ("python /home/root/json-parse.py> /response.txt"); FILE * fp; fp = fopen ("response.txt", "r"); pomôcky (výstup, 5, fp); fclose (FP); návrat atoi (výstup); }

  1. Nahrajte kód do dosky a otvorte sériový monitor.

Teraz by ste mali vidieť odpoveď zo servera ako počet dní, kým sa nevytvorí ďalšie vydanie programu MAKE.

Pripojenie displeja LCD znakov

Aké dobré sú tieto informácie, ak ich možno vidieť len na sériovom monitore? Po pripojení LCD displeja sa tieto informácie vytlačia.

Okrem častí, ktoré používate, budete tiež potrebovať:

  • Štandardný 16 × 2 LCD displej, dostupný od Adafruit, Sparkfun alebo Maker Shed.
  • lopárik
  • Prepojovacie vodiče
  • Potenciometer 10K alebo 2K

Pripojenie LCD k Galileo:

  1. Odpojte dosku Galileo od portu USB počítača a napájania.
  2. Vložte LCD do doštičky (v prípade potreby naň pripojte kolíky spájkovacej hlavice).
  3. Potenciometer vložte aj do dosky na pečenie.
  4. Pomocou prepojovacích vodičov pripojte potenciometer a LCD k systému Galileo, ako je znázornené na obrázku nižšie.

  1. Pomocou prepojovacích vodičov pripojte LCD, ako je znázornené na obrázku nižšie.

  1. Zapojte napájanie do systému Galileo.
  2. Pripojenie zariadenia Galileo k počítaču prostredníctvom rozhrania USB.
  3. Z ID Arduino nahrajte nižšie uvedený kód.

#include LiquidCrystal lcd (12, 11, 5, 4, 3, 2); void setup () {lcd.init (1,12,255,11,5,4,3,2,0,0,0,0); lcd.begin (16, 2); lcd.setCursor (3, 0); lcd.print ("dni do"); lcd.setCursor (0, 1); lcd.print ("MAKE je tu!"); } void loop () {lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (0, 0); lcd.print (getDays ()); oneskorenia (30 * 60 * 1000); } int getDays () {char output [5]; system ("python /home/root/json-parse.py> /response.txt"); FILE * fp; fp = fopen ("response.txt", "r"); pomôcky (výstup, 5, fp); fclose (FP); návrat atoi (výstup); }

Teraz budete môcť ľahko sledovať karty, keď budú ďalšie vydania programu MAKE zasiahnuť novinové stánky! Sledujte vydanie produktu Začíname s technológiou Intel Galileo pre viac projektov pripojených k sieti Galileo!

Podiel

Zanechať Komentár