Raspberry Pi: UPS Hat: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 127: | Zeile 127: | ||
[[Kategorie:Raspberry Pi]] | [[Kategorie:Raspberry Pi]] | ||
[[Kategorie:USV]] |
Aktuelle Version vom 11. Juni 2019, 18:38 Uhr
UPS Hat
Das UPS Hat stellt eine Aufsteckplatine mit einer USV (Unterbrechungsfreie Spannungsversorgung, im Englischen Uninterruptible Power Supply) zur Verfügung. Es ist optimal geeignet, um den Pi gegen Stromausfall und Schäden der SD-Karte bzw. der USB-Sticks zu schützen und sei daher allen PI-Nutzern wärmstens empfohlen.
Bestellquellen
Die üblichen Online-Händler, z.B.
- https://smile.amazon.de/gp/product/B0719Q5M9X MakerHawk Raspi UPS HAT Board für Raspberry Pi 3 Modell B Pi 2B B + A + und 2500mAh Lithium Akku
Achtung, der UPS Hat hat eine andere Funktion als der ähnlich aussehende PowerPack Hat. Dieser ermöglicht den Batteriebetrieb des Pi, kann jedoch den Akku nicht im Betrieb umschalten oder laden.
Hardware-Installation
Dauer ca. 2 Minuten:
- Raspberry PI herunterfahren, vom Strom trennen
- UPS Hat auf die Steckleister aufstecken (siehe Bilder beim Amazon-Link)
- Batterie richtig an den UPS Hat anstecken
- USV-Spannungsversorgung vom Raspberry Pi auf das UPS Hat umstecken
- Durch Tastendruck am UPS Hat den PI wieder starten
Software-Installation
Das UPS Hat stellt eine I2C-Schnittstelle zur Verfügung. Bei der Nutzung des Raspbian-Images kann dieses mittels des Kommandos raspi-config in den erweiterten Optionen konfiguriert werden.
Manuell erfolgt die Konfiguration durch:
apt-get install i2ctools i2c-dev libi2c-dev
sowie durch editieren der /etc/modules und laden der Module i2c-bcm2708 und i2c-dev:
root@pi-hole:~# more /etc/modules # /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. i2c-bcm2708 i2c-dev
sowie /boot/config.txt:
[...] # Uncomment some or all of these to enable the optional hardware interfaces dtparam=i2c_arm=on dtparam=i2c1=on [...]
Nach einem Reboot können die Werte dann ausgelesen werden.
UPS-Status
Über die I2C-Schnittstelle lassen sich prozentuale Kapazität und Spannung abfragen. Dazu kann dieses kleine Script genutzt werden:
#!/bin/bash # Read UPS Hat status and print on stdout # http://www.raspberrypiwiki.com/images/6/6f/How-to-use-via-i2c.pdf OLDUPSVOLTAGE=0 # To detect charging/discharging UPSSTATUS="N/A" function swapLHByteToDec() { # $1 is a string using format 0xABCD BYTE1=`echo $1 | cut -c 3-4` BYTE2=`echo $1 | cut -c 5-6` # Return decimal printf "%d\n" 0x${BYTE2}${BYTE1} } function float2Int() { MULT=`echo "$1*100" | bc -l` printf "%.0f\n" ${MULT} } while (true); do # UPS capacity in HEX UPSCAPACITY=`i2cget -f -y 1 0x36 4 w` SWAPPEDCAPACITY=$(swapLHByteToDec ${UPSCAPACITY} ) # UPS voltage in HEX UPSVOLTAGE=`i2cget -f -y 1 0x36 2 w` SWAPPEDVOLTAGE=$(swapLHByteToDec ${UPSVOLTAGE} ) # Calculations see PDF link UPSCAPAPERCENT=`echo "scale=2; ${SWAPPEDCAPACITY}/256" | bc` UPSVOLTDECIMAL=`echo "scale=2; ${SWAPPEDVOLTAGE}*78.125/1000000" | bc` INTVOLTAGE=$(float2Int ${UPSVOLTDECIMAL} ) INTOLDVOLT=$(float2Int ${OLDUPSVOLTAGE} ) [ ${INTVOLTAGE} -lt ${INTOLDVOLT} ] && UPSSTATUS="Discharge" [ ${INTVOLTAGE} -gt ${INTOLDVOLT} ] && UPSSTATUS="Charging" [ ${INTVOLTAGE} -eq ${INTOLDVOLT} ] && UPSSTATUS="Charged" echo -n `date -R` echo -n " UPSPERCENTLOAD=${UPSCAPAPERCENT}" echo -n " UPSVOLTAGE=${UPSVOLTDECIMAL}" echo " STATUS=${UPSSTATUS}" OLDUPSVOLTAGE=${UPSVOLTDECIMAL} # Wait sleep 180; done
Im Einsatz produziert dieses die folgenden Ausgaben bei einem RPI 3 mit pi-hole ohne weitere USB-Komponenten oder HDMI (headless):
Fri, 16 Feb 2018 14:35:35 +0100 UPSPERCENTLOAD=95.60 UPSVOLTAGE=4.08 STATUS=Discharge Fri, 16 Feb 2018 14:38:36 +0100 UPSPERCENTLOAD=94.49 UPSVOLTAGE=4.07 STATUS=Discharge Fri, 16 Feb 2018 14:41:36 +0100 UPSPERCENTLOAD=93.54 UPSVOLTAGE=4.05 STATUS=Discharge Fri, 16 Feb 2018 14:44:36 +0100 UPSPERCENTLOAD=92.59 UPSVOLTAGE=4.04 STATUS=Discharge Fri, 16 Feb 2018 14:47:36 +0100 UPSPERCENTLOAD=91.48 UPSVOLTAGE=4.04 STATUS=Charged Fri, 16 Feb 2018 14:50:36 +0100 UPSPERCENTLOAD=90.53 UPSVOLTAGE=4.05 STATUS=Charging Fri, 16 Feb 2018 14:53:36 +0100 UPSPERCENTLOAD=89.58 UPSVOLTAGE=4.04 STATUS=Discharge Fri, 16 Feb 2018 14:56:36 +0100 UPSPERCENTLOAD=88.64 UPSVOLTAGE=4.02 STATUS=Discharge Fri, 16 Feb 2018 14:59:36 +0100 UPSPERCENTLOAD=87.78 UPSVOLTAGE=4.02 STATUS=Charged Fri, 16 Feb 2018 15:02:36 +0100 UPSPERCENTLOAD=86.77 UPSVOLTAGE=4.01 STATUS=Discharge [...] Fri, 16 Feb 2018 15:50:38 +0100 UPSPERCENTLOAD=72.57 UPSVOLTAGE=3.91 STATUS=Charged Fri, 16 Feb 2018 15:53:39 +0100 UPSPERCENTLOAD=71.75 UPSVOLTAGE=3.86 STATUS=Discharge Fri, 16 Feb 2018 15:56:39 +0100 UPSPERCENTLOAD=70.93 UPSVOLTAGE=3.90 STATUS=Charging Fri, 16 Feb 2018 15:59:39 +0100 UPSPERCENTLOAD=70.11 UPSVOLTAGE=3.87 STATUS=Discharge Fri, 16 Feb 2018 16:02:39 +0100 UPSPERCENTLOAD=69.29 UPSVOLTAGE=3.90 STATUS=Charging Fri, 16 Feb 2018 16:05:39 +0100 UPSPERCENTLOAD=68.47 UPSVOLTAGE=3.87 STATUS=Discharge
Das UPS-Hat hat in etwa 90 Minuten knapp 30% seiner Leistung verloren. Im headless-Betrieb kann daher von einer Stützzeit von mehreren Stunden ausgegangen werden. Das USB-Spannungskabel kann während des Betriebs ab- und wieder angesteckt werden, ohne daß der RPI dabei ausgeht oder meckert.