Съдържание:

Първи стъпки с Arduino и Ethernet: 8 стъпки
Първи стъпки с Arduino и Ethernet: 8 стъпки

Видео: Първи стъпки с Arduino и Ethernet: 8 стъпки

Видео: Първи стъпки с Arduino и Ethernet: 8 стъпки
Видео: #1 How to Program Outseal Arduino PLC - Getting Started 2024, Юли
Anonim
Първи стъпки с Arduino и Ethernet
Първи стъпки с Arduino и Ethernet

Вашият Arduino може лесно да комуникира с външния свят чрез кабелна Ethernet връзка. Въпреки това, преди да започнем, ще се приеме, че имате основни познания за компютърните мрежи, като например познания за това как да свържете компютри към хъб/рутер с RJ45 кабели, какво представляват IP и MAC адрес и т.н. Освен това, тук е добър бърз преглед на Ethernet.

Ще ви е необходим Arduino Uno или съвместима платка с Ethernet щит, който използва IC W5100 Ethernet контролер (почти всички от тях) според изображението.

Освен това ще трябва да захранвате платката чрез външен DC контакт - W5100 IC използва повече ток, отколкото USB захранването може да захрани. 9V 1.5A щепсел пакет/брадавица за стена ще бъде достатъчен.

Етап 1:

Образ
Образ

И накрая - щитовете се нагряват - затова внимавайте да не докосвате W5100 след продължителна употреба. В случай, че не сте сигурни - това е W5100 IC.

Стъпка 2:

След като свържете вашия Arduino с активиран Ethernet и свържете външното захранване-добра идея е да проверите дали всичко работи. Отворете IDE на Arduino и изберете Файл> Примери> Ethernet> Уеб сървър. Това зарежда проста скица, която ще показва данни, събрани от аналоговите входове в уеб браузър. Все пак не го качвайте, той се нуждае от лека промяна.

Трябва да посочите IP адреса на Ethernet щита - което се прави вътре в скицата. Това е просто, отидете на реда:

IP Адрес ip (10, 1, 1, 77);

И го променете така, че да съответства на вашата собствена настройка. Например в нашия дом IP адресът на рутера е 10.1.1.1, принтерът е 10.1.1.50 и всички компютри са под … 50. Така че ще настроя моя IP щит на 10.1.1.77, като променя реда на:

байт mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

Ако обаче имате само един щит, оставете го. Възможно е да има много, много, статистически рядък шанс MAC адрес да е същият като вашия съществуващ хардуер, така че ще е друг момент да го промените.

Стъпка 3:

Образ
Образ

Ако обаче имате само един щит, оставете го. Възможно е да има много, много, статистически рядък шанс MAC адрес да е същият като вашия съществуващ хардуер, така че ще е друг момент да го промените.

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

Какво се случва?

Arduino е програмиран да предлага проста уеб страница със стойностите, измерени чрез аналоговите входове. Можете да опресните браузъра, за да получите актуализирани стойности. В този момент - имайте предвид, че Ethernet щитовете използват цифрови пинове 10 ~ 13, така че не можете да ги използвате за нищо друго. Някои Arduino Ethernet щитове могат също да имат гнездо за microSD карта, което също използва друг цифров щифт - затова проверете с документацията, за да разберете кой.

Стъпка 4:

Въпреки това, сега, когато можем да видим, че Ethernet щитът работи, можем да преминем към нещо по -полезно. Нека разгледаме предишния пример по прост начин и ще видим как можем да разпространяваме и показваме по -интересни данни в мрежата. За справка, всички свързани с Ethernet функции се обработват от библиотеката Ethernet Arduino. Ако разгледате предишната скица, която току -що използвахме, секцията, която ще представлява интерес, е:

for (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("аналогов вход"); client.print (analogChannel); client.print ("е"); client.print (sensorReading); client.println (""); } client.println ("");

Надяваме се, че този раздел от скицата трябва да е познат - запомнете как сме използвали serial.print (); в миналото при изпращане на данни към кутията за сериен монитор? Е, сега можем да направим същото, но изпращаме данни от нашия Ethernet щит обратно към уеб браузър - с други думи, много основен тип уеб страница. Има обаче нещо, което може или не искате да научите, за да форматирате изходът в четим формат - HTML код. Аз не съм разработчик на уебсайтове (!), Така че няма да се задълбочавам в HTML твърде много.

Ако обаче искате да обслужвате добре форматирани уеб страници с вашия Arduino и така нататък, тук би било добро начало. В интерес на простотата следните две функции ще бъдат най -полезни:

client.print ("е");

Client.print (); ни позволява да изпращаме текст или данни обратно на уеб страницата. Работи по същия начин като serial.print (), така че няма нищо ново там. Можете също да зададете типа данни по същия начин, както при serial.print (). Естествено можете да го използвате и за изпращане на данни обратно. Другата полезна линия е:

client.println ("");

който изпраща HTML кода обратно към уеб браузъра, като му казва да започне нов ред. Частта, която всъщност причинява връщане на каретата/нов ред, е

който е HTML код (или „маркер“) за нов ред.

Така че, ако създавате по -сложни дисплеи на уеб страници, можете просто да вмъкнете други HTML тагове в client.print (); изявление. Ако искате да научите повече за HTML командите, ето един добър сайт с уроци.

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

Стъпка 5: Достъп до вашия Arduino през Интернет

Достъп до вашия Arduino през Интернет
Достъп до вашия Arduino през Интернет

Дотук добре. Но какво, ако искате да получите достъп до вашия Arduino извън локалната мрежа?

Ще ви е необходим статичен IP адрес - тоест IP адресът, който вашият доставчик на интернет услуги присвоява на вашата връзка, трябва да остане същият. Ако нямате статичен IP, стига да оставите модема/рутера постоянно включен на вашия IP, не трябва да се променя. Това обаче не е оптимално решение.

Ако вашият интернет доставчик изобщо не може да ви предложи статичен IP адрес, можете да продължите напред с проекта, като използвате организация, която предлага динамичен DNS. Тези организации ви предлагат ваше собствено статично име на IP хост (напр. Mojo.monkeynuts.com) вместо номер, следете променящия се IP адрес и го свързвайте с новото име на хост. От това, което мога да събера, вашият модем трябва да поддържа (има вграден клиент за …) тези DDNS услуги.

Като пример две компании са No-IP иDynDNS.com. Моля, обърнете внимание, че не съм използвал тези две, те се предлагат само като примери. Сега, за да намерите вашия IP адрес … обикновено това може да бъде намерено, като влезете в страницата за администриране на вашия рутер - той обикновено е 192.168.0.1, но може да бъде различен. Проверете при вашия доставчик или ISP дали са предоставили хардуера. За този пример, ако въведа 10.1.1.1 в уеб браузър и след като въведа паролата си за администриране на модем, следният екран се представя според изображението.

Стъпка 6:

Образ
Образ

Това, което търсите, е вашият WAN IP адрес, както можете да видите на изображението по -горе. За да предпазя шегаджиите, съм затъмнил част от адреса си.

Следващото нещо, което трябва да направите, е да включите пренасочването на портове. Това казва на маршрутизатора къде да пренасочва входящите заявки от външния свят. Когато модемът получи такава заявка, ние искаме да изпратим тази заявка до номера на порта на нашия Ethernet щит. Използвайки:

EthernetServer сървър (125);

функцията в нашата скица е задала номера на порта на 125. Конфигурационният екран на всеки модем ще изглежда различно, но като пример тук е един в изображението.

Стъпка 7:

Образ
Образ

Така че можете да видите от ред номер едно на изображението по -горе, номерата на входящите портове са зададени на 125, а IP адресът на Ethernet щита е зададен на 10.1.1.77 - същото като в скицата.

След като запазим настройките, всички сме готови. Външният адрес на моя Ethernet щит ще бъде WAN: 125, така че за достъп до Arduino ще напиша моя WAN адрес с: 125 в края в браузъра на отдалеченото уеб устройство, което ще се свърже с самотния Ethernet хардуер вкъщи.

Освен това може да се наложи да промените настройките на защитната стена на вашия модем, за да позволите на порт 125 да бъде „отворен“за входящи заявки. Моля, проверете документацията на вашия модем за повече информация как да направите това. Сега от почти всяко свързано с интернет устройство в свободния свят мога да въведа WAN и номера на порта в полето URL и да получа резултатите. Например от телефон, когато е свързан към интернет чрез LTE мобилни данни.

Така че на този етап вече можете да показвате данни на обикновена уеб страница, създадена от вашия Arduino, и да имате достъп до нея отвсякъде с неограничен достъп до Интернет. С предишните си знания за Arduino вече можете да използвате данни от сензори или други части на скица и да ги показвате за извличане.

Стъпка 8: Показване на сензорни данни на уеб страница

Показване на сензорни данни на уеб страница
Показване на сензорни данни на уеб страница

Като пример за показване на сензорни данни на уеб страница, нека използваме евтин и популярен сензор за температура и влажност - DHT22. Ще трябва да инсталирате библиотеката DHT22 Arduino, която можете да намерите на тази страница. Ако за първи път използвате DHT22, експериментирайте с примерната скица, включена в библиотеката, за да разберете как работи.

Свържете DHT22 с извода за данни към Arduino D2, Vin към 5V пина и GND към… GND. Сега за нашата скица - за показване на температурата и влажността на уеб страница. Ако не сте с HTML, можете да използвате онлайн услуги като тази за генериране на кода, който след това можете да промените, за да използвате в скицата. В примера по -долу данните за температурата и влажността от DHT22 се обслужват в обикновена уеб страница:

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

// за сензор DHT22

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

// Въведете MAC адрес и IP адрес за вашия контролер по -долу.

// IP адресът ще зависи от вашата локална мрежа: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IP Адрес ip (10, 1, 1, 77);

// Инициализиране на библиотеката на Ethernet сървъра

// с IP адреса и порта, които искате да използвате // (порт 80 е по подразбиране за HTTP): EthernetServer сървър (125); DHT dht (DHTPIN, DHTTYPE);

void setup ()

{dht.begin (); // Отваряме серийни комуникации и изчакваме порта да се отвори: Serial.begin (9600); while (! Сериен) {; // изчакайте свързването на серийния порт. Необходимо само за Леонардо} // стартирайте Ethernet връзката и сървъра: Ethernet.begin (mac, ip); server.begin (); Serial.print ("сървърът е в"); Serial.println (Ethernet.localIP ()); }

void loop ()

{// слушам за входящи клиенти EthernetClient client = server.available (); if (клиент) {Serial.println ("нов клиент"); // http заявка завършва с празен ред boolean currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // ако сте стигнали до края на реда (получили нов ред // знак) и редът е празен, http заявката е приключила, // така че можете да изпратите отговор, ако (c == 'n' && currentLineIsBlank) {// изпращане на стандартна заглавка на HTTP отговор client.println ("HTTP/1.1 200 OK"); client.println ("Тип съдържание: текст/html"); client.println ("Връзка: затваряне"); // връзката ще бъде затворена след завършване на отговора client.println ("Опресняване: 30"); // автоматично опресняване на страницата на всеки 30 секунди client.println (); client.println ("");

client.println ("");

// получаваме данни от сензора DHT22

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

// от тук можем да въведем наш собствен HTML код, за да създадем уеб страницата

client.print ( Office Weather

Офис температура - );

client.print (t);

client.print ( градуси по Целзий

);

client.print ("

Влажност - );

client.print (h);

client.print ( процент

);

client.print ("

Страницата се опреснява на всеки 30 секунди <

. );

прекъсване;

} if (c == 'n') {// започвате нов ред currentLineIsBlank = true; } else if (c! = 'r') {// сте получили знак в текущия ред currentLineIsBlank = false; }}} // дайте на уеб браузъра време да получи забавяне на данните (1); // затваряме връзката: client.stop (); Serial.println ("клиентът не е свързан"); }}

Това е модификация на примерната скица на уеб сървъра на IDE, която използвахме преди - с няколко модификации. Първо, уеб страницата автоматично ще се опреснява на всеки 30 секунди - този параметър е зададен в реда:

client.println ("Опресняване: 30"); // автоматично опресняване на страницата на всеки 30 секунди

… и персонализираният HTML за нашата уеб страница започва под реда:

// от тук можем да въведем наш собствен HTML код, за да създадем уеб страницата

След това можете просто да вмъкнете необходимия HTML във функции client.print (), за да създадете необходимото оформление. И накрая - ето примерна снимка на екрана на примерната скица по време на работа.

Ето го, още един полезен начин за взаимодействие на вашия Arduino с външния свят. Тази публикация ви е предоставена от pmdway.com - всичко за производители и ентусиасти на електрониката, с безплатна доставка по целия свят.

Препоръчано: