Tartalomjegyzék:

Az Arduino és az Ethernet használatának első lépései: 8 lépés
Az Arduino és az Ethernet használatának első lépései: 8 lépés

Videó: Az Arduino és az Ethernet használatának első lépései: 8 lépés

Videó: Az Arduino és az Ethernet használatának első lépései: 8 lépés
Videó: #8 - Az ultrahangos távolságérzékelő 2024, Július
Anonim
Az Arduino és az Ethernet használatának első lépései
Az Arduino és az Ethernet használatának első lépései

Az Arduino könnyen kommunikálhat a külvilággal vezetékes Ethernet kapcsolaton keresztül. Mielőtt azonban elkezdenénk, feltételezzük, hogy rendelkezik alapvető ismeretekkel a számítógépes hálózatokról, például arról, hogyan kell számítógépeket RJ45 kábelekkel hubhoz/útválasztóhoz csatlakoztatni, mi az IP- és MAC -cím stb. Ezenkívül itt van egy gyors összefoglaló az Ethernetről.

Szüksége lesz egy Arduino Uno -ra vagy kompatibilis tábla Ethernet -pajzsával, amely a W5100 Ethernet vezérlő IC -t használja (nagyjából mindegyiket) a kép szerint.

Ezenkívül a tápegységet a külső egyenáramú aljzaton keresztül kell táplálni - a W5100 IC több áramot használ, mint az USB tápellátása. Egy 9 V -os 1,5 A -os dugaszcsomag/fali szemölcs elegendő.

1. lépés:

Kép
Kép

Végül - a pajzsok felforrósodnak - ezért ügyeljen arra, hogy ne érintse meg a W5100 készüléket hosszabb használat után. Ha nem biztos benne - ez a W5100 IC.

2. lépés:

Miután megkapta az Ethernet-kompatibilis Arduino-t, és csatlakoztatta a külső áramellátást-érdemes ellenőrizni, hogy minden működik-e. Nyissa meg az Arduino IDE -t, és válassza a Fájl> Példák> Ethernet> Webszerver lehetőséget. Ez betölt egy egyszerű vázlatot, amely megjeleníti az analóg bemenetekről egy webböngészőben gyűjtött adatokat. Azonban még ne töltse fel, némi módosítást igényel.

Meg kell adnia az Ethernet -pajzs IP -címét - ez a vázlaton belül történik. Ez egyszerű, menj a sorhoz:

IPAdd ip (10, 1, 1, 77);

És módosítsa úgy, hogy megfeleljen a saját beállításainak. Például otthonunkban az útválasztó IP -címe 10.1.1.1, a nyomtató 10.1.1.50 és az összes számítógép… 50 alatt van. Tehát a pajzs IP -jét 10.1.1.77 -re állítom a sor megváltoztatásával:

bájt mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

Ha azonban csak egy pajzsod van, hagyd békén. Lehet, hogy nagyon, nagyon, statisztikailag ritka az esélye annak, hogy a MAC -címe megegyezik a meglévő hardverével, így ez egy újabb alkalom lenne annak megváltoztatására.

3. lépés:

Kép
Kép

Ha azonban csak egy pajzsod van, hagyd békén. Lehet, hogy nagyon, nagyon, statisztikailag ritka az esélye annak, hogy a MAC -címe megegyezik a meglévő hardverével, így ez egy újabb alkalom lenne annak megváltoztatására.

Miután elvégezte a módosításokat, mentse el és töltse fel a vázlatot. Most nyisson meg egy webböngészőt, és keresse meg a vázlatban megadott IP -címet, és valami hasonlóat kell bemutatnia a képhez.

Mi történik?

Az Arduino programozása egyszerű weboldalt kínál az analóg bemenetek által mért értékekkel. Frissítheti a böngészőt, hogy frissített értékeket kapjon. Ezen a ponton - vegye figyelembe, hogy az Ethernet -pajzsok 10–13 -as digitális tűket használnak, így nem használhatja őket másra. Egyes Arduino Ethernet -pajzsok microSD -kártya foglalattal is rendelkezhetnek, amely szintén másik digitális tűt használ - ezért ellenőrizze a dokumentációt, hogy melyik.

4. lépés:

Ennek ellenére most, hogy láthatjuk, hogy az Ethernet pajzs működik, továbbléphetünk valami hasznosabbra. Boncoljuk fel egyszerű módon az előző példát, és nézzük meg, hogyan oszthatunk el és jeleníthetünk meg érdekesebb adatokat a hálózaton. Referenciaként az összes Ethernet-hez kapcsolódó funkciót az Ethernet Arduino könyvtár kezeli. Ha megvizsgálja az előző vázlatot, amelyet most használtunk, akkor az a rész lesz érdekes:

for (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("analóg bemenet"); client.print (analógChannel); client.print ("is"); client.print (sensorReading); client.println (""); } client.println ("");

Remélhetőleg a vázlatnak ez a része ismerős lesz - emlékezzen arra, hogyan használtuk a serial.print (); a múltban, amikor adatokat küldött a soros monitor dobozába? Nos, most ugyanezt tehetjük, de az adatokat az Ethernet -pajzsunkról visszaküldve egy webböngészőbe - más szóval, egy nagyon egyszerű típusú weboldalt. Van azonban valami, amit esetleg meg akar tanulni a formázáshoz. a kimenet olvasható formátumban - HTML kód. Nem vagyok webhelyfejlesztő (!), Ezért nem fogok túl sokat foglalkozni a HTML -szel.

Ha azonban szépen formázott weboldalakat szeretne kiszolgálni az Arduino -val és így tovább, akkor ez egy jó kezdet. Az egyszerűség érdekében a következő két funkció lesz a leghasznosabb:

client.print ("is");

Client.print (); lehetővé teszi számunkra, hogy szöveget vagy adatokat küldjünk vissza a weboldalra. Ugyanúgy működik, mint a serial.print (), tehát nincs újdonság. Az adattípust ugyanúgy megadhatja, mint a serial.print (). Természetesen használhatja az adatok visszaküldésére is. A másik hasznos sor:

client.println ("");

amely a HTML kódot visszaküldi a webböngészőnek, és azt mondja, hogy kezdjen új sort. A kocsi visszatérését/új vonalat ténylegesen okozó rész a

amely egy HTML -kód (vagy „címke”) egy új sorhoz.

Tehát ha bonyolultabb weboldal -megjelenítéseket készít, akkor egyszerűen beilleszthet más HTML -címkéket a kliensbe.print (); nyilatkozat. Ha többet szeretne megtudni a HTML parancsokról, itt van egy jó oktatóoldal.

Végül - vegye figyelembe, hogy a vázlat csak akkor küldi el az adatokat, amikor kérték, azaz amikor megkapta a kérést a webböngészőtől.

5. lépés: Az Arduino elérése az interneten keresztül

Arduino elérése az interneten keresztül
Arduino elérése az interneten keresztül

Eddig jó. De mi van, ha az Arduino -t a helyi hálózaton kívülről szeretné elérni?

Szüksége lesz egy statikus IP -címre - vagyis annak az IP -címnek, amelyet az internetszolgáltatója a kapcsolathoz rendelt, változatlannak kell maradnia. Ha nincs statikus IP -címe, addig, amíg a modemet/útválasztót véglegesen az IP -címen hagyja, nem szabad megváltoznia. Ez azonban nem optimális megoldás.

Ha az internetszolgáltató egyáltalán nem tud statikus IP -t ajánlani, akkor is továbbléphet a projektben egy olyan szervezet használatával, amely dinamikus DNS -t kínál. Ezek a szervezetek saját statikus IP -gazdagépnevet (pl. Mojo.monkeynuts.com) kínálnak szám helyett, kövesse nyomon a változó IP -címet, és kapcsolja össze az új gazdagépnévvel. Amit összegyűjtök, a modemnek támogatnia kell (rendelkezik beépített ügyféllel…) ezeket a DDNS szolgáltatásokat.

