Текущее время: 25 май 2019, 12:14

Город ХОББИ

Занятие любимым хобби - это путь к счастливой жизни!

Сетевая розетка на Ардуино

Тут собраны различные проекты на Ардуино
Аватар пользователя
 
Сообщений: 714
Зарегистрирован: 27 мар 2013, 22:12

Сетевая розетка на Ардуино

Сообщение -=dp=- » 28 май 2015, 19:54

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

1. Контроллер Ардуино УНО
2. Ethernet плата расширения
3. модули реле с опторазвязкой
4. Корпус электромонтажный
5. розетки внешние 2 шт
6. Блок питания 12 В 1А.

Благо все эти детали можно купить в Калининграде и не ждать месяцами посылок с других магазинов:D
Цены на контроллеры Ардуино и всякие сенсоры и датчики в магазине NewMar Калининград в 2 - 3 раза ниже чем в Москве и Питере !
Интернет магазин где можно купить Ардуино в Калининграде http://newmar.ru/
Спасибо огромное организаторам данного магазина за вклад в развитие робототехники и радиоэлектроники в Калининграде и Калининградской области.

А я тем временем сразу же принялся за дело, изготавливать сетевую розетку на Ардуино :ugeek:


Вложения
1.jpg
Управление розеткой через интернет
2.jpg
система удаленного управления на Ардуино
3.jpg
Удаленное управление на Ардуино

Аватар пользователя
 
Сообщений: 714
Зарегистрирован: 27 мар 2013, 22:12

Re: Сетевая розетка на Ардуино

Сообщение -=dp=- » 28 май 2015, 20:01

Начал я с монтажа внешних электрических розеток к корпусу, распаял их к проводам, в корпуса розеток вставил по одному светодиоду для индикации состояния розетки.
Просверлив дырки в крышке корпуса я продел сделанные отверстия провода и прикрутил розетки.
Затем разместил в корпусе Ардуину с изернет шилдом, блок питания и модули реле чтоб так сказать примерить влезет ли это все в корпус.
Все детали отлично разместились в корпусе.


Вложения
4.jpg
Управление электропитанием через сеть интернет
5.jpg
Ардуино удаленное управление электропитанием
6.jpg
Управление через локальную сеть на Ардуино

Аватар пользователя
 
Сообщений: 714
Зарегистрирован: 27 мар 2013, 22:12

Re: Сетевая розетка на Ардуино

Сообщение -=dp=- » 28 май 2015, 20:24

Далее начинается самое интересное - программирование контроллера Ардуино УНО.

Для взаимодействия с Ethernet платой расширения я использовал стандартную библиотеку, которая идет вместе со средой разработки Ардуино ИДЕ.
Там в примерах я нашел отличный и понятный скетч вэб сервера и на его базе создал свой скетч, слегка модифицировав его.
Так как управлять светодиодами на Ардуино я уже умею :D я сразу же в скетче вэб сервера прописал на HTML отображение двух кнопок с передачей параметров и условие отслеживающее эти параметры и выполняющее действие- включение и выключение светодиодов. Далее я вместо светодиодов подсоединил входы модулей реле.
После того как я испытал тестовый скетч я сразу же столкнулся первой проблемой - ардуино сбрасывала состояние выходов при отключении питания, и мне это не понравилось.
Я решил реализовать запись параметров о состоянии выходов в энергонезависимую память EEPROM контроллера ATMega328.
И при включении Ардуино считывать сохраненную информацию о состоянии до выключения питания и соответственно включать или выключать соответствующие выходы.
Для записи и считывания данных из EEPROM я воспользовался библиотекой которая есть в стандартном комплекте Ардуино ИДЕ.
После успешных испытаний появилась еще одна проблема :geek:
Мне захотелось отображать реальное состояние розеток в вэб интерфейсе для удаленного управления.
И я решил использовать для этого еще 2 цифровых входа Ардуино УНО.
На эти входы я распаял резисторы 500 Ом и подсоединил их ко входам обмоток реле, таким образом если на реле подано питание, оно включает своими контактами напряжение в розетках и через резисторы я снимаю состояние наличия напряжения на обмотках и меняю по условию строчки кона в скетче , которые меняют HTML разметкой цвет в ячейке таблицы.
Еще разок протестировав я остановился на этом варианте, наконец то меня все устроило :D

Выкладываю скетч сетевой розетки

Код: выделить все
*
Arduino - WEB Remote control and secondary control power condition, Saving state swith when power is removed.
 */
#include <SPI.h>
#include <Ethernet.h>
#include <EEPROM.h>
int led1 = 4;
int led2 = 5;
int led3 = 6;
int in1 = 8;
int in2 = 9;

 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };   //mac address
byte ip[] = { 192.168.1.58};                      //ip address
byte gateway[] = { 192.168.1.1 };                  //ip gateway
byte subnet[] = { 255.255.255.0 };                 //ip mask
EthernetServer server(80);                            //ip port     
String readString;

void setup() {

   pinMode(led1, OUTPUT);
   pinMode(led2, OUTPUT);
   pinMode(led3, OUTPUT);
   pinMode(in1, INPUT);
   pinMode(in2, INPUT);


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
 digitalWrite(led3, HIGH);
 if (EEPROM.read(5)==1){digitalWrite(led1, LOW);};
 if (EEPROM.read(5)==2){digitalWrite(led1, HIGH);}; 
 if (EEPROM.read(3)==1){digitalWrite(led2, LOW);};
 if (EEPROM.read(3)==2){digitalWrite(led2, HIGH);};
}


void loop() {
  // Create a client connection
  EthernetClient client = server.available();
 
  if (client) {
    while (client.connected()) {   
      if (client.available()) {
        char c = client.read();
        //read char by char HTTP request
        if (readString.length() < 100) {
          //store characters to string
          readString += c;
          //Serial.print(c);
         }

         //if HTTP request has ended
         if (c == '\n') {         
     
           client.println("HTTP/1.1 200 OK"); //send new page
           client.println("Content-Type: text/html");
           client.println();     
           client.println("<HTML>");
           client.println("<HEAD>");
           client.println("<meta http-equiv= refresh content=5; >");
           client.println("<style>a { text-decoration: none;} </style>");
           client.println("</HEAD>");
           client.println("<BODY bgcolor=#EEE5DE>");
           client.println("<center>");
           client.println("<b>NETCONT</b><br>WEB Remote Control System.<br><br>");
 
           client.println("<table border=1 width=230px bgcolor=#FFFFFF>");
           //--------------------1-------------------------------------
           client.println("<tr><td><center>1</td>");
           if (digitalRead(in1)==HIGH){ 
           client.println("<td bgcolor=#7FFF00><center><a href=\"/?1off\"\"><br>ON<br><br></a></td></tr>");
           } else {
           client.println("<td bgcolor=#FF6347><center><a href=\"/?1on\"\"><br>OFF<br><br></a></td></tr>");
           };
           //----------------------2------------------------------------
           client.println("<tr><td><center>2</td>");
           if (digitalRead(in2)==HIGH){
           client.println("<tr bgcolor=#7FFF00><center><a href=\"/?2off\"\"><br>ON<br><br></a></td></tr>");
           } else {
           client.println("<td bgcolor=#FF6347><center><a href=\"/?2on\"\"><br>OFF<br><br></a></td></tr>");
           };

           
           client.println("</table>"); 
         
       client.println("<center><br><br>Secondary control power 2 contact<br>Saving state when power is removed");
     
           delay(1);
           //stopping client
           client.stop();
           //controls the Arduino if you press the buttons
           if (readString.indexOf("?1on") >0){
               digitalWrite(leds1, HIGH);
             EEPROM.write(0, 2); 
           }
           if (readString.indexOf("?1off") >0){
               digitalWrite(leds1, LOW);
            EEPROM.write(0, 1); 
           }
           if (readString.indexOf("?2on") >0){
               digitalWrite(leds2, HIGH);
            EEPROM.write(1, 2);   
           }
           if (readString.indexOf("?2off") >0){
               digitalWrite(leds2, LOW);
           EEPROM.write(1, 1);     
           }
         
            readString=""; 
           
         }
       }
    }
}
}





Вложения
7.jpg
Удаленное управление розеткой
8.jpg
Сетевая розетка на Ардуино

Аватар пользователя
 
Сообщений: 714
Зарегистрирован: 27 мар 2013, 22:12

Re: Сетевая розетка на Ардуино

Сообщение -=dp=- » 28 май 2015, 20:34

А вот и фотография готового устройства для удаленного управления электрическими розетками (или устройствами подключенными к ним)
И скриншоты вэб интерфейса , с кнопками управления и отображением текущего состояния розеток.


Вложения
10.JPG
Вэб интерфейс системы дистанционного управления электропитанием
11.JPG
Управление электропитанием через интернет
12.jpg
Управление розетками через интернет


Вернуться в Проекты на Ардуино

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1