Satura rādītājs:

Darba sākšana ar Arduino un Ethernet: 8 soļi
Darba sākšana ar Arduino un Ethernet: 8 soļi

Video: Darba sākšana ar Arduino un Ethernet: 8 soļi

Video: Darba sākšana ar Arduino un Ethernet: 8 soļi
Video: What is a Server? Servers vs Desktops Explained 2024, Novembris
Anonim
Darba sākšana ar Arduino un Ethernet
Darba sākšana ar Arduino un Ethernet

Jūsu Arduino var viegli sazināties ar ārpasauli, izmantojot vadu Ethernet savienojumu. Tomēr, pirms sākam darbu, tiks pieņemts, ka jums ir pamata izpratne par datoru tīklu, piemēram, zināšanas par to, kā savienot datorus ar centrmezglu/maršrutētāju, izmantojot RJ45 kabeļus, kāda ir IP un MAC adrese utt. Turklāt šeit ir labs ātrs pārskats par Ethernet.

Jums būs nepieciešama Arduino Uno vai saderīga tāfele ar Ethernet vairogu, kas izmanto W5100 Ethernet kontroliera IC (gandrīz visas), kā parādīts attēlā.

Turklāt jums būs jāpadara barošana caur ārējo līdzstrāvas kontaktligzdu - W5100 IC izmanto vairāk strāvas, nekā var nodrošināt USB barošana. Pietiks ar 9V 1.5A kontaktdakšu/sienas kārpu.

1. darbība:

Attēls
Attēls

Visbeidzot - vairogi patiešām sakarst, tāpēc uzmanieties, lai pēc ilgstošas lietošanas nepieskartos W5100. Ja neesat pārliecināts - tas ir W5100 IC.

2. darbība:

Kad esat izveidojis Arduino, kuram ir Ethernet savienojums, un pievienojiet ārējo barošanu-ieteicams pārbaudīt, vai tas viss darbojas. Atveriet Arduino IDE un atlasiet Fails> Piemēri> Ethernet> tīmekļa serveris. Tiek ielādēta vienkārša skice, kurā tiks parādīti dati, kas savākti no analogās ievades tīmekļa pārlūkprogrammā. Tomēr vēl neaugšupielādējiet to, tas ir nedaudz jāmaina.

Jums jānorāda Ethernet vairoga IP adrese - kas tiek darīts skices iekšpusē. Tas ir vienkārši, dodieties uz rindu:

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

Un mainiet to, lai tas atbilstu jūsu iestatījumiem. Piemēram, mūsu mājās maršrutētāja IP adrese ir 10.1.1.1, printeris ir 10.1.1.50, un visi datori ir zemāki par… 50. Tāpēc es iestatīšu savu vairoga IP uz 10.1.1.77, mainot līniju uz:

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

Tomēr, ja jums ir tikai viens vairogs, vienkārši atstājiet to. Var būt ļoti, ļoti, statistiski reta iespēja, ka MAC adrese būs tāda pati kā jūsu esošajai aparatūrai, tāpēc būtu vēl viens laiks to mainīt.

3. darbība:

Attēls
Attēls

Tomēr, ja jums ir tikai viens vairogs, vienkārši atstājiet to. Var būt ļoti, ļoti, statistiski reta iespēja, ka MAC adrese būs tāda pati kā jūsu esošajai aparatūrai, tāpēc būtu vēl viens laiks to mainīt.

Kad esat veicis izmaiņas, saglabājiet un augšupielādējiet skici. Tagad atveriet tīmekļa pārlūkprogrammu un dodieties uz skicē ievadīto IP adresi, un jums vajadzētu parādīt kaut ko līdzīgu attēlam.

Kas notiek?

Arduino ir ieprogrammēts, lai piedāvātu vienkāršu tīmekļa lapu ar vērtībām, kas izmērītas pēc analogās ieejas. Jūs varat atsvaidzināt pārlūkprogrammu, lai iegūtu atjauninātas vērtības. Šobrīd - lūdzu, ņemiet vērā, ka Ethernet vairogi izmanto digitālās tapas 10 ~ 13, tāpēc jūs tās nevarat izmantot citam. Dažiem Arduino Ethernet vairogiem var būt arī microSD kartes ligzda, kurā tiek izmantota arī cita digitālā tapa - tāpēc pārbaudiet dokumentāciju, lai uzzinātu, kura no tām.

4. solis:

Tomēr tagad, kad mēs redzam, ka Ethernet vairogs darbojas, mēs varam pāriet uz kaut ko noderīgāku. Vienkārši sadalīsim iepriekšējo piemēru un redzēsim, kā mēs varam izplatīt un parādīt interesantākus datus tīklā. Uzziņai visas ar Ethernet saistītās funkcijas apstrādā Ethernet Arduino bibliotēka. Ja izskatīsit iepriekš izmantoto skici, tad interesējošā sadaļa ir šāda:

for (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("analogā ievade"); client.print (analogChannel); client.print ("ir"); client.print (sensorReading); client.println (""); } client.println ("");

Cerams, ka šai skices sadaļai vajadzētu būt pazīstamai - atcerieties, kā mēs esam izmantojuši serial.print (); agrāk, nosūtot datus uz seriālā monitora kasti? Tagad mēs varam darīt to pašu, bet sūtīt datus no mūsu Ethernet vairoga atpakaļ uz tīmekļa pārlūkprogrammu - citiem vārdiem sakot, ļoti vienkāršu tīmekļa lapas veidu. Tomēr ir kaut kas, ko jūs varat vai nevēlaties mācīties, lai formatētu izvade lasāmā formātā - HTML kods. Es neesmu vietņu izstrādātājs (!), Tāpēc pārāk neiedziļināšos HTML.

Tomēr, ja vēlaties ar Arduino apkalpot labi formatētas tīmekļa lapas un tā tālāk, šeit būtu labs sākums. Vienkāršības labad visnoderīgākās būs šādas divas funkcijas:

client.print ("ir");

Client.print (); ļauj mums nosūtīt tekstu vai datus atpakaļ uz tīmekļa lapu. Tas darbojas tāpat kā serial.print (), tāpēc tur nav nekā jauna. Datu tipu var norādīt tāpat kā ar serial.print (). Protams, to var izmantot arī datu nosūtīšanai atpakaļ. Vēl viena noderīga līnija ir šāda:

client.println ("");

kas nosūta HTML kodu atpakaļ tīmekļa pārlūkprogrammai, liekot tai sākt jaunu rindu. Daļa, kas faktiski izraisa vagona atgriešanos/jaunu līniju, ir

kas ir HTML kods (vai “tags”) jaunai rindai.

Tātad, ja veidojat sarežģītākus tīmekļa lapu attēlojumus, varat vienkārši ievietot citus HTML tagus klientā.print (); paziņojums, apgalvojums. Ja vēlaties uzzināt vairāk par HTML komandām, šeit ir laba apmācības vietne.

Visbeidzot - ņemiet vērā, ka skice nosūtīs datus tikai tad, kad tie tiks pieprasīti, tas ir, kad tā būs saņēmusi pieprasījumu no tīmekļa pārlūkprogrammas.

5. darbība: piekļuve Arduino internetā

Piekļuve jūsu Arduino, izmantojot internetu
Piekļuve jūsu Arduino, izmantojot internetu

Tik tālu, labi. Bet ko darīt, ja vēlaties piekļūt savam Arduino no ārpus vietējā tīkla?

Jums būs nepieciešama statiska IP adrese - tas ir, IP adresei, ko jūsu interneta pakalpojumu sniedzējs piešķir jūsu savienojumam, ir jāpaliek nemainīgai. Ja jums nav statiska IP, nemainieties, kamēr modems/maršrutētājs neatgriezeniski atrodas jūsu IP. Tomēr tas nav optimāls risinājums.

Ja jūsu ISP vispār nevar jums piedāvāt statisku IP, jūs joprojām varat virzīties uz priekšu ar projektu, izmantojot organizāciju, kas piedāvā dinamisko DNS. Šīs organizācijas numura vietā piedāvā jums savu statisko IP resursdatora nosaukumu (piemēram, mojo.monkeynuts.com), sekojiet līdzi mainīgajai IP adresei un saistiet to ar jauno saimniekdatora nosaukumu. Cik es varu apkopot, jūsu modemam ir jāatbalsta (jābūt iebūvētam klientam…) šie DDNS pakalpojumi.

Piemēram, divi uzņēmumi ir No-IP unDynDNS.com. Lūdzu, ņemiet vērā, ka es neesmu izmantojis šos divus, tie ir tikai piedāvāti kā piemēri. Tagad, lai atrastu savu IP adresi … parasti to var atrast, piesakoties maršrutētāja administrācijas lapā - parasti tas ir 192.168.0.1, bet tas var būt atšķirīgs. Jautājiet savam piegādātājam vai interneta pakalpojumu sniedzējam, vai viņi piegādāja aparatūru. Šajā piemērā, ja tīmekļa pārlūkprogrammā ievadu 10.1.1.1 un pēc modema administrēšanas paroles ievadīšanas tiek parādīts šāds ekrāns kā attēlā.

6. darbība

Attēls
Attēls

Jūs meklējat savu WAN IP adresi, kā redzat attēlā iepriekš. Lai palaidņi netiktu prom, esmu aptumšojis daļu no savas adreses.

Nākamā lieta, kas jādara, ir ieslēgt portu pāradresāciju. Tas norāda maršrutētājam, kur novirzīt ienākošos pieprasījumus no ārpasaules. Kad modems saņem šādu pieprasījumu, mēs vēlamies nosūtīt šo pieprasījumu uz mūsu Ethernet vairoga porta numuru. Izmantojot:

Ethernet servera serveris (125);

funkcija mūsu skicē ir iestatījusi porta numuru uz 125. Katra modema konfigurācijas ekrāns izskatīsies citādi, bet kā piemērs šeit ir viens attēlā.

7. darbība:

Attēls
Attēls

Tātad no iepriekšējā attēlā redzamās rindas numura viens var redzēt, ka ienākošo portu numuri ir iestatīti uz 125, un Ethernet vairoga IP adrese ir iestatīta uz 10.1.1.77 - tāda pati kā skicē.

Pēc iestatījumu saglabāšanas mēs esam gatavi. Mana Ethernet vairoga ārējā adrese būs WAN: 125, tāpēc, lai piekļūtu Arduino, es ierakstīšu savu WAN adresi ar: 125 beigās attālās tīmekļa ierīces pārlūkprogrammā, kas sazināsies ar vientuļo Ethernet aparatūru mājās.

Turklāt, iespējams, būs jāmaina modema ugunsmūra iestatījumi, lai ļautu portam 125 būt “atvērtam” ienākošajiem pieprasījumiem. Lūdzu, pārbaudiet modema dokumentāciju, lai iegūtu papildinformāciju par to, kā to izdarīt. Tagad no būtībā jebkuras ar internetu savienotas ierīces brīvajā pasaulē es varu ievadīt savu WAN un porta numuru URL laukā un saņemt rezultātus. Piemēram, no tālruņa, kad tas ir savienots ar internetu, izmantojot LTE mobilos datus.

Tātad šajā posmā jūs tagad varat parādīt datus vienkāršā jūsu Arduino izveidotā tīmekļa lapā un piekļūt tiem no jebkuras vietas ar neierobežotu piekļuvi internetam. Ar iepriekšējām zināšanām par Arduino tagad varat izmantot datus no sensoriem vai citām skices daļām un parādīt to izgūšanai.

8. darbība. Sensoru datu parādīšana tīmekļa lapā

Sensoru datu parādīšana tīmekļa lapā
Sensoru datu parādīšana tīmekļa lapā

Kā piemēru sensoru datu parādīšanai tīmekļa vietnē, izmantosim lētu un populāru temperatūras un mitruma sensoru - DHT22. Jums būs jāinstalē DHT22 Arduino bibliotēka, kas atrodama šajā lapā. Ja DHT22 izmantojat pirmo reizi, eksperimentējiet ar bibliotēkā iekļauto skices paraugu, lai jūs saprastu, kā tā darbojas.

Savienojiet DHT22 ar datu tapu ar Arduino D2, Vin ar 5V tapu un GND ar… GND. Tagad mūsu skice - lai parādītu temperatūru un mitrumu tīmekļa lapā. Ja neesat iepazinies ar HTML, jūs varat izmantot tādus tiešsaistes pakalpojumus kā šis, lai ģenerētu kodu, kuru pēc tam varat mainīt, lai izmantotu skicē. Tālāk redzamajā piemērā DHT22 temperatūras un mitruma dati tiek pasniegti vienkāršā tīmekļa lapā:

