Контролер навантажень через Ethernet на базі Arduino Uno R3
- 475.00грн
-
Багато електронників та радіоаматорів ставлять перед собою завдання складання пристрою для дистанційного керування різним обладнанням. Реалізацій цієї ідеї сьогодні є чимало, частина їх можна знайти у мережі Internet. У даному проекті ми представляємо один з варіантів такого пристрою, а саме – контролер навантажень через Ethernet на базі Arduino Uno R3 .
Принцип роботи пристрою досить простий – плата Arduino підключається до локальної мережі через Ethernet, використовуючи задану при прошивці IP-адресу. Користувач переходить на цю IP-адресу через браузер свого пристрою, отримуючи у відповідь веб-сторінку управління пристроями. Для керування можна використовувати комп'ютер, смартфон, планшет та інші пристрої, підключені до локальної мережі.
Даний проект відрізняється простотою і працюватиме не тільки на 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. Цей повинен працювати 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 ( " " ); client. println ( "" ); client. println ( " " ); client. stop (); } }} void writeHTMLforPin( EthernetClient client, int i){ client. print ( "Output Pins
" ); client. println ( "
Pin " ); client. print (pins[i]); client. print ( "
" ); } 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 . Якщо все зроблено правильно, то з'явиться сторінка управління:

