Как да използвате Ардуино като уеб сървър

Yochai Benkler: Open-source economics (Април 2019).

Anonim

Как да използвате Ардуино като уеб сървър


С помощта на Ethernet щит можете да използвате ардуино като уеб сървър.

С оборудването на Arduino с Ethernet щит можете да го превърнете в обикновен уеб сървър и като отворите този сървър с браузър, работещ на всеки компютър, свързан към същата мрежа като Arduino, можете да:

  • Контролирайте хардуера от уеб страницата (използвайки бутоните на Javascript).
  • Прочетете състоянието на комутатора (използвайки прост HTML).
  • Прочетете стойността на сензор (използвайки прост HTML).

Изисква се хардуер

За да използвате Arduino като уеб сървър, се нуждаете от следното:

  • Arduino Mega2560 (или Arduino UNO)
  • Етернет щит
  • Кабелна LAN връзка със скорост 10 / 100Mb
Етернет щитът свързва Arduino с интернет. Настройката е много проста: просто включете щифтовете на щифта на щита във вашия Arduino, след това свържете Ethernet кабел към щита. Изображението по-долу показва тази настройка:

експеримент

За да демонстрираме как да използваме Arduino като уеб сървър, ще прочетем състоянието на комутатора.

Необходим хардуер

  • 1 x Ethernet кабел
  • 1 x Wi-Fi рутер
  • 1 х Arduino Mega2560
  • 1 x Ethernet щит
  • 1 x Breadboard
  • 3 x свързващи проводници
  • 1 х 10k Резистор
  • 2 x 9V адаптер
  • 1 x бутон

Електрическа схема

Свържете компонентите, както е показано по-горе. Pin 8 на Arduino е свързан към бутона и е конфигуриран като INPUT. Когато бутонът бъде натиснат, Arduino ще прочете LOW стойност на този щифт. След това Arduino ще зададе статуса на OUTPUT на ON. Когато се освободи, изходът ще бъде изключен. Състоянието на превключвателя ще бъде изпратено на уеб сървъра.

Ethernet конфигурация

За да контролирате Ethernet щита, използвате библиотеката Ethernet.h.

На екрана трябва да се зададе MAC и IP адрес, като се използва функцията Ethernet.begin () . За дадено устройство MAC адреса е световно уникален идентификатор. Текущите Ethernet щитове се доставят със стикер, показващ MAC адреса. За по-стари щитове, случайна трябва да работи, но не трябва да се използва една и съща за много дъски. Валидността на IP адреси зависи от конфигурацията на мрежата. Ако се използва DHCP, той може динамично да присвои IP към екрана.

IP АДРЕС

IP адресът (адрес на интернет протокол) е цифров етикет, приписан на всяко устройство, участващо в компютърна мрежа, която използва Интернет протокола за комуникация. Спецификацията на IP адреса се извършва, като се напише редът:

 байт ip () = {192, 168, 0, 112}; 

и да го промените така, че да съответства на една собствена настройка. Например, за да зададете IP на Ethernet екрана на 192.168.0.50, напишете реда:

 байт ip () = {192, 168, 0, 50}; 

МАК АДРЕС

MAC адреса (адрес за контрол на достъпа до медиите) е уникален идентификатор, приписан на всяко устройство, участващо във физическа мрежа. Всяко парче мрежово оборудване има уникален сериен номер, за да се идентифицира по мрежата и това е нормално твърдо програмирано във фърмуера на оборудването. Въпреки това, с Arduino, можем да определим самия MAC адрес.

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

Можете да зададете подмрежа и шлюз с помощта на следните команди:

 байт подмрежа () = {255, 255, 255, 0}; // присвоява маска на подмрежа 
 байт () = {192, 168, 0, 1}; // задаване на шлюз 

Така че, за да настроите Ethernet Shield, блокът от код е даден по-долу:

 / ******************** ETHERNET SETTINGS ********************************************** 
byte mac () = {0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9}; // присвояване на MAC адрес
байт ip () = {192, 168, 0, 112}; // ip в lan
байт подмрежа () = {255, 255, 255, 0}; // присвоява маска на подмрежа
байт () = {192, 168, 0, 1}; // присвояване на шлюза по подразбиране

По-долу е дадена снимка на системата, показваща как Arduino се свързва с Wi-Fi рутера. Ethernet кабелът свързва щита с маршрутизатора и маршрутизатора, след което се свързва безжично с лаптопа.

програма

По-долу има програма, която зарежда обикновена уеб страница.

код

 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("");

Изтегляне на кода

Тази програма ще покаже уеб страница в уеб браузър, когато е достъпен IP адреса, определен за Arduino. Линията:

 client.println(""); 

Инструктира браузъра да опреснява страницата. Когато страницата отново е достъпна, Arduino отново ще прочете състоянието на превключвателя и ще го покаже.

Не забравяйте, че винаги можете да видите източника на показваната уеб страница. Натискайки бутона, можете да наблюдавате променящото се състояние на превключвателя, както е демонстрирано във видео демонстрацията.

Можете също така да го настроите да работи без маршрутизатора. За да направите това, трябва да:

  1. Задайте ръчен IP адрес на Ethernet на Arduino, кажете 192.168.0.2 и маската на подмрежата 255.255.255.0 default Gateway empty.
  2. Използвайте кръстосан Ethernet кабел, за да свържете двата (лаптопа и Arduino).
  3. След това бихме могли да получим вашия сайт Arduino на //192.168.0.2 от лаптопа.

По-долу е кодът, който ще заредите в Arduino, за да го свържете директно към компютъра без маршрутизатора:

код

 #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("

Уроци за уеб сървър

"); client.println ("

Следене на състоянието на преминаването

"); client.print ("

Превключвателят е: "); ако (digitalRead (8)) {client.println ("

ON

"); else {client.println ("

OFF

");} client.println (" "); client.println ("); забавяне (1); // даване на време за получаване на данните / * Следният ред е важен, защото ще спре клиента и ще търси нова връзка в следващата итерация, т.е. EthernetClient клиент = server.available (); * / client.stop ();}

Изтегляне на кода

Видео

Дайте на този проект опита за себе си! Получете BOM.