Zoeken…


Voorbeeld - temperatuursensor

Interface van DS18B20 met Raspberry pi

Verbinding van DS18B20 met Raspberry pi

voer hier de afbeeldingsbeschrijving in

Je kunt zien dat er drie terminals zijn

  1. Vcc
  2. Gnd
  3. Gegevens (One wire protocol)

voer hier de afbeeldingsbeschrijving in

R1 is 4,7 k ohm weerstand voor het omhoog trekken van het spanningsniveau

  1. Vcc moet worden aangesloten op een van de 5v of 3.3v-pinnen van Raspberry pi (PIN: 01, 02, 04, 17).
  2. Gnd moet worden aangesloten op een van de Gnd-pinnen van Raspberry pi (PIN: 06, 09, 14, 20, 25).
  3. DATA moet verbonden zijn met (PIN: 07)

De eendraadsinterface vanaf de RPi-zijde inschakelen

  1. Meld u aan bij Raspberry pi met behulp van stopverf of een andere linux / unix-terminal.

  2. Open na het inloggen het bestand /boot/config.txt in uw favoriete browser.

    nano /boot/config.txt

  3. Voeg nu deze regel dtoverlay=w1–gpio aan het einde van het bestand.

  4. Herstart nu de Raspberry pi sudo reboot .

  5. Log in op Raspberry pi en voer sudo modprobe g1-gpio

  6. Voer vervolgens sudo modprobe w1-therm

  7. Ga nu naar de map / sys / bus / w1 / devices cd /sys/bus/w1/devices

  8. U zult nu een virtuele map ontdekken die is gemaakt van uw temperatuursensor vanaf 28 - ********.

  9. Ga naar deze map cd 28-********

  10. Nu is er een bestandsnaam w1-slave , dit bestand bevat de temperatuur en andere informatie zoals CRC. cat w1-slave .

Schrijf nu een module in python om de temperatuur af te lezen

import glob
import time

RATE = 30
sensor_dirs = glob.glob("/sys/bus/w1/devices/28*")

if len(sensor_dirs) != 0:
    while True:
        time.sleep(RATE)
        for directories in sensor_dirs:
            temperature_file = open(directories + "/w1_slave")
            # Reading the files
            text = temperature_file.read()
            temperature_file.close()
            # Split the text with new lines (\n) and select the second line.
            second_line = text.split("\n")[1]
            # Split the line into words, and select the 10th word
            temperature_data = second_line.split(" ")[9]
            # We will read after ignoring first two character.
            temperature = float(temperature_data[2:])
            # Now normalise the temperature by dividing 1000.
            temperature = temperature / 1000
            print 'Address : '+str(directories.split('/')[-1])+', Temperature : '+str(temperature)

Bovenstaande python-module drukt de temperatuur versus het adres oneindig af. De parameter RATE is gedefinieerd om de frequentie van de temperatuurvraag van de sensor te wijzigen of aan te passen.

GPIO-speldiagram

  1. [ https://www.element14.com/community/servlet/JiveServlet/previewBody/73950-102-11-339300/pi3_gpio.pngBuch cialis3]


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow