Raspberry support board

… aneb jak učinit z Raspberry Pi verze B rozumně použitelné počítadlo.

Raspberry Pi je vcelku hezká hračka. Použitý ARM sice není to nejrychlejší z malých procesrorů, co jde dnes pořídit a 512MB paměti občas nestačí, ale jinak je to za poměrně málo peněz docela dost muziky. Rozhodl jsem se proto jeden z vyvíjených projektů (v podstatě aplikačně orientovaný průmyslový počítač) založit právě na něm, protože rozpočet projektu byl silně omezený. Vznikla tak podpůrná deska pro Raspberry, která z něj dělá vcelku použitelný malý kontrolér.

Nejprve, jak je u mne zvykem, co se mi na RPi B nelíbí:

  • absence RTC
  • idiotsky řešená zdrojová část

a co jsem považoval u malého kontroléru za nutné

  • tolerantní napájecí zdroj, dovolující značné změny napájecího napětí z nekvalitních zdrojů (baterie, PoE)
  • existenci RTC
  • rozumně použitelná rozhraní a pohodlně přístupné GPIO piny
  • alespoň minimální komunikační rozhraní s obsluhou (programovatelné tlačítko, stavová LED)

Na popisované desce jsou tyto problémy vyřešeny takto:

1) Zdroj. Po počáteční nedůvěře jsem použil činské moduly spínaných zdrojů. Jejich proměření přineslo velmi příjemná zjištění, a to jak některým kolegům na internetu [1] , [2] , tak mně, viz níže  – zde je zdroj zatížen odporovou zátěží na odběr 2A při 5V, napájení 15V. Modul stojí kolem $2 s free poštovným, takže další diskuse odpadají. Modulu lze vytknout jediné – není odolný vůči přepólování. Nicméně 0,75A polyfuse a obráceně polarizovaná dioda na podpůrné desce to vyřeší bez problémů. I to PoE lze vyřešit snadno, „kalhotkami“ např. od i4wifi za pár korun. Zdroj se k tomu postavit umí, v této konfiguraci zvládne napájecí napětí od 8 do 35 V, účinnost přes 85%.

raspi-v-cidle-adroj-2raspi-v-cidle-adroj-1

2. RTC. Opět zvítězila Čína. Moduly RTC s chipem DS1307 se dají koupit pod $1 a výhodou je, že v linuxovém kernelu je pro ně přímá podpora. Takže je stačí připojit přes I2C a použít zaklínadla

modprobe rtc-ds1307
které naloaduje příslušný kernelový modul a

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
které řekne kernelu, že má RTC obvod k dispozici na I2C adrese 0x68.

Celý tenhle postup můžeme, samozřejmě, automatizovat pomocí souborů modules.conf a rc.local.

Pak už jen stačí natáhnout přesný čas ze sítě, např. pomocí ntpdate a zapsat jej do RTC
hwclock -w .

3) Rozumně použitelná rozhraní. Poměrně snadno lze u RasPi použít I2C, SPI a GPIO. Jenže tato rozhraní jsou vyvedena jedním, komplexním systémovým konektorem a, zvláště při vývoji a experimentování, je jeich použití značně nepřehledné. Druhou bolestí je, že I2C je třívoltové a není 5V tolerantní – pětivoltové signály mohou třívoltové I2C na desce RasPi nevratně zlikvidovat. Tož na desku umístíme ještě úrovňový převodník I2C 3V/5V. Čtyři odpory a dva transistory se vejdou, kupovat modul se nevplatí, vyjde větší a vzhledem k jednoduchosti je to ostuda. Nezpomeňte si vyvést I2C signály na několik konektorů paralelně – značně to usnadní rozsáhlejší konstrukce nad I2C (displej, klávesnice, RTC, AD/DA převod, binární vstupy a výstupy – tohle všechno lze na I2C v pohodě navěsit a uřídit bez větších problémů).

Velmi užitečným rozhraním pro rychlejší periferie je SPI. Vyvedeme si jej na samostatný pětipinový konektor, spolu s napájením – připojení např. kamerky, nebo další SD karty pak bude velmi pohodlné.

Užitečné je rovněž vyvést si několik GPIO pinů jako takových. Hledat je dodatečně na systémovém konektoru je docela komplikované a takhle je máme pěkně po cca 4 na cca dvou konektorech, vždy s 3V napájením, radost použít.

4) Minimální uživatelský interface. Vřele doporučuji „vytáhnout“ si na přední panel řídicí jednotky alespoň jednu LED (přes odpor na +3V, katodu na GPIO pin) a jedno tlačítko (proti zemi, pullup odpor cca 3k3). Takové tlačítko a ledka se mohou moc hodit, např. k vyvolání servisního menu, či k factory resetu bez nutnosti připojování displeje či sériové konzoly.

Nápadů na další rozšiřování je, samozřejmě, spousta. Nicméně takto získáme v jádru hezký kompaktní modul řídicího kontroléru s nezanedbatelnými možnostmi, navíc pěkně pasující do průmyslových Al přístrojových profilů.