Sozusagen "Smart Home": Wie kann man "intelligente" Beleuchtung machen?

Als wir nach Hause kamen, war es immer unpraktisch: Sie öffnen die Tür, und dann ist es dunkel. Dann gab es eine Idee, die Hintergrundbeleuchtung im Flur zu machen, aber nicht einfach, und was sich vom Telefon aus aktivieren lässt, bevor Sie nach Hause kommen. Gut gesagt - es bedeutet, dass Sie anfangen müssen.
Einige Gedanken vom Autor, bevor Sie diesen Artikel lesen.
(Bevor wir den Artikel weiter lesen, sollte ich an dieser Stelle natürlich einen Kommentar hinzufügen, dass dieser Text zunächst als kleine Einführung in die Arbeit mit gpio mit Java, wie in diesem Beispiel gezeigt, betrachtet werden sollte, und nicht als Anweisung, die jeden Benutzer überzeugt , die Notwendigkeit, diesen Weg zu gehen)


Da weitere Erweiterungen dieses Systems geplant sind (oder nicht), wurde beschlossen, einen Einplatinencomputer als Basis zu verwenden. Mit einem Mausklick auf Ali wurde der billigste <

orange pi zero 256mb aufgenommen .



Verbindung


Dann ist der mechanische Teil nichts komplizierter. Genauso wie beim Arduino-Board nur in Übereinstimmung mit den Ausgaben auf dem orangefarbenen Pi.



Wir nehmen das übliche Relais für "DIY". Zum einen verbinden wir den Stromversorgungs- und Kontrollstift, zum anderen trennen wir das Stromkabel unserer Lampe und stecken es in das Relais (in meinem Fall war es ein Diodenband).



Schema:



Das ist alles, du bist ein Genie.

Etwas Code


Mit dem technischen Teil fertig. Gehen Sie zur Software, auch hier ist alles einfach:

  1. Wir installieren armbian oder ein anderes Linux auf der SD-Karte , aber ich habe mich für dieses entschieden. Ich empfehle, ein Bild mit einem Radierer zu schreiben .
  2. Als nächstes installieren Sie Java mit apt-get in 3 Befehle:

    #sudo add-apt-repository ppa:webupd8team/java	#sudo apt-get update#sudo apt-get install oracle-java8-installer
  3. Mit Gita set In wiringPi in unserem Vorstand (es enthält eine Vielzahl von Bibliotheken mit und alle gpio tulzy für die gleiche Arbeit)
    auch nicht schwer:

    #git clone https://github.com/vladikoms/WiringOP-Zero.git#cd WiringOP-Zero#chmod +x ./build#sudo ./build

    Nun, überprüfe:

    #gpio -v#gpio readall

Auf diesem Teil mit dem Brett fertig, gehen Sie zum Computer und Ihre Lieblingsidee.

Wir werden den Server im Frühjahr bereitstellen, gehen Sie also auf deren Website oder erstellen Sie ein Frühlingsprojekt mit Hagel.



Um mit gpio zu arbeiten, müssen Sie die pi4j- Bibliothek installieren. Dazu müssen Sie ein Repository und eine Abhängigkeit hinzufügen.

Und dann sollte das letzte Skript ungefähr so ​​aussehen:

build.gradle
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'//а вот зависимость
}


Ausgezeichnet in der Klasse, die gpio verwaltet:

Gpio.java
publicclassMyGpio{
    private  GpioController gpio ;
    private GpioPinDigitalOutput myLed;
    publicGpio(){
        try { // с ошибками не особо пока что запариваемся только прототип же( наверное)
            PlatformManager.setPlatform(Platform.ORANGEPI);// указываем , что  работаем с OrangePI
        } catch (PlatformAlreadyAssignedException e) {
            e.printStackTrace();
        }
        gpio= GpioFactory.getInstance();
        myLed = gpio.provisionDigitalOutputPin(OrangePiPin.GPIO_08); // инициализируем 8 пин как выход// то есть будем управлять его напряжением                              
    }
    publicvoidlight(){ // метод отвечающий за свечениеif(myLed.isHigh()) myLed.low(); // если на выбранном пине высокое напряжение сделать его равным напряжению на землеelse myLed.high();// иначе подать высокое напряжение на выбранный пин (8)
    }   
     publicvoidblink(){ // ну и так помигать для видуfor (int i =0;i<10;i++) {
            try {
                light();
                Thread.sleep(500);               
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }
    }                        
}


Der vorgestellte Code ist recht einfach und impliziert keine gute Verwaltung der Board-Pins, öffnet aber die Tür dazu.

Nun, die letzte Etappe bei der Erstellung eines Controllers im Frühjahr

GpioController.java
@ControllerpublicclassGpioController{
    @RequestMapping("/blink")
    @ResponseBodypublic String blink(HttpServletResponse response, HttpServletRequest request ){
        Gpio gpio =new Gpio();
        gpio.blink();
        return"blink";
    }
    @RequestMapping("/light")
    @ResponseBodypublicvoidlight(){
        Gpio gpio =new Gpio();
        gpio.light();
    }
}


Nun einige neue Gesten in Form der Erstellung einer JAR-Datei mit Gradle. Danach die Übertragung per Sftp an die Karte (bei vielen Ideen können Sie die Bereitstellung direkt konfigurieren) und den Jar auf dem Gerät ausführen. Dann gehen wir zum gepflegten 192.168.0. ***: 8080 / light im Browser
und hoffen, dass es uns helfen wird, nachts die Finger zu halten oder das Licht anzuschalten, bevor wir nach Hause kommen.

Im nächsten Teil (wenn ich jemals dazu komme) werde ich definitiv verschiedene Möglichkeiten zeigen, mit unserem "intelligenten" Zuhause zu interagieren.

hier ist die Quelle
und Arbeit mit dem Kamm (gpio)

Jetzt auch beliebt: