Kurs Intel Edison – #5 – podstawy Arduino, wejścia i wyjścia

Kurs Intel Edison – #5 – podstawy Arduino, wejścia i wyjścia

Umiemy już połączyć się z modułem Intel Edison, poznaliśmy podstawy pracy z systemem plików oraz konsolą systemu Linux.

Od tej części kursu zaczynamy programowanie. Wykorzystamy Arduino IDE, jako znane i lubiane środowisko do tworzenia prostych aplikacji.

Na początek zapoznamy się szybko z modułami dołączonymi do zestawu. Dlaczego szybko? Ponieważ głównym celem kursu jest przejście do tematów IoT, których nie poruszaliśmy jeszcze na Forbocie. Dlatego tutaj nie zajmiemy się dokładnym omawianiem składniki języka - nie było sensu pisać jeszcze raz tego samego, co jest bardzo dokładnie wytłumaczone w kursie Arduino.

Następne lekcje, które zajmują się nowymi tematami (komunikacja z Internetem oraz chmurą) będą opisane znacznie dokładniej!

Zestaw elementów do kursu

 999+ pozytywnych opinii  Gwarancja pomocy  Wysyłka w 24h

Elementy konieczne do wykonania ćwiczeń zebrane zostały w gotowe zestawy, które można nabyć w Botlandzie. W kuferku znajdziecie ponad 180 elementów w tym moduł Intel Edison!

Zamów w Botland.com.pl »

Środowisko programistyczne Arduino IDE

Podczas instalacji oprogramowania dla płytki Intel Edison zainstalowaliśmy pakiet do obsługi Arduino. Teraz możemy uruchomić środowisko programistyczne (Arduino IDE):

ardu_01

Arduino IDE zainstalowane razem z pakietem Intel Edison.

Jak widać, na pierwszy rzut oka wygląda ono podobnie do oryginalnej wersji przeznaczonej dla mikrokontrolerów AVR. Różnicę zobaczymy dopiero rozwijając menu Narzędzia. W podmenu Płyta wybieramy ostatnią opcję: Intel Edison, której nie znajdziemy w oryginalnej wersji środowiska.

To już cała niezbędna konfiguracja, możemy przejść do uruchomienia pierwszego przykładu. Przetestujemy nieśmiertelny przykład migającej diody. Z menu plik wybieramy podmenu przykłady, a następnie "01. Basics" i klikamy na program "Blink". Otrzymamy bardzo prosty program przykładowy migający zieloną diodą wbudowaną w Arduino Kit.

Dwie ikonki widoczne w lewym górnym rogu Arduino IDE pozwalają na kompilację oraz wgrywanie programu. Nie pozostaje nam nic innego, jak sprawdzić czy program działa.

ardu_02

Wgrywanie programu demonstracyjnego.

Oczywiście program powinien działać bez problemu. Sama praca z Edisonem przebiega podobnie jak z Arduino dla innych układów, różnicę możemy zobaczyć na obrazku powyżej - program jest krótki, ale zajmuje aż 76kB.

Efekt działania programu w praktyce (migająca dioda):

Intel Edison - migająca dioda.

Intel Edison - migająca dioda.

Intel Edison - pierwszy własny program

Uruchomiliśmy już przykładowy program. Czas napisać własny, chociaż bardzo podobny. Tym razem podłączymy diodę na płytce stykowej według schematu:

part4 - led_bb

Schemat montażowy - Intel Edison, pierwszy program.

Na początku musimy wybrać pin, którym będziemy sterować diodą - niech będzie to PIN nr 2 (można wybrać praktycznie dowolny). Czas napisać program sterujący podłączoną diodą:

Uruchamiamy program i możemy się cieszyć własną migającą diodą. Bardzo dokładny opis obsługi wejść oraz wyjść znajdziesz w 2 części kursu Arduino. Jeśli nie wiesz jak poprawnie podłączyć diodę świecącą (LED) i chcesz wrócić do podstaw, to sprawdź 6 część kursu elektroniki.

Zadanie domowe 5.1

Podłącz 3 różnokolorowe diody i napisz program, który będzie świecił kolejno każdą z nich (od lewej do prawej).

Intel Edison - linie wejściowe

Poprzednio linie Edisona pracowały jako wyjścia (output). Teraz spróbujemy odczytać informację o otaczającym nas świecie. Napiszemy program, który będzie sprawdzał stan czujnika zamknięcia drzwi. Gdy wykryje, że drzwi są otwarte, uruchomi alarm, czyli brzęczyk.

Podłączamy układ zgodnie z rysunkiem:

part4 - alarm_bb

Intel Edison - prosty alarm.

Następnie piszemy program, który będzie wykrywał otwarcie drzwi. Tym razem używamy dwóch pinów, definiujemy więc odpowiednie stałe:

Linia alarmowa jest wyjściem, działa więc tak jak w poprzednim przykładzie. Czujnik drzwi natomiast jest wejściem. Zamknięte drzwi zwierają kontakton, czyli wejście PIN12 do masy.

Aby skonfigurować oba piny piszemy procedurę:

Pozostaje napisać program główny. Będziemy w nim sprawdzać stan czujnika otwarcia drzwi i uruchamiać alarm w odpowiednim momencie. Najpierw sprawdzamy, czy drzwi są otwarte:

Zamknięte drzwi oznaczają zwarcie PIN12 do masy, funkcja digitalRead() zwraca wówczas wartość 0. Po otwarciu drzwi, PIN12 nie będzie już zwierany do masy, a rezystor podciągający (pullup) zmieni stan wejścia na 1. Będziemy wtedy uruchamiać alarm:

Moduł buzzera, który otrzymaliśmy w zestawie działa w "odwrotnej logice". Stan niski uruchamia buzzer, a wysoki wyłącza. Wynika to ze schematu modułu, który zawiera tranzystor odwracający działanie układu. Jeśli drzwi są zamknięte musimy czujnik wyłączyć poprzez ustawienie stanu wysokiego na wyjściu:

Programując na AVR byłby to już właściwie kompletny program. Jednak ponieważ Intel Edison pracuje w oparciu o prawdziwy system operacyjny, warto pamiętać o jeszcze jednej rzeczy.

Oprócz naszego programu na płytce działa jeszcze wiele innych. Powinniśmy więc dać im możliwość działania, zamiast zajmować 100% czasu procesora na sprawdzanie stanu linii. Otwieranie drzwi zajmuje trochę czasu (a dla procesora, to całe wieki), więc wystarczy, że będziemy sprawdzać stan czujnika co pewien czas, powiedzmy co 100 ms.

Dodajemy na końcu pętli głównej małe opóźnienie - nie zmieni ono działania naszego programu, ale pozwoli na sprawniejsze działanie pozostałych programów oraz zaoszczędzi sporo prądu.

Cały program do tego mini alarmu wygląda następująco:

W praktyce czujniki użyty w tym przykładzie można zamontować na drzwiach lub oknie, np.:

Praktyczne wykorzystanie kontaktronu.

Praktyczne wykorzystanie czujnika.

Zadanie domowe 5.2

W zestawie elementów znajduje się czujnik ruchu typu PIR. Posiada on cyfrowe wyjście, działa więc podobnie jak czujnik otwarcia drzwi omówiony powyżej. Napisz program, który będzie sygnalizował alarmem wykrycie ruchu. Jeśli nie jesteś pewien, jak podłączyć czujnik do Edisona, to zapytaj w komentarzu!

Czujnik ruchu (PIR).

Czujnik ruchu (PIR).

Intel Edison - wejście analogowe

Poprzednio poznaliśmy wyjścia i wejścia cyfrowe, jednak wiele czujników daje możliwość nie tylko wykrycia obecności sygnału, ale również pomiar pewnej wielkości fizycznej np. temperatury.

W zestawie znajdziemy dwa fotorezystory, które możemy wykorzystać do pomiaru poziomu oświetlenia. Taki układ czujników jest bardzo popularny w prostych robotach typu światłolub  (jeżdżącego za najsilniejszym źródłem światła), ale może być wykorzystany na wiele innych sposobów, chociażby do wykrywania zapalenia światła w pomieszczeniu.

Fotorezystor - czujnik oświetlenia.

Fotorezystor - czujnik oświetlenia.

Na początek podłączymy jeden czujnik zgodnie z rysunkiem:

part4 - light_bb

Intel Edison - wejścia analogowe w praktyce.

Teraz będziemy chcieli mierzyć poziom sygnału i przesyłać do komputera poprzez złącze szeregowe (właściwie to przez USB, które działa jako wirtualny port COM).

Tym razem nie musimy konfigurować wyprowadzeń układu, wystarczy uruchomić komunikację przez port szeregowy:

W programie głównym, będziemy odczytywać wynik pomiaru z czujnika:

A następnie przesyłać rezultat do komputera:

Instrukcja print wysyła wartość otrzymaną jako parametr (napis "adc = "). Natomiast println, wysyła zaraz po niej liczbę (val) oraz znak końca linii (stąd ln w nazwie).

Kompletny program:

Po uruchomieniu z menu narzędzia wybieramy opcję "Szeregowy monitor":

serial_01

Efekt działania programu z fotorezystorem.

To co widzimy to wartości odczytane z przetwornika analogowo-cyfrowego. Spróbujmy zmienić oświetlenie czujnika, zasłaniając go lub zbliżając do źródła światła. Wyniki ulegną wtedy zmianie, proporcjonalnie do poziomu oświetlenia.

serial_02

Czujnik wykrywa zmianę oświetlenia.

Za pomocą takiego czujnika moglibyśmy badać nasłonecznienie, sprawdzać, czy nie zostawiliśmy zapalonego światła w mieszkaniu, albo zbudować robota-światłoluba. Napisany przez nas program jest pierwszym, ale bardzo ważnym etapem podczas tworzenia takiego projektu.

Pozwala na sprawdzenie poprawności działania czujnika oraz zapoznanie się z jego charakterystyką. Oczywiście ostateczny program powinien wykorzystywać otrzymane dane, a nie tylko wysyłać wyniki przez złącze szeregowe. Jednak odczytanie wartości jest bardzo dobrym ćwiczeniem, pozwala zapoznać się z działaniem czujnika oraz pokazuje nam pierwszą możliwość komunikacji płytki Edison z komputerem - poprzez złącze szeregowe.

Zadanie domowe 5.4

Podłącz buzzer jak w poprzednim przykładzie i napisz program, który będzie alarmował w momencie zapalenia światła. Aby ustalić próg zadziałania alarmu, możesz wykorzystać dane odebrane przez port szeregowy.

Podsumowanie

Ta część kursu programowania Intel Edisona jest swego rodzaju rozgrzewką przed zdecydowanie bardziej zaawansowanymi projektami. Zanim przejdziesz dalej upewnij się, że pisanie programów podobnych do omówionych tutaj nie stanowi dla Ciebie żadnego problemu.

W kolejnej części m.in. o wyświetlaczu LCD!

W kolejnej części m.in. o wyświetlaczu LCD!

W każdej chwili możesz wspomóc się naszym, opublikowanym już w całości, kursem Arduino oraz kursem zupełnych podstaw elektroniki. W kolejnym artykule omawiającym platformę Intel Edison zajmiemy się wyświetlaczem, klawiaturą numeryczną oraz czujnikiem temperatury. Dzięki temu będziemy mogli zbudować prosty symulator zamka elektronicznego!

Nawigacja kursu

Jeśli nie chcesz przeoczyć kolejnego odcinka, to skorzystaj z poniższego formularza i zapisz się na powiadomienia o nowych publikacjach!

Autor kursu: Piotr (Elvis) Bugalski
Redakcja: Damian (Treker) Szymański

arduino, Edison, Intel, kursEdison

Trwa ładowanie komentarzy...