#iekļaut "SPI.h"#iekļaut "Ethernet.h"

// DHT22 sensoram

#iekļaut "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22

// Tālāk ievadiet sava kontroliera MAC adresi un IP adresi.

// IP adrese būs atkarīga no jūsu lokālā tīkla: baits mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAdd ip (10, 1, 1, 77);

// Inicializējiet Ethernet servera bibliotēku

// ar IP adresi un portu, kuru vēlaties izmantot // (ports 80 ir noklusējums HTTP): EthernetServer server (125); DHT dht (DHTPIN, DHTTYPE);

anulēts iestatījums ()

{dht.begin (); // Atveriet seriālos sakarus un gaidiet, līdz atveras ports: Serial.begin (9600); while (! Serial) {; // pagaidiet, līdz tiek izveidots seriālais ports. Nepieciešams tikai Leonardo}} // palaidiet Ethernet savienojumu un serveri: Ethernet.begin (mac, ip); server.begin (); Serial.print ("serveris atrodas"); Serial.println (Ethernet.localIP ()); }

tukša cilpa ()

{// klausīties ienākošos klientus EthernetClient client = server.available (); ja (klients) {Serial.println ("jauns klients"); // http pieprasījums beidzas ar tukšu rindu Būla pašreizējāLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // ja esat nonācis līdz rindas beigām (saņēmāt jaunu rindiņu // rakstzīmi) un rinda ir tukša, http pieprasījums ir beidzies, // lai jūs varētu nosūtīt atbildi, ja (c == 'n' && currentLineIsBlank) {// nosūtiet standarta http atbildes galveni client.println ("HTTP/1.1 200 OK"); client.println ("Satura tips: teksts/html"); client.println ("Savienojums: aizvērt"); // savienojums tiks slēgts pēc atbildes klienta pabeigšanas.println ("Atsvaidzināt: 30"); // automātiski atsvaidziniet lapu ik pēc 30 sekundēm client.println (); client.println ("");

client.println ("");

// iegūt datus no DHT22 sensora

pludiņš h = dht.readHumidity (); pludiņš t = dht.readTemperature (); Sērijas.println (t); Sērijas.println (h);

// no šejienes mēs varam ievadīt savu HTML kodu, lai izveidotu tīmekļa lapu

client.print ( Biroja laika ziņas

Biroja temperatūra - );

klients.druka (t);

client.print ( grādi pēc Celsija

);

client.print ("

Mitrums - );

klients.druka (h);

client.print ( procenti

);

client.print ("

Lapa tiek atsvaidzināta ik pēc 30 sekundēm <

. );

pārtraukums;

} ja (c == 'n') {// jūs sākat jaunu rindu currentLineIsBlank = true; } cits, ja (c! = 'r') {// jūs esat ieguvis rakstzīmi pašreizējā rindā currentLineIsBlank = false; }}} // dodiet tīmekļa pārlūkprogrammai laiku datu aizkaves saņemšanai (1); // slēgt savienojumu: client.stop (); Serial.println ("klients atvienots"); }}

Tā ir IDE tīmekļa servera parauga skices modifikācija, kuru mēs izmantojām iepriekš - ar dažām izmaiņām. Pirmkārt, tīmekļa lapa tiks automātiski atsvaidzināta ik pēc 30 sekundēm - šis parametrs ir iestatīts rindā:

client.println ("Atsvaidzināt: 30"); // automātiski atsvaidziniet lapu ik pēc 30 sekundēm

… un mūsu tīmekļa lapas pielāgotais HTML sākas zem rindas:

// no šejienes mēs varam ievadīt savu HTML kodu, lai izveidotu tīmekļa lapu

Pēc tam varat vienkārši ievietot vajadzīgo HTML iekš klienta.print () funkcijām, lai izveidotu nepieciešamo izkārtojumu. Visbeidzot - šeit ir piemērs skices paraugam darbam.

Tātad jums tas ir vēl viens noderīgs veids, kā panākt, lai jūsu Arduino mijiedarbotos ar ārpasauli. Šo ziņu jums sniedz pmdway.com - viss ražotājiem un elektronikas entuziastiem, bezmaksas piegāde visā pasaulē.

Ieteicams: