Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:controllers:raspberry_pi_erweiterung_mit_schaltausgaengen_rev.1

RaspberryPi-Erweiterung mit Schaltausgängen_Rev.1

Hier die aktuelle Version der Raspberry Pi - Erweiterung mit Schaltausgängen.

Der Formfaktor wurde an die neuen Raspberry Pi - Variationen angepasst.
Weiter wurde die Erweiterung mit einer Batterie gestützten RTC ausgerüstet.

Hinweise zur Erweiterung gibt es bei udo.volksz@gmail.com


Features

  • Ein Eingang für den ir-schreib-lesekopf-ttl-ausgang; bis zu vier weitere USB-IR-Schreib-Leseköpfe können über die USB-Eingänge des RaspberryPi angeschlossen werden.
  • Sechs DIN gerechte S0-Eingänge mit aktiver Impulsformung und Entprellung der S0-Eingangssignale.
  • Ein 1-Wire-Eingang mit einem Busmaster zum Anschluss von ( fast ) beliebig vielen 1-Wire-Sensoren und/oder 1-Wire-Schalteinheiten.
  • Zwei unabhängig voneinander schaltbare Relais.
  • Versorgungsspannungs-Eingang Verpolungssicher. Dient auch für die Spannungsversorgung des Raspberry Pi. Benötigt wird eine 5V/2-3A Spannungsversorgung über externes Netzteil, z.B.: von Exp-Tech.
  • Batterie gestützte RTC mit einem MAX DS3231.
  • Alle Anschlüsse des Raspberry Pi über Stacking Header nutzbar. (Soweit nicht von der Erweiterung genutzt.)
Die Relais auf der Leiterplatte können zwar ohmsche Lasten bis 230V/5A, Datenblatt, schalten. Es wird aber dringend Empfohlen diese Relais nur für Spannungen bis 24V einzusetzen. Verbraucher mit höheren Spannungen und Strömen können über zugelassene externe Installationsrelais geschaltet werden, die von den Relais auf der Erweiterung angesteuert werden.


Software

Die aktuelle Version von vzlogger kann S0-Impulse von den GPIOs und auch 1wire-Sensoren loggen, insofern ist s0vz und 1wirevz nicht mehr notwendig.

Fertiges Image

Ein komplettes Image für alle RPI-Versionen könnt ihr euch hier herunter laden: Image-Quelle
Darauf sind installiert: vzlogger, die middleware, das Frontend und phpmyadmin.
Es wird mindestens ein 8GB SD-Karte benötigt. Besser ist eine 16GB bzw. 32GB SD-Karte.
Die Installation kann auf einem Windows-Rechner mit Hilfe von http://sourceforge.net/projects/win32diskimager/files/latest/download?source=navbar erfolgen. Nach dem Installieren des Image auf die SD-Karte mit Putty auf den RPi einloggen und „sudo raspi-config“ ausführen und das Filesystem expandieren.
Dann reboot. „sudo reboot“
Das Frontend mit einem Browser aufrufen und vorhandene Kanäle löschen und eigene Kanäle erstellen. Die UUIDs merken.
Cockies im Browser erlauben.
Danach wieder mit Putty einloggen.
Jetzt müssen die Dateien unter /etc : vzlogger.conf und rc.local editiert werden.
„sudo nano /etc/vzlogger.conf“
„sudo nano /etc/rc.local „
In der rc.local müssen die entsprechenden Programme und GPIOs der Schaltausgänge freigegeben werden.Nicht genutzte GPIOs auskommentieren (#)
In der vzlogger.conf müssen die IDs der 1Wire-Sensoren und die zugehörige UUID eingetragen werden. Vorhandene IDs und UUIDs werden überschrieben.
Die IDs der angeschlossenen 1Wire-Sensoren bekommt man mit dem Befehl „ls /sys/bus/w1/devices/“ heraus.
In der vzlogger.conf müssen die den S0-Eingängen entsprechenden GPIOs und die entsprechenden UUIDs eingetragen werden. Vorhandene UUIDs oder Platzhalter werden überschrieben.
Wenn alles funktioniert 'verbosity' auf '0' setzen.
Danach reboot.

Hier eine Beispiel vzlogger.conf für 1wire und S0:

{
  "retry": 0,
  "daemon": true,
  "verbosity": 15,
  "log": "/var/log/vzlogger.log",
  "local": {
    "enabled": false,
    "port": 8080,
    "index": false,
    "timeout": 0,
    "buffer": 0
  },
  "meters": [
    {
      "enabled": true,
      "allowskip": false,
      "interval": -1,
      "aggtime": -1,
      "aggfixedinterval": false,
      "channels": [
        {
          "uuid": "0c916ca0-ef7d-11e4-8365-2512933ea8df",
          "identifier": "Impulse",
          "api": "volkszaehler",
          "middleware": "http://127.0.0.1/middleware.php",
          "aggmode": "none",
          "duplicates": 0
        }
      ],
      "protocol": "s0",
      "gpio": 4,
      "configureGPIO": true,
      "send_zero": false,
      "debounce_delay": 0
    },
    {
      "enabled": true,
      "allowskip": false,
      "interval": -1,
      "aggtime": -1,
      "aggfixedinterval": false,
      "channels": [
        {
          "uuid": "31be9060-ef7d-11e4-845a-693a7878620a",
          "identifier": "Impulse",
          "api": "volkszaehler",
          "middleware": "http://127.0.0.1/middleware.php",
          "aggmode": "none",
          "duplicates": 0
        }
      ],
      "protocol": "s0",
      "gpio": 18,
      "configureGPIO": true,
      "send_zero": false,
      "debounce_delay": 0
    },
    {
      "enabled": true,
      "allowskip": false,
      "interval": -1,
      "aggtime": -1,
      "aggfixedinterval": false,
      "channels": [
        {
          "uuid": "079e4d60-f03a-11e4-a1f2-8ba3458b66ed",
          "identifier": "Impulse",
          "api": "volkszaehler",
          "middleware": "http://127.0.0.1/middleware.php",
          "aggmode": "none",
          "duplicates": 0
        }
      ],
      "protocol": "s0",
      "gpio": 17,
      "configureGPIO": true,
      "send_zero": false,
      "debounce_delay": 0
    },
    {
      "enabled": true,
      "allowskip": false,
      "interval": -1,
      "aggtime": -1,
      "aggfixedinterval": false,
      "channels": [
        {
          "uuid": "14d79bd0-f03a-11e4-85e9-edfdbad8043f",
          "identifier": "Impulse",
          "api": "volkszaehler",
          "middleware": "http://127.0.0.1/middleware.php",
          "aggmode": "none",
          "duplicates": 0
        }
      ],
      "protocol": "s0",
      "gpio": 23,
      "configureGPIO": true,
      "send_zero": false,
      "debounce_delay": 0
    },
    {
      "enabled": true,
      "allowskip": false,
      "interval": -1,
      "aggtime": -1,
      "aggfixedinterval": false,
      "channels": [
        {
          "uuid": "24ef24a0-f03a-11e4-8653-2f3eb496bfb8",
          "identifier": "Impulse",
          "api": "volkszaehler",
          "middleware": "http://localhost/middleware.php",
          "aggmode": "none",
          "duplicates": 0
        }
      ],
      "protocol": "s0",
      "gpio": 27,
      "configureGPIO": true,
      "send_zero": false,
      "debounce_delay": 0
    },
    {
      "enabled": true,
      "allowskip": false,
      "interval": -1,
      "aggtime": -1,
      "aggfixedinterval": false,
      "channels": [
        {
          "uuid": "2eb394a0-f03a-11e4-b392-930d4a012661",
          "identifier": "Impulse",
          "api": "volkszaehler",
          "middleware": "http://127.0.0.1/middleware.php",
          "aggmode": "none",
          "duplicates": 0
        }
      ],
      "protocol": "s0",
      "gpio": 22,
      "configureGPIO": true,
      "send_zero": false,
      "debounce_delay": 0
    },
    {
      "enabled": true,
      "allowskip": false,
      "interval": 30,
      "aggtime": -1,
      "aggfixedinterval": false,
      "channels": [
        {
          "uuid": "68102e10-ef7c-11e4-a495-7f0a84de0257",
          "identifier": "28-000004508eec",
          "api": "volkszaehler",
          "middleware": "http://127.0.0.1/middleware.php",
          "aggmode": "none",
          "duplicates": 0
        },
        {
          "uuid": "9bee5e60-ef7c-11e4-80af-6b56ff429c5f",
          "identifier": "28-00000450a4cc",
          "api": "volkszaehler",
          "middleware": "http://127.0.0.1/middleware.php",
          "aggmode": "none",
          "duplicates": 0
        },
        {
          "uuid": "c6cb4b20-ef7c-11e4-8fd6-972990841f29",
          "identifier": "28-00000450cbbd",
          "api": "volkszaehler",
          "middleware": "http://127.0.0.1/middleware.php",
          "aggmode": "none",
          "duplicates": 0
        }
      ],
      "protocol": "w1therm"
    }
  ]
}

Hier eine Beispiel rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# Part of DS2482 I2C 1-Wire Master to Volkszaehler.
echo ds2482 0x18 > /sys/bus/i2c/devices/i2c-1/new_device

# Register I2C RTC
echo ds1307 0x68 > /sys/bus/i2c/devices/i2c-1/new_device

# GPIOs exportieren und Datenrichtung einstellen.
echo 24 > /sys/class/gpio/export
echo 25 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio24/direction
echo out > /sys/class/gpio/gpio25/direction

#Set Systemtime from RTC
sudo hwclock -s

exit 0

Stromlaufplan


Der 1kOhm bis 4,7kOhm Widerstand, der üblicherweise von 1-Wire-Data gegen +Ub geschaltet ist,
wurde extra nicht auf der Leiterplatte platziert, um diesen einfach an Leitungslänge und Sensoren anpassen zu können.
Er kann daher extern angeschlossen werden. Für kurze Verbindungen kann er auch entfallen.

Bestückungsplan und Anschlussplan

Raspberry Pi-GPIO-Zuordnung:

KlemmeSignalGPIO
1Wire_Data I2C1_SDA/SCLGPIO2/3
RXDUART0_RXDGPIO15
TXDUART0_TXDGPIO14
S0/0S0GPIO04
S0/1S0GPIO18
S0/2S0GPIO17
S0/3S0GPIO23
S0/4S0GPIO27
S0/5S0GPIO22


Wer den TTL-IR-Schreib-Lesekopf an die Erweiterung anschließt, hier die Anschlussbelegung:

LeitungsfarbeSignalKlemmleiste
weiß o. schwarz+3,3V/+5V+5V
rot o. braunTXDTXD
grünRXDRXD
gelbGNDGND

Außerdem muss der Serial Port disabled werden: (ist im Image schon geschehen)

Disable Serial Port Login:
To enable the serial port for the RPi-extension you need to disable login on the port. There are two files that need to be edited.
The first and main one is /etc/inittab
This file has the command to enable the login prompt and this needs to be disabled. Edit the file and move to the end of the file. You will see a line similar to:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Disable it by adding a # character to the beginning.
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Save the file.
Disable Bootup Info:
Disable it by editing the file /boot/cmdline.txt .
The contents of the file look like this:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Remove all references to ttyAMA0 (which is the name of the serial port). The file will now look like this:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Save the file.
Reboot
In order you enable the changes you have made, you will need to reboot the Raspberry Pi:
sudo shutdown -r now

Bilder




CAD-Arbeits-Datei

raspi-b_6xs0_1x1-wire_1xir_2xein_rtc.rar
Der Target-Arbeitsfile, der mit Target3001 geöffnet und bearbeitet werden kann.

hardware/controllers/raspberry_pi_erweiterung_mit_schaltausgaengen_rev.1.txt · Zuletzt geändert: 2017/05/06 15:10 von jau