Spisu treści:

Jak kontrolować gniazda za pomocą Raspberry Pi: 6 kroków
Jak kontrolować gniazda za pomocą Raspberry Pi: 6 kroków

Wideo: Jak kontrolować gniazda za pomocą Raspberry Pi: 6 kroków

Wideo: Jak kontrolować gniazda za pomocą Raspberry Pi: 6 kroków
Wideo: Co potrafi KOMPUTER ZA 200 PLN? | Raspberry PI 4B 2024, Lipiec
Anonim
Jak kontrolować gniazda za pomocą Raspberry Pi
Jak kontrolować gniazda za pomocą Raspberry Pi
Jak kontrolować gniazda za pomocą Raspberry Pi
Jak kontrolować gniazda za pomocą Raspberry Pi
Jak kontrolować gniazda za pomocą Raspberry Pi
Jak kontrolować gniazda za pomocą Raspberry Pi

W tej instrukcji pokażę, jak stworzyć interfejs sieciowy do sterowania gniazdkami w domu za pomocą Raspberry Pi. Zdecydowałem się napisać ten projekt, kiedy zobaczyłem konkurs Czujniki, a ponieważ ten projekt polega na użyciu czujnika do odczytywania kodów z pilota dostarczonego z zakupionymi gniazdami, pomyślałem, że ten projekt będzie idealnie pasował.

Będę starał się utrzymać to na jak najwyższym poziomie i dostarczę kod, aby to wszystko działało. Dla wszystkich, którzy kodują małpy, nie krępuj się grzebać w kodzie i sprawdzaj mnie w komentarzach! Zawsze szukam poprawy. Dużo się w tym dzieje, więc jeśli masz pytania na dowolnym etapie, zostaw komentarz, abym mógł zaktualizować Instruktaż o potrzebne szczegóły.

Ten projekt wykorzystuje gniazda sterowane częstotliwością radiową na 433 MHz w połączeniu z nadajnikiem RF podłączonym do twojego raspberry pi. Gniazda są wyposażone w piloty, które mogą włączać/wyłączać gniazdka, ale to nie jest zabawne! Zamiast tego użyjemy serwera WWW działającego na raspberry pi, który umożliwia każdemu podłączonemu do sieci włączanie lub wyłączanie niektórych gniazdek. Fronton internetowy do tego projektu jest idealny, ponieważ dowolne urządzenie podłączone do sieci w Twojej sieci może być używane jako pilot.

Jest to projekt, o którym marzyłem od lat i choć jest jeszcze miejsce na dodatki, to projekt opisany poniżej jest układem funkcjonalnym.

Kieszonkowe dzieci

  • Raspberry Pi (użyłem RPi 3 Model B+)
  • Nadajnik i odbiornik 433 MHz (użyłem tego)
  • Gniazda 433 MHz (użyłem tego)
  • Swetry damskie-żeńskie (kupiłem tę wiązkę)
  • Komputer lub urządzenie przenośne z dostępem do Internetu

Krok 1: Skonfiguruj swoje Raspberry Pi

Skonfiguruj swoje Raspberry Pi
Skonfiguruj swoje Raspberry Pi

Zacznij od zainstalowania najnowszej wersji Raspbian na swoim nowym Raspberry Pi. Jeśli planujesz użyć istniejącego Pi (co możesz całkowicie zrobić), wszystko, co musisz zrobić, to upewnić się, że masz Pythona 3 na swoim Pi, ponieważ tak jest napisany cały dostarczany przeze mnie kod źródłowy. Aby to zrobić, rodzaj

Python3

do wiersza poleceń. Jeśli masz Pythona 3, powinieneś zobaczyć otwarty terminal Pythona. Wyjdź z terminala, zamykając lub wpisując

Wyjście()

Po potwierdzeniu musisz zainstalować kolbę na swoim Pi. Flask pozwala nam stworzyć nasz serwer WWW. W wierszu poleceń Pi wpisz

kolba instalacyjna sudo pip3

Jeśli nie masz zainstalowanego pip na swoim Pi, musisz wpisać

sudo apt-get zainstaluj python3-pip

Wolę programować na moim Raspberry Pi w zaciszu swojego komputera stacjonarnego. Jeśli też wolisz tę opcję, musisz zainstalować jakieś środowisko do SSH w Pi. PuTTY będzie działać, ale wolę mieć GUI (graficzny interfejs użytkownika), co sprawia wrażenie, że jesteś bezpośrednio na Pi. W przypadku opcji GUI będziesz chciał zainstalować VNC Viewer na komputerze, na którym planujesz pracować. Istnieją również ustawienia, które musisz dostosować na swoim Pi. Instrukcje dotyczące modyfikacji ustawień można znaleźć tutaj.

Krok 2: Podłączanie sprzętu

Podłączanie sprzętu
Podłączanie sprzętu

W tym momencie nadszedł czas na wykonanie wszystkich fizycznych połączeń, które będziesz musiał wykonać w ramach przygotowań do skonfigurowania kodu źródłowego dla tego projektu. Będziesz łączył szpilki nadajnika i odbiornika z pinami GPIO twojego Pi. Będziesz chciał religijnie odnieść się do schematu pinów pinów GPIO. Aby to zrobić, otwórz terminal na swoim Pi i wpisz

pinout

Oto połączenia, które wykonałem. Możesz mieć inną konfigurację, jeśli kupiłeś inny sprzęt nadajnika/odbiornika niż wskazałem we wstępie. Jeśli zdecydujesz się wybrać inne numery pinów niż te, które podaję poniżej, nie bój się! Po pobraniu kodu źródłowego po prostu zmodyfikuj numery pinów zgodnie z potrzebami w pliku RxTx.py.

Odbiornik (duży chip):

  • GND-dowolny wyznaczony pin uziemiający
  • DANE - Pin 11
  • DER - Nie połączono
  • +5V - Dowolny wyznaczony pin +5V
  • ------
  • +5V - Dowolny wyznaczony pin +5V
  • GND-dowolny wyznaczony pin uziemiający
  • GND - Niepodłączony
  • ANT - Nie podłączono

Uwaga: W razie potrzeby możesz podłączyć antenę, ale okazało się, że nie jest to konieczne. Ten mały chip był zaskakująco czuły i wiernie wykrywa sygnały z odległości co najmniej 50 stóp od miejsca, w którym się znajdował, i przez co najmniej dwie ściany.

Nadajnik:

  • P-pin 3,3 V
  • DA - Pin 7
  • G - Dowolny wyznaczony pin uziemiający
  • AN - nie podłączony

Uwaga: Ponownie możesz podłączyć antenę do nadajnika w razie potrzeby, ale stwierdziłem, że nie jest to konieczne. Zasięg jest więcej niż wystarczający (50+ft).

Krok 3: Dodanie kodu

To jest część, nad którą spędziłem większość czasu, kiedy rozwijałem ten projekt. Staram się komentować jak najwięcej, ale prawdopodobnie zostawiłem luki, które mogą wymagać wyjaśnienia, jeśli ktoś z was poświęci czas na zrozumienie tego. Jeśli tak się stanie, zostaw komentarz!

Języki, które są tutaj zaangażowane to:

  • Pyton
  • CSS
  • JavaScript
  • HTML
  • JQuery/Ajax

Python jest używany w serwerze kolby i w

RxTx.py

plik, który obsługuje transmisję i odbiór kodu. CSS służy do generowania stylu strony internetowej. Kto chce nudnej strony internetowej!? Javascript jest używany w każdej obsłudze zdarzeń (naciśnięcie przycisku itp.). HTML jest podstawowym elementem konstrukcyjnym strony internetowej. Wreszcie, JQuery/Ajax służy do komunikacji między stroną internetową a backendem Pythona.

Jeśli wszystkie te języki brzmią onieśmielająco, nie martw się! Wiedziałem tylko, że Python wchodzi do tego projektu, który akurat był językiem, który wymagał najmniej kodowania, wyobraź sobie… Wystarczy powiedzieć, nie spiesz się z przeczesywaniem kodu, jeśli tak się zdecydujesz. Jeśli nie chcesz, nie musisz!

Poniżej znajduje się struktura katalogów, którą wybrałem na tej stronie. Spakowany folder dołączony do tego kroku zawiera cały kod źródłowy w następującej strukturze.

Outlet Switch-> comm-- DataRW.py-- keys.py-- RxTx.py-> strona internetowa-- statyczne----- favicon.ico----- style.css-- szablony----- index.html----- schedule.html-- app.py-- data.file

Możesz umieścić folder przełącznika gniazdka w dowolnym miejscu na swoim Pi. Kiedy będziesz gotowy do uruchomienia serwera WWW, otwórz terminal na swoim Pi i

Płyta CD

(zmień katalog) na katalog strony internetowej. Następnie wpisz

python3 aplikacja.py

do terminala. Jeśli nie było żadnych błędów, powinieneś iść!

PS Prosimy o cierpliwość, jeśli napotkasz jakiekolwiek błędy. Próbowałem je wszystkie zmiażdżyć przed przesłaniem.

Krok 4: Daj mu szansę

Spróbuj!
Spróbuj!

Teraz, gdy już uruchomiłeś kod, możesz poczuć interfejs sieciowy na wyciągnięcie ręki. Sterowanie systemem jest bardzo proste:

  • Możesz dodać dowolną liczbę gniazdek za pomocą interfejsu internetowego.
  • Usunięcie jest tak proste, jak kliknięcie Edytuj, wybranie placówek, które chcesz usunąć, i kliknięcie Usuń.

Powyższy film na YouTube pokazuje, jak faktycznie dodać nowy punkt sprzedaży do swojej listy. Podsumowując to, co pokazuje:

  • Najpierw wprowadź tytuł punktu sprzedaży w polu Tytuł
  • Kliknij lub dotknij poza polem Tytuł, aby umożliwić programowi sprawdzenie, czy tytuł już nie istnieje. Nie możesz mieć tytułów o tej samej nazwie
  • Po zatwierdzeniu, przyciski ON Code i OFF Code są włączone.
  • Naciśnij i przytrzymaj przycisk ON na dostarczonym pilocie i szybko kliknij przycisk ON Code na interfejsie. Przytrzymaj przycisk na pilocie, aż kod binarny wypełni sąsiednie pole.
  • Powtórz poprzedni krok dla kodu OFF.
  • Kliknij OK, a teraz możesz przełączyć to gniazdko!

Jak wspomniano we wstępie, projekt nie jest w 100% ukończony na moje własne potrzeby. Największym komponentem, który muszę jeszcze ukończyć i wdrożyć, jest możliwość planowania. Planuję umożliwić użytkownikowi zbudowanie harmonogramu, który umożliwi automatyczne włączanie i wyłączanie gniazd w wyznaczonych godzinach.

Krok 5: Debugowanie i plik RxTx.py

Debugowanie i plik RxTx.py
Debugowanie i plik RxTx.py
Debugowanie i plik RxTx.py
Debugowanie i plik RxTx.py
Debugowanie i plik RxTx.py
Debugowanie i plik RxTx.py
Debugowanie i plik RxTx.py
Debugowanie i plik RxTx.py

Jedynym znanym ograniczeniem systemu jest to, że istnieje ryzyko niezgodności między różnymi punktami sprzedaży. Komunikaty kodu włączania i wyłączania są dla mojego systemu 25 bitów, a jeśli system ma inną długość komunikatu, nie jest od razu kompatybilny z tym projektem. Jeśli dokładnie postępowałeś zgodnie z instrukcjami i nadal masz problemy z uruchomieniem tej funkcji, najlepszym sposobem na debugowanie problemu będzie wykonanie poniższych czynności.

  • Upewnij się, że masz zainstalowany matplotlib na swoim Pi. Możesz to zrobić, wpisując w terminalu Pi:

    • Python3

    • importuj bibliotekę matplotlib

    • Jeśli pojawi się błąd, musisz zainstalować matplotlib.
    • Wyjdź z powłoki Pythona za pomocą

      Wyjście()

  • Aby zainstalować matplotlib, wpisz

    sudo pip3 zainstaluj matplotlib

  • do terminala
  • Pobierz załączony plik test.py i umieść go obok pliku RxTx.py na swoim Pi
  • Otwórz terminal Pythona i zmień katalog na folder comm.
  • Rodzaj

    python3 test.py

  • Gdy pojawi się komunikat „**Rozpoczęto nagrywanie**”, naciśnij i przytrzymaj przycisk ON lub OFF na pilocie, aż nagrywanie się zakończy.
  • Program załaduje rysunek z matplotlib, który wygląda podobnie do powyższego. Powiększaj, aż zobaczysz powtarzający się sygnał, jak pokazano na powyższych zdjęciach.
  • Policz logiczne 1 i logiczne 0 dla każdego komunikatu, gdzie komunikat jest jedną iteracją powtarzającego się sygnału widzianego powyżej. Jeśli suma wynosi 25, prawdopodobnie plik RxTx.py nie jest winny. Jeśli napotkasz coś innego niż 25, koniecznie skomentuj poniżej, a przerobię plik RxTx.py, aby był bardziej otwarty (lub możesz spróbować swoich sił).

Co jeśli nie widzę powtarzającego się sygnału?

Jeśli nie widzisz powtarzającego się sygnału, jedna z dwóch rzeczy jest nieprawidłowa. Najpierw sprawdź, czy wszystkie połączenia przewodów połączeniowych są prawidłowo wykonane. Jeśli wszystko wygląda dobrze, możesz mieć zły odbiornik. Kupiłeś ten, który zasugerowałem? Kiedy kupiłem swój pierwszy chip odbiornika, było bardzo głośno. Tak głośno, że nie mogłem uzyskać wyraźnego sygnału. Potem zwróciłem ten chip i podniosłem ten, który połączyłem, i nie mogło działać lepiej.

Krok 6: Ciesz się

Wiesz, że masz możliwość włączania/wyłączania gniazdek z telefonu, tabletu, komputera lub innego urządzenia z dostępem do Internetu! Daj znać, co myślisz w komentarzach!

Zalecana: