• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

 

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 в качестве клиента. Другими словами, вы можете использовать его для чтения веб-сайтов, таких как веб-браузер. Веб-сайты содержат много текста, как видимого, так и скрытого, что делает программирование на стороне клиента очень сложным. Чтение информации с веб-сайтов обычно включает анализ множества строк. Это сводит с ума, но оно того стоит, если это то, что вы собираетесь делать.

 

В начало обзора


Купить радиодетали для ремонта
 



Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 379



          

Радио для всех© 2024