Контроллер нагрузок через Ethernet на базе Arduino Uno R3

Код товара: eTumbler v2.0
Доступность: На складе
Артикул: 1000-1018

  • 475.00грн




  Многие электронщики и радиолюбители ставят перед собой задачу сборки устройства для дистанционного управления различным оборудованием. Реализаций данной идеи сейчас есть довольно много, часть из них можно найти в сети Internet. В даном проекте мы представляем один из вариантов такого устройства, а именно - контроллер нагрузок через Ethernet на базе Arduino Uno R3

 Принцип работы устройства довольно прост - плата Arduino подключается к локальной сети через Ethernet, используя заданый при прошивке IP-адрес. Пользователь переходит на этот IP-адрес через браузер своего устройства, получая в ответ web-страничку управления устройствами. Для управления может использоваться компьютер, смартфон, планшет и другие устройства, подключенные к локальной сети.

 Данный проект отличается простотой и будет работать не только на Arduino Uno, но и на других Arduino-совместимых платах.

 Собрав контроллер нагрузок можно получить полезное устройство, а также освоить программирование Arduino, в том числе работу с библиотеками SPI и Ethernet. 

 Комплект состоит из платы Arduino Uno R3 , шилда Arduino Ethernet Shield W5100, 4-канального реле модуля Relay 4ch и необходимых проводов.

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

Комплектация:

  • Arduino Uno R3  в антистатической упаковке
  • шилд Arduino Ethernet Shield W5100 
  • 4-канальный реле модуль Relay 4ch 
  • 6 проводников для соединения модулей
  • USB кабель

Инструкция по сборке:

1) Скачайте и установите Arduino IDE (рекомендуем версию 1.0.4). На указанном сайте также можно найти информацию по первичной настройке и работе с IDE, а также ответы на основные вопросы по работе с ней.

2)Подключите к компьтеру плату Arduino Uno и загрузите в нее следующий скетч:























// sketch 10-02 Internet Pins

#include <SPI.h>
#include <Ethernet.h>

// MAC address just has to be unique. This should work
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// The IP address will be dependent on your local network:
byte ip[] = { 192, 168, 0, 177 };
EthernetServer server(80);

//int Relay = 3;
int numPins = 4;
int pins[] = {3, 5, 6, 7};
int pinState[] = {0, 0, 0, 0};
char line1[100];

void setup()
{
  for (int i = 0; i < numPins; i++)
  {
     pinMode(pins[i], OUTPUT);
        digitalWrite(pins[i], HIGH);
  }
  Serial.begin(9600);
  Ethernet.begin(mac, ip);
  server.begin();
}

void loop()
{
  EthernetClient client = server.available();
  if (client) 
  {
    while (client.connected()) 
    {
      readHeader(client);
      if (! pageNameIs("/"))
      {
        client.stop();  
        return;
      }
      client.println("HTTP/1.1 200 OK");
      client.println("Content-Type: text/html");
      client.println();

      // send the body
      client.println("<html><body>");
      client.println("<h1>Output Pins</h1>");
      client.println("<form method='GET'>");  
      setValuesFromParams();
      setPinStates();
      for (int i = 0; i < numPins; i++)
      {
         writeHTMLforPin(client, i);
      }
      client.println("<input type='submit' value='Update'/>");
      client.println("</form>");
      client.println("</body></html>");

      client.stop();            
    }
  }
}

void writeHTMLforPin(EthernetClient client, int i)
{
  client.print("<p>Pin ");
  client.print(pins[i]);  
  client.print("<select name='");
  client.print(i);
  client.println("'>");
  client.print("<option value='0'");
  if (pinState[i] == 0)
  {
    client.print(" selected");
  }
  client.println(">Off</option>");
  client.print("<option value='1'");
  if (pinState[i] == 1)
  {
    client.print(" selected");
  }
  client.println(">On</option>");
  client.println("</select></p>");  
}

void setPinStates()
{
  for (int i = 0; i < numPins; i++)
  {
     digitalWrite(pins[i], !pinState[i]);
  }
}

void setValuesFromParams()
{
  for (int i = 0; i < numPins; i++)
  {
    pinState[i] = valueOfParam(i + '0');
  }
}

void readHeader(EthernetClient client)
{
  // read first line of header
  char ch;
  int i = 0;
  while (ch != '
')
  {
    if (client.available())
    {
      ch = client.read();
      line1[i] = ch;
      i ++;
    }
  }
  line1[i] = '\0'; 
  Serial.println(line1);
}

boolean pageNameIs(char* name)
{
   // page name starts at char pos 4
   // ends with space
   int i = 4;
   char ch = line1[i];
   while (ch != ' ' && ch != '
' && ch != '?')
   {
     if (name[i-4] != line1[i])
     {
       return false;
     }
     i++;
     ch = line1[i];
   }
   return true;
}

int valueOfParam(char param)
{
  for (int i = 0; i < strlen(line1); i++)
  {
    if (line1[i] == param && line1[i+1] == '=')
    {
      return (line1[i+2] - '0');
    }
  }
  return 0;
}

Примечание: програмный код взят с этой статьи. Для сохранения простоты в него внесены только минимальные изменения. Для удобства практического использования рекомендуем добавить дополнительные возможности, например добавить запись состояния реле в EEPROM, сделать автоматическое включение/выключение реле реле через определенный период, подключить дисплей или LCD Keypad Shield для отображения состояния устройства(а возможно и для прямого управления) и др.

3)  Если после загрузки скетча Вы получили сообщение "Done uploading.", значит все сделано правильно и можна приступать к следующему этапу - соединению модулей. Ethernet Shield нужно просто подключить поверх Arduino Uno, а модуль реле подключить с помощью идущих в комплекте проводников по следующей схеме:

Выводы Arduino                Выводы реле
+5V VCC
GND GND
D3 IN1
D5 IN2
D6 IN3
D7 IN4

 

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

5) Далее с любого устройства, подключенного к локальной сети перейдите по адресу 192.168.0.177. Если все сделано правильно, то появится страница управления:

Внимание: HTML не поддерживается! Используйте обычный текст!