sunnuntai 6. elokuuta 2017

Ultraäänisensorin testailua

Mitä ihmettä, onko Pii purettu osiin? Ei hätää, se on vain ultraäänisensori, samanlainen kuin Piillä! Se on Piin silmät, jonka avulla se näkee eteensä. Päätin kokeilla Make: Sensors -Projects and Experiments to Measure the World with Arduino and Raspberry Pi -kirjan (kirjoittajat Tero Karvinen, Kimmo Karvinen ja Ville Valtokari) ohjeiden mukaista ultraäänisensorin kytkemistä koekytkentälevyyn ja Arduinoon. Tilaamassani Arduinon aloituspaketissa oli HC-SR04 -ultraäänisensori.


Ultraäänisensorilla voi mitata etäisyyttä: se lähettää ääntä ja mittaa äänen palaamiseen kuluneen ajan. Kun tiedetään, että ääni liikkuu n. 330 m / s, ohjelma voi mitata välimatkan kaiun palaamiseen kuluvasta ajasta. Äänen frekvenssi on yleensä niin korkea, ettei ihmiskorva sitä kuule. Siksi sitä sanotaan ultraääneksi.

Nykyisin valmistetaan monia halpoja ultraäänisensoreja, kuten omistamani HC-SR04. Se maksaa vain euron pari.  HC-SR04 -sensorin sijaan on olemassa myös esimerkiksi Parallaxin valmistama Ping-ultraäänisensori. Käsittääkseni Ping on muiden ultraäänisensorien esikuva. Ne ovatkin saman näköisiä:

Kuva kirjasta Make: Sensors -Projects and Experiments to Measure the World with Arduino and Raspberry Pi (Tero Karvinen, Kimmo Karvinen ja Ville Valtokari).

Ensisilmäyksellä ainoa ero kyseisten Ping - ja HC-SR04 -sensorien väillä on "silmien" välissä näkyvä teksti. Mutta erona on myös se, että Pingissä on vain 3 nastaa, kun taas HC-SR04:ssa on neljä. HC-SR04:n käyttää yhtä nastaa lähettääkseen äänipulssin ja toista lukeakseen kaiun, kun taas Pingissä ne sisältyvät samaan nastaan. Kiinnosti tietää, kumpi ultraäänisensori Piissä on! Mutta siinä olikin Makeblockin oma ultraäänisensori.


Katso Pii, siinä voi olla tulevan sisaruksesi kasvot! Pii ei malta odottaa, että saisi robottikaverin!


Sitten testaamaan! Kirjan kytkentäkaavio näytti tältä (alla oleva kuva). Hieman hämmennyin, kun siihen ei kuulunut vastuksia, mutta sitten muistin, että Arduinon nastat kestävät suurempaa sähkövirtaa kuin Raspberry Pin. Raspberry Pi:n nastat kestävät Make: Action - Movement, Light, and Sound with Arduino and Raspberry Pi-kirjan (kirjoittaja Simon Monk) mukaan 16 mA sähkövirran, kun taas Arduinon nastat kestävät 40mA. Ainakin oletan, että se liittyy tuohon, ettei vastuksia tarvitse, kun liitän sensorin Arduinoon. Jos tekisin ultraäänisensorikokeen Raspberry Pi:llä, sen kytkentöhin kuuluisivat vastuksetkin. Pitää  muistaa hommata Raspberryyn vihdoin se muistikortti!
     Minulla itselläni ei ole Make: Action -kirjaa, mutta lueskelin sen alkukappaleita Kindlestä, koska siellä suurimpaan osaan kirjoista saa ladattua esikatselun! Esikatselussa pääsee tutustumaan kirjojen ensimmäisiin kappaleisiin. Kätevää.


Tältä kytkentäni lopulta näytti. Katsoin vain, että maadoitusjohto menee sensorin Gnd -nastan riviltä Arduinon Gnd-nastaan (gnd tarkoittaa groundia), ja että toinen johto menee sensorin V cc-nastasta Arduinon 5 V -nastaan. V cc - ja Gnd -nastat ovat nimeltään "power supply pin", eli  suomeksi varmaan virtalähdenastoja. Virtalähdenasta liittyy virtapiirissä virran lähteeseen, mikäli oikein ymmärsin. Ymmärtääkseni groundin jännitteen suuruus on vertailuarvo (esim 0 V), ja sitä pistettä virtapiirin jännite käyttää "tietääkseen arvonsa". Quoran sivuilla kerrotaan, että jännitteen yksikkö voltti on suhteellinen käsite. Se kertoo potentiaalieron kahden kohteen välillä eli se tarvitsee viitearvon, johon sitä verrataan. Siten voidaan sanoa, että signaali on niin ja niin monta volttia "referenced to ground" eli verrattuna maadoitusarvoon.  Avopuolisoni selitti siitä hyvän vertauskuvan: korkeutta mitattaessa tulee olla myös vertailukohta, eli esimerkiksi maan pinta. Sama pätee voltteihin, kun mitataan jännitettä.


Latasin http://makesensors.botbook.com -osoitteesta esimerkkikoodit Arduinoon. Keskityn taas elektroniikkaan koodaamisen sijaan, joten valmiit koodit ovat hyvä juttu! Myöhemmin alan opetella koodaamaan itse haluamiani ohjelmia virityksiini. Tässä on lataamani koodi:

Kirjan Make: Sensors -Projects and Experiments to Measure the World with Arduino and Raspberry Pi (Tero Karvinen, Kimmo Karvinen ja Ville Valtokari)  koodi Arduinon ultraäänisensorille. Ladattu osoitteesta http://makesensors.botbook.com.
Latasin koodin Arduinoon, ja jes, ainakin valot vilkkuivat siihen malliin, että jotain tapahtuu! Hoksasin kuitenkin, etten oikeastaan tiennyt, mihin etäisyyden mittauksien arvojen pitäisi tulostua. Jos haluaisin tulostaa Arduinon ohjelmassa esimerkiksi "Hello world", mihin se tulostuisi? Netistä kuitenkin selvisi pian, että Arduinoon saa sarjamonitori-ikkunan (serial monitor), joka kommunikoi Arduinon alustan kanssa. Siihen siis voi tulostaa komentoja! Mutta hetkinen, jokin ei nyt näyttänyt oikealta. Ikkunaan tulostui vain kysymysmerkkejä väärinpäin. Hmm, missähän vika oli?


Netistä selvisi syy: en ollut asettanut baudeja vastaamaan samaa nopeutta, kuin koodin "Serial.begin" -kohdassa oli, eli 115200. Asia oli pian korjattu! Make: Sensors -kirjassakin se oli mainittu, mutten ollut huomannut. En vielä tarkalleen tiedä, mitä baudit ovat, mutta selvitän sen myöhemmin.


Jipii, nyt ikkunaan tulostui lukemia! Laitoin eteen oman käteni, hiiren, käänsin sensorin mittaamaan lampun etäisyytä ja kokeilin myös mitata katon etäisyyttä.


Sarjamonitori näyttää lukemat senttimetreinä. Esimerkiksi seinä oli 34 cm päässä (ultraäänet läpäisivät verhon).


Heei, Pöhköpanda löntysteli sensorin eteen! Voi toista, ihmetteli varmaan mitä täällä tapahtuu. No ei se haittaa, istu vain siinä <3


Mutta hetkinen, sensorin lukemat näyttivät nyt yli 30 metriä! Mitäs ihmettä? Okei tunnustan, tilanne on lavastettu. Halusin vain testata kirjan esimerkkiä, jossa pehmeä esine laitetaan sensorin eteen. Pöhkis piti herättää unestaan koetta varten, pieni ressukka <3


Panda on sensorille kirjan mukaan näkymätön, koska pehmeä materiaali imee niin paljon ääntä, että kaiku on käytännössä olematon. Kaltevat pinnat ovat toinen ultraäänisensorien akillen kantapää. Katsotaan, mitä lukemia tästä seuraa.


Lukemat eivät vastaa lainkaan todellisuutta, kuten alla olevasta kuvasta näkyy. Kirja ei tosiaankaan ollut parin metrin päässä sensorista. Ultraäänet heijastuvat kaltevista pinnoista väärään suuntaan, sen sijaan että ne palaisivat takaisin sensoriin.


Jipii, siinä oli ensimmäinen sensorikokeiluni! Tästä se lähtee, kiva tutustua robottien aisteihin. En malta odottaa, että tilaamani sensoripaketti saapuu!

Ei kommentteja:

Lähetä kommentti