Bluetooth krmiljenje LED diod

Bluetooth je brezžična tehnologija, namenjena predvsem mobilnim napravam, ki imajo baterijsko napajanje. Omogoča brezžično povezovanje med katerimikoli električnimi napravami, ki podpirajo ta standard. Bluetooth komunicira z drugimi napravami na frekvenčnem pasu okoli 2.45 gHz. Deluje na kratke razdalje do 10 metrov.

Če želimo vzpostaviti povezavo z napravo Bluetooth, moramo vklopiti radijski vmesnik za Bluetooth v pametnem telefonu (Android). Ko prvič uporabimo novo napravo Bluetooth, jo moramo "združiti" z napravo, s katero jo želimo uporabljati, tako da obe napravi vesta, kako se varno povezati druga z drugo. Ko to naredimo, se samodejno povežeta.

V tej vaji bomo prikazali, kako uprabiti bluetooth modul in MIT app inventor za vzpostavitev brezžične serijske komunikacije med telefonom Android in razvojno ploščo Arduino Uno za krmiljenje treh LED diod (rdečo, zeleno in modro).

Modul bluetooth:

Slika 1: Modul bluetooth (vir: http://www.dx.com/p/bluetooth-board-module-4-pin-121326#.VLPAxXus2ZR)

Obstajajo različni moduli, če uporabite drugačnega, preverite njegove "pinout" podatke. Naš modul ima po podatkih proizvajalca domet 10 m.

Uporabili bomo naslednje priključke:

- GND (masa),

- Vcc (3,3 V),

- pin za sprejemanje podatkov TX (ta pin bomo povezali s pinom RX na razvojni plošči Arduino Uno).

Slika 2: Povezava elementov z razvojno ploščo Arduino Uno

Program za krmiljenje LED diod s telefonom Android preko bluetooth povezave:

/*

 Krmiljenje red, green in blue LED diod s pametnim telefonom (Android) preko Bluetooth povezave. Aplikacija je narejena

 v  MIT App Inventor 2: http://ai2.appinventor.mit.edu/#4888990587027456 z naslovom Vklop_RGB_LED.

 Ko je aplikacija nameščena na telefonu, jo zaženemo in poiščemu ustrezno Bluetooth napravo. Po vzpostavitvi povezave

 lahko s tipkami na telefonu krmilimo vklop in izklop posamezne LED diode. Na Serijskem monitorju lahko vidimo kode

 za posamezne tipke, katere uporabimo v programu (switch - case) za krmiljenje LED diod.

 Aplikacijo, ko je izdelamo, shranimo na računalnik. Preko bluetooth povezave jo lahko iz računalnika do telefona 

 namestimo na telefon. Da vzpostavimo bluetooth povezavo, mora telefon zaznati bluetooth napravo (prenosni računalnik),

 zato na telefonu nastavimo vidnost bluetooth (navadno traja vidnost 5 minut) - če je čas potekel, ponovno nastavimo

 vidnost. Na prenosniku izberemo ustrezno aplikacijo za prenos in prenos zaženemo, hkrati pa moramo na telefonu

 dovoliti sprejem. Ko je aplikacija na telefonu nameščena, jo lahko zaženemo in krmilimo LED diode.

 Preden zapišemo program v Arduino, izmaknemo vezico iz pina RX, v nasprotnem primeru program

 ne bo uspešno zapisan!

 Avtor: Milan Ivič

 Januar 2015

 */

 const int LED_Pin_rdeca = 2;       //Pin 2, LED dioda rdeča.

 const int LED_Pin_zelena = 7;      //Pin 7, LED dioda zelena.

 const int LED_Pin_modra = 12;      //Pin 12, LED dioda modra.

 byte serialA;

 void setup()

 {

   //Serijska komunikacija:

   Serial.begin(19200);     //Hitrost prenosa (biti/s).

  

   //Določitev izhodnih pinov:

   pinMode(LED_Pin_rdeca, OUTPUT);

   pinMode(LED_Pin_zelena, OUTPUT);

   pinMode(LED_Pin_modra, OUTPUT);

 }

 void loop()

 {

   if (Serial.available() > 0)

   {

     serialA = Serial.read();

     Serial.println(serialA);

   }   

     switch (serialA)     

     {

     case 6:             //Kodo 6 preberemo iz serijskega monitorja, ko s telefonom vklopimo rdečo LED.

       digitalWrite(LED_Pin_rdeca, HIGH);

       break;

     case 24:            //Kodo 24 dobimo (vidimo) na serijskem monitorju, ko s telefonom izklopimo rdečo LED.

       digitalWrite(LED_Pin_rdeca, LOW);

       break;

     case 102:

       digitalWrite(LED_Pin_zelena, HIGH);

       break;

     case 120:

       digitalWrite(LED_Pin_zelena, LOW);

       break;

     case 30:

       digitalWrite(LED_Pin_modra, HIGH);

       break;

     case 96:

       digitalWrite(LED_Pin_modra, LOW);

       break;

     default:

       break;

     }

 }

Izdelava aplikacije za pametni telefon (Android):

Za izdelavo Android aplikacije (App) odprite spletno stran: http://appinventor.mit.edu/explore/. Imeti morate Goole račun. Kliknite na gumb Create (zgoraj desno). Nato kliknemo na spustni seznam projects in izberemo Start new project:

Projektu damo ime, pri tem pazimo, da ne pišemo presledkov. Če je ime sestavljeno iz več besed, uporabimo podčrtaje. Na desni strani orodne vrstice imamo dva gumba, Designer in Blocks. Začnemo v Designer, kjer imamo na levi strani paleto z orodji (Palette), največje je okno Viewer, kjer je prikazan zaslon telefona, desno pa sta okno Components in Properties:

Najprej na pod Palette izberemo zavihek Layout, kjer izberemo HorizontalArrangement, ga z miško zagrabimo in zapeljemo na vrh zaslona Screen1. Nato pod Palette izberemo zavihek User Interface, izberemo Label in ga prenesemo v kvadrat (HorizontalArrangement1) na zaslonu. To ponovimo še enkrat, tako da imamo v kvadratu dva bloka Label, Text for Label1 in Text for Label2:

Izberemo okvir HorizontalArrangement1, tako da je označen cel okvir in spremenimo njegovo širino čez celotni okvir zaslona. To storimo tako, da v desnem oknu Properties kliknemo v okvirček Width in izberemo opcijo Fill parent ter kliknemo na gumb OK.

Sedaj kliknemo na Text for Label1 na zaslonu, da se njegova obroba označi. Pod oknom Components, kjer imamo na spisku izbrane komponente, se je ta okvirček obarval. Spremenili bomo njegovo ime, zato kliknemo na gumb Rename in pod New name napišemo Naslov ter potrdimo s klikom na gumb OK. Ker imamo ta okvirček še izbran, bomo spremenili tekst. To storimo v oknu Properties v okvirčku Text. Napišemo Krmiljenje RGB diod in pritisnemo na enter. Sedaj se je spremenil napis tudi na zaslonu (Screen1). Napis lahko oblikujemo po želji (oblika pisave, barva pisave, barva ozadja itd) z orodji v oknu Properties. Po enekem postopku spremenimo ime drugemu okvirčku, Text for Label2, kjer izpišemo svoje ime. Po želji spremenimo širino okvirčkov z napisi (Properties > Width) in višino (Properties > Height). Namesto napisov lahko v okvir HorizontalArrangement1 vstavimo sliko (Components > Upload File ...).

Pod izdelani okvir iz okna Palette > Layout prenesemo naslednji okvir, HorizontalArrangement2. Vanj z miško prenesemo ListPicker, ki ga najdemo na Palette > User Interface. Vanj prenesemo še Label, kjer spremenimo napis v Stanje povezave. Okvir HorizontalArrangement2 razširimo čez celoten zaslon (Properties > Width > Fill parent > OK).

Na zaslon prenesemo gumb (Button), kateremu spremenimo širino (Properties > Width > Fill parent > OK), višino (Height > 50 pixels ...), napis, obliko, barvo napisa, barvo ozadja itd. Spremenimo ime gumba (Components > Rename) v Vklop Red diode.

Po enakem postopku dodamo vseh 6 gumbov, tri za vklop posamezne LED diode, tri pa za izklop posamezne LED diode.

Na koncu dodamo še BluetoothClient1 (Palette > Connectivity > BluetoothClient) in Clock1 (Palette > Sensors > Clock). Oba odložimo v zaslon, premakneta pa se pod njega.

Naš zaslon Screen1 in okno Components sedaj zgleda:

Iz Designer preklopimo na Blocks (gumba desno zgoraj).

Na desni strani imamo paleto Blocks, kjer so med drugim prikazani naši elementi, na sredini pa Viewer, kjer izdelamo program.

Najprej kliknemo na ListPicker1 in v oknu Viewer izberemo when do .BeforePicking:

Vanj vstavimo element ListPicker1 Elements to. Najdemo ga na spustnem seznamu, če kliknemo na Blocks > ListPicker1:

Z miško ga zapeljemo v komponento when do .BeforePicking. V komponento zapeljemo še BluetoothClient1 AddressesAndNames (Blocks > BluetoothClient1 > spustni seznam > AddressesAndNames).

Nato dodamo when do .AfterPicking in vanj zapeljemo pripadajoče elemente:

Nato dodamo Timer s pripadajočimi elementi. Timer najdemo v Blocks > Clock1, element if then else pa poiščemo v Blocks > Control, kjer izberemo if then, ga zapeljemo v komponento when do .Timer, nato pa kliknemo na označeno polje pred if ter element else zapeljemo v  if element. Nato dodamo še ostale elemente, tekst in barve teksta, ki se bo izpisal na zaslon:

Na koncu še dodamo program za vklop in izklop posameznih LED diod. Elemente najdemo v naših blokih, dodamo še tekst in barve

:Tako kot je prikazano za vklop in izklop rdeče LED diode, dodajte v program še za zeleno in modro LED diodo.

Aplikacijo lahko prenesemo na računalnik ali pa zaženemo generiranje QR kode, a je ta na voljo le 1 uro. Na računalnik jo prenesemo tako, da v menijski vrstici izberemo Build in na spustnem seznamu izberemo App (save .apk to my computer):

Prikaz delovanja: