Kokeilemme vielä DS18B20 lämpötila-anturin kytkemistä Raspberry Pi:hin. Kyseinen anturi on ns. 1-wire anturi. Anturi näyttää pieneltä 3-jalkaiselta transistorilta, mutta on hyvin tarkka digitaalinen lämpötila-anturi. Anturi sisäältää siis 1-wire-rajapinnan ja ohjauslogiikan, sekä luonnollisesti lämpötila-anturin.
Tehdään varsin yksinkertainen kytkentä, johon tarvitsemme
- DS18B20 -anturin
- 4,7 kΩ vastuksen
- kytkentälankoja
Huomaa että alla näkyvässä kytkennässä on myös aiemmin tekemämme painonapit, led ja analogia-tulo. Älä anna sen häiritä.
HUOM! Kuvassa virhe. Pinkki johto DS18B20 keskimmäiseltä pinniltä menee kuvassa pinniin 8 (GPIO14). Kytke johdin pinniin 7 (GPIO4)
Huomaa myös että DS18B20 ”1-wire” anturit voidaan kytkeä rinnakkain – toisin kuin mitkään muut lämpötila-anturit. Kaikki rinnan kytketyt anturit käyttävät samoja pinnejä, mutta jokainen anturi tarvitsee oman 4,7kΩ vastuksen datapinnin ja +3,3V välille.
Anturin Output-pin (keskimmäinen) lähettää digitaalisen viestin ja Raspberry tarvitsee luonnollisesti rajapinnan ymmärtääkseen tätä viestiä. Saadaksemme tämän rajapinnan käyttöön, joudumme muokkaamaan hieman tiedostoa /boot/config.txt
sudo nano /boot/config.txt
Lisää tiedoston loppuun rivi
dtoverlay=w1-gpio,gpiopin=4
Tämän jälkeen Raspberry pitää käynnistää uudestaan ja sen voi tehdä komentoriviltä vaikka komennolla:
sudo reboot
Kun Raspberry on käynnistynyt ja olet kirjautunut sisään, avaa Terminal ja aja seuraavat komennot
sudo modprobe w1-gpio sudo modprobe w1-therm cd /sys/bus/w1/devices ls cd 10-xxxx (vaihda tähän se sarjanumero, joka näkyy) cat w1_slave
Vastauksena näkyy jotakuinkin tällaista.
Rajapinta ei ole kaikkein luotettavinta mallia, mutta silti se kertoo meille, onko lämpötila luettavissa. Vastauksen saamme ensimmäisen rivin lopusta, jossa on koko YES tai NO. Jos vastaus sattuu olemaan YES, lämpötila on toisen rivin viimeisenä eli esimerkiksi t=22312 ja se ilmoitetaan siis tuhannesosan tarkkuudella eli tuo tarkoittaisi lämpötilaa 22,312 °C.
Voit kytkeä siis useampia antureita rinnan ja tällöin näet usempia tiedostoja devices-kansiossa. Jokaisella on siis oma sarjanumeronsa, jonka perusteella tiedosto luodaan.
Sitten tehdään tälle vähän koodia.
sudo nano onewire.py
Kirjoitettuasi ohjelman tallenna se ctrl+o ja paina enteriä kun nano kysyy vahvistusta tiedostonimelle File Name to Write: onewire.py
Voit poistua ohjelmasta ctrl+x.
Kokeillaan ohjelman ajamista antamalla Terminalissa komento
Näin siis pitäisi näkyä lämpötila.