25. Arduino ühendamine bluetooth seadmega
<- eelmine peatükk
järgmine peatükk ->
25.0. Seosed eelmiste peatükkidega
Meil on juba päris heal tasemel töövõtted, ent kui üritame seda peatükki võtta ühe tunniga, siis see ei pruugi õnnestuda. Seega parem alustame. Ent enne alustamist ei tee paha meenutada, mida oleme maininud viikude hoidmisest ülemäärase pinge eest.
25.1.Eesmärk ja selgitused
Eesmärgiks on omavahel suhtlema saada kaks odavat bluetooth seadet—nimetame bluetooth-i edaspidi sinihambaks. Tihti ei pruugi kohe kõik vajalik teave käepärast olla: selle vastu aitab info otsimine internetist.
Selle peatüki läbitöötamise järel õpilane oskab:
Õpilane on harjumas probleemidele lahenduste otsimisega internetist.
25.2. Töövahendid:
LISA: State ja EN viikudega töötamiseks on vaja veel:
25.3. Tegevused
25.3.1. Vaatleme sinihammast
Alati on iga detaili peal midagi, mis võimaldab internetiotsingut—näiteks minu poolt selle tunni läbimängimiseks ostetud sinihamba peale on kirjutatud www.hc01.com. Vaatame, mida me seda aadressi internetiotsingusse sisestades leiame. Selgub, et on Hiina ettevõte: ma ei hakka hiinakeelse teksti peale aega kulutama. Järgmisena vaatan näiteks veel otsinguga „hc bluetooth datasheet“ internetist inglise keeles avaldatud infomaterjale.
NB!
Kui ikka midagi ei tea mingi seadme kohta arvata, siis on hea otsisõnadele lisada „datasheet“—eesti keeles andmeleht. Võime ka lisada „pinout“—sellisel juhul peaksite saama internetist viikude ühendamise skeemi. Üks väike kavalus on lisada vahel ka „pdf“.
Minu käes olevale Hiina päritolu sinihambale aga on kirja pandud veel terve rida olulist infot:
Meid huvitab lisaks kvaliteedile ja hinnale ka kindlasti sinihamba kasutamine—ühendamine Arduino Unoga. Vaatame, mis nimed on sinihamba viikudel:
- ->STATE
- <-RXD
- ->TXD
- <-GND
- <-VCC
- <-EN
Kusjuures näeme, et RXD ja TXD juurde on kirjutatud LEVEL 3.3V ning VCC ja GND juurde Power 3.6V-6V. Ühendamisel Arduinoga peame arvestama sinihamba mudeli viigu-infoga.
Harjutus A
Meil on praktiline vajadus uurida internetist sinihammaste markeeringute kohta. Kasutame otsisõnadena nii markeeringuid (viikude tähistusi) kui ka eespool antud otsisõnu. Tark on leida ja kirja panna veidi detailsemad instruktsioonid. Märkmed aitavad kiiremini edasi liikuda.
25.3.3. Ühendame sinihamba vastavalt kõrval olevale skeemile Arduino viikudega
Selgituseks STATE1 ja EN2 markeeringuga viikude kohta: ega me neid kahte esialgu millegagi ühendama ei pea.
Teema lõpu poole me näeme, et STATE ja EN ühendamine Arduinoga võiks meie tööd nii hõlbustada kui ka komplitseerida. Esimeses skeemis üritame aga ilma STATE ja EN abita läbi saada: vaatame, mis õnnestub ja mil määral õnnestub.
1STATE—saame ühendada Arduino külge selleks, et teada saada ühenduse seisundit. Seisund 1: on ühendatud (inglise keeles paired) teise sinihambaga. Seisund 0: ei ole ühendatud (inglise keeles ütleme disconnected—NB: me ei ütle un-paired või non-paired).
2EN—tuleneb inglise keelsest sõnast enable—võimaldama: EN viik võimaldab jälgida ja kontrollida, mis režiimis töötab sinihammas.
25.3.3.1. Seega ühendame esialgu sinihamba neli viiku:
Meile on oluline, et sinihammas suhtleks: st et tema peal
- RXD viik (R=Receive; receive–eesti keeles vastu võtma) oleks ühendatud voldijaotus-skeemi abil Arduino digitaal-viiguga—peame selle viigu numbri deklareerima ka programmis.
ning
- TXD viik (T=Transmit; transmit–eesti keeles edastama) oleks ühendatud digitaal-viiguga, mille samuti deklareerime programmis.
25.3.3.2. RXD ja pingejagur:
RXD tarvis pingejagurit tehes (vt kollane ja roheline juhe koos takistite ning GND ühendusega) peame takistite väärtuste osas kindlasti arvutama välja selle, kuidas saada viik 11 kaudu (meie skeemil rohelise juhtmega)
5V pingest tekitada sinihamba viigule RXD lubatavat pinget 3.3V. Või vähemalt peame üritama lubatud 3.3V pingele niivõrd ligilähedast pinget, millega me veel saaks kvaliteetselt lugeda RXD-le saabuvat signaali. Põnevust annab see, et meil ei pruugi olla täpselt mingile internetist leitud retseptile vastavat kahte takistit: alltoodud kalkulaatoriga tehtud rehkendus näitab, et meie vahenditega 3.3V ei saavutagi. Kas tohime siis midagi muud pinge väärtust kasutusse võtta?
Pinegjaguri kohta on TÜ kodulehelt elektroonika alt leitav õppevideo: https://sisu.ut.ee/elektroonika/26-pingejagur-potentsiomeeter-reostaat
Harjutus B
Paneme siia kalkulaatori kohta illustreeriva lingi:
http://www.ohmslawcalculator.com/voltage-divider-calculator
Uurige, kuidas saate ouput voltage V_out (väljundpinge) alla väärtuse, mis vähemalt ligilähedaselt klapiks. Mina tegin antud netikalkulaatoriga sellise rehkenduse—vastavalt takistite valikule, mis mul hetkel kasutada on.
Vaadake, milliseid takisteid leidub Teie töövahendite komplektis ja otsustage ise, mida ja kuidas kasutate.
Mõõtke takisti tegelikku väärtust—see võib erineda takisti kohta antud teabest.
Seejärel otsustage, millist takistit kasutate.
Näidake tehtu õpetajale ette—kusjuures enne õpetajale ettenäitamist on alati targem Arduinole toidet mitte ühendada: ärge kiirustage USB kaabliga Arduino ja arvuti ühendamisega!
Mina seda skeemi läbi mängides otsustasin kasutada takisteid 3.3kΩ (kilo-oomi) ning 10 kΩ. Pinge seega RXD viigule ei tulnud sugugi 3.3V. Ent kuna mõõtmised andsid ühel hetkel ka veidi parema tulemuse, siis ikkagi otsustasin teadliku riskivõtmise kasuks.
(Aus on seda siin prototüüpimise juures niiviisi kirjeldada: möönan, et võinuksin töötada korrektsema lahenduse nimel, ent aega pikemaks proovimiseks ei olnud—see peatükk tuli lõpuks kirja saada ja õpilastega teema läbi proovida. Kuna oleme jõudmas järjest lähemale selle valikkursuse lõpusirgele, siis on ka viimane aeg mainida, et elu ei ole alati selline nagu õpetaja koolis õpetab. Mis ainetes olete seda veel tähele pannud?)
Hoolimata kahtlustest—minul sinihammas töötas ja lõpuks ka pinge mõõtmine näitas üsna 3.3V lähedast näitu. Sinihamba õppimise eesmärgil skeem seega toimis. Möönan, et nii ei olnud siiski korrektne—seega tehke minust korrektsemalt.
- Uurige pingejaguri-kalkulaatori abil oma võimalusi.
- Jälgige, et panete õiged väärtused ikka õigetesse positsioonidesse.
Kui Teile kasutada olevate takistitega väga täpselt välja ei tule, siis on muidugi vooluallikaga ühendamise korral risk, et rikute töövahendi. Ärge olge liiga kärsitud otsustama esimese võimaliku takisti-kombinatsiooni kasuks ja seda kohe proovima: pigem katsetage enne kuivalt—selle tarvis panin ma Teile ka lingi kalkulaatorile. Võtke aega surfamiseks otsisõnadega „voltage divider bluetooth Arduino“.
25.3.4. Programm:
Peame programmis kasutama SoftwareSerial.h teeki. Oluline on sellest teada, et antud tarkvara abil saame nn serial-ühendust (mida nimetame eesti keeles järjestikühenduseks) käivitada digitaal-viikudelt.
SoftwareSerial.h kasutamise tõttu on meie programm aga kahtlustäratavalt lühike.
Vaadake, kas kompileerub:
#include <SoftwareSerial.h> /*kasutame SoftwareSerial library */ SoftwareSerial sinihammas1(10, 11); /* anname sinihmabale nime: sinihammas1 ; määrame viigud: RX=10 ning TX=11. */ void setup() { Serial.begin(9600); /*käivitame serial monitori*/ sinihammas1.begin(38400); /* käivitame sinihammas1 */ /*AT testimiseks 38400, muidu endiselt 9600 */ Serial.println("kui on ""sinihammas1.begin(38400);"": anna AT käsklus"); /* Kui 38400 baud rate ja muu on ka korras, siis Serial monitorile käsu AT sisestamise järel ilmub vastus OK. */ /* Leidke AT käsklused, kuidas uurida järgi sinihamba nimi ja siis seda muuta siit: https://www.itead.cc/wiki/Serial_Port_Bluetooth_Module_(Master/Slave)_:_HC-05 */ } void loop() { // info saatmine sinihambalt temaga ühendatud terminalile: saadetava info kirjutame sinihambaga seotud Serial monitor aknasse. if (sinihammas1.available()) /* vt https://www.arduino.cc/en/Reference/SoftwareSerialAvailable available() funktsioon võimaldab juba serial receive puhvrisse loetud infot töötlusse võtta. */ Serial.write(sinihammas1.read()); // info saatmine terminalilt sinihambale: if (Serial.available()) sinihammas1.write(Serial.read()); }
25.3.5. Kas peale programmi laadimist Arduinole sinihammas ikka käivitus?
Kui olete programmi laadinud Arduinole, siis peaksime Serial monitori kaudu saama alustada suhtlust oma skeemis asuva sinihambaga: vaja on Arduino Serial monitori abil kontrollida, kas mingi suhtlus üldse saab toimuda.
Kõik on töökorras siis, kui
- sinihamba peal vilguvad punane ja sinine sisseehitatud LED;
- andes Serial monitori kaudu käskluse AT peale vastab sinihammas: OK.
Toome ka pildi Serial monitoril avanevast vaatest—anname käskluse AT:
Ja Enter vajutuse järel vastab sinihammas meile OK-ga:
Toimib?
Kindlasti tekkis küsimus, et mis asi on AT. AT on kaks esitähte ingliskeelsest sõnast ’ATtention’ (eesti keeles ’tähelepanu’, kui mõelda sõjaväelise konteksti peale, siis tähendab käsklus ’attention!’ eesti keeles käsklust ’valvel!’) AT seega annab seadmele teada, et tulemas on korraldus midagi teha. AT on seejuures ise pigem prefiks—ja sellele järgneb käskluse nimi (command name).
25.3.6. AT-käsud:
Kui sisestate internetiotsingusse otsisõnu „bluetooth“, „Arduino IDE“, „Serial monitor“, „AT“, siis satute kindlasti mingi valiku AT käskluste peale. Näiteks otsinguga „HC-05 bluetooth datasheet“, eriti kui lisasite täiendavalt ka „pdf“—võisite saada üsna palju vajalikku infot AT käskluste kohta.
Vajadusel korrake surfamist täiendavate otsisõnadega. Sageli ei ole õpetajat kusagilt võtta: peate ise lahendama probleeme—või veelgi hullem—Teie ise oletegi kõige targem inimene seltskonnas! Seltskond aga ei tea asjast midagi, samas vajavad sinihammast kui tööriista, Teie ise osututegi õpetajaks! Mida teete? (Otsite internetist õige asja välja—täpselt nii, nagu teeb sageli ka Teie Arduino-aine õpetaja.)
Teie õnneks Te praegu veel ise õpetaja rollis ei ole. Seega anname Teile siinkohal mugavalt Teie eest ära tehtud valiku AT käsklusi. Saate sinihammast edasi uurida: iga käsku alustame kombinatsiooniga „AT+…“. Ning kui mingi käsklus üldse töötab, siis see käsklus töötab ka väikeste tähtedega.
Harjutus C
Käske on veel… uurimine internetist pakub rohkelt avastamisrõõmu. Võime kirjutada mõne lisaks nendesse lahtritesse. Näiteks uurige iseseisvalt, kuidas saada teada sinihamba aadressi! Vihjeks ütleme ette, et need tingimata ei pruugi töötada… Uurime asja alljärgneva tabeli toel—oma töötava skeemi peal testides.
Lisage ise veel käske: Vaadake, mis netist leiate ja põnevad tunduvad. Siis selgitage leitu toimimist ka õpetajale.
Saate ka ise millegagi õpetajat üllatada—ega temalegi ei tee kahju natuke nuputamist.
Muide, parim õppimise meetod on üritada ise kellelegi asja selgeks õpetada—ja seda vana trikki õpetaja Teie peal ju ära kasutabki… Ka Teie saate sama trikki kasutada—näiteks õpetaja peal järgi proovida. Kas ta ikka saab Teie selgitusest aru?.
Surfake ja leidke veel…
Rikkalikuma taustateadmise huvides võite täiendada seda tabelit infoga, mida otsisõnadega „Arduino bluetooth AT commands“ leiate internetist. Arvestama peab sellega, et mõni Teie leitud käsk võib muuta Teie skeemi toimimist: näiteks vaid ühe sinihamba baud rate (dataedastuse kiirus) muutmise korral ei tule info ühelt sinihambalt teisele enam Teie poolt sisestatud kujul. Ärge naljalt AT käsklusega baud rate kallale minge—kui seda siiski teete, taastage seejärel koheselt originaalseaded!
Kuna paljud nendest käsklustest ei töötanud (tegime märkmeid!), kuna ilmselt ei töötanud suurt muud midagi peale juba ära proovitud AT (saite vastuseks OK), siis käskluste tööle saamiseks uurime edasi sinihamba olekuid.
25.3.7. Sinihamba olekud:
Sinihamba plaadile sisse ehitatud LED-ide vilkumisi eristades on võimalik teha vahet tema olekute vahel. AT käskluste õnnestumiseks on vaja tunda olekuid.
A) Esimene on lihtsalt sisselülitatud olek
Kui sinihammas reageeris meie koostatud skeemi esimesele katsetusele—kuna ühendused olid õigesti tehtud ning programm toimis, siis sinihambale sisse ehitatud punane ja sinine LED plinkisid kiirelt ja ühtlaselt võrdsetes osades. Saime selles olekus proovida, kas AT-le annab vastuseks OK… st kas sinihammas AT saatmise peale annab teada, et ta on ühendatud ja seega olemas.
Ent muud käsud, mida üsna üksikasjalikult tabeli abil korrastatult märkmeid tehes läbi vaatasime, ei toiminud… Vt eespool toodud nimekirju AT käsklustest ja tee vajaduse korral veel proovi. Kas peale AT, millele töökorras olles vastab OK-ga—midagi veel toimis?
B) Teine on AT käskluste andmiseks vajalik olek
Nüüd kui oleme vaadelnud sisselülitatud olekut, siis käivitame teise olekuna AT käskude andmise režiimi. Selleks a) võtame kõigepealt Arduinolt lahti meie maketeerimislauale tuleva 5V toite—katkestame vooluringi nii, et eespool A-osas kirjeldatud kiirem plinkimine lõpeb—kustuvad kõik märgu-LED-id. Seejärel b) kustunud LED-idega sinihambal leiame vajutusele reageeriva lüliti ja surume selle nupu sisse-asendisse: hoiame edasi selles asendis ja ei lase kogemata seda lülitit lahti. Jätkates c) lülitinupu alla-vajutatud asendis hoidmist paneme Arduinole 5V ühenduse tagasi—ühendame punase juhtme taas Arduinoga ning näeme, et plinkimises on toimunud muutus—plingib aeglasemalt! Vaatleme seda plinkimist ja jätame meelde.
Alles nüüd kui punane juhe sai 5V-toite võtmiseks Arduinole tagasi ühendatud d) laseme lahti sinihambale sisse ehitatud lüliti, see naaseb algasendisse tagasi—ta on nüüd oma töö ära teinud kuni järgmise korrani. Oleme viinud sinihamba tavalisest sisselülitatud olekust AT käskluste andmise jaoks vajalikku olekusse.
Vaatleme veel LED-isid—veendume, et need plingivad aeglasemas-pikaldasemas rütmis: umbes kahe sekundi kohta üks visuaalselt kenasti aeglasemana-pikemana tajutav sinise ja punase LED sujuvalt rütmiline helendamine-kustumine.
Et saada sinihammas käskluste andmiseks vajalikust olekust tagasi sisselülitatud olekusse, on vaja d) korraks taas pinge sinihamba VCC-viigult ära võtta: selleks tõmbame Arduinolt veel korra välja punase juhtme. Toimub tavaline sisse-lülitamine: ilma sinihambale sisseehitatud nuppu all-asendisse vajutamata--seega saame töörežiimiks osas A kirjeldatu.
Harjutus D punktides A ja B kirjeldatu kohta:
Paneme sinihammast vaheldumisi sisselülitatud režiimi ning siis käsurežiimi. Vaatleme LED-ide vilkumismustrit.
Kokkuvõtteks peale harjutamist:
- Tavaline sisselülitamine toimub ilma sinihambale sisseehitatud nuppu all-asendisse vajutamata 5V Arduino viigult lähtuvat punast juhet ühendades—saame töörežiimiks eespool osas A kirjeldatu.
- Käsurežiimi viimine toimub sinihambale sisseehitatud nuppu all-asendis hoides: piisab vaid 5V Arduino viigult lähtuva punase juhtme tagasiühendamisest—ja saamegi töörežiimiks eespool osas B kirjeldatu.
Mõlemal juhul on eelduseks, et Arduinol endal on toide olemas—kas siis USB või muu toide.
Harjutus E punktides A ja B kirjeldatu kohta:
Asume proovima AT-käsklusi. Kas kõik käsud töötavad? Mis ei tööta? Kui mõni käsk ei tööta, siis on hea võimalus esitada üks kõvem küsimus õpetajale. Pange küsimus enne esitamist kirja—nii saate visualiseerida, et kas sai piisavalt täpne ja keerukas küsimus.
Näiteks uurige, kas AT+NAME? käsk töötab? Kas veel midagi ei tööta?
Käskudel võivad olla ka sinihamba mudelite lõikes omad iseärasused. Mõnel töötab midagi paremini kui mõnel teisel ja sellega on mõistlik juba päris alguses tasapisi ära harjuda. Minul näiteks praegu käsk AT+NAME? ei tööta, ent AT+NAME=MingiUUSnimi töötab küll. Peaksin ehk läbi lugema midagi olulist internetist www.hc01.com kodulehelt. Või peaksin pikemalt netist otsides leidma parema sinihamba mudeli. Vastusevariante võib leida erinevaid.
NB!
Selle harjutuse kõige viimase AT-käsuna anname AT+ORGL käskluse. Originaalset sisu taastades veendume, et meie põnevatest katsetustest midagi järgnevat tööd häirima ei jää.
Harjutuses kõige lõpuks aga tõmbame Arduinolt taas välja punase 5V toitejuhtme ja jätame sinihamba seega korraks taas toiteta. Kui toite tagasi anname, siis oleme tagasi esimeses olekus: kas märkasite, et plinkimises leidis aset muutus—tempo taas kiirem nagu kirjeldasime osas A? Võime taas proovida anda AT-käske—ja taas see ei õnnestu!
Meil on võimalik kaks olekut: 1) käskude andmise olekus (inglise keeles command state) saame anda ette seda, kuidas 2) tavalises sisselülitatud olekus (inglise keeles initialised state) peaks midagi olema teisiti.
Hea juhtimine on see, kui tööinfo andmine ja tööülesande selle tööinfo põhjal täitmine ei ole läbisegi. Sinihammast on seega hea juhtida.
Alloleval pildil näete Serial monitori akent: kursori asukohas käsureal saab sisestada AT käsklusi, all laiemas osas on aga vastused juba sisestatud käsklustele:
C) Suhtlemine teise sinihambaga:
Harjutus F
Sinihammaste paari omavahel suhtlema programmeerimise tabel:
Teise sinihambaga ühendatuse kohta annavad esimesena infot sinihambale sisse ehitatud LED-id:
punane ja sinine süttivad ning kustuvad rütmiliselt—napilt kahekordsena tajutava topelt-sähvatusega igas sekundis.
Kui
A) sisselülitatud-oleku vilkumine tundub nagu kiire majakas ning
B) käskude-kuulamise-oleku vilkumine nagu aeglane majakas, siis
C) suhtluses olevad sinihambad meenutavad pigem politseiauto vilkureid.
Kui käes on õhtu—st pimedus on käepärast—lülitage korraks välja tuled oma toas ja vaadake kaugelt—viimati kirjeldatud vilkumine on selgelt erinev kahest eespool kirjeldatud vilkumisest. Sinihamba töörežiimi märkamise harjumus tuleb kasuks: töötempo muutub kiiremaks.
Harjutusi F
(Eelnenu kokkuvõtteks; teema paremaks omandamiseks võib sama jääda ka veel korra läbi teha kodutööna)
Kui AT käskude rutiinid on läbitud, peaks kaks omavahel seotud sinihammast hakkama kumbki oma LED-isid vilgutama omavahel seotud rütmis: vaadelge kahte seotud sinihammast. Mida märkate? Tehke ka märkmeid: läbi kirjutamine aitab meelde jätta kasulikke pisi-nüansse.
Kas kõik töötab nagu ma siin kirjeldan? Kui ei tööta, siis küsige julgesti õpetaja abi. Enne küsimuse formuleerimist aga kontrollige juhtmete ühendust.
Kui töötab, siis mängige. Muutke ka oma sinihamba nime. Mõelge, et miks ühendame kahte sinihammast aadressiga? Miks me ei kasuta kahe sinihamba ühendamiseks nende nimesid? Mida saame kiirelt muuta? Kas saite nime muuta? Kas saite nime kohta tehtud AT-päringule vastuse?
Võite internetist leida ka võimaluse muuta AT-käsuga sinihamba töösagedust… NB! kui näiteks Teie sinihamba baud rate ära muuta ja Teie sõbra sinihammas sedasama muutmist järgi ei korda, siis ühendus Teie ja Teie sõbra sinihamba vahel sellest veel ei pruugi katkeda… ent uurige, mis juhtub kui tahate normaalselt sõbraga suhelda? Mida märkate? Kas probleem kaob, kui olete ühtses baud rate vahemikus?
Põhimõtteliselt võiks nüüd juba õpituga selle peatüki osas vaat et rahule jääda: kõik hädavajalik justkui nagu toimib. Kaks sinihammast saavad suhelda. Kommenteerige (võite seda teha ka koduse tööna) midagi, mis Teile segaseks jäi. Esitage probleem kirjaliku küsimusena õpetajale. Küsimuse formuleerimist aga alustage sellest, et ehitate veelkord kogu süsteemi üles nullist, siis leiate probleemi ja panete selle kirja. Usutavasti ei saa õpetajal olema järgmine tund sugugi kerge, sest õpilastelt tulevad korralikud küsimused, millele vastamiseks ka õpetaja peab alustama skeemi ülesehitamisest. Prototüüpimine selleks ongi, et küsimustele vastata. Sinihamba peatükis oleme õppinud uuest ja esialgu ebamugavast teemast läbi liikumisest rõõmu tundma.
Ent kaugel veel võidukast lõpust:
meil on sinihambal veel kaks viiku, mida me targu enne ei hakanudki kuhugi ühendama.
Teeme seda nüüd ja ühtlasi lisame oma skeemile keerukust juurde. (Kui aga ühe õpikohtumise ajavaru on ammendatud, saame järgnevast teha ka peatüki kordamis-kohtumise koos väikese täiendava materjali lisamisega.)
25.3.8. STATE-viik
Toome järgmise vooluringiskeemi: lisaks juba olemasolevale, mille veelkord hoolega üle vaatate, lisage ka STATE viiguga ühendatud LED, takisti (vt skeemil lilla juhe). Uurige joonist.
STATE viigult peab särama hakkama LED siis, kui kaks sinihammast on omavahel ühendatud. Saame lisaks „politseilikule“ vilkumismustrile veel ühe indikaatori sellest, et sinihambad omavahel suhtlevad.
Kui lisasite samasuguse STATE viigule ühendamise meetodiga LED-i ka sõbra sinihamba skeemile, siis on LED-ide särast näha, kas side on olemas või mitte. Kirjeldage, kas nii on lihtsam või keerukam eristada sinihamba olekuid? Mida peate jälgima ja mis tunnused esinevad siis, kui teie poolt STATE viigule lisatud LED a) särab ja millised siis kui b) ei sära?
Kui toimib sinihammaste vaheline side, siis mõlemad LED-id säravad. Valige LED-id ja nende takistid sellised, et oleks LED-ide valgus teie töölaual kergesti märgatav. Võite eksperimenteerida: pange üks sinihammas käskluste režiimi ja seejärel tooge ta käskluste andmise režiimist tavalisse olekusse tagasi: kui kiirelt taastub sinihammaste vaheline side?
Võite ka proovida ühendada ühte sinihammast lahti USB kaablist ning panna seejärel sisse toide Arduinol oleva musta pistikupesa (inglise keeles power-jack) kaudu. Uurige ja eksperimenteerige erinevate võimalustega ja pange need kirja. Seejärel võtke kirjapandu ja üritage täpselt sama uuesti korrata—kas Teie kirjapandu ja skeemi tegelik toimimine langesid kokku?
25.3.9. EN-viik:
Alustuseks anname sinihambale AT käske nime kohta.
- Kas nime muutmine toimib?
- Kas nime muutmise edukuses veendumine ka toimib?
Teeme siin oma tähelepanekud ja võrdleme neid varasemate tähelepanekutega—küll on hea, kui meil on midagi varasematest katsetustest võimalik dokumenteeritult üle kontrollida. Saame näiteks vaadata, et kas meie praegune probleem ja varasem probleem on kuidagi sarnased? Või on kõik olnud vahepeal korras ja nüüd jälle ei tööta? Või ongi kogu aeg kõik korras olnud, ent me ei ole sellest aru saanud vaid oleme hoopis üritanud parandada midagi, mis tegelikult toimib ilma parandamiseta?3
Lisame EN viigule roosa juhtmega EN viigu juhtimise tarvis lüliti + sinise LED. Täiendavalt takistiga ühendus GND peale ning lisatud ka LED.
3 Õpime niiviisi oma tegevust dokumenteerima; dokumenteerimine võimaldab aga muresid ja lahenduskäike teistega jagada. Vihje: kui on aega ja soovi ning olete jõudnud päris selle peatüki lõppu—siis võib teha ka väikese konverentsilaadse tunni esinenud vigadest koos demonstratsioonidega!
Vaadake joonist.
Seejärel käivitage järgmine programm (muudetud osa punasega—kommenteerige seda):
#include <SoftwareSerial.h> /*kasutame SoftwareSerial library */ SoftwareSerial KOERAHAMMAS_1(10, 11); /* anname sinihambale nime: sinihammas1 ; määrame viikid: RX=10 ning TX=11. */ void setup() { pinMode (12, OUTPUT); digitalWrite (12, HIGH); Serial.begin(9600); /*käivitame Serial monitori*/ KOERAHAMMAS_1.begin(38400); /* käivitame sinihammas1 */ /*AT testimiseks 38400, muidu suhtlemiseks aga tuleb tagasi panna endiselt 9600 */ Serial.println("KOERAHAMMAS_1.begin(38400): anna AT käsklus"); /* Kui 38400 baud rate ja muu on ka korras, siis Serial monitorille käsu AT sisestamise järel ilmub vastus OK. */ /* Leidke AT käsklused, kuidas uurida järgi sinihamba nimi ja siis seda muuta siit: https://www.itead.cc/wiki/Serial_Port_Bluetooth_Module_(Master/Slave)_:_HC-05 */ } void loop() { // info saatmine sinihambalt temaga ühendatud terminalile: saadetava info kirjutame sinihambaga seotud Serial monitor aknasse. if (KOERAHAMMAS_1.available()) /* vt https://www.arduino.cc/en/Reference/SoftwareSerialAvailable available() funktsioon võimaldab juba serial receive puhvrisse loetud infot töötlusse võtta. */ Serial.write(KOERAHAMMAS_1.read()); // info saatmine terminalilt sinihambale: if (Serial.available()) KOERAHAMMAS_1.write(Serial.read()); }
Katsetage lülitiga ja tehke märkmeid. Kas joonistub välja mingi toimimis-muster?
Kui olete lüliti asendit muutnud, mis juhtub? Jälgige nii sinihambal asuvaid märgu-LED-isid kui ka sinist (EN) ja punast (STATE) märgu-LED-i.
Vahetage tööolekuid—saate 5V Arduinolt lahti ühendamisega ning EN-viigule pandud lülitiga manipuleerides leida olekute vahetamise võimalusi. Proovige sisse ühendatud olekut, seejärel aga käskluste andmise olekut—ja üritage mõlemas anda käsklust AT+NAME? Mis juhtudel hakkab sinihammas ühendust näitama?
25.4. Kodune ülesanne
Kirjeldage olekute vahetamist, täitke tabel käskude kohta, mida vajate, märkustesse lisage, mis juhtudel käsklust täidetakse või ei täideta.
25.5. Lisalugemine
Sai väga pikk peatükk. Ent kuna keset seda pikka teemat on minult muuhulgas ka aru päritud, et miks on nimeks just sõna sinihammas, siis ei jää muud üle kui vastata. Pean tunnistama, et sellele küsimusele ma ilma suurema uurimiseta kohe kindlasti ei oleks osanud vastata. Seega igaks juhuks (ka minu enda märkmete talletamise tarvis) panen asja kirja Lisalugemisena.
Alljärgneva ajaloo-ekskursiooni järgi panen ka tegelikku teemasse tagasi suunava märksõna, millega soovitan ise surfata—nii näete, et peatükile kulunud pikk aeg oleks võinud tegelikult veel pikem ja huvitavam olla. Tegime vaid sissejuhatuse.
Lisalugemine Bluetooth nime kohta
Ehkki bluetooth nimetuse päritolu meie konstrueerimis-harjutusi ei mõjuta, on ometi just nime osas ajaloolist targutamist sedavõrd palju, et parem siiski teha ka selles kursuses kiir-ekskursioon nime-teemasse.
Seadme nime—bluetooth—kohta on lugeda hulgaliselt materjali, mis viitab selle päritolule kuningas Harald Sinihamba nimest. Kuidas Haraldist sai Harald Sinihammas?
Haraldi puhul on tegemist 10. sajandil lühiajaliselt Taanis Zealandi ja Jutlandi inimeste üle võimu omanud isikuga, kelle kohta selle tunni teemaks oleva sinihamba looja Jim Kardach luges Frans G. Bengtssoni kirjutatud viikingi-romaani. Et Jim Kardach loodud süsteem võimaldab liita omavahel paaridena suhtlevateks kooslusteks mobiiltelefone, arvuteid, muid seadmeid (vaadake eestpoolt kuidas) , siis teatava analoogia põhjal viikingite üle mingil määral valitseda suutnud isikuga tegi Jim Kardach 1997 aastal ettepaneku panna ka antud elektroonilise süsteemi nimeks bluetooth.
Hõime oma võimule allutanud isikut nimetati pigem kuningas Haraldiks: ei ole dokumenteeritud, et kaasaegsed oleks seda sõjameest kuidagigi Sinihambaks nimetada söandanud. Sinihamba nime kohta on teada, et selle esmakasutus on dateeritav üle sajandi hiljem kirja pandud ladinakeelses Roskilde kroonikas (Chronicon Roskildense). Roskilde kroonika oli 11. sajandil Taani kristlikku valitsemis-mõtet toetav tekst: Haraldi lugu seal ei ole ainus lugu. Legendid aga ongi legendid seetõttu, et me neist vaimustume, muuhulgas armastame kasutada kõike legendaarset ka nimede panekuks. Nimed omakorda taastoodavad legendi.
Sõna ’sinihammas’ on seega elektroonika kontekstis kenasti poeetilise nüansiga. Meie eesmärk on seda elektroonilist vahendit tundma õppida: sajandite tagusest poliitilisest võitlusest põnevam on kasutada tänapäevaseid teadmisi seadmete vahelise suhtluse mõistmiseks.
Sinihamba-meetod aitab meil korraga ühendada kahte sinihamba-seadet. Tervet toatäit seadmeid on seega võimalik omavahel suhtlema panna kahekaupa—paaridena.
Surfamiseks internetis pakun aga välja sõna ’piconet’.
Minu surfamine algas nii:
Kui huvi suurem, siis soovitan lugeda ka näiteks IEEE kohta. Otsisõnadeks „IEEE 802“