Példaként két vállalat a No-IP és a DynDNS.com. Kérjük, vegye figyelembe, hogy ezt a kettőt nem használtam, csak példaként szolgálnak. Most, hogy megtalálja az IP -címét … általában ezt az útválasztó adminisztrációs oldalára bejelentkezve találhatja meg - általában 192.168.0.1, de lehet más is. Kérdezze meg szállítóját vagy internetszolgáltatóját, ha ők szállították a hardvert. Ebben a példában, ha beírom a 10.1.1.1 böngészőt, és miután beírtam a modem adminisztrációs jelszavamat, a következő képernyő jelenik meg a kép szerint.

6. lépés:

Kép
Kép

Amit a fenti képen lát, az a WAN IP -címe, amit keres. Hogy a csínytevőket távol tartsam, elfeketítettem néhány címemet.

A következő lépés a porttovábbítás bekapcsolása. Ez megmondja az útválasztónak, hogy hová kell átirányítani a külvilágból érkező bejövő kéréseket. Amikor a modem ilyen kérést kap, el szeretnénk küldeni ezt a kérést az Ethernet pajzsunk portszámára. Használni a:

EthernetServer szerver (125);

A vázlatunkban szereplő funkció a portszámot 125 -re állította. Minden modem konfigurációs képernyője másképp fog kinézni, de példaként itt van egy a képen.

7. lépés:

Kép
Kép

Tehát a fenti képen az első sorból látható, hogy a bejövő portok száma 125 -re van állítva, és az Ethernet -pajzs IP -címe 10.1.1.77 - ugyanaz, mint a vázlaton.

A beállítások mentése után minden készen áll. Az Ethernet -pajzsom külső címe a WAN: 125 lesz, így az Arduino eléréséhez a távoli webes eszköz böngészőjébe beírom a WAN -címemet: 125 -tel a végén, amely kapcsolatba lép a magányos Ethernet hardverrel otthon.

Továbbá előfordulhat, hogy módosítania kell a modem tűzfal beállításait, hogy a 125 -ös port „nyitott” legyen a bejövő kérésekre. Kérjük, nézze meg a modem dokumentációját, hogy megtudja, hogyan kell ezt megtenni. A szabad világban alapvetően bármely internethez csatlakoztatott eszközről beírhatom a WAN- és portszámomat az URL mezőbe, és megkaphatom az eredményeket. Például egy telefonról, amikor LTE mobil adatkapcsolaton keresztül csatlakozik az internethez.

Tehát ebben a szakaszban mostantól adatokat jeleníthet meg az Arduino által létrehozott egyszerű weboldalon, és bárhonnan hozzáférhet hozzájuk korlátlan internet -hozzáféréssel. Korábbi Arduino -ismereteivel mostantól felhasználhatja az érzékelőkből vagy a vázlat más részeiből származó adatokat, és megjelenítheti azokat a visszakereséshez.

8. lépés: Az érzékelőadatok megjelenítése egy weboldalon

Érzékelőadatok megjelenítése egy weboldalon
Érzékelőadatok megjelenítése egy weboldalon

Példaként az érzékelőadatok weboldalon történő megjelenítésére használjunk egy olcsó és népszerű hőmérséklet- és páratartalom -érzékelőt - a DHT22 -t. Telepítenie kell a DHT22 Arduino könyvtárat, amely ezen az oldalon található. Ha most először használja a DHT22 -t, kísérletezzen a könyvtárhoz mellékelt példavázlattal, hogy megértse, hogyan működik.

