7. 1-wire lämpötila-anturi

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

kuva7-1

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.

kuva7-2

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

kuva7-3

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

kuva7-4

Näin siis pitäisi näkyä lämpötila.

Sama englanniksi