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