projekti

Kā izmantot Arduino kā tīmekļa serveri

Week 8, continued (Novembris 2018).

Anonim

Kā izmantot Arduino kā tīmekļa serveri


Izmantojot Ethernet vairogu, varat izmantot Arduino kā tīmekļa serveri.

Arduino aprīkojot ar Ethernet vairogu, jūs varat to pārvērst vienkāršā tīmekļa serverī un, piekļūstot šim serverim, izmantojot pārlūkprogrammu, kas darbojas jebkurā datorā, kas savienots ar to pašu tīklu kā Arduino, jūs varat:

  • Kontroles aparatūra no tīmekļa lapas (izmantojot Javascript pogas).
  • Lasīt stāvokli slēdzim (izmantojot vienkāršu HTML).
  • Izlasiet sensora vērtību (izmantojot vienkāršu HTML).

Nepieciešama aparatūra

Lai izmantotu Arduino kā tīmekļa serveri, jums ir nepieciešams:

  • Arduino Mega2560 (vai Arduino UNO)
  • Ethernet vairogs
  • Vadu LAN savienojums ar ātrumu 10 / 100Mb
Ethernet vairogs savieno Arduino ar internetu. Iestatīšana ir ļoti vienkārša: vienkārši pieslēdziet vairoga galvenes tapas savam Arduino, pēc tam pievienojiet Ethernet kabeli pie vairoga. Attēls zemāk parāda šo iestatījumu:

Eksperiments

Lai parādītu, kā izmantot Arduino kā tīmekļa serveri, mēs izlasīsim slēdža stāvokli.

Nepieciešama aparatūra

  • 1 x Ethernet kabelis
  • 1 x Wi-Fi maršrutētājs
  • 1 x Arduino Mega2560
  • 1 x Ethernet shield
  • 1 x maketēšana
  • 3 x jumpera vadi
  • 1 x 10k rezistors
  • 2 x 9V adapteris
  • 1 x taustiņš

Elektroinstalācijas shēma

Pievienojiet komponentus, kā parādīts iepriekš. Arduino spraudnis 8 ir pieslēgts spiedpogai un ir konfigurēts kā INPUT. Kad poga ir nospiesta, Arduino nolasīs mazu vērtību uz šīs tapas. Pēc tam Arduino iestatīs OUTPUT statusu ON. Kad tas tiek izlaists, izeja tiks iestatīta uz OFF. Slēdža statuss tiks nosūtīts uz Web serveri.

Ethernet konfigurācija

Lai kontrolētu Ethernet vairogu, izmantojat bibliotēku Ethernet.h.

Aizsardzībai ir jāpiešķir MAC un IP adrese, izmantojot funkciju Ethernet.begin () . Konkrētās ierīces MAC adrese ir globāli unikāls identifikators. Pašreizējie Ethernet ekrāni satur uzlīmi, kas norāda MAC adresi. Vecākiem vairoga gadījumiem vajadzētu būt nejaušam, bet nevajadzētu to izmantot vienam daudzajam dēlim. IP adrešu derīgums ir atkarīgs no tīkla konfigurācijas. Ja tiek izmantots DHCP, tā var drołi piešķirt ekrānam IP.

IP ADRESE

IP adrese (interneta protokola adrese) ir ciparu etiķete, kas piešķirta katrai ierīcei, kas piedalās datortīklā, kura saziņai izmanto interneta protokolu. IP adreses norādīšana tiek veikta, ierakstot rindu:

 baits ip () = {192, 168, 0, 112}; 

un mainiet to atbilstoši savai iestatīšanai. Piemēram, lai piešķirtu Ethernet ekranēšanas IP vērtību līdz 192.168.0.50, ierakstiet rindu:

 baits ip () = {192, 168, 0, 50}; 

MAC ADRESE

MAC adrese (multivides piekļuves kontroles adrese) ir unikāls identifikators, kas piešķirts katrai ierīcei, kas piedalās fiziskajā tīklā. Katram tīkla iekārtu veidam ir unikāls sērijas numurs, lai identificētu sevi tīklā, un tas ir normāli ieprogrammēts ierīces aparatūrā. Tomēr ar Arduino mēs varam definēt MAC adresi ourself.

 baits mac () = {0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9}; 

Jūs varat iestatīt apakštīklu un vārteju, izmantojot šādas komandas:

 baitu apakštīklu () = {255, 255, 255, 0}; // apakštīkla maska 
 baitu vārteja () = {192, 168, 0, 1}; // piešķirt vārteju 

Tātad, lai uzstādītu Ethernet Shield, kodu bloks ir dota zemāk:

 / ******************** ETHERNET IESTATĪJUMI ******************** / 
baits mac () = {0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9}; // mac adreses piešķiršana
baits ip () = {192, 168, 0, 112}; // ip lan
baitu apakštīklu () = {255, 255, 255, 0}; // apakštīkla maska
baitu vārteja () = {192, 168, 0, 1}; // piešķirt noklusējuma vārteju

Zemāk ir sistēmas fotoattēls, kurā parādīts, kā Arduino pieslēdzas Wi-Fi maršrutētājam. Ethernet kabelis savieno vairogu ar maršrutētāju un maršrutētāju, pēc tam bezvadu savienojumu ar klēpjdatoru.

Programma

Zemāk ir programma, kas ielādē vienkāršu Web lapu.

Kods

 client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

Lejupielādes kods

Šī programma parādīs Web lapu pārlūkprogrammā, kad piekļūst Arduino piešķirtajai IP adresei. Līnija:

 client.println(""); 

Norāda pārlūku, lai atsvaidzinātu lapu. Kad lapa atkal tiek atvērta, Arduino atkal nolasīs slēdzenes statusu un parādīs to.

Atcerieties, ka jūs vienmēr varat apskatīt redzamās tīmekļa lapas avotu. Nospiežot pogu, jūs varat vērot slēdža mainīgo stāvokli, kā parādīts video demonstrācijā.

Varat arī iestatīt, ka tas darbojas bez maršrutētāja. Lai to izdarītu, jums ir nepieciešams:

  1. Piešķiriet manuālo IP adresi Arduino Ethernet sakot 192.168.0.2 un apakštīkla maska ​​255.255.255.0 noklusējuma Gateway tukšs.
  2. Izmantojiet pārrobežu Ethernet kabeli, lai saistītu abus (klēpjdatoru un Arduino).
  3. Tad mēs varētu noņemt klēpjdatoru ar savu Arduino vietni, izmantojot //192.168.0.2 .

Zemāk ir kods, kuru jūs ielādēsit Arduino, lai pievienotu to tieši datoram bez maršrutētāja:

Kods

 #include#include/******************** ETHERNET SETTINGS ********************/ byte mac() = { 0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9 }; //physical mac address byte ip() = { 192, 168, 0, 112 }; // ip in lan byte subnet() = { 255, 255, 255, 0 }; //subnet mask byte gateway() = { 192, 168, 0, 1 }; // default gateway EthernetServer server(80); //server port void setup() { Ethernet.begin(mac, ip, gateway, subnet); // initialize Ethernet device server.begin(); // start to listen for clients pinMode(8, INPUT); // input pin for switch } void loop() { EthernetClient client = server.available(); // look for the client // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connnection: close"); client.println(); /* This portion is the webpage which will be sent to client web browser one can use html, javascript and another web markup language to make particular layout */ client.println(""); //web page is made using html client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); /* The above line is used to refresh the page in every 1 second This will be sent to the browser as the following HTML code:content = 1 sec ie assign time for refresh */ client.println(""); client.println(""); client.println("

Webserver apmācība

"); client.println ("

Valsts novērošanas slēdzis

"); client.print ("

Switch ir: "); ja (digitalRead (8)) (client.println ("

ON

");} else {client.println ("

Izslēgts

");} client.println (" "); client.println (" "); delay (1) / / dodot laiku, lai saņemtu datus / * Šī rinda ir svarīga, jo tā apturēs klientu un meklēs jauns savienojums nākamajā iterācijā, ti, EthernetClient client = server.available (); * / client.stop ();}

Lejupielādes kods

Videoklipi

Dodiet šim projektam pašiem sevi! Iegūstiet BOM.