Ten post chciałbym poświęcić na opisanie sposobu zaprogramowania modułu bluetooth HC-05 za pomocą Arduino Uno. Do projektu przedstawię krótki program wykonany w app inventor, który pozwala na sterowanie diodą znajdującą się na płytce.
Teraz zaprezentuje prosty program wykonany w App inventor. Służy on do zapalania pojedynczej diody. Poprzez rozbudowanie tego programu, co prawdopodobnie zaprezentuje w kolejnych postach, można w bardzo łatwy sposób uzyskać sterowanie przekaźnikami czy innymi urządzeniami poprzez bluetooth wykorzystując do tego Arduino lub przez programowanie niskopoziomowe w języku C.
Aplikacja wygląda następująco:
Idąc od góry kontrolka Screen1.Initialize zawiera definicje stanów wprowadzonych przycisków. Następnie BTList.BeforePicking prezentuje po kliknięciu w przycisk aktualną listę urządzeń bluetooth jakie może zostać wykryte przez telefon. Następnie w BTList.AfterPicking po udanym połączeniu ustawiane są stany dla pozostały przycisków, gdy połączenie może być nawiązane. Kolejna kontrolka steruje stanem przycisku. Sprawdza ona aktualnie wyświetlaną informację, zmienia ją na przeciwną i wysyła odpowiedni znak ASCII do modułu bluetooth. Ostatnia kontrolka pozwala na wyłączenie układu od bluetootha i ustawienie nowych stanów dla kontrolek na ekranie.
Program przygotowany w app inventor oraz arduino można pobrać pod tym linkiem
Program wykonuje dwa połączenia przez serial port jedno do informowania użytkownika, drugie jako systemowy UART do komunikacji z modułem bluetooth. W pętli odbierana jest wiadomość, jeśli jest co odbierać urządzenie sprawdza czy odebrana wiadomość w pierwszym bajcie (bo tylko jeden jest wysyłany przez program na komórkę) jest poprawna i odpowiada przypisanym do niej stanom. Jeśli taka informacja jest zdefiniowana to następuje zapalenie bądź zgaszenie diody.
Pliki z projektem można znaleźć na dysku Google pod tym linkiem.
[Źródło: https://store.arduino.cc/usa/arduino-uno-rev3]
Program App Inventor:
Teraz zaprezentuje prosty program wykonany w App inventor. Służy on do zapalania pojedynczej diody. Poprzez rozbudowanie tego programu, co prawdopodobnie zaprezentuje w kolejnych postach, można w bardzo łatwy sposób uzyskać sterowanie przekaźnikami czy innymi urządzeniami poprzez bluetooth wykorzystując do tego Arduino lub przez programowanie niskopoziomowe w języku C.
Aplikacja wygląda następująco:
W App Inventor logikę programu wykonuje się poprzez połączenie odpowiednich bloków ze sobą. Całość wygląda następująco:
Idąc od góry kontrolka Screen1.Initialize zawiera definicje stanów wprowadzonych przycisków. Następnie BTList.BeforePicking prezentuje po kliknięciu w przycisk aktualną listę urządzeń bluetooth jakie może zostać wykryte przez telefon. Następnie w BTList.AfterPicking po udanym połączeniu ustawiane są stany dla pozostały przycisków, gdy połączenie może być nawiązane. Kolejna kontrolka steruje stanem przycisku. Sprawdza ona aktualnie wyświetlaną informację, zmienia ją na przeciwną i wysyła odpowiedni znak ASCII do modułu bluetooth. Ostatnia kontrolka pozwala na wyłączenie układu od bluetootha i ustawienie nowych stanów dla kontrolek na ekranie.
Program Arduino:
Program przygotowany w app inventor oraz arduino można pobrać pod tym linkiem
- #include <SoftwareSerial.h>
- #include <Wire.h>
- //define PIN11 and PIN10 as RX and TX
- SoftwareSerial I2CBT(11,10);
- void setup()
- {
- /* Baudrate for send data to user in terminal*/
- Serial.begin(9600);
- /* Set baudrate to bluetooth if it sends incorrect information change speed, probably to 57600 */
- I2CBT.begin(9600);
- pinMode(13, OUTPUT); //set pin 13 as output, where we put a LED
- }
- void loop()
- {
- byte recData[30];
- int insize;
- if ((insize=(I2CBT.available()))>0)
- {
- Serial.print("input data size = ");
- Serial.println(insize);
- for (int i=0; i<insize; i++)
- {
- Serial.print("Odebrano: ");
- Serial.print(recData[i]=char(I2CBT.read()));
- Serial.println(" @#@");
- }
- /* Check only first receive character */
- switch (recData[0])
- {
- case 2:
- Serial.println("Turn led OFF");
- digitalWrite(13,LOW); //LED off
- break;
- case 1:
- Serial.println("Turn led ON");
- digitalWrite(13,HIGH); //LED light up
- break;
- }
- }
- }
Program wykonuje dwa połączenia przez serial port jedno do informowania użytkownika, drugie jako systemowy UART do komunikacji z modułem bluetooth. W pętli odbierana jest wiadomość, jeśli jest co odbierać urządzenie sprawdza czy odebrana wiadomość w pierwszym bajcie (bo tylko jeden jest wysyłany przez program na komórkę) jest poprawna i odpowiada przypisanym do niej stanom. Jeśli taka informacja jest zdefiniowana to następuje zapalenie bądź zgaszenie diody.
Pliki z projektem można znaleźć na dysku Google pod tym linkiem.