Arduino Ethernet Shield Учебное пособие. Часть 1
Arduino Ethernet Shield позволяет вам легко подключить Arduino к Интернету. Этот щит позволяет вашему Arduino отправлять и получать данные из любой точки мира с подключением к Интернету. Вы можете использовать это, чтобы делать забавные вещи, такие как управление роботами удаленно с веб-сайта, или звонить в звонок каждый раз, когда вы получаете новое твиттер-сообщение. Этот щит открывает бесконечные возможности, позволяя вам подключить ваш проект к Интернету в кратчайшие сроки.
Настроить его так же просто, как подключить контакты заголовка экрана к Arduino.
Обратите внимание, что используемый здесь Ethernet Shield продавался в RadioShack. Однако, поскольку RadioShack больше нет, щит труднее найти. Этот универсальный сетевой щит, доступный на Amazon, также должен работать. * Он предназначен для использования с платами Arduino Uno Rev. 3 (или более поздней). У него слишком много контактов для подключения к платам Arduino более ранних версий. Ethernet Shield основан на микросхеме W51000, которая имеет внутренний буфер 16K. Он имеет скорость соединения до 10 / 100Mb. Это не самое быстрое соединение, но и не за что.Он опирается на библиотеку Arduino Ethernet, которая поставляется в комплекте со средой разработки.Есть также встроенный слот для микро-SD, который позволяет вам хранить огромное количество данных и обслуживать целые веб-сайты, используя только Arduino. Это требует использования внешней библиотеки SD, которая не поставляется в комплекте с программным обеспечением. Использование SD-карты не рассматривается в данном руководстве. Тем не менее, это описано в шаге 8 беспроводной SD-карты.На плате также есть место для добавления модуля Power over Ethernet (PoE), который позволяет вам питать Arduino через соединение Ethernet.
Подключите Arduino к USB-порту компьютера, а Ethernet-экран - к маршрутизатору (или к прямому интернет-соединению).
Далее откройте среду разработки Arduino. Я настоятельно рекомендую перейти на Arduino 1.0 или более позднюю версию (если вы этого еще не сделали). Эта версия программного обеспечения имеет встроенную поддержку DHCP и не требует ручной настройки IP-адреса. Чтобы выяснить, какой IP-адрес был назначен вашей плате, откройте эскиз DhcpAddressPrinter. Это можно найти по адресу:
Файл -> Примеры -> Ethernet -> DhcpAddressPrinter
После открытия может потребоваться изменить адрес Mac. В более новых версиях экрана Ethernet вы должны видеть этот адрес на наклейке, прикрепленной к плате. Если вам не хватает стикера, просто сработает уникальный мак-адрес. Если вы используете несколько экранов, убедитесь, что каждый из них имеет уникальный MAC-адрес. Как только MAC-адрес будет правильно настроен, загрузите скетч в Arduino и откройте монитор последовательного порта. Следует распечатать используемый IP-адрес. Вы можете использовать Arduino Ethernet Shield в качестве веб-сервера для загрузки HTML-страницы или в качестве сервера чата. Вы также можете анализировать запросы, отправленные клиентом, например веб-браузером. В следующих двух примерах показано, как использовать его для обслуживания страниц HTML и анализа строк URL.
Важно помнить, что вам нужно будет ввести IP-адрес вашего Arduino в обоих примерах ниже, чтобы они работали.
Следующий код изменяет веб-страницу, обслуживаемую нажатием кнопки:
<pre>/*
Web Server Demo
thrown together by Randy Sarafan
A simple web server that changes the page that is served, triggered by a button press.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Connect a button between Pin D2 and 5V
* Connect a 10K resistor between Pin D2 and ground
Based almost entirely upon Web Server by Tom Igoe and David Mellis
Edit history:
created 18 Dec 2009
by David A. Mellis
modified 4 Sep 2010
by Tom Igoe
*/
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };
IPAddress ip(191,11,1,1); //<<< ENTER YOUR IP ADDRESS HERE!!!
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
int buttonPress = 1;
void setup()
{
pinMode(2, INPUT);
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
buttonPress = digitalRead(2);
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
//serves a different version of a website depending on whether or not the button
//connected to pin 2 is pressed.
if (buttonPress == 1) {
client.println("<cke:html><cke:body bgcolor=#FFFFFF>LIGHT!</cke:body></cke:html>");
}
else if (buttonPress == 0){
client.println("<cke:html><cke:body bgcolor=#000000 text=#FFFFFF>DARK!</cke:body></cke:html>");
}
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
}
}
Чтобы этот пример кода работал, просто подключите кнопку между контактом D2 и 5 В, резистор 10 кОм между контактом D2 и массой, а затем загрузите IP-адрес вашего Arduino в веб-браузер. Страница должна загружаться с черным фоном. Нажмите и удерживайте кнопку, а затем обновите страницу браузера. Теперь сайт должен загружаться с белым фоном. Следующий код загорается светодиодом в зависимости от URL, который отправляется на Arduino:
<pre>/*
Web Server Demo
thrown together by Randy Sarafan
Allows you to turn on and off an LED by entering different urls.
To turn it on:
http://your-IP-address/$1
To turn it off:
http://your-IP-address/$2
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Connect an LED to pin D2 and put it in series with a 220 ohm resistor to ground
Based almost entirely upon Web Server by Tom Igoe and David Mellis
Edit history:
created 18 Dec 2009
by David A. Mellis
modified 4 Sep 2010
by Tom Igoe
*/
#include <SPI.h>
#include <Ethernet.h>
boolean incoming = 0;
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };
IPAddress ip(191,11,1,1); //<<< ENTER YOUR IP ADDRESS HERE!!!
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
void setup()
{
pinMode(2, OUTPUT);
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
}
void loop()
{
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
//reads URL string from $ to first blank space
if(incoming && c == ' '){
incoming = 0;
}
if(c == '
Для этого подключите положительный вывод LED к контакту D2, а отрицательный вывод последовательно с резистором 220 Ом к земле.
Чтобы включить светодиод, введите это в свой браузер:
To turn on the LED enter this into your browser:
http://[YOUR IP ADDRESS HERE]/$1
To turn off the LED enter this into your browser:
http://[YOUR IP ADDRESS HERE]/$2
Примечание: очевидно, вы должны заменить [YOUR IP ADDRESS HERE] with your IP address.){ incoming = 1; } //Checks for the URL string $1 or $2 if(incoming == 1){ Serial.println(c); if(c == '1'){ Serial.println("ON"); digitalWrite(2, HIGH); } if(c == '2'){ Serial.println("OFF"); digitalWrite(2, LOW); } }
if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); } }
Для этого подключите положительный вывод LED к контакту D2, а отрицательный вывод последовательно с резистором 220 Ом к земле.
Чтобы включить светодиод, введите это в свой браузер:
http://[YOUR IP ADDRESS HERE]/$1
To turn off the LED enter this into your browser:
http://[YOUR IP ADDRESS HERE]/$2
Note: You should obviously replace [YOUR IP ADDRESS HERE] with your IP address.
Вы также можете использовать Ethernet Shield в качестве клиента. Другими словами, вы можете использовать его для чтения веб-сайтов, таких как веб-браузер. Веб-сайты содержат много текста, как видимого, так и скрытого, что делает программирование на стороне клиента очень сложным. Чтение информации с веб-сайтов обычно включает анализ множества строк. Это сводит с ума, но оно того стоит, если это то, что вы собираетесь делать.
В начало обзора