Csatlakoztassa a DHT22 -t az adattűvel az Arduino D2 -hez, a Vin -t az 5V -os tűhöz, a GND -t pedig a… GND -hez. Most a vázlatunk - a hőmérséklet és a páratartalom megjelenítése egy weboldalon. Ha nem ismeri a HTML -t, használhat ilyen online szolgáltatásokat a kód létrehozásához, amelyet aztán módosíthat a vázlatban való használatra. Az alábbi példában a DHT22 hőmérséklet- és páratartalom -adatait egy egyszerű weboldalon jeleníti meg:

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

// DHT22 érzékelőhöz

#tartalmazza a "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22

// Írja be a vezérlő MAC- és IP -címét alább.

// Az IP -cím a helyi hálózattól függ: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAdd ip (10, 1, 1, 77);

// Inicializálja az Ethernet szerverkönyvtárat

// a használni kívánt IP -címmel és porttal // (a 80 -as port a HTTP alapértelmezett): EthernetServer szerver (125); DHT dht (DHTPIN, DHTTYPE);

üres beállítás ()

{dht.begin (); // Nyissa meg a soros kommunikációt, és várja meg a port megnyitását: Serial.begin (9600); while (! Sorozat) {; // várjon, amíg a soros port csatlakozik. Csak Leonardo esetén szükséges} // indítsa el az Ethernet -kapcsolatot és a szervert: Ethernet.begin (mac, ip); szerver.begin (); Serial.print ("a szerver itt van"); Serial.println (Ethernet.localIP ()); }

üres hurok ()

{// bejövő ügyfelek figyelése EthernetClient kliens = szerver.available (); if (kliens) {Serial.println ("új kliens"); // egy http kérés üres sorral végződik, boolean currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Soros.írás (c); // ha a sor végére ért (új sor // karaktert kapott), és a sor üres, akkor a http -kérés véget ért, // így választ küldhet, ha (c == 'n' && currentLineIsBlank) {// szabványos http válaszfejléc küldése client.println ("HTTP/1.1 200 OK"); client.println ("Tartalom-típus: szöveg/html"); client.println ("Kapcsolat: bezárás"); // a kapcsolat lezárul a válasz kliens befejezése után.println ("Frissítés: 30"); // az oldal automatikus frissítése 30 másodpercenként client.println (); client.println ("");

client.println ("");

// adatok beszerzése a DHT22 érzékelőből

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

// innen beírhatjuk saját HTML kódunkat a weboldal létrehozásához

client.print ( Irodai időjárás

Irodai hőmérséklet - );

kliens.nyomat (t);

client.print ( Celsius fok

);

client.print ("

Páratartalom - );

kliens.nyomat (h);

client.print ( százalék

);

client.print ("

Az oldal 30 másodpercenként frissül <

. );

szünet;

} if (c == 'n') {// új sort kezdesz currentLineIsBlank = true; } else if (c! = 'r') {// kapott egy karaktert az aktuális sorban currentLineIsBlank = false; }}} // adjon időt a webböngészőnek az adatkésleltetés fogadására (1); // a kapcsolat bezárása: client.stop (); Serial.println ("kliens leválasztva"); }}

Ez az IDE webszerver példavázlatának módosítása, amelyet korábban használtunk - néhány módosítással. Először is, a weboldal automatikusan frissül 30 másodpercenként - ez a paraméter a sorban van beállítva:

client.println ("Frissítés: 30"); // automatikusan frissíti az oldalt 30 másodpercenként

… És a weboldalunk egyedi HTML -kódja a sor alatt kezdődik:

// innen beírhatjuk saját HTML kódunkat a weboldal létrehozásához

Ezután egyszerűen beillesztheti a szükséges HTML -t a client.print () függvényekbe a kívánt elrendezés létrehozásához. Végül - itt van egy példa képernyőkép a példa vázlatról a munkahelyen.

Tehát itt van, egy másik hasznos módja annak, hogy az Arduino kölcsönhatásba lépjen a külvilággal. Ezt a bejegyzést a pmdway.com hozza meg neked - mindent a gyártóknak és az elektronika rajongóinak, ingyenes szállítással világszerte.

Ajánlott: