Dodaj produkty podając kody

Dodaj plik CSV
Wpisz kody produktów, które chcesz zbiorczo dodać do koszyka (po przecinku, ze spacją lub od nowej linijki). Powtórzenie wielokrotnie kodu, doda ten towar tyle razy ile razy występuje.

Bluetooth do Arduino i nie tylko - To Proste! Cz.2

2016-11-16
Bluetooth do Arduino i nie tylko - To Proste! Cz.2

Witam, w drugiej części artykułu, który poświęcony jest modułom komunikacji bezprzewodowej BLUETOOTH. W poprzedniej części omówiliśmy sposób funkcjonowania tejże bezprzewodowej transmisji danych, a także przyjrzeliśmy się bliżej modułom HC-05HC-06 , HC-08 (cz. I). Teraz kolejnym krokiem więc będzie zaznajomienie się z aplikacjami, które pozwolą nam na komunikację między Arduino wraz z modułem bluetooth, a naszym smartfonem.

Jak już wspomniałem, w pierwszej części są dwa sposoby, dzięki którym stworzymy własne sterowanie i połączymy się z modułem za pomocą telefonu.

 

Pierwszym z nich jest (jeżeli nie chcecie tracić czasu na tworzenie własnej aplikacji i może nie znacie się na tym) Bluetooth Electronics. Jest to aplikacja na telefon do pobrania w sklepie Google PLAY, która jest niebywale prosta i intuicyjna w obsłudze. Aby odebrać dane z Arduino na smartfonie, wystarczy wpisać odpowiednią frazę w sketch-u Arduino, włączyć telefon, uruchomić aplikację, sparować z modułem i to wszystko. Możemy również wysyłać informacje do Arduino przez smartfon. Zasada funkcjonowania aplikacji jest dość prosta, a tak wygląda ekran startowy i wbudowane przykłady:

Użytkownik ma do wyboru różne zakładki takie jak przełączniki, przyciski, pole tekstowe, suwaki i inne. Dzięki tym narzędziom stworzymy okno naszej aplikacji.

 Aplikacja ta posłużyła nam do odbioru informacji z naszej stacji pogodowej, którą zbudowaliśmy i informacje wysyłaliśmy poprzez moduł bluetooth.

Tu zobacz stację meteorologiczną.

Może na początek sprawdźmy i przeanalizujmy, jak to działa. Myślę, że prostym przykładem będzie czujnik odległości, jakim jest ultrasonograf HC-SR04.

 

No więc tak, na początek podłączmy wszystkie elementy razem i wgrajmy sketch do Arduino, który dostępny jest na stronie: www.keuwl.com/electronics.html Otwórzmy aplikację, wyszukajmy nasz moduł,  połączmy się z nim i otwórzmy okno gotowego przykładu. Jak widać, wszystko działa prawidłowo: na ekranie ukazuje się odległość i nawet wielka kontrolka zmienia kolory w zależności od dystansu. Aby to zrozumieć, zajrzyjmy do kodu, który wgraliśmy do płytki mikrokontrolera.

Na początku wygląda jak zwykły przykład z aplikacji ARDUINO. Kluczowe są tutaj te linie kodu:

Serial.print("*T"+String(echotime)+"*");
Serial.print("*D"+String(distance,1)+"*");

Wygląda jak zwykłe wyświetlanie w monitorze portu szeregowego. Otóż tak, ponieważ jak już wspomniałem, w pierwszej części moduł bluetooth komunikuje się poprzez port UART, a więc szynę TX i RX. Należy więc rozpoczynać transmisję za pomocą kodu - Serial.begin(9600);

Jak sami widzicie to naprawdę nic skomplikowanego. Wyrażenie "*T"+String są to informacje wysyłane dla aplikacji: T to liczba „nadająca”, którą wpisujemy również w aplikacji jak na tym zdjęciu (oczywiście, zamiast R ma być T)

Receive znaczy odbierać. Więc, jak chcemy odebrać wiadomość, wpisujemy tę samą literę w programie Arduino i aplikacji. String jest to po prostu zmienną, a w nawiasie znajduje się wartość, którą chcemy wysłać. Tak samo postępujemy, chcąc wyświetlić informacje w monitorze portu szeregowego.

Sytuacja wygląda trochę inaczej, gdy chcemy wysłać informacje do Arduino. W tej sytuacji otwórzmy sobie przykład RC Car Demo na stronie internetowej i przeanalizujmy kod. Aplikacją zajmiemy się później.

Na początku mamy zadeklarowaną char jako bluetooth Data.

Char BluetoothData;

 

Następnie w ustawieniach początkowych rozpoczynamy transmisję szeregową - Serial.begin(9600); a także ustawiamy przekaźniki jako wyjścia - pinMode(4,OUTPUT);.

Następnie w głównej pętli loop musimy odebrać informacje z modułu bluetooth, a więc tak jak i z monitora przez komendę:

 (Serial.available());

BluetoothData=Serial.read(); Ta komenda zamienia odczytane wartości z modułu na BluetoothData, którą zdeklarowaliśmy już wcześniej.

 

Następnie znajdują się warunki logiczne, które zarządzają wydarzeniami po otrzymaniu konkretnych danych. Te dane wyglądają w następujący sposób:

(BluetoothData=='R')

(BluetoothData=='Y')

(BluetoothData=='r'||BluetoothData=='y')

Pierwsze dwa z nich załączają przekaźniki po odczytaniu odpowiednich liter R i Y, które są nadawane, gdy w aplikacji wciśniemy odpowiednie przycisk. Gdy nie są wciśnięte, to przekaźniki mają zostać wyłączone, za co odpowiada trzecia linika kodu, a aplikacja wysyła wtedy małe litery “r” i “y”. Tak samo przedstawia się sytuacja, gdy chcemy poruszać samochodem w przód czy tył.

Sterowanie z poziomu telefonu odbywa się za pomocą gotowego przykładu z aplikacji Bluetooth Electronics. Otwieramy więc przykład za pomocą przycisku Edit i widzimy cztery przyciski w różnych kolorach, które są podpisane. Po wciśnięciu przycisków wyświetla się informacja w prawym dolnym rogu, jaka litera jest wysyłana w czasie wciśnięcia przycisku i jaka w czasie  braku jego aktywności. Dla przykładu żółty przycisk w prawo wysyła sygnał “y” w czasie jego braku aktywności, “Y” w czasie jego wciśnięcia. Jak widać, najprostsze rozwiązania są najlepszymi rozwiązaniami.

Wiemy jak sterować wyjściami i wejściami cyfrowymi, a jak sterować sygnałem PWM odbierając i wysyłając te informacje o wielkości współczynniku wypełnienia? Praktycznie tak samo, dla przykładu otwórzmy LED Brightness  ze strony keuwl. W tym przykładzie steruje się trzema diodami, rozjaśnia się je i przyciemnia poprzez właśnie sygnał PWM. Zerknijmy do sketchu Arduino. Na początku mamy zadeklarowane nazwy diod w postaci int i piny, pod które są te diody podłączone do Arduino, a więc są to piny 9,10 oraz 11, ponieważ na tych pinach jest możliwość modelowania sygnału PWM. Tak wygląda owa linika kodu: int Red_LED_Pin = 9;

 

Następnie mamy wartości tych trzech diod, również w postaci zmiennej int i wygląda ona tak: int Red_value=0;

Następnie jak i w przypadku poprzednim należy odebrać informacje z bluetooth

char BluetoothData;

 

W ustawieniach początkowych setup trzy diody ustawione są jako wyjścia, ponieważ będą odbierać sygnał PWM - pinMode(Red_LED_Pin, OUTPUT);

Także uruchamiamy transmisję szeregową - Serial.begin(9600);

 

 W głównej pętli loop mamy warunki logiczne if - if (Serial.available()){{|br class="kix-line-break" />    BluetoothData=Serial.read(); //odbiór info. z modułu bluetooth
   if(BluetoothData=='R') Red_value=Serial.parseInt(); //odbiór litery “R” i jej wartości

 

Jak widać komenda - Serial.parseInt(); odpowiedzialna jest za odbiór wartości sygnału PWM. Po odebraniu wszystkich wartości należy je wykonać, za co odpowiadają te linie kodu - analogWrite(Red_LED_Pin, Red_value);

analogWrite - wysyła sygnał PWM  

(Red_LED_Pin, Red_value); - do diody czerwonej - Red_LED_Pin

Red_value - o odpowiedniej wartości współczynnika wypełnienia.

 

Jak widać, ten przykład był już trochę trudniejszy, lecz nadal do wykonania i zrozumienia. To rozwiązanie jest proste, szybkie i wygodne, ale nie jest ono jedyne. Jeżeli ktoś chciałby, aby jego aplikacja była ładniejsza, z większą ilością funkcji to może wykonać ją sam. Pisanie aplikacji brzmi jak zlecenie dla informatyka? Nic bardziej mylnego! Każdy z nas może stworzyć swoją własną aplikację, w miarę prosty sposób. Google stworzyło program, który działa na przeglądarce i służy do tworzenia aplikacji, a nazywa się appinventor. Jest to bardzo fajny pomysł, który posiada ogromny potencjał. Jego działanie opiszę w następnej części.


Zobacz pozostałe części:
 
Pokaż więcej wpisów z Listopad 2016

Polecane

pixelpixel