- PVSM.RU - https://www.pvsm.ru -
Приходя домой, всегда было неудобно: открываешь дверь, а дальше темно, тогда появилась идея сделать подсветку в коридоре, да непростую, а что бы с телефона можно было включить до прихода домой. Ну сказано — значит надо начинать.
Так как в дальнейшем планируются расширения этой системы (или нет), было решено взять одноплатный компьютер за основу. Легким движением мыши на али был подобран самый дешевый<
spoiler title=«orange pi zero 256mb»>
orange pi zero 256mb [1].
Дальше механичекая часть, тут ничего сложного. Точно так же, как к плате ардуино, только в соответсвии с выходами на orange pi.
Берем обычное реле для «самоделкиных». С одной стороны подключаем питание и управляющий пин, с другой стороны разрезаем провод питания нашего светильника и вставляем в реле ( в моем случае это была диодная лента).
Схема:
Вот и все, вы гений.
С технической частью на этом закончили. Переходим к софту, тут тоже все просто:
#sudo add-apt-repository ppa:webupd8team/java
#sudo apt-get update
#sudo apt-get install oracle-java8-installer
#git clone https://github.com/vladikoms/WiringOP-Zero.git
#cd WiringOP-Zero
#chmod +x ./build
#sudo ./build
Ну и проверим:
#gpio -v
#gpio readall
На этой части с платой закончили, переходим к компьютеру и любимым ide.
Сервер мы будем разворачивать на spring, так что идем на их сайт [6] или же в ide создаем спринговый проект с градлом.
Для работы с gpio необходимо установить библиотеку pi4j [7], для этого нужно добавить репозиторий и зависимость.
И тогда финальный скрипт долже выглядеть как-то так:
buildscript {
ext {
springBootVersion = '2.1.0.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.lary.sh'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
jar{
baseName = 'SH'
version = '0.0.1-SNAPSHOT'
}
repositories {
mavenCentral()
maven{
url "https://oss.sonatype.org/content/groups/public" //вот репозиторий
}
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-data-rest')
implementation('org.springframework.boot:spring-boot-starter-web')
runtimeOnly('org.springframework.boot:spring-boot-devtools')
testImplementation('org.springframework.boot:spring-boot-starter-test')
compile 'com.pi4j:pi4j-core:1.2-SNAPSHOT' //а вот зависимость
}
Отлично переходим к управляющему gpio классу:
public class MyGpio{
private GpioController gpio ;
private GpioPinDigitalOutput myLed;
public Gpio() {
try { // с ошибками не особо пока что запариваемся только прототип же( наверное)
PlatformManager.setPlatform(Platform.ORANGEPI);// указываем , что работаем с OrangePI
} catch (PlatformAlreadyAssignedException e) {
e.printStackTrace();
}
gpio= GpioFactory.getInstance();
myLed = gpio.provisionDigitalOutputPin(OrangePiPin.GPIO_08); // инициализируем 8 пин как выход
// то есть будем управлять его напряжением
}
public void light(){ // метод отвечающий за свечение
if(myLed.isHigh()) myLed.low(); // если на выбранном пине высокое напряжение сделать его равным напряжению на земле
else myLed.high();// иначе подать высокое напряжение на выбранный пин (8)
}
public void blink(){ // ну и так помигать для виду
for (int i =0;i<10;i++) {
try {
light();
Thread.sleep(500);
}
catch (Exception e){
e.printStackTrace();
}
}
}
}
Представленный код достаточно простой и не предполагает хорошего управления пинами платы, но открывает дверь на пути к этому.
Ну и завершающая стадия создание контроллера в spring
@Controller
public class GpioController {
@RequestMapping("/blink")
@ResponseBody
public String blink(HttpServletResponse response, HttpServletRequest request )
{
Gpio gpio =new Gpio();
gpio.blink();
return "blink";
}
@RequestMapping("/light")
@ResponseBody
public void light(){
Gpio gpio =new Gpio();
gpio.light();
}
}
Теперь пара последних телодвижений в виде создания jar файла при помощи gradle. После этого перенос по sftp на плату ( во многих иде можно настроить деплой напрямую) и запустить jar на устройстве. Далее идем в браузере на заветные 192.168.0.***:8080/light
и наслаждаемся, попутно надеясь, что это поможет сохранить наши пальцы ночью или включать свет, до прихода домой.
В следующей части (если когда нибудь доберусь до нее) обязательно покажу разные способы взаимодействия с нашим «умным» домом.
вот тут исходники [8]
а тут работа с гребенкой (gpio) [9]
Автор: Larymar
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/300133
Ссылки в тексте:
[1] orange pi zero 256mb: http://www.orangepi.org/orangepizero/
[2] armbian: https://www.armbian.com/
[3] etcher.: https://www.balena.io/etcher/
[4] java: https://pcminipro.ru/os/linux-armbian/ustanovka-java-na-armbian/
[5] wiringPi: https://micro-pi.ru/wiringop-wiringpi-%D0%BD%D0%B0-orange-pi-pc/
[6] сайт: https://start.spring.io/
[7] pi4j: http://pi4j.com/
[8] вот тут исходники: https://gitlab.com/maindlab/opspringserver
[9] а тут работа с гребенкой (gpio): https://gitlab.com/maindlab/op
[10] Источник: https://habr.com/post/430928/?utm_source=habrahabr&utm_medium=rss&utm_campaign=430928
Нажмите здесь для печати.