Obsah:

Začíname s Arduino a ethernetom: 8 krokov
Začíname s Arduino a ethernetom: 8 krokov

Video: Začíname s Arduino a ethernetom: 8 krokov

Video: Začíname s Arduino a ethernetom: 8 krokov
Video: Учим Arduino за 1 час! #Профессионально 2024, Júl
Anonim
Začíname s Arduino a ethernetom
Začíname s Arduino a ethernetom

Vaše Arduino môže ľahko komunikovať s vonkajším svetom prostredníctvom káblového ethernetového pripojenia. Kým však začneme, bude sa predpokladať, že máte základné znalosti o počítačových sieťach, ako napríklad znalosti o tom, ako pripojiť počítače k rozbočovaču/smerovaču pomocou káblov RJ45, čo je to adresa IP a MAC a podobne. Ďalej je tu dobrý rýchly prehľad o ethernetu.

Na obrázok budete potrebovať Arduino Uno alebo kompatibilnú dosku s ethernetovým štítom, ktorý používa IC radiča W5100 Ethernet (takmer všetky).

Okrem toho budete musieť dosku napájať prostredníctvom externej zásuvky DC - W5100 IC používa viac prúdu, ako dokáže napájať USB. Postačí 9V 1,5A zástrčka/nástenná bradavica.

Krok 1:

Obrázok
Obrázok

Nakoniec - štíty sa zahrievajú - dávajte si preto pozor, aby ste sa po dlhšom používaní nedotkli W5100. V prípade, že si nie ste istí - toto je W5100 IC.

Krok 2:

Keď máte Arduino s podporou ethernetu a pripojené externé napájanie-je dobré skontrolovať, či všetko funguje. Otvorte Arduino IDE a vyberte Súbor> Príklady> Ethernet> Webový server. Načíta sa jednoduchý náčrt, ktorý zobrazí údaje zhromaždené z analógových vstupov vo webovom prehliadači. Zatiaľ ho však nenahrávajte, potrebuje menšiu úpravu.

Musíte zadať IP adresu ethernetového štítu - čo sa robí vo vnútri náčrtu. Je to jednoduché, prejdite na riadok:

IP adresa ip (10, 1, 1, 77);

Zmeňte ho tak, aby zodpovedal vášmu vlastnému nastaveniu. Napríklad u nás doma je adresa IP smerovača 10.1.1.1, tlačiareň 10.1.1.50 a všetky počítače sú mladšie ako … 50. Takže nastavím IP svojho štítu na 10.1.1.77 zmenou riadka na:

byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

Ak však máte iba jeden štít, nechajte ho tak. Existuje veľmi, veľmi, štatisticky zriedkavá šanca, že by adresa MAC bola rovnaká ako váš existujúci hardvér, takže by bolo na inom čase zmeniť ju.

Krok 3:

Obrázok
Obrázok

Ak však máte iba jeden štít, nechajte ho tak. Existuje veľmi, veľmi, štatisticky zriedkavá šanca, že by adresa MAC bola rovnaká ako váš existujúci hardvér, takže by bolo na inom čase zmeniť ju.

Akonáhle vykonáte zmeny, uložte a nahrajte náčrt. Teraz otvorte webový prehliadač a prejdite na adresu IP, ktorú ste zadali do náčrtu, a zobrazí sa vám niečo podobné obrázku.

Čo sa deje?

Arduino bolo naprogramované tak, aby ponúkalo jednoduchú webovú stránku s hodnotami meranými analógovými vstupmi. Ak chcete získať aktualizované hodnoty, môžete prehliadač aktualizovať. V tomto bode - upozorňujeme, že ethernetové štíty používajú digitálne piny 10 ~ 13, takže ich nemôžete použiť na nič iné. Niektoré ethernetové štíty Arduino môžu mať aj zásuvku na kartu microSD, ktorá tiež používa ďalší digitálny pin - v dokumentácii preto zistíte, ktorý z nich.

Krok 4:

Teraz, keď vidíme, že ethernetový štít funguje, môžeme prejsť na niečo užitočnejšie. Rozoberme si predchádzajúci príklad jednoduchým spôsobom a uvidíme, ako môžeme v sieti distribuovať a zobrazovať zaujímavejšie údaje. Pre porovnanie, všetky funkcie súvisiace s ethernetom spracováva knižnica Ethernet Arduino. Ak sa pozriete na predchádzajúcu skicu, ktorú sme práve použili, bude zaujímavá časť:

pre (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print („analógový vstup“); client.print (analogChannel); client.print ("is"); client.print (sensorReading); client.println (""); } client.println ("");

Našťastie by táto časť náčrtu mala byť známa - pamätajte, ako sme použili serial.print (); v minulosti pri odosielaní údajov do boxu sériového monitora? Teraz môžeme urobiť to isté, ale odosielanie údajov z nášho ethernetového štítu späť do webového prehliadača - inými slovami, veľmi základný typ webovej stránky. Existuje však niečo, čo sa môžete alebo možno nechcete naučiť za účelom formátovania. výstup v čitateľnom formáte - HTML kód. Nie som vývojár webových stránok (!), Takže sa nebudem príliš zaoberať HTML.

Ak však chcete so svojim Arduinom zobrazovať pekne naformátované webové stránky a podobne, tu by to bol dobrý začiatok. V záujme jednoduchosti budú najužitočnejšie nasledujúce dve funkcie:

client.print ("is");

Client.print (); nám umožňuje odosielať text alebo údaje späť na webovú stránku. Funguje to rovnako ako serial.print (), takže nič nové. Typ údajov môžete tiež určiť rovnakým spôsobom ako v prípade serial.print (). Prirodzene ho môžete použiť aj na odoslanie údajov späť. Ďalší užitočný riadok je:

client.println ("");

ktorý odošle HTML kód späť do webového prehliadača a povie mu, aby začal nový riadok. Časť, ktorá skutočne spôsobuje návrat/nový riadok vozíka, je

čo je kód HTML (alebo „značka“) pre nový riadok.

Ak teda vytvárate prepracovanejšie zobrazenia webových stránok, stačí do súboru client.print () vložiť ďalšie značky HTML. vyhlásenie. Ak sa chcete dozvedieť viac o príkazoch HTML, tu je dobrý návod.

Na záver - vezmite na vedomie, že skica pošle údaje iba vtedy, keď boli vyžiadané, tj vtedy, keď prijala požiadavku z webového prehliadača.

Krok 5: Prístup k vášmu Arduinu cez internet

Prístup k vášmu Arduinu cez internet
Prístup k vášmu Arduinu cez internet

Zatiaľ je všetko dobré. Ale čo keď chcete mať prístup k svojmu Arduinu mimo lokálnej siete?

Budete potrebovať statickú adresu IP - to znamená, že adresa IP, ktorú váš poskytovateľ internetových služieb priradí vášmu pripojeniu, musí zostať rovnaká. Ak nemáte statickú IP adresu, pokiaľ ponecháte modem/smerovač trvalo zapnutý na svojej IP adrese, nemalo by sa to meniť. Nie je to však optimálne riešenie.

Ak vám poskytovateľ internetových služieb nemôže ponúknuť statickú adresu IP, môžete pokračovať v projekte pomocou organizácie, ktorá ponúka dynamický server DNS. Tieto organizácie vám namiesto čísla ponúkajú vlastný statický názov hostiteľa IP (napr. Mojo.monkeynuts.com), sledujte svoju meniacu sa adresu IP a prepojte ju s novým názvom hostiteľa. Z toho, čo môžem zistiť, váš modem potrebuje podporovať (má vstavaného klienta na …) tieto služby DDNS.

Dve spoločnosti sú napríklad No-IP aDynDNS.com. Upozorňujeme, že tieto dva som nepoužil, sú len ponúkané ako príklady. Teraz, aby ste našli svoju IP adresu … zvyčajne to nájdete po prihlásení sa na stránku správy smerovača - zvyčajne je to 192.168.0.1, ale môže byť odlišná. Obráťte sa na svojho dodávateľa alebo poskytovateľa internetových služieb, či vám dodal hardvér. Ak v tomto prípade zadám do webového prehliadača 10.1.1.1 a po zadaní hesla na správu modemu sa zobrazí nasledujúca obrazovka podľa obrázku.

Krok 6:

Obrázok
Obrázok

To, čo hľadáte, je vaša IP adresa WAN, ako vidíte na obrázku vyššie. Aby sa vtipkári nedostali, začiarkol som časť svojej adresy.

Ďalšia vec, ktorú musíte urobiť, je zapnúť presmerovanie portov. To routeru hovorí, kam má presmerovať prichádzajúce požiadavky z vonkajšieho sveta. Keď modem prijme takúto požiadavku, chceme túto požiadavku poslať na číslo portu nášho ethernetového štítu. Pomocou:

Server EthernetServer (125);

funkcia v našom náčrte nastavila číslo portu na 125. Konfiguračná obrazovka každého modemu bude vyzerať inak, ale ako príklad je tu jeden na obrázku.

Krok 7:

Obrázok
Obrázok

Z riadku číslo jedna na obrázku vyššie teda vidíte, že čísla vstupných portov boli nastavené na 125 a IP adresa ethernetového štítu bola nastavená na 10.1.1.77 - rovnako ako v náčrte.

Po uložení nastavení je všetko pripravené. Externá adresa môjho ethernetového štítu bude WAN: 125, takže pre prístup k Arduinu napíšem svoju adresu WAN s: 125 na koniec do prehliadača vzdialeného webového zariadenia, ktoré bude kontaktovať osamelý ethernetový hardvér doma.

Okrem toho možno budete musieť zmeniť nastavenia brány firewall svojho modemu, aby bol port 125 „otvorený“pre prichádzajúce požiadavky. V dokumentácii k modemu nájdete ďalšie informácie o tom, ako to urobiť. Teraz, v podstate z akéhokoľvek zariadenia pripojeného na internet v slobodnom svete, môžem zadať svoje číslo WAN a číslo portu do poľa URL a získať výsledky. Napríklad z telefónu, keď je pripojený k internetu prostredníctvom mobilných dát LTE.

V tejto fáze teda teraz môžete zobrazovať údaje na jednoduchej webovej stránke vytvorenej vašim Arduinom a pristupovať k nim odkiaľkoľvek s neobmedzeným prístupom na internet. So svojimi predchádzajúcimi znalosťami Arduino teraz môžete používať údaje zo senzorov alebo iných častí náčrtu a zobrazovať ich na načítanie.

Krok 8: Zobrazenie údajov senzora na webovej stránke

Zobrazenie údajov senzora na webovej stránke
Zobrazenie údajov senzora na webovej stránke

Ako príklad zobrazovania údajov senzorov na webovej stránke používajme lacný a obľúbený snímač teploty a vlhkosti - DHT22. Budete musieť nainštalovať knižnicu DHT22 Arduino, ktorú nájdete na tejto stránke. Ak je to s DHT22 prvýkrát, vyskúšajte si ukážkový náčrt, ktorý je súčasťou knižnice, aby ste pochopili, ako funguje.

Pripojte DHT22 s dátovým pinom k Arduino D2, Vin k 5V pinu a GND do … GND. Teraz náš náčrt - zobrazenie teploty a vlhkosti na webovej stránke. Ak nemáte znalosti HTML, môžete na generovanie kódu použiť online služby, ako je táto, ktoré potom môžete upraviť tak, aby sa používali v náčrte. V nižšie uvedenom príklade sa údaje o teplote a vlhkosti z DHT22 zobrazujú na jednoduchej webovej stránke:

#include "SPI.h" #include "Ethernet.h"

// pre senzor DHT22

#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22

// Ďalej zadajte MAC adresu a IP adresu vášho ovládača.

// Adresa IP bude závisieť od vašej lokálnej siete: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IP adresa ip (10, 1, 1, 77);

// Inicializácia knižnice servera Ethernet

// s IP adresou a portom, ktorý chcete použiť // (port 80 je predvolený pre HTTP): EthernetServer server (125); DHT dht (DHTPIN, DHTTYPE);

neplatné nastavenie ()

{dht.begin (); // Otvorte sériovú komunikáciu a počkajte, kým sa otvorí port: Serial.begin (9600); while (! Serial) {; // počkajte na pripojenie sériového portu. Potrebné iba pre Leonardo} // spustenie ethernetového pripojenia a server: Ethernet.begin (mac, ip); server.begin (); Serial.print („server je na“); Serial.println (Ethernet.localIP ()); }

prázdna slučka ()

{// počúvať prichádzajúcich klientov EthernetClient klient = server.available (); if (klient) {Serial.println ("nový klient"); // požiadavka http končí prázdnym riadkom boolean currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // ak ste sa dostali na koniec riadka (dostali ste nový riadok // znak) a riadok je prázdny, požiadavka http sa skončila, // takže môžete odoslať odpoveď, ak (c == 'n' && currentLineIsBlank) {// pošle štandardnú hlavičku odpovede http client.println ("HTTP/1.1 200 OK"); client.println ("Typ obsahu: text/html"); client.println („Pripojenie: zavrieť“); // spojenie sa uzavrie po dokončení odpovede client.println ("Obnoviť: 30"); // obnovenie stránky automaticky každých 30 sekúnd client.println (); client.println ("");

client.println ("");

// získanie údajov zo senzora DHT22

float h = dht.readHumidity (); float t = dht.readTemperature (); Serial.println (t); Serial.println (h);

// odtiaľto môžeme zadať vlastný HTML kód na vytvorenie webovej stránky

client.print („Počasie v kancelárii

Kancelárska teplota - );

client.print (t);

client.print („stupne Celzia

);

client.print ("

Vlhkosť - “);

client.print (h);

client.print ( percent

);

client.print ("

Stránka sa obnovuje každých 30 sekúnd <

. );

prestávka;

} if (c == 'n') {// začínate nový riadok currentLineIsBlank = true; } else if (c! = 'r') {// dostali ste znak na aktuálnom riadku currentLineIsBlank = false; }}} // poskytnite webovému prehliadaču čas na prijatie oneskorenia údajov (1); // zatvorenie spojenia: client.stop (); Serial.println („klient odpojený“); }}

Je to modifikácia náčrtu webového servera IDE, ktorý sme použili predtým - s niekoľkými úpravami. Najprv sa webová stránka automaticky obnoví každých 30 sekúnd - tento parameter je nastavený v riadku:

client.println („Obnoviť: 30“); // obnovenie stránky automaticky každých 30 sekúnd

… a vlastný HTML pre našu webovú stránku začína pod riadkom:

// odtiaľto môžeme zadať vlastný HTML kód na vytvorenie webovej stránky

Potom môžete jednoducho vložiť požadovaný HTML do funkcií client.print () a vytvoriť tak požadované rozloženie. Nakoniec - tu je príklad snímky obrazovky príkladu náčrtu pri práci.

Takže tu to máte, ďalší užitočný spôsob, ako nechať komunikovať Arduino s vonkajším svetom. Tento príspevok vám prináša pmdway.com - všetko pre výrobcov a nadšencov elektroniky s bezplatným doručením po celom svete.

Odporúča: