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: The Unofficial TutorialNiezależ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, którego nie możesz przegapić. Czytaj więcej 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óry działa na Raspberry Pi i może być zintegrowany z szeroką gamą gotowego zestawu do inteligentnego domu, a także Arduino. Sprawdź poniższy film, aby zobaczyć zajawka, a następnie przejdź do naszego

instagram viewer
Rozpoczęcie pracy z OpenHAB na Raspberry Pi Rozpoczęcie pracy z OpenHAB Home Automation na Raspberry PiOpenHAB to dojrzała platforma automatyki domowej o otwartym kodzie źródłowym, która działa na różnych urządzeniach i jest niezależny od protokołu, co oznacza, że ​​można go podłączyć do prawie każdego sprzętu automatyki domowej na rynku dzisiaj. Czytaj więcej 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 użytkownika 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 te)
  • Zasilany koncentrator USB
Gniazda RC

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

Rozpocząć na nowo

W tym projekcie wykorzystamy Raspian 11 systemów operacyjnych, które działają na twoim Raspberry PiNiezależnie od projektu Raspberry Pi, jest do tego odpowiedni system operacyjny. Pomagamy Ci znaleźć najlepszy Raspberry Pi OS dla Twoich potrzeb. Czytaj więcej , i zdecydowanie zalecamy rozpoczęcie od nowej instalacji, jeśli wcześniej przeprowadziłeś inne hacki i tym podobne. Pobierz najnowszą wersję Obraz Raspian, skopiuj go na kartę SD i pamiętaj o rozszerzeniu systemu plików i włączeniu SSH. Reszta tego przewodnika zakłada, że ​​już to zrobiłeś, i łączysz się przez SSH przy użyciu domyślnego użytkownika.

Jeśli nie zrobiłeś tego wcześniej, ten film wyjaśnia proces przygotowywania karty SD w OS X:

A ten dla użytkowników systemu Windows:

Przygotowanie

Proces instalacji jest dość pracochłonny i wywodzi się z instrukcje tutaj. Niestety były one przestarzałe lub nie zostały zaprojektowane dla Raspian, więc dostosowałem je znacznie 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 mówię „długi czas”, mam na myśli najlepszą część dnia - więc 178 filiżanek byłoby bardziej odpowiednie.

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 warunki wstępne:

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 ŚCIEŻKI.

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/36d45897cd943fbd6d071c096eb4b71b37d0fcbb/mongodb.sh. sudo chmod + x mongodb. sudo update-rc.d mongodb defaults. mongod

To ostatnie polecenie uruchomi serwer Mongo i musisz otworzyć nowy Terminal, aby kontynuować wykonywanie innych poleceń. Nie jestem do końca pewien tego kroku, więc jeśli ktoś może to poprawić w komentarzach na temat tego, jak mongod uruchamia się automatycznie przy starcie, byłoby to 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 clone git: //github.com/ni-c/heimcontrol.js.git. cd heimcontrol.js. instalacja npm. 

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 zamień localhost na adres IP, jeśli uzyskujesz do niego dostęp z innego komputera (i możesz również skonfigurować przekierowanie portów 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 masz problem z przekierowaniem portów i dlatego Twoja nowa, błyszcząca aplikacja nie działa? Twoja Xbox nie pozwala ci grać w gry, twoje pobieranie torrentów odmawia ... Czytaj więcej aby uzyskać do niego dostęp z dowolnego miejsca na świecie), dlatego zachęcam do przejrzenia i sprawdzenia, czy wszystko działa z bazą danych przed podłą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 są wyposażone w 3 gniazda i otworzyłem pilota, aby móc bezpośrednio połączyć się z układem 433 MHz w środku. Znalazłem instrukcje na ten temat tutaj.

rc-controller-hack

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

arduino-rcswitch

Wtyczka działa, wysyłając „kody trójstanowe”, ale różnią się one w zależności od producenta. Zobacz Dokumentacja RCSwitch znaleźć swoje dokładne kody. To 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ć ten kod został przesłany - Sugeruję, aby skopiować i wkleić, 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.

ustawienia rc

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

heimcontrol-menu-settings

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.

ustawienie rcswitch

Robaki:

Po wielu godzinach debugowania kodu okazało się, ż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 był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 do 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 pilota, co ja, zmień linie od 80 na:

// Wyślij kod RC. if (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ą obsługiwane również. Prawdopodobnie wrócę do nich później, z kilkoma ulepszeniami. Jeśli to wszystko było dla ciebie trochę zbyt skomplikowane, być może sprawdź je projekty Arduino przyjazne dla początkujących 15 świetnych projektów Arduino dla początkującychInteresujesz się projektami Arduino, ale nie wiesz, od czego zacząć? Te projekty dla początkujących nauczą Cię, jak zacząć. Czytaj więcej .

James ma licencjat z zakresu sztucznej inteligencji i jest certyfikowany przez CompTIA A + i Network +. Jest głównym programistą MakeUseOf i spędza wolny czas grając w paintball VR i gry planszowe. Buduje komputery od dziecka.