Sök…


Exempel - temperatursensor

Gränssnitt på DS18B20 med Raspberry pi

Anslutning av DS18B20 med Raspberry pi

ange bildbeskrivning här

Du kan se att det finns tre terminaler

  1. Vcc
  2. Gnd
  3. Data (One-wire protokoll)

ange bildbeskrivning här

R1 är 4,7k ohm motstånd för att dra upp spänningsnivån

  1. Vcc ska anslutas till någon av 5v- eller 3.3v-stiften på Raspberry pi (PIN: 01, 02, 04, 17).
  2. Gnd ska anslutas till någon av Gnd-stiften från Raspberry pi (PIN: 06, 09, 14, 20, 25).
  3. DATA ska anslutas till (PIN: 07)

Aktivera gränssnittet med en tråd från RPi-sidan

  1. Logga in på Raspberry pi med kitt eller annan Linux / Unix-terminal.

  2. Efter inloggning öppnar du filen /boot/config.txt i din favoritwebbläsare.

    nano /boot/config.txt

  3. Lägg till den här raden dtoverlay=w1–gpio i slutet av filen.

  4. Starta om Raspberry pi sudo reboot .

  5. Logga in på Raspberry pi och kör sudo modprobe g1-gpio

  6. sudo modprobe w1-therm

  7. Gå nu till katalogen / sys / buss / w1 / enheter cd /sys/bus/w1/devices

  8. Nu hittar du en virtuell katalog skapad av din temperatursensor från 28 - ********.

  9. Gå till den här katalogen cd 28-********

  10. Nu finns det ett filnamn w1-slave. Denna fil innehåller temperaturen och annan information som CRC. cat w1-slave .

Skriv nu en modul i python för att läsa temperaturen

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)

Ovanför pythonmodulen kommer att skriva ut temperaturen vs adressen under oändlig tid. RATE-parameter definieras för att ändra eller justera frekvensen för temperaturfrågan från sensorn.

GPIO-stiftdiagram

  1. [ https://www.element14.com/community/servlet/JiveServlet/previewBody/73950-102-11-339300/pi3_gpio.pngנומuut3]


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow