Ethernet shield hr91105a (w5100) . урок 16. ардуино

Примеры использования

Web-сервер

Поднимем простой web-сервер, который будет отображать страницу с текущими значениями аналоговых входов.

web-server.ino

/*
Пример простого web-сервера, работающего на Arduino Uno WiFi

Сервер показывает значения на аналоговых входах и обновляет информацию каждые две секунды.
Обратитесь к серверу по адресу http:///arduino/webserver/
 
Обратите внимание: пример работает только с Arduino Uno WiFi Developer Edition.
*/
 
#include
#include
 
void setup() {
Wifi.begin();
Wifi.println(«Web Server is up»); // Выводим сообщение о старте сервера в wifi-консоль
}
void loop() {
 
while(Wifi.available()){
process(Wifi);
}
delay(50);
}
 
void process(WifiData client) {
String command = client.readStringUntil(‘/’);
 
if (command == «webserver») {
WebServer(client);
}
}
void WebServer(WifiData client) {
client.println(«HTTP/1.1 200 OK»);
client.println(«Content-Type: text/html»);
client.println(«Connection: close»);
client.println(«Refresh: 2»); // Заголовок, который задаёт период обновления страницы в секундах
client.println();
client.println(«»); // Формируем страницу
client.println(» UNO WIFI Web-server»);
client.print(«

Пример вывода значений с аналоговых пинов

«);
client.print(«

  • «);
     
    for(int analogChannel = ; analogChannel на аналоговом входе «);
    client.print(analogChannel);
    client.print(«: «);
    client.print(sensorReading);
    client.print(«»);
    }
     
    client.println(«

«);
client.print(DELIMITER); // Не забудьте закрыть соединение!
}

REQUIREMENTS for ARDUINO ETHERNET SHIELD

We have to plug this shield on our Arduino board but below are some mandatory requirements:

  • RJ45 cable for connection to network
  • Arduino board (for sure. Because this shield cannot be used as standalone project)
  • Operating voltage of 5 V should be provided by Arduino board
  • Make connection with Arduino board on SPI port
  • Power over Ethernet module required (this module is designed for power extraction from conventional twisted pair Ethernet cable) which should meet following requirements:
  • Low output noise and ripple
  • Input voltage: 36 V – 57 V
  • Over-load protection
  • Output voltage: 9V
  • The input to output isolation should be of 1500 V
  • Highly efficient DC/DC converter
  • 3af compliant

One important thing that is to be noted here is that both SD card and W5100 share SPI bus as Arduino communicates via SPI port so we can use only one of them. If we want to use both of them then we have to check their corresponding library.

Step 3: Get Started

Plug the Arduino into your computer’s USB port, and the Ethernet shield into your router (or direct internet connection).

Next, open the Arduino development environment. I highly recommend upgrading to Arduino 1.0 or later (if you have not done so already). This version of the software has built in DHCP support, and does not require manually configuring an IP address.

To figure out what IP address has been assigned to your board, open the DhcpAddressPrinter sketch. This can be found at:

File —> Examples —> Ethernet —> DhcpAddressPrinter

Once open, you may need to change the Mac address. On newer versions of the Ethernet shield, you should see this address on a sticker attached to the board. If you are missing a sticker, simply making up a unique mac address should work. If you are using multiple shields, make sure each has a unique mac address.

Once the mac address is properly configured, upload the sketch to your Arduino, and open the serial monitor. It should print out the IP address in use.

Шилды Ethernet Shield для Arduino Uno или Nano

Наиболее удобным способом работы с W5100 является использование готовых шилдов Ethernet Shield для Arduino Uno или Nano. На таких модулях уже выполнены все необходимые обвязки, шилд просто вставляется в соответствующие разъемы платы и вам остается только загрузить скетч. Естественно, что при желании к плате могут быть подключены и другие устройства.

Arduino Ethernet Shield

Подключение платы расширения происходит через соединение RJ-45. Плата обладает встроенным слотом SD/MicroSD , который используется для хранения файлов, используемых для подключения и передачи по локальной сети. Такой слот совместим со всеми платами Arduino/Genuino, т.е. работать с данными на карте можно с помощью стандартной библиотеки SD Library. На плате расширения также можно найти кнопку перезагрузки . питания. Ранние версии платы расширения не дружили с ардуино мега, там требовался ручной сброс после поступления питания.

Если плата оснащена POE модулем (питание подается по витой паре), то шилд будет соответствовать следующим спецификациям:

  • Совместим со стандартом IEEE3af.
  • Имеет низкие пульсации на выходе.
  • Защищает от явлений перегрузки и короткого замыкания.
  • Эффективно преобразует напряжение.
  • Имеет изоляцию 1500 вольт на точке между «вход-выход»

По умолчанию плата не комплектуется данным модулем, нужно находить соответствующую модель.

Назначение светодиодов Ethernet Shield:

  • PWR показывает наличие питания на плате.
  • LINK светится при наличии сети и мигает при передаче/приеме данных.
  • FULLD обозначает сетевое полнодуплексное соединение.
  • 100M обозначает сетевое соединение со скоростью 10мбит/сек.
  • RX мигает при приеме экраном данных.
  • TX мигает при отправке данных экраном.
  • COLL мигает при обнаружении сетевых конфликтов.

Кроме этих имеются еще пара светодиодов на гнезде rj 45, один из которых при подключенном шнуре светится, а другой мерцает при поступлении данных.

Ehternet для Arduino Nano

Отдельного упоминания заслуживает модуль Arduino Nano Ethernet. Он выполнен в формфакторе, облегчающим подключение к плате Nano v 3.0, но обладает практически такими же возможностями, что и “обычный” вариант для Uno. В основе шилда лежит микросхема ENC28J60.

Шилд Ethernet Arduino Nano Shield

Модуль точно так же имеет разъем RJ-45, слот для SD и в некоторых модификациях тоже оснащен PoE контроллером.

Arduino ‘network port’

The Arduino IDE detects the Arduino ‘network port’ using mDNS system. This requires the use of UDP multicast. From networking libraries supported for OTA upload only Ethernet, WiFiNina, WiFi101 and the esp libraries support multicast. For these libraries ArduinoOTA.h at defaults starts the mDNS service.

In some networks or on some computers UDP mDNS doesn’t work. You can still use the ArduinoOTA library for upload from command line or with the fake programmer trick described elsewhere in this README.

It is possible to suppress use of the mDNS service by the library. Only define NO_OTA_PORT before the include like this:

Первые шаги

Подключите Arduino к персональному компьютеру с помощью USB кабеля, а Ethernet Shield к вашему роутеру (или непосредственно вашему интернет-кабелю).

После этого откройте Arduino IDE. В версиях Arduino IDE после 1.0 есть встроенная поддержка DHCP и нет необходимости в ручной настройке IP адреса.

Для того, чтобы определить какой IP адрес присвоен вашей плате, откройте скетч DhcpAddressPrinter. Найти его можно в меню:

File —> Examples —> Ethernet —> DhcpAddressPrinter

После открытия скорее всего придется сменить мак-адрес. На более новых официальных версиях Ethernet шилда, адрес указан на стикере, прикрепленном к шилду. Если стикера нет, можно просто сгенерировать новый уникальный мак-адрес. Если вы используете одновременно несколько шилдов, мак-адреса для каждого з них должны быть уникальными.

После настройки мак-адреса, можно загружать скетч на плату Arduino и открывать серийный монитор. В результате должен отобразится используемый IP адрес.

Arduino Library: EtherCard

This library seems a very well respected in the Arduino community and with good reason. It seems one of the most complete implementations out there.

The code below might look a little bit more complicated, but that’s mainly because of the added HTML.

CAUTION: Ethercard seems to use pin 8 instead of pin 10!

Pros:

Definitely a big plus for this library is that complex tasks like DHCP and such are easy to use, and offers easy accessible advanced features. Definitely excellent for the pro Arduino users.

Cons:

A big downside (again) is the lack of a simple to use “print” function to sent data, and I’m fully aware that me bitching about it is based on my own limited experience with working with strings and char arrays etc., but I can imagine that I’m not the only one.

Ethercard is, like UIPEthernet, not the smallest library.

Download:

EtherCard can be found at GitHub and on their project page or you can download it from Tweaking4All.
Again: I recommend getting the latest and greatest version from Github.

Download — Ethercard

Filename:  ethercard.zip
Platform:  Undefined
Version: 
File size:  116.3 kB
Date:  2017-02-25
 Download Now 
Send me a cup of Coffee    

Note: Source has been updated to accommodate the newer Arduine IDE version (line 10, added “const”).

12345678910111213141516171819202122232425262728293031323334353637383940414243 #include <EtherCard.h>// Ethernet IP, default gateway and MAC addressesstatic byte myip = { 192,168,1,200 };static byte gwip = { 192,168,1,1 };static byte mymac = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
byte Ethernet::buffer500; // tcp/ip send and receive bufferconst char page PROGMEM =»HTTP/1.0 503 Service Unavailable\r\n»»Content-Type: text/html\r\n»»Retry-After: 600\r\n»»\r\n»»<html>»
  «<head><title>»
    «Hello World!»
  «</title></head>»
  «<body>»
    «<h3>Hello World! This is your Arduino speaking!</h3>»
  «</body>»»</html>»;void setup(){
  Serial.begin(57600);
  Serial.println(«\n»);
  if (ether.begin(sizeof Ethernet::buffer, mymac) == )
    Serial.println( «Failed to access Ethernet controller»);
  ether.staticSetup(myip, gwip);
  ether.printIp(«IP:  «, ether.myip);
  ether.printIp(«GW:  «, ether.gwip);  
  ether.printIp(«DNS: «, ether.dnsip);  }void loop(){
  // wait for an incoming TCP packet, but ignore its contents
  if (ether.packetLoop(ether.packetReceive())) {
    memcpy_P(ether.tcpOffset(), page, sizeof page);
    ether.httpServerReply(sizeof page — 1);
  }}

Веб-сервер на Ардуино

Как уже понятно, для связи Ардуино по LAN сети нужна специальная плата расширения.

Так выглядит шилд Ethernet Shield w5100:

Работа с этим сетевым шилдом проще всего осуществляется с платы Arduino UNO R3. Безусловно, вы можете использовать её и с другими платами, на фото изображено подключение на примере самой распространённой версии. При использовании с другими вариантами, например, Nano нужно соединить соответствующие выводы на плате и шилде с помощью перемычек.

Ардуино выступает в роли сервера, поэтому нужно обеспечить подключение к сети, для этого используется Ethernet кабель. Сразу стоит отметить, что при подключении витой пары, кабеля RJ-45, непосредственно к плате, а не через роутер, вы должны использовать вариант обжимки «Crossover».

Работает плата расширения на скоростях 10 или 100 мбит/с, при работе на высшей скорости вы можете видеть уведомление – об этом сигнализирует светодиод «100M». Он расположен ниже сетевого разъёма.

На шилде расположен слот для SD-карты – вы можете получить доступ к данным через сеть. Таким образом, вы получите домашнее облако на Arduino.

С картой памяти микроконтроллер работает по той же SPI шине, что и с шилдом. Определите, какие выводы на вашей плате работают с этим интерфейсом, и не забудьте о том, что их нельзя задействовать при разработке вашей умной системы. Например, для платы Arduino Mega выводы: 50, 51, 52, а для Duemilanove: 12, 12, 13.

Модуль может вызывать прерывания в Ардуино. Это нужно для уведомления микроконтроллера о разного рода событиях, что очень полезно.

INTRODUCTION TO ARDUINO ETHERNET SHIELD

Ethernet Shield allows internet connectivity to Arduino board by using its Ethernet library. We can use this Ethernet library to write sketches (Arduino program written in IDE) that will help us to configure this shield to connect to internet. This shield is compatible with almost all versions of Arduino boards. It enables our board to receive and send data worldwide by providing it internet connection. SD card option is also available in it and we can write and read this card by using SD library. Endless amount of possibilities are provided by just allowing your project to connect to internet.

This shield relies on Wiznet W5100 chip Ethernet with internal buffer space of 16 KB. It can support up to 4 simultaneous socket connections.  This chip provides a network IP stack which is capable of both transport layer protocol of internet i.e. TCP (transmission control protocol) and UDP (user datagram protocol). TCP provides more reliable service of transporting messages as compared to UDP and much more features of these 2 protocols are there but that’s not our concern in this article right now. We are simply focused on providing our board internet connectivity via this shield.

The newer version of this shield relies on W5500 Ethernet chip having 32 KB buffer size, supports auto negotiation and supports I2C , UART interface. By making use of long wire warp headers for connecting Ethernet shield to Arduino board keeps the pin layout intact and other shields can be stacked on top of it.

Additional Knowledge of Networking for Beginners

In the case of using the static IP, you need to get an unused IP address, subnet mask, gateway’s IP address, and DNS server’s IP address. The below shows how to get them.

If Arduino and your PC connect to the same network

  • Open Command Prompt on your PC

  • Type the following command on Command Prompt:

ipconfig

Command Prompt

C:\Windows\system32>ipconfig
Ethernet adapter Ethernet 2:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :

Wireless LAN adapter Wi-Fi:

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::d559:ae92:8dff:a604%20
IPv4 Address. . . . . . . . . . . : 192.168.0.14
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1

  • From above, you can get the subnet mask and gateway’s IP address

  • You can see your PC’s IP address from the above output. We will try to find an unused IP address based on PC’s IP address

    • Increase or decrease one by one, start from the PC’s IP address.

    • Send ping command to that IP address on Command Prompt. Repeat these two steps until the IP is unreachable. If the address is unreachable, It is an unused IP address and we can use it for Arduino. For example:

ping 192.168.0.16

Command Prompt

C:\Users\youruser>ping 192.168.0.16

Pinging 192.168.0.16 with 32 bytes of data:
Reply from 192.168.0.14: Destination host unreachable.
Reply from 192.168.0.14: Destination host unreachable.
Reply from 192.168.0.14: Destination host unreachable.
Reply from 192.168.0.14: Destination host unreachable.

Ping statistics for 192.168.0.16:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

※ NOTE THAT:

In some case, even IP address is unreachable, it may being used by another device. However, this case usually does not happen in your home network.

For DNS server’s IP address , we can simply use 8.8.8.8

ARDUINO ETHERNET SHIELD ARDUINO CONNECTIVITY

Ethernet Arduino connectivity can be used in two ways:

  • SERVER: We can make our Arduino act as server i.e. it can be accessed from the internet and we will send commands from our Arduino board. This server can be used in many ways, for example, to control things in house and it can display information also just like sensor readings and much more.
  • CLIENT: Client basically sends data to the server. In case our Arduino is acting as a client then it can posts data to the database that is stored in the server. This type of Arduino client model is used for handling a large amount of data as well as for data logging purposes.

Check this tutorial to know how to interface Arduino Ethernet shield with Arduino Uno

Ethernet shield interfacing with Arduino Uno

Проекты Arduino для начинающих

Если посмотреть  на все проекты ардуино, информация о которых доступна в интернете, то можно их разделить на несколько основных групп:

Начальные учебные проекты, не претендующие на какое-то важное практическое использование, но помогающие разобраться в разных аспектах платформы.Мигающие светодиоды – маячок, мигалка, светофор и другие.
Проекты с датчиками: от простейших аналоговых до цифровых, использующих разнообразные протоколы для обмена данными.
Устройства регистрации и отображения информации.
Машины и устройства с сервоприводами и шаговыми двигателями.
Устройства с использованием различных беспроводных видов связи и GPS.

Проекты для автоматизации жилья – умные дома на Arduino, а также отдельные элементы управления домашней инфраструктурой.
Разнообразные автономные машины и роботы.
Проекты для исследования природы и автоматизации сельского хозяйства
Необычные и креативные – как правило, развлекательные проекты.

По каждой из этих групп можно найти множество самых разнообразных материалов в книгах и на сайтах. В этой статье мы начнем знакомство с описанием наиболее простых проектов, с которых рекомендуется стартовать начинающим.

Как создавать проект на ардуино

Проект Ардуино – это всегда сочетание электронной схемы, некоторых связанных друг с другом аппаратных и механических устройств, системы питания и программного обеспечения, управляющего всем этим хаосом. Поэтому приступая к работе, вы должны твердо понимать, что создавая устройство в одиночестве, вы должны будете стать и программистом, и электронщиком, и конструктором.

Если речь идет не об учебном проекте, то вы обязательно столкнетесь со следующими этапами реализации с такими вот задачами:

  • Придумать что-то, что будет полезно и (или) интересно для окружающих. Даже самый простой проект несет какую-то пользу – как минимум, он помогает изучать новые технологии.
  • Собрать схему, подключить модули друг к другу и к контроллеру.
  • Написать скетч (программу) в специальной среде и загрузить ее в контроллер.
  • Проверить, как все работает вместе, и исправить ошибки.
  • После тестирования – готовиться к созданию готового устройства. Это означает, нужно собрать устройство в каком-то пригодном для эксплуатации корпусе, предусмотреть систему питания, связи с окружающей средой.
  • Если вы собираетесь распространять созданные вами устройства, то придется также заняться дизайном, системой транспортировки, задуматься о безопасности использования необученными пользователями и обучением этих самых пользователей.
  • Если ваше устройство работает, оно протестировано и обладает какими-то преимуществами перед другими решениями, то можно попытаться сделать из вашего инженерного уже бизнес-проект, попробовать привлечь инвестиции.

Каждый из этих этапов создания проекта достоин отдельной статьи

Но мы уделим главное внимание этапам сборки электронных схем (основы электроники) и программирования контроллера

Электронные схемы

Электронные схемы обычно собираются с применением макетных плат, скрепляющих элементы друг с другом без пайки и скрутки. О том, как работают модули и схемы подключения можно узнать на нашем сайте. Обычно в описании проекта указаны способы монтажа деталей. Но для большинства популярных модулей есть уже десятки готовых схем и примеров в интернете.

Программирование

Создание и прошивка скетчей производится в специальной программе  – среде программирования.  Наиболее популярной версией такой среды является Arduino IDE. На нашем сайте вы сможете найти информацию о том, как скачать, установить и настроить эту программу.

Installation

The library is in Library Manager of the Arduino IDE.

Note for platformio users: Please, don’t use this library with platformio. It was not tested with platformio and most of the documentation doesn’t apply.

Arduino SAMD boards (Zero, M0, MKR, Nano 33 IoT) are supported ‘out of the box’. Additionally to upload over the internal flash as temporary storage, upload over SD card and over MEM shield’s flash is possible. For upload over SD card use the SDU library as shown in the WiFi101_SD_OTA or similar for upload over MKR MEM shield use the SFU library.

For nRF5 boards two lines need to be added to platform.txt file of the nRF5 Arduino package. For details scroll down.

For ESP8266 and ESP32 boards, platform.local.txt from extras folder need to be copied into boards package installation folder and the bundled ArduinoOTA library must be deleted. For details scroll down.

ATmega boards require to flash a modified Optiboot bootloader for flash write operations. Details are below.

For other MCU upload over SD card is possible if the MCU has SD bootloader which can bootload the update bin from SD card. See the ATmega-SD example. Some MCU can use a second stage SD bootloader linked to the sketch as a library similar to SAMD package’s SDU library. For upload the ‘fake OTA programmer’ technique can be configured.

Step 5: Test the Setup

To test the setup, you can use the built in Arduino examples under the File-Examples menu list, under the Ethernet and the SD folders. To use the SD card with the file system, you will need this SDFatLib library: http://code.google.com/p/sdfatlib/downloads/list One thing that’s a bit of a bother is that it only supports the old DOS style 8.3 filenames, not long file names. Keep that in mind when you later serve up a website and half the pictures don’t show 😉 To test both the ethernet connection and the SD card at the same time, try this LadyAda tutorial: http://www.ladyada.net/learn/arduino/ethfiles.html Note that this LadyAda example is using a slightly outdated version. Luckily you can just replace the outdated references to Server with EthernetServer, and Client with EthernetClient, and it all seems to work. Many more examples exist online, including simple web servers such as the samples provided by Teslaling in this Instructable: https://www.instructables.com/id/ServDuino-Arduino-Webserver/step7/Programming/ Note that Teslaling’s instructable also uses the outdated «Client» and «Server» types that need to be updated to EthernetClient and EthernetServer. Enjoy!

OTA Upload from IDE without ‘network port’

Some of the supported networking libraries don’t have the UDP.beginMulticast function and can’t start a MDNS service to propagate the network port for Arduino IDE. And sometimes the MDNS port is not detected for the good libraries too. Arduino IDE doesn’t yet allow to enter the IP address.

The workaround is to configure a fake programmer for Arduino OTA. You can use my_boards as starting point. For Arduino Mega it is the best option for all ArduinoOTA aspects, for other boards it gives you control about your custom settings. In your copy of my_boards in programmers.txt, configure the IP address and restart the IDE. Note: the esp boards packages can’t be used as referenced packages in my_boards style.

If you don’t want to use my_boards, the platform.local.txt files for avr and samd in extras folder in this library contain the configuration for arduinoOTA tool as programmer. Copy platform.local.txt next to platform.txt in the hardware package of your board. The programmers.txt file can’t have a ‘local’ extension so you have to add your OTA ‘programmer’ configuration into the existing programmers.txt file. Then restart the IDE.

Example OTA ‘programmer’ configuration in programmers.txt:

In IDE select in Tools menu the «Arduino OTA (…)» programmer and use «Upload using programmer» from the Sketch menu in IDE.

Performance Improvement

Version 2.0.0 greatly improves performance.  Optimizations at multiple levels within the library work together to vastly improve performance, especially on the oldest W5100 hardware, and also make the most of the newer W5200 and W5500 chips.

A a tremendous amount of work went into these optimizations.  In this photo you can see the setup for debugging timing issues with WIZ812MJ (W5100) and Teensy 3.2, using a 4 channel oscilloscope to monitor SPI communication and an active network tap to monitor the Ethernet packets.

The 2.0.0 performance optimizations are performed on 6 levels.  Here are details, from the highest to the lowest level.

1: Caching Socket Registers

The Wiznet chips transmit and receive Ethernet packets with their internal buffer memory.  Each socket’s buffers are managed using several 16 bit pointer registers within the chip.  Previously these registers would be read and sometimes updated for every access, using many bytes of SPI communication, even just to check whether data is available.

A small amount of memory on the Arduino side is used to cache these registers, which greatly reduces non-data SPI communication.

2: Immediate TCP ACK

By default the Wiznet chips have a feature to delay sending TCP ACK packets.  For simple programs which read 1 byte at a time, this makes good sense, since you wouldn’t want to transmit a flood of ACK packets for every single received byte.

The socket register caching also allows the number of Sock_RECV commands written to the chip to be greatly reduced, even for simple Arduino sketches which read 1 byte at a time.  This allows Ethernet 2.0.0 to control the timing of ACK packets, immediately when the Sock_RECV command is used to update the chip’s buffer pointers.

W5100 chips see a tremendous TCP speed boost, because the delayed ACK feature was poorly implemented in that old chip.  Even W5200 & W5500 speed is improved, especially when larger buffers are used.

3: Block Mode For Data Transfer

All SPI commands have overhead, 3 bytes on W5100 & W5500, 4 bytes on W5200, before actually communicating data.  On W5200 & W5500, after suffering this overhead, “block mode” allows many bytes can be transferred using a single command.

When your Arduino sketch reads or writes multiple bytes, these efficient block mode commands are used.  Other libraries, like Adafruit & Seeed Studios Ethernet2 have used this block mode for data transfer.

4: Block Mode For Registers

Unlike other libraries for W5200 or W5500, the efficient block most is also used with accessing 16 and 32 bit registers.  In addition to nearly cutting the register access time in half (and register access is done much less often due to caching), block mode also greatly reduces the chances that a register which may change will being read will need to be accessed more than twice to get the same value.

5: SPI Block Transfer

The SPI library has a block transfer function which is optimized to reduce delays between bytes on the SPI bus.  W5200 & W5500 now leverage SPI.transfer(buffer, size) for a significant speed increase when used with boards having a SPI library which optimizes this function.

6: Native CS Pin Control

Control of the CS pin in version 1.1 was done using hard-coded register access to pin 10.  While very efficient, only certain boards were supported and using any other pin required editing the library.

Version 2.0.0 allows any digital pin, but still uses efficient access to GPIO registers on most boards.  All AVR, SAMD, SAM (Arduino Due), PIC32, Teensy and ESP32 boards are supported.  On others, the CS pin control uses ordinary digitalWrite.

Hardware and Circuit Diagram

An Arduino MEGA 2560 and Arduino Ethernet shield are used in this project. A 2GB micro SD card is used to store the web page that is hosted by the Arduino.

The circuit diagram shows how the LEDs are connected to the Arduino. Only the first two and last two LEDs with series resistors are shown in the circuit as the rest of the LEDs are connected in the same way sequentially from pin 26 to pin 49 of the Arduino MEGA.

Arduino MEGA LED Connection Circuit Diagram

NOTE: Pins 50 to 53 (four pins) can not be used as outputs when using the Ethernet shield. This is because these are SPI port pins that are used to control the Ethernet chip and SD card.

Update and Correction 3 June 2015: In the original article, pin 53 was said to be the SS (Slave Select – of the SPI port) that controls the Ethernet chip (W5100). Although pin 53 on the MEGA is a SS pin from the SPI port, it is not the same SS used by the Ethernet shield.

To summarise: only pins 50 to 52 connect to the Ethernet shield through the ICSP header for SPI data and clock purposes – pin 53 is actually available. Pin 53 on the MEGA is called SS and pin 10 on the Ethernet shield is called SS but they are not connected.

Further to the above, the Arduino Ethernet shield web page has the following to say:

Arduino communicates with both the W5100 and SD card using the SPI bus (through the ICSP header). This is on digital pins 10, 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card. These pins cannot be used for general I/O. On the Mega, the hardware SS pin, 53, is not used to select either the W5100 or the SD card, but it must be kept as an output or the SPI interface won’t work.

Books that may interest you:

if(typeof __ez_fad_position != ‘undefined’){__ez_fad_position(‘div-gpt-ad-arduinogetstarted_com-large-mobile-banner-2-0’)};How to Make an HTTP Request

This part presents only code related to HTTP. Full code for each shield will be presents in the last part.

Declare request method, HTTP port, hostname, pathname, query string

int HTTP_PORT = 80;
String HTTP_METHOD = «GET»;
char HOST_NAME[] = «example.phpoc.com»;
String PATH_NAME = «»;

Declare a web client object

Arduino Ethernet Shield 2 EthernetClient client;
PHPoC WiFi/Ethernet Shield PhpocClient client;
Arduino Uno WiFi WiFiClient client;

Connect to web server

if(client.connect(HOST_NAME, HTTP_PORT)) {
Serial.println(«Connected to server»);
} else {
Serial.println(«connection failed»);
}

If connected to server, send HTTP request

client.println(HTTP_METHOD + » » + PATH_NAME + » HTTP/1.1″);
client.println(«Host: » + String(HOST_NAME));
client.println(«Connection: close»);
client.println();

Read the response data from web server

while(client.available())
{

char c = client.read();
Serial.print(c);
}

if(!client.connected())
{

Serial.println(«disconnected»);
client.stop();
}