Hlavní navigace

Banana Pi R1: sériová konzole a power management unit AXP209

15. 4. 2015
Doba čtení: 5 minut

Sdílet

Banana Pi R1 je počítač, který bude nejspíše provozován bez klávesnice a monitoru. Ale i bez toho a bez sítě se dá k počítači přihlásit a opravovat konfiguraci nebo sledovat průběh bootování. Informace o napájení lze z PMU čipu AXP209 vyčítat a získat obdobné informace jako o baterce u notebooku.

Sériová konzole

Pokud budete upravovat konfiguraci bootování, systém přesouvat na SATA disk, složitěji konfigurovat síť, mohou nastat případy, kdy systém nenaběhne nebo nebude fungovat síť. V takové chvíli se hodí sériová systémová konzole. Protože aniž by jste museli k Banana Pi R1 připojovat klávesnici a monitor, můžete upravovat konfiguraci nebo vidět výpis zavádění operačního systému.

Banana Pi R1 obsahuje několik hardwarových sériových linek. V Bananian Linuxu je již při bootu nastaven výstup konzole na sériový port ttyS0. Systém ttyS0 mapuje na UART0 ten je vyveden na malý pouze dvou-pinový konektor označený jako GPIJ13, je hned vedle konektoru baterie. Pin vlevo je RX a vpravo TX (viz obrázek). Pro propojení je ideální USB-UART převodník, protože u takového není potřeba konvertor úrovní. Sériové linka na B-Pi má logickou úroveň TTL 3,3V, stejně jako USB-UART převodník. (Sériová linka na počítačích s konektorem Cannon 9pin nejde použít bez převodníku napěťových úrovní.)

V Linuxu bez problémů fungují USB-UART převodníky například s čipem CP2102 a FT232RL. Na převodníku by měla být nastavena logická úroveň 3.3V. Konektor převodníku a počítače je potřeba propojit kříženým kabelem a lepší je i propojit země. Na B-Pi-R1 je zem hned na obou vedlejších pinech vedlejšího konektoru.

Na desktopu pro práci se sériovou konzolí slouží konzolový program minicom nebo grafický program GTKterm. V konfiguraci GTKtermu je potřeba vybrat sériový port, který se objevil v systému po přípojení USB převodníku, obvykle to bude /dev/ttyUSB0. Přesné označení lze zjistit po připojení převodníku příkazem  dmesg |tail.

Konfigurace sériové konzole je následující:

  • Speed (baud rate): 115200
  • Bits: 8
  • Parity: None
  • Stop Bits: 1
  • Flow Control: None

AXP209 PMU

Čip Power Management Unit AXP209 je buzz word u Banana Pi. Tento čip byl pravděpodobně primárně vyvíjen pro zařízení jako mobilní telefony a podobné embedded mobilní zařízení. I proto se asi objevují problémy s napájením při použití SATA disku. Dokumentace k čipu AXP209 je na webu výrobce a ke stažení je i PDF datasheet v anglickém jazyce.

AXP209 je 48-pinový čip o velikosti 6mm x 6mm vyráběný v pouzdře QFN. V čipu je integrováno:

  • PWM nabíječka
  • Dvoucestný napěťový převodník
  • Pětikanálový lineární regulátor napětí/proud/teplota
  • GPIO
  • Ochrana proti přepětí a podpětí, teplotní ochranu a ochranu proti zkratu
  • Hodiny reálného času RTC

Vlastnosti

Výtah nejdůležitějších a zajímavých parametrů čipu AXP209:

  • Inteligentní volba napájecího zdroje
  • Napájecí napětí: 2,9 V – 6.3V
  • Připustitelné USB nebo AC napájení
  • Maximální nabíjecí proud je nastavitelný až na 1,8 A
  • Plná podpora USB kompatibilních nabíječek včetně USB 3.0
  • Rozsah napětí baterie: 4.1V / 4.15V / 4.2V / 4.36V
  • Monitorování teploty baterie
  • Automatické řízení nabíjecího procesu
  • Přímé ovládání LED pro indikaci stavu nabíjení
  • Možnost připojení záložní napájecí baterie a baterie pro zálohování napájení RTC modulu
  • Vestavěný 12 bit ADC
  • Coulomb Counter – poskytuje informace přesné informace o spotřebě energie, zbývající kapacitě baterie, stavu nabití, a zbývajícím čas běhu na baterii.
  • Vnitřní teplotní čidlo
  • I2C
  • 4 konfigurovatelné GPIO
  • Konfigurovatelné časovače
  • K dispozici 12 registrů pro trvalé uložení dat i po vypnutí systému
  • Detekce externího napájení
  • Napěťová reference
  • Dešifrování modul

Blokové schéma zapojení regulátorů napětí čipu AXP209 na Banana Pi R1 je vyobrazeno na obrázku v článku článku o napájení Banana Pi R1.

Baterie

Čip AXP209 má vývody pro dvě baterie. Baterie pro RTC, prou kterou jsou pájecí plošky na spodní straně plošného spoje počítače Banana Pi R1. Napájecí baterie, pro kterou je na počítači konektor, který má rozteč rozteč 2,5 mm. Mínus konektoru je na vývodu blíže okraji.

Foto konektoru pro baterie:

Konkrétní baterii je třeba vybírat podle potřeb a konkrétní konfiguraci celého zařízení. Je třeba vzít v úvahu odběr zařízení a požadovanou záložní dobu běhu zařízení na baterii. A podle toho volit baterii s možným maximálním odběrem a kapacitou. Také je potřeba vzít v úvahu větší zátěž napájecího zdroje během nabíjení baterie.

Já jsem počítač Banana Pi R1 zkoušel s Li-Pol bateriemi z Touchbooku o kapacitě 6000 mAh a 12 000 mAh.

Vyčtení dat z AXP209

S čipem AXP209 lze komunikovat přes I2C sběrnici a posílat mu tak příkazy a zpětně přijímat data. Komunikaci po sériové sběrnici I2C lze v Linuxu realizovat v různých programovacích jazycích.

Po nainstalovaní balíčků i2c-tools, bc, lze použít Bash skripty battery_info.sh a po­wer_status.sh.

Výstup programů při připojeném napájení a nabíjení baterie:

root@bananapi:~# sh power_status.sh
AC_STATUS=1

root@bananapi:~# sh battery_info.sh
BAT_STATUS=0
CHARG_IND=1
BAT_EXIST=1
CHARGE_CTL=0xd0
CHARGE_CTL2=0x47
Battery voltage = 4012.8mV
Battery discharge current = 392.0mA
Battery charge current = 0mA

Výstup programů při odpojeném napájení:

root@bananapi:~$ sh power_status.sh
AC_STATUS=0

root@bananapi:~# sh battery_info.sh
BAT_STATUS=0
CHARG_IND=0
BAT_EXIST=1
CHARGE_CTL=0xd0
CHARGE_CTL2=0x47
Battery voltage = 3784.0mV
Battery discharge current = 0mA
Battery charge current = 320.0mA

Výstup programů při připojeném napájení, ale když se baterie nenabíjí

AC_STATUS=1

BAT_STATUS=0
CHARG_IND=0
BAT_EXIST=1
CHARGE_CTL=0xd0
CHARGE_CTL2=0x47
Battery voltage = 4176.7mV
Battery discharge current = 0mA
Battery charge current = 0mA

Názvy parametrů jsou dostatečně výstižné. Pozor však na hodnotu vybíjení/nabíjení, tyto parametry jsou přehozené.

Kód převzat z webu hardware-libre.fr, původní zdroj skriptu je pro počítač pcDuino3 s AXP209.

Na Banana Pi s Banananian Linuxem lze tyto informace vyčíst i jednodušeji. K veškerým hodnotám jde přistupovat přes virtuální soubory mapované do adresáře  /sys/bus/i2c/devices/0-0034/.

Například zjištění, zda je připojena baterie a napájení.

cat /sys/class/power_supply/battery/present
cat /sys/class/power_supply/ac/present

Jednoduše lze vytvořit i programy na čtení dat přes I2C nebo z virtuálních souboru v jazyce Python.

Po naprogramování daemona, který bude tyto informace vyčítat a vyhodnocovat, tak bude možno zajistit standardní funkčnost jako s UPS. Po odpojení/připojení napájení počítač stále běží dál.

Teploty

Počítač obsahuje i teplotní čidla, nejdůležitější je teplota CPU a PMU.

Zobrazení teploty PMU čipu

awk '{printf ("%0.1f",$1/1000); }' </sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input

Pro zobrazení teploty CPU a PMU jsou již připravené hotové programy soctemppmutemp.

# soctemp
approx. 43.0°C
# pmutemp
approx. 41.0°C

Použít lze i program sensors z balíku lm-sensors.

UX DAy - tip 2

axp20_mfd-i2c-0-34
Adapter: sunxi-i2c.0
temp1:        +39.4°C  (low  = -144.7°C, high = +264.8°C)

Ti, kdo mají rádi grafické vyjádření, mohou použít pro zobrazení teplot, vytížení periférií atd. RPi-Monitor. Program je schopen informace o systému včetně data z čipu AXP209 vykreslovat do grafů. Lze tak vidět například změny proudu v závislosti na zátěžích systému.

Nyní, když je zprovozněna sériová konzole a seznámili jste se s PMU čipem AXP209, je možno přistoupit k opravě napájení SATA a migraci systému na disk.

Byl pro vás článek přínosný?

Autor článku

Josef Jebavý je profesí linuxový admin a vývojář softwaru, ale zabývá se i hardwarem a elektronikou. Mimo dílnu a počítačové pracoviště se obvykle věnuje sportu.