Sensoravlesning med Raspberry Pi
(Edit this document) (Create subordinate document)
Raspberry Pi (RPi) er velegnet for å kople til elektroniske kretser og sensorer, fordi maskinens I/O-kretser ligger lett tilgjengelig på hovedkortet. Det er også ferdige Python-moduler som gjør det enkelt å sette og lese tilstanden på et antall digitale porter. RPi har også I/O-kretser for seriell kommunikasjon.
RPi har ingen innebygget Analog-Digital konverter, så analoge verdier krever at en ADC tilkoples eksternt.
Inndata
Et digitalt signal tilkoplet en av I/O-portene kan avleses med følgende Python-setninger:
import RPi.GPIO as GPIO
INPORT=23
GPIO.setmode(GPIO.BCM)
GPIO.setup(INPORT,GPIO.IN)
verdi = GPIO.input(INPORT)
Det er også mulig å stille en input-port til intern pull-up med setningen
GPIO.setup(INPORT,GPIO.IN,pull_up_down=GPIO.PUD_UP)
Utdata
Et digitalt signal kan påføres en ut-port i RPi med følgende setninger:
import RPi.GPIO as GPIO
OUTPORT=12
GPIO.setmode(GPIO.BCM)
GPIO.setup(OUTPORT,GPIO.OUT)
GPIO.output(OUTPORT,GPIO.HIGH) # evt. verdien GPIO.LOW
Avbrudd
Det er mulig å knytte avbruddsrutiner i Python til endringer i tilstanden på en inn-port. Her er et eksempel på avbrudd knyttet til en fallende signalflanke:
import RPi.GPIO as GPIO
INPORT=23
def on_falling(channel):
# Avbruddshåndtering her
GPIO.setmode(GPIO.BCM)
GPIO.setup(INPORT,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(INPORT,GPIO.FALLING,callback=on_falling,bouncetime=300)
Formidling av data via mqtt
Det er enkelt å integrere avlesning/påføring av digital signaler med kommunikasjon gjennom mqtt. De samme Python-klassene som brukes i andre eksempler kan uten videre brukes også i programmer som benytter GPIO-operasjoner.
Python-kode som avleser tilstander gjennom GPIO kan bygge et datastruktur basert på json-syntaks og publisere dette gjennom mqtt. Dette kan f.eks. resultere i et dokument vist på CMS, eller et telefonoppringing fra Asterisk. Andre typer tjenesteintegrasjon kan skapes etter behov, og er ikke begrenset av disse to tjenestene.
Last update (UTC): 2019-09-30 03:16:10 by anon - Docid: 19 - Parent docid: 14 Download docx