Podręcznik automatyki domowej z Raspberry Pi i Arduino

  • Edmund Richardson
  • 0
  • 2493
  • 608
Reklama

Wcześniej rozmawialiśmy o względnych zaletach Arduino i Raspberry Pi - każda z nich ma swoje zalety. Nie muszą być ani jednym, ani wyborem - połącz je, aby uzyskać to, co najlepsze z obu światów. Automatyka domowa jest idealnym kandydatem do tego. Rynek automatyki domowej jest zalany drogimi systemami konsumenckimi, niekompatybilnymi ze sobą i kosztownymi w instalacji. Jeśli masz Raspberry Pi Raspberry Pi: Nieoficjalny samouczek Raspberry Pi: Nieoficjalny samouczek Niezależnie od tego, czy jesteś obecnym właścicielem Pi, który chce dowiedzieć się więcej, czy potencjalnym właścicielem tego urządzenia o wielkości karty kredytowej, nie jest to przewodnik chcę przegapić. i Arduino, możesz w zasadzie osiągnąć to samo za ułamek ceny, zakładając, że chcesz poświęcić czas i wysiłek.

Aktualizacja: odkąd ten artykuł został napisany, odkryłem OpenHAB, darmową platformę automatyki domowej o otwartym kodzie źródłowym, która działa na Raspberry Pi i może być zintegrowana z szeroką gamą gotowego zestawu inteligentnego domu, jak również Arduino. Zapoznaj się z poniższym filmem, aby dowiedzieć się więcej, a następnie przejdź do naszego artykułu „Pierwsze kroki z OpenHAB na Raspberry Pi” Pierwsze kroki z OpenHAB Home Automation na Raspberry Pi Pierwsze kroki z OpenHAB Home Automation na Raspberry Pi OpenHAB to dojrzała automatyka domowa typu open source platforma, która działa na różnych urządzeniach i jest niezależna od protokołu, co oznacza, że ​​może łączyć się z prawie każdym sprzętem automatyki domowej na rynku. przewodnik, aby dowiedzieć się więcej.

Heimcontrol.js to aplikacja Node.js zbudowana do działania na Raspberry Pi. W połączeniu z Arduino i niektórymi gotowymi gniazdami zdalnego sterowania ułatwia sterowanie urządzeniami AC. Możesz dodać czujniki temperatury, a nawet kontrolować telewizor - ale dzisiaj zajmiemy się podstawami i rozbudujemy projekt w późniejszym samouczku.

Oto podział projektu:

  • Raspberry Pi będzie działać jako mózg i brama operacji - uruchomi aplikację Node, powiązaną z bazą danych Mongo i będzie obsługiwać interfejs frontonu do dowolnej przeglądarki internetowej.
  • Arduino, zasilany z Pi, będzie na razie łączył elektronikę - przełączniki zasilania sterowania radiowego.

Aby to zrobić, będziesz potrzebować:

  • Arduino i Raspberry Pi
  • Niektóre zdalnie sterowane gniazda i kontroler (użyłem ich)
  • Zasilany koncentrator USB

Zanim zaczniemy, oto film demonstracyjny od samego twórcy projektu.

Rozpocząć na nowo

Będziemy używać Raspian do tego projektu. 11 systemów operacyjnych Raspberry Pi, które możesz wypróbować 11 systemów operacyjnych Raspberry Pi, które możesz wypróbować Niezależnie od projektu Raspberry Pi, istnieje system operacyjny. Pomagamy Ci znaleźć najlepszy Raspberry Pi OS dla Twoich potrzeb. , i zdecydowanie sugeruję rozpoczęcie od nowej instalacji, jeśli wcześniej przeprowadzałeś inne hacki i tym podobne. Pobierz najnowszy obraz Raspian, skopiuj go na kartę SD i pamiętaj o rozszerzeniu systemu plików i włączeniu SSH. Pozostała część tego przewodnika zakłada, że ​​to zrobiłeś i łączysz się przez SSH przy użyciu domyślnego użytkownika.

Jeśli nie zrobiłeś tego wcześniej, to wideo wyjaśnia proces przygotowania karty SD w OS X:

A ten dla użytkowników systemu Windows:

Przygotowanie

Proces instalacji jest dość pracochłonny i wynika z instrukcji tutaj. Niestety były one przestarzałe lub nie zostały zaprojektowane dla Raspian, więc znacznie je poprawiłem poniżej. Poniższe kody można w większości wkleić w blokach - nie trzeba wklejać jeden po drugim. Ponieważ kompilujemy kilka rzeczy na samym Pi, ostrzegamy, że cały ten proces zajmie dużo czasu. Powiedziałbym, że idź sobie zrobić filiżankę herbaty - ale kiedy powiem “długi czas”, Mam na myśli najlepszą część dnia - więc 178 filiżanek byłoby bardziej odpowiednich.

Wszystkie polecenia należy wpisać w terminalu, w niektórych przypadkach może być konieczne naciśnięcie klawisza Enter. Te kilka pierwszych poleceń zaktualizuje system i zainstaluje wstępne wymagania:

sudo apt-get update sudo apt-get upgrade sudo apt-get zainstaluj git-core git scons build-essential scons libpcre ++ - dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev-libboost-filesystem-dev 

Następnie musimy zainstalować Węzeł:

sudo mkdir / opt / node wget http://nodejs.org/dist/v0.10.2/node-v0.10.2-linux-arm-pi.tar.gz tar xvzf node-v0.10.2-linux-arm-pi. tar.gz sudo cp -r node-v0.10.2-linux-arm-pi / * / opt / node sudo ln -s / opt / node / bin / node / usr / local / bin / node sudo ln -s / opt / node / bin / npm / usr / local / bin / npm 

Dodaj zmienną PATH do swojego profilu, aby system operacyjny wiedział, gdzie znajduje się Węzeł. Użyj nano edytora tekstu w następujący sposób:

sudo nano / etc / profile 

Znajdź linię, która mówi eksport ŚCIEŻKI i zamień na:

NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" eksport PATH 

Naciśnij Ctrl-X, aby wyjść, a Y, aby zapisać.

Może być konieczne wylogowanie się i ponowne zalogowanie, aby zmiany ścieżki zaczęły obowiązywać, ale można przetestować za pomocą polecenia:

który węzeł 

Jeśli nie otrzymasz żadnych danych wyjściowych wskazujących na plik binarny Node, coś poszło nie tak.

Mongo

Następnym zadaniem jest instalacja Mongo. Mongo to oparta na dokumentach baza danych No-SQL coraz częściej wykorzystywana przez aplikacje internetowe. Niestety instalacja potrwa wieczność, ponieważ musimy go skompilować. Podczas uruchamiania następujących poleceń pojawi się wiele błędów, takich jak:

standardowe wejście: 13085: Ostrzeżenie: użycie swp b jest przestarzałe dla tej architektury 

Nie martw się o to. Uruchom następujące polecenia, aby zainstalować Mongo:

git clone git: //github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix = / opt / mongo install scons -c 

Kiedy to się skończy, najpierw potrzebujemy trochę więcej konfiguracji, aby naprawić problemy z uprawnieniami i upewnić się, że działa podczas uruchamiania.

sudo useradd mongodb sudo mkdir / data / dbb sudo chown $ USER / data / db cd /etc/init.d sudo wget -O mongodb https://gist.github.com/ni-c/fd4df404bda6e87fb718/raw/36d45897cd943fbd6d071c09 .sh sudo chmod + x mongodb sudo update-rc.d mongodb defaults mongod

To ostatnie polecenie uruchomi serwer Mongo i będziesz musiał otworzyć nowy Terminal, aby kontynuować z innymi poleceniami. Nie jestem całkowicie pewien tego kroku, więc jeśli ktokolwiek może to poprawić w komentarzach na temat tego, jak mongod uruchamia się automatycznie przy starcie, byłoby bardzo mile widziane. Na razie działa, ale nie elegancko.

sudo zamknięcie -r teraz

Wreszcie nadszedł czas, aby zainstalować aplikację Heimcontrol.js Node.

cd ~ pi git klon klonuj git: //github.com/ni-c/heimcontrol.js.git cd heimcontrol.js npm install 

Możesz uruchomić aplikację, pisząc

 węzeł heimcontrol.js 

W tym momencie powinieneś być w stanie uzyskać dostęp do interfejsu sterowania za pomocą http: // localhost: 8080 z Pi lub zastąp localhost adresem IP, jeśli uzyskujesz do niego dostęp z innego komputera (a możesz także skonfigurować przekierowanie portów Co to jest przekierowanie portów i jak może mi pomóc? [MakeUseOf wyjaśnia] Co to jest przekierowanie portów i Jak może mi pomóc? [MakeUseOf wyjaśnia] Czy płaczesz trochę w środku, gdy ktoś mówi ci, że jest problem z przekierowaniem portów i dlatego Twoja nowa błyszcząca aplikacja nie działa? Twoja Xbox nie pozwala ci grać w gry, pobierasz torrenty odmówić ... dostępu do niego z dowolnego miejsca na świecie), więc zachęcam do przejrzenia i sprawdzenia, czy wszystko działa z bazą danych przed dołączeniem Arduino.

Sprzęt komputerowy

W końcu chciałbym mieć przekaźnik przewodowy, ale na razie będę korzystać z bezpieczniejszej opcji przełączników sterowanych radiowo.

Użyłem niedrogich zestawów 20 funtów od Maplin, które pochodzą z 3 gniazdami i otworzyłem pilota, aby móc bezpośrednio połączyć się z układem 433 MHz w środku. Tutaj znalazłem instrukcje dotyczące tego.

Możesz także kupić pojedyncze nadajniki 433 MHz gotowe do użycia w serwisie eBay lub od dostawców elektroniki użytkowej. Wystarczy podłączyć VCC do 5 V na Arduino, GND i jeden pin kontrolny - pamiętaj, którego użyłeś. (Schemat Willi Thiel)

Wtyczka działa poprzez wysłanie “kody trójstanowe”, ale różnią się one w zależności od producenta. Dokładne kody znajdują się w dokumentacji RCSwitch. Ten przewodnik wiki może również pomóc.

Komunikacja z Arduino odbywa się za pomocą biblioteki Node o nazwie duino. Zatrzymaj aplikację Heimcontrol, jeśli jest uruchomiona, i zainstaluj most Arduino za pomocą następującego polecenia.

npm zainstaluj duino 

Arduino musi mieć załadowany ten kod - sugeruję skopiowanie i wklejenie, aby zainstalować to z innego komputera. Zasadniczo jest to program nasłuchujący, który reaguje na polecenia szeregowe z Pi, ale nic nie stoi na przeszkodzie, abyś rozszerzył go o własne funkcje.

Po uruchomieniu aplikacji internetowej przejdź do Ustawienia menu> Arduino.

Stamtąd możesz dodać nowy element, wybierając metodę RCSwitch, pin nadajnika i kod adresu trójstanowego. Pamiętaj, aby zapisać, a następnie wróć do ekranu głównego ekranu, aby wyświetlić nowy przycisk.

Robaki:

Po wielu godzinach debugowania kodu zauważyłem, że jednocyfrowe numery pinów nie działają - upewnij się, że nadajnik jest ustawiony na pin 10 być pewnym.

Odkryłem również, że wtyczka Arduino została zakodowana na stałe z niepoprawnymi końcowymi bitami dla kodów trójstanowych, których potrzebowały moje odbiorniki. Najpierw małe wyjaśnienie: kody trójstanowe składają się z 3 bajtów informacji. Pierwszy określa numer sieci (1-4), a drugi podaje adres nadajnika-odbiornika (ponownie 1-4, co daje maksymalnie 16 adresowalnych gniazd). Ostatni bajt składa się z dwóch bitów wypełnienia oraz 2 bitów dla włączenia / wyłączenia. Niestety ostatni bajt jest na stałe zapisany we wtyczce Arduino - w moim przypadku kod włączania / wyłączania był niepoprawny.

Musiałem ręcznie edytować plugins / arduino / index.js użyć poprawnych kodów. Jeśli używasz tych samych gniazd zdalnego sterowania co ja, zmień linie od 80 na:

// Wyślij kod RC, jeśli (item.value) return that.pins [item.pin] .triState (item.code + „FFFF”); // zmiana z FF0F else return that.pins [item.pin] .triState (item.code + „FFF0”); // zmiana z FF00

Oto film pokazujący wszystko, co działa:

Zostawię to tutaj, ale odczyty czujników i piloty na podczerwień są również obsługiwane. Prawdopodobnie wrócę do nich później z kilkoma dodatkami. Jeśli to wszystko było dla ciebie trochę zbyt skomplikowane, być może sprawdź te przyjazne dla początkujących projekty Arduino 15 Wielkich projektów Arduino dla początkujących 15 Świetnych projektów Arduino dla początkujących Zainteresowane projektami Arduino, ale nie wiesz, od czego zacząć? Te projekty dla początkujących nauczą Cię, jak zacząć. .




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.