W tym opracowaniu chcemy zaproponować skonstruowanie prostego urządzenia, które chciałby posiadać każdy tajny agent lub detektyw, a mianowicie prosty system alarmowy, który będzie się uruchamiał, gdy detektor ruchu wykryje przemieszczanie się osób lub przedmiotów. Ten prosty system to nie tylko zabawa, ale praktyczna nauka i pomoc w przejściu przez podstawy programowania Arduino i konstruowania urządzeń elektronicznych. Będzie to w zasadzie prosty alarm (brzęczyk emitujący dźwięk plus czerwona migająca dioda LED) połączony z detektorem ruchu. Użytkownik będzie mógł oczywiście wyłączyć alarm, naciskając przycisk mikroprzełącznika. W celu wykonania projektu takiego urządzenia spróbujemy wykonać następujące czynności: najpierw zajmiemy się opracowaniem wymagań dla tego projektu, jeśli chodzi o sprzęt i oprogramowanie, następnie zobaczymy, jakie musimy skompletować części i sprzęt do naszego projektu, a na koniec skonfigurujemy nasz system przy użyciu środowiska programistycznego Arduino IDE. Wymagania sprzętowe i programistyczne Po pierwsze, spójrzmy, jakie są wymagane podzespoły dla tego projektu. Ponieważ jest to pierwsze takie opracowanie, poświęcimy więcej czasu na szczegółowy opis różnych elementów, gdyż będą to składniki, których będziemy używać w wielu innych projektach opisywanych na naszym portalu. Pierwszym, a zarazem głównym elementem naszego projektu, jest płyta (moduł) Arduino Uno pokazana na fotografii 1. W wielu opracowaniach, które są i będą prezentowane na portalu jest to mózg projektów, Fot. 1. Widok płyty modułu Arduino Uno 1
które będziemy mogli wykonać samodzielnie. We wszystkich projektach będziemy używać oficjalnej płyty Arduino Uno R3. Jednakże można użyć równoważnej płyty innej marki lub innej płyty Arduino, na przykład płyty Arduino Mega. Innym istotnym elementem naszego systemu alarmowego będzie brzęczyk (buzzer) pokazany na fotografii 2. Fot. 3. Czujnik ruchu uruchamiający system alarmowy wyposażenie do przyłączenia do płytki Arduino. Można użyć czujnika dowolnej marki, powinien on jedynie być zasilany napięciem 5V, aby był kompatybilny z płytą Arduino Uno. Fot. 2. Brzęczyk używany w naszym systemie alarmowym Jest to bardzo prosty element, który służy do generowania prostych dźwięków z urządzenia Arduino. Przy jego użyciu nie można odtwarzać bardziej skomplikowanych plików muzycznych np. mp3, ale jest on wystarczająco dobry dla systemu alarmowego. Oczywiście można użyć dowolnego innego brzęczyka, który jest dostępny, ale w tym momencie celem jest po prostu wyemitowanie dźwięku. Następnym potrzebnym elementem jest detektor (czujnik) ruchu, pokazany na fotografii 3. W naszym projekcie zaproponowaliśmy użycie bardzo prostego detektora ruchu PIR. Ten czujnik mierzy światło podczerwone (IR) emitowane przez przemieszczające się obiekty w polu widzenia detektora, na przykład przez poruszające się osoby. To jest naprawdę proste i tanie 2 Ostateczna lista wszystkich elementów, które będziemy używać w tym projekcie jest następująca: płytka Arduino Uno brzęczyk (buzzer) czujnik ruchu PIR dioda LED czerwona rezystor 330Ω rezystor 1kΩ miniprzełącznik płytka montażowa do projektów z Arduino (Breadboard) łączówki (odcinki przewodów z zarobionymi końcówkami) Po stronie oprogramowania jedyną rzeczą, której będziemy potrzebować w tym projekcie jest najlepiej najnowsza wersja zintegrowanego środowiska programistycznego IDE Arduino, którą można pobrać z następującego adresu URL: https://www.arduino.cc/en/main/software. Konfiguracja sprzętu Teraz skompletujemy sprzęt do naszego projektu. Ponieważ nie jest to zbyt skomplikowany projekt, będzie to dość proste zadanie. Jest jednak kilka elementów, więc należy pamiętać o tym, aby wykonać wszystkie kroki.
Fot. 4. Schemat montażowy naszego systemu alarmowego Na fotografii 4 pokazano schemat, który pomoże nam podczas tego procesu. Zacznijmy od zamontowania wszystkich elementów na płycie montażowej. Najpierw należy umieścić brzęczyk, mikroprzełącznik i diodę LED na płycie zgodnie ze schematem pokazanym na fotografii 4. Następnie należy umieścić rezystor 330Ω połączony szeregowo z anodą diody LED (dowolne wyprowadzenie rezystora połączone z dłuższym wyprowadzeniem diody LED) i podłączyć rezystor 1kΩ do jednego z kontaktów (wyprowadzeń) mikroprzełącznika. Fotografia 5 pokazuje jak powinien wyglądać nasz projekt po tych czynnościach. Fot. 5. Widok naszego projektu po zamontowaniu elementów po tym etapie, przed rozpoczęciem łączenia elementów z płytą Arduino 3
Teraz będziemy łączyć wszystkie podzespoły umieszczone na płycie montażowej z modułem Arduino. Zacznijmy od zasilania. W pierwszej kolejności należy podłączyć kontakt 5V płyty Arduino do jednej czerwonej szyny zasilającej na płytce montażowej, a kontakt GND (masa) płyty Arduino do jednej niebieskiej szyny zasilającej na płycie montażowej. Teraz podłączymy brzęczyk. Jedno z wyprowadzeń brzęczyka łączymy z pinem numer 5 płyty Arduino, a drugie wyprowadzenie podłączamy do niebieskiej szyny zasilającej na płycie montażowej. Po podłączeniu brzęczyka podłączymy diodę LED. W tym celu wolne wyprowadzenie rezystora podłączamy do pinu nr 6 płyty Arduino, a wolne wyprowadzenie diody LED (katoda) łączymy z masą, czyli podłączamy do niebieskiej szyny zasilającej. Następnym krokiem będzie podłączenie przełącznika do naszej płyty Arduino. W tym celu zapoznajmy się ze schematem i kontrolujmy nasze czynności, gdyż połączenia są bardziej złożone. Zasadniczo należy podłączyć wolne wyprowadzenie rezystora do masy (do niebieskiej szyny zasilającej) i połączyć styk, który jest podłączony do przełącznika do kontaktu 5V za pośrednictwem czerwonej szyny zasilającej. Wreszcie, należy podłączyć drugą stronę przełącznika do pinu 12 płyty Arduino. Na koniec, połączmy czujnik ruchu PIR z płytą Arduino. W tym celu należy podłączyć wyprowadzenie VCC czujnika ruchu do czerwonej szyny zasilającej i wyprowadzenie GND do niebieskiej szyny zasilającej. Wreszcie podłączmy pin SIG (lub pin OUT) do kontaktu nr 7 Arduino. Powinniśmy osiągnąć rezultat pokazany na fotografii 6. Fot. 6. Widok naszego projektu po podłączeniu wszystkich elementów z modułem Arduino 4
Jeśli nasz projekt wygląda podobnie do tego pokazanego na fotografii 6, to gratulacje, po prostu zmontowaliśmy swój projekt alarmu! Teraz możemy przejść do konfiguracji systemu alarmu. Konfigurowanie systemu alarmowego Teraz, gdy sprzęt naszego projektu jest gotowy, możemy napisać kod dla projektu, abyśmy mieli użyteczny system alarmowy. Celem jest, aby brzęczyk wydawał dźwięk, gdy zostanie wykryty ruch, a dioda LED migała. Jednak po każdym naciśnięciu przycisku przełącznika alarm ma zostać wyłączony. Poniżej zamieszczamy kompletny kod dla takiego projektu: // Code for the simple alarm system // Pins const int alarm_pin = 5; const int led_pin = 6; const int motion_pin = 7; const int button_pin = 12; // Alarm boolean alarm_mode = false; // Variables for the flashing LED int ledstate = LOW; long previousmillis = 0; long interval = 100; // Interval at which to blink (milliseconds) void setup() { // Set pins to output pinmode(led_pin,output); pinmode(alarm_pin,output); // Set button pin to input pinmode(button_pin, INPUT); // Wait before starting the alarm delay(5000); void loop() { // Motion detected? if (digitalread(motion_pin)) { alarm_mode = true; // If alarm mode is on, flash the LED and make the alarm ring if (alarm_mode){ unsigned long currentmillis = millis(); if(currentmillis - previousmillis > interval) { previousmillis = currentmillis; if (ledstate == LOW) ledstate = HIGH; else ledstate = LOW; // Switch the LED digitalwrite(led_pin, ledstate); tone(alarm_pin,1000); // If alarm is off if (alarm_mode == false) { // No tone & LED off notone(alarm_pin); digitalwrite(led_pin, LOW); // If button is pressed, set alarm off int button_state = digitalread(button_pin); if (button_state) {alarm_mode = false; Opis kodu Teraz bardziej szczegółowo omówimy różne części kodu. Kod zaczyna się od deklaracji, które piny są połączone z różnymi elementami projektu, na przykład brzęczyk alarmu: const int alarm_pin = 5; const int led_pin = 6; 5
const int motion_pin = 7; const int button_pin = 12; Następnie, w funkcji setup() szkicu, deklarujemy te piny (szpilki) jako wejścia lub wyjścia: // Set pins to output pinmode(led_pin,output); pinmode(alarm_pin,output); // Set button pin to input pinmode(button_pin, INPUT); Następnie, w funkcji loop() szkicu sprawdzamy, czy alarm został włączony, przez sprawdzenie stanu czujnika ruchu: if (digitalread(motion_pin)) { alarm_mode = true; Zauważmy, że jeśli wykryjemy jakiś ruch, natychmiast ustawimy zmienną alarm_mode (tryb alarmu) na true ( prawda ). Zobaczymy jak ten kod używa tej zmiennej teraz. Teraz, jeśli zmienna alarm_mode jest prawdziwa (warunek zwraca true prawda ), musimy włączyć alarm, rozpocząć emitowanie dźwięku przez brzęczyk, a także miganie diody LED. Odbywa się to za pomocą następującego fragmentu kodu: if (alarm_mode){ unsigned long currentmillis = millis(); if(currentmillis - previousmillis > interval) { previousmillis = currentmillis; if (ledstate == LOW) ledstate = HIGH; else ledstate = LOW; // Switch the LED digitalwrite(led_pin, ledstate); tone(alarm_pin,1000); Ponadto, jeśli zmienna alarm_mode zwróci false ( fałsz ), musimy natychmiast wyłączyć alarm, zatrzymując emisję dźwięku i miganie diody LED. Odbywa się to za pomocą następującego kodu: if (alarm_mode == false) { // No tone & LED off notone(alarm_pin); digitalwrite(led_pin, LOW); Wreszcie także przez cały czas musimy odczytywać stan przełącznika. Jeśli przycisk zostanie naciśnięty, natychmiast musimy wyłączyć alarm: int button_state = digitalread(button_pin); if (button_state) {alarm_mode = false; Zazwyczaj powinniśmy zadbać o efekt odbijania przycisku, aby upewnić się, że po naciśnięciu przycisku nie mamy błędnych odczytów. Ponieważ mamy tu do czynienia tylko z tym jednym przyciskiem, który jest faktycznie wciśnięty lub nie, nie potrzebujemy dodawać dodatkowego kodu zabezpieczającego przed przekłamaniami w wyniku efektu odbijania dla przycisku. Teraz, gdy zapisaliśmy kod dla projektu, nadszedł czas, aby przejść do najbardziej ekscytującej części: do testowania systemu alarmowego! Testowanie systemu alarmowego Teraz jesteśmy gotowi przetestować nasz prosty system alarmowy. Wystarczy umieścić kod naszego projektu w środowisku programistycznym Arduino IDE. W środowisku programistycznym Arduino IDE należy wybrać właściwy typ płyty (na przykład Arduino Uno), a także prawidłowy port szeregowy. Teraz można przesłać kod do płytki Arduino. Po zakończeniu przesyłania kodu wystarczy przesunąć rękę przed czujnikiem ruchu PIR alarm powinien natychmiast uruchomić się. Następnie należy nacisnąć przycisk mikroprzełącznika, aby go zatrzymać (wyłączyć). Aby zilustrować zachowanie alarmu, po prostu użyto akumulatora, aby działał, gdy nie jest 6
Fot. 7. Efekt działającego systemu alarmowego podłączony do komputera. Efekt pokazany na fotografii 7 jest wynikiem włączenia alarmu: Jeśli to działa zgodnie z oczekiwaniami, gratulacje, właśnie skonstruowaliśmy swój pierwszy projekt prostego system alarmowego opartego na Arduino! Jeśli projekt w tym momencie nie działa tak jak powinien, należy sprawdzić kilka rzeczy. Najpierw należy przejść przez część konfiguracyjną sprzętu, aby upewnić się, że projekt jest prawidłowo podłączony. Podsumowanie W tym opracowaniu zbudowaliśmy tylko z kilku elementów prosty alarm oparty na Arduino. Istnieje kilka pomysłów i sposobów na dalsze prace nad rozbudową projektu. Można dodać więcej funkcji do projektu, dodając więcej linii do kodu. Na przykład można dodać zegar tak, aby alarm wyłączył się po upływie określonego czasu lub można zbudować tryb, w którym naciśnięcie przycisku faktycznie aktywuje lub wyłącza tryb alarmowy. Ponadto należy sprawdzić, czy przy przesuwaniu ręki przed frontem czujnika ruchu PIR, świeci się na czerwono. Jeśli tak nie jest, najprawdopodobniej występuje problem z czujnikiem ruchu PIR i należy go wymienić. 7