
Eesmärk on telefoni abil läbi Bluetoothi suhelda ja kontrollida Arduinot. Jagan selle postituse kolmeks, kus alguses teeme selgeks suhtluse läbi HC-06 mooduli, seejärel loome selle kontrollimiseks lihtsa Androidi programmi (MIT App Inventor 2) ning lõpetuseks kasutame HC-05 Bluetooth moodulit koos laienduskaartidega.
Mis on Bluetooth
Bluetooth on standard 2,4 GHz juhtmevaba ühenduse loomiseks. Eelkõige loodi see mõttega ühendada seadmed nagu kõrvaklapid, GPS, klaviatuurid jms arvutite ja mobiiltelefonidega. Ja seepärast on ühenduse loomine tehtud lihtsaks (automaatseks) ja väga kaugele ei levi. Kui rääkida levimiskaugusest, siis jagatakse see kolme klassi:
- klass 1 – 100m
- klass 2 – 10m
- klass 3 – 1m
2016 suvi oli ka uudis, et nüüd levib Bluetooth 5.0 üle 200m, aga ise ei ole mõnda sellist seadet veel käes hoidnud.
Bluetooth seadmetest võrku nimetatakse Piconet’iks ning ühendatud seadmed jagatakse ülemseadmeteks (master) ja alamseadmeteks (slave). Ülemseade suudab hallata kuni 7 alamseadet. Kusjuures iga alamseade võib olla järgmise alamvõrgu ülemseadeks ja sellist võrku nimetatakse Scatternet’iks. Iga alamseade suudab ühendust hoida ainult ühe ülemaga.
Meil on kasutada HC-06, mis suudab käituda ainult alamseadmena (slave) ja hiljem HC-05, kus saame ise määrata, millisena ta käitub.
Igal Bluetooth seadmel on 48-bitine unikaalne MAC aadress (BD_ADDR), mis tavaliselt kuvatakse 12-kohalise arvuna või teksti kujul. Seadmete esmasel ühendamisel küsitakse parooli, mis vaikimisi on 0000 või 1234.
HC-06 ühendamine Arduinoga
Üks populaarsemaid (loe: odavamaid) Bluetooth mooduleid on HC-06 (Aliexpress, eBay), kus mooduli osa on asetatud Arduino jaoks sobivale plaadile.
Antud moodul töötab alati alamseadmena (slave) ning vaikimisi parool on 1234. Ühendamisel Arduinoga, peame jälgima, et seade töötab 3,3-4,2V peal (dokumentatsioon)!
- Vcc –> 3,3V
- GND –> GND
- Rx –> D3
- Tx –> D2
Programmi kirjutamine LED aktiveerimiseks
Ühendame D13 pessa LED’i ja lisame järgmise koodi, mis loeb Bluetooth konsooli sisestatud märke:
- kui sisestad n, siis lülitatakse LED tööle
- kui sisestad f, siis lülitatakse LED välja
- kui sisestad i, siis väljastatakse LED olek 0 või 1 (väljas/sees).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <SoftwareSerial.h> SoftwareSerial BTserial(2, 3); // RX | TX char BTvalue; //kasutaja poolt sisestatud string char lastValue; //viimati lisatud väärtus void setup(){ Serial.begin(9600); pinMode(13,OUTPUT); BTserial.begin(9600); } void loop(){ if(BTserial.available()) { //kui kasutaja on saatnud mingi teksti BTvalue=BTserial.read(); //loeb selle väärtust } if (BTvalue=='n') { //kui string on n (on) digitalWrite(13,HIGH); if (lastValue!='n') BTserial.println(F("LED is on")); lastValue=BTvalue; } else if (BTvalue=='f') { //kui string on f (off) digitalWrite(13,LOW); if (lastValue!='f') BTserial.println(F("LED is off")); lastValue=BTvalue; } else if (BTvalue=='i') { //kui string on i (info) BTserial.println(digitalRead(13)); //väljastab LED oleku 0 või 1 } delay(1000); } |
Androidi ja Arduino suhtlemine
Kui kood on Arduinosse üles laetud, siis laeme telefoni suhtlemiseks programmi Bluetooth Terminal (Google Play). Nüüd peaksime valmis olema ühendamiseks. Kui Bluetooth mooduli tuluke vilgub, siis ei ole ühendust loodud. Lülita oma telefonis Bluetooth ühendus sisse ja kui kõik on õigesti ühendatud, siis peaksid nägema midagi, mis viitab sinu moodulile. Näiteks HC-06
Pärast ühenduse valikut küsitakse salasõna, milleks on 1234. Nüüd kui oled ühe korra parooli sisestanud, siis seda enam ei küsita. Nüüd ava oma Bluetooth Terminal rakendus. Kliki telefoni enda valikute nupule ning avanenud menüüst vali ‘Connect a device – Insecure‘.
Kui kõik õnnestus, siis Bluetooth moodul lõpetab vilkumise ning rakenduse üles serva tuleb teade ‘Connected‘. Sisesta nüüd vaheldumisi tähti n, f ja i, et testida, kas kõik töötab.
Lisame funktsionaalsust – lisame vedeliku nivoo mõõtmise
Lisame skeemi sensori, mis reageerib vedeliku kogusele ja saadame info läbi Bluetooth mooduli telefoni. Mooduli hind on alates ~0.30€
Antud moodul ühenda +5V külge, maandus maandusega ja signaal (S) analoogsisendisse A0.
Ja koodi, lisame lihtsalt read, et kui kasutaja vajutab Bluetooth konsoolis v, siis kuvatakse vee taseme anduri väärtus.
1 2 3 4 5 6 | ... else if (BTvalue=='v') { BTserial.println(analogRead(A0)); } ... |
Järgmises Bluetoothiga seotud postituses loome oma Androidi rakenduse LED’i sisse/välja lülitamiseks.
0 responses on "Arduino ja Bluetooth (HC-06)"