Распространение устройств, подключенных к Интернету, от автомобилей до мониторов сердца, которые взаимодействуют без участия человека, создает новые возможности для сбора данных, прогнозной аналитики и автоматизации ИТ. «Умный дом», «Умный холодильник», «Подключенные автомобили» и т. Д. — вот некоторые из гаджетов IoT, которые появились на рынке.
В этом блоге будет подробно описана процедура управления приборами. Определенно, этот блог будет дополнением для людей, которые заинтересованы в выполнении каких-либо задач домашней автоматизации.
Требуется оборудование:
- Raspberry Pi Kit
- Arduino Uno
- Релейная плата
- Пучок проводов
Требуется программное обеспечение:
- Загрузите и установите среду разработки Eclipse на компьютере, на котором будет разрабатываться приложение.
- Установите следующие программы на Raspberry Pi с ОС Raspbian
Работает:
Здесь Raspberry Pi, действующий как модуль шлюза, получает HTTP-запрос и отправляет сигнал в Arduino UNO для управления устройствами, подключенными к нему через ретранслятор. Веб-модуль приложения (Здесь Smart Lab) будет работать на сервере Jetty, установленном на Raspberry Pi. Кроме того, проводная библиотека pi, которая обернута библиотекой pi4j, установленной на Raspberry pi, обеспечивает связь между конечными устройствами и шлюзом. Как только шлюз получает HTTP-запрос, веб-модуль smart lab связывается с библиотекой pi4j и отправляет запрос в Arduino по протоколу I2C. Затем Arduino с библиотекой Wire принимает запрос шлюза, обрабатывает его и отправляет запрос конечным узлам. Здесь конечный узел представляет собой простой выключатель, который управляется реле. Веб-камера (использующая сервис Motion), подключенная к Raspberry pi, позволит осуществлять удаленный мониторинг устройств.
Цепные соединения:
Действия по написанию сервлета Java, который прослушивает запросы веб-браузера и взаимодействует с Arduino UNO с использованием библиотеки pi4j и связи I2C:
- Создать динамический веб-проект
- Добавьте библиотеку Pi4J в свой проект
- Загрузите Pi4J отсюда
- Скопируйте файл ‘pi4j-core.jar’ в каталог проекта ‘WEB INF / lib’
- Перейдите в проект -> Ресурсы Java -> src и создайте класс Java, который расширяет HttpServlet, и скопируйте следующий код в doGet ().
try { bus = I2CFactory.getInstance(I2CBus.BUS_1); arduino = bus.getDevice(0x04); response.setContentType("text/html"); PrintWriter out = response.getWriter(); String act = request.getParameter("val"); if (act.equals("on")) { byte on = 1; try { arduino.write(on); } catch (Exception e) { e.printStackTrace(); } } else if (act.equals("off")) { byte off = 0; try { arduino.write(off); } catch (Exception e) { e.printStackTrace(); } } } catch (Throwable e) { System.out.println(e); }
- Создайте файл index.html в папке «WebContent» и используйте следующие фрагменты кода для создания веб-страницы.
HTML <label for="flip-1" > Device</label> <select name="flip-1" id="flip-1" data-role="slider" data-track-theme="e"> <option value="off" selected="selected">Off</option> <option value="on">On</option> </select>
Javascript $('#flip-1').bind("change", function(event, ui){ if(event.target.value == 'on'){ var value = "on"; $.getJSON('/projctname/MyServlet?val='+value,function(result) { console.log("ON click success"); }); } else if(event.target.value == 'off'){ var value = "off"; $.getJSON('/projctname/MyServlet?val='+value,function(result) { console.log("OFF click success"); }); } });
- Экспортируйте проект из Eclipse (Файл -> Экспорт) в файл WAR и скопируйте файл WAR в папку webapps сервера Jetty (/ usr / share / jetty / webapps) на Raspberry Pi
- Загрузите следующий код в Arduino UNO для получения данных от Raspberry Pi и управляйте приборами через релейную плату.
#include <Wire.h> void setup() { Wire.begin(4); Wire.onReceive(receiveEvent); Serial.begin(9600); pinMode(6, LOW); } void loop() { } void receiveEvent(int howMany) { while(Wire.available()>0) { int a = Wire.read(); Serial.println(a); if(a == 1){ Serial.println("HIGH"); pinMode(6,HIGH); }else if(a == 0){ Serial.println("Low"); pinMode(6,LOW); } } }
-
Просмотрите вывод из веб-браузера, используя следующий URL
HTTP: // IP: jettyPort / Nameofproject