Raspberry Pi

19) Krabička na RasPI

S krabičkou už jsem se vytahoval na "Raspi.cz  fóru", tak se tady o ní trochu rozepíšu. 


Aby se mi neválela deska jen tak na stole, zavřel jsem jí do této krabičky z GM elektronics: U-KP43B
O displeji 16x2 znaky jsem psal už dříve - to je tento: WINSTAR WH1602A-TTI-ET
K ovládání jsem použil maticovou klávesnici 4x4 tlačítka: F-KV16KEY BLACK 
Protože RasPi nemá žádné otvory pro přišroubování, zkoušel jsem vymyslet nějaké lyžiny: F1110BT-090
Jenže v těch lyžinách Raspíčko špatně drželo, tak jsem ho nakonec vlepil do krabičky i s těmi lyžinami pomocí tavného lepidla.


 

Zbylou elektroniku jsem bastlil na univerzálním plošňáku : 160x100 RM 2,54.
Určitě by byla lepší oboustranná deska, ale při objednávání mě to nenapadlo. Některé konektory je totiž třeba osadit a připájet ze strany spojů. A to jde dost těžko. Při této operaci jsem si tam vyrobil hodně zkratů i "studeňáků". 

Zbytek věcí už byly jen nějaké drobnosti (konektory, kolíkové a dutinkové lišty, distanční sloupky k displeji...).


Co se týče elektroniky, obsahuje krabička následující bloky :

První expander MCP23017: Jedna jeho polovina se stará o obsluhu klávesnice, druhá půlka ovládá LEDky u displeje, pípák, tlačítko od joysticku a LEDku, která signalizuje bootování Raspíčka. Jeden bit tam mám v rezervě.

Druhý expander má celou jednu polovinu vyvedenou na zadní konektor, kam je možné připojovat další periférie. Každý z bitů se může nastavit jako vstupní, nebo jako výstupní. Programově se dá řídit i připojení Pull-Up rezistorů při vstupním režimu expanderu.
Druhá polovina ovládá displej.

HEF4066 bude sloužit pro ovládání pohonu montáže dalekohledu. Asi by bylo možné ten pohon ovládat jen obyčejnými logickými signály, ale když už jsem měl tu 4066, tak jsem jí použil. Bude tím zajištěné i bezpečné oddělení ovládání dalekohledu od Raspíčka.

Dále je tam osmikanálový A/D převodník. Jeho 3 kanály budou sloužit pro připojení joysticku (dva pro směr a jeden pro tlačítko). S jeho pomocí se bude ručně dalekohled nastavovat na referenční souřadnice. Bylo by sice možné použít pro ruční míření původní ovladač k dalekohledu, ale protože při změně směru posunu dalekohledu dochází k "mrtvému chodu", musím dát raspíčku nějakou informaci o tom, kterým směrem se pohybovalo naposled před dosažením referenční polohy. Takže ruční ovládání bude přes RasPi, které si ten poslední směr pak bude pamatovat.
Zbylé kanály A/D převodníku jsou vyvedené ven na konektor a mohou se použít pro měření nějakých napětí.

Komunikace I2C:
  Protože samotné RasPi používá pro I2C komunikaci 3,3V, ale spousta periférií potřebuje 5V, doplnil jsem na desku ještě 2 tranzistory FET, které tyto dvě napěťové úrovně komunikace oddělí. Tady je odkaz na článek, ze kterého jsem vycházel:
   http://nathan.chantrell.net/20120610/raspberry-pi-and-i2c-devices-of-different-voltage/

Další drobná "vychytávka", kterou jsem vymyslel sám, je LEDka, která bliká při spouštění systému. Když systém nabíhá, není totiž navenek nic vidět. Na displeji není možné zobrazit žádné upozornění, dokud celý systém nenaběhne. To trvá docela dlouho (asi minutu a půl). Chtěl jsem, aby LEDka blikala POUZE při startu systému. Po nastartování a i po ukončení běhu jsem chtěl, aby zůstala zhasnutá.

Nakonec jsem využil toho, že výstupy expanderu se chovají tak, že dokud se jim nepošle příkaz pro nastavení, zůstávají ve stavu odpojeného výstupu. Po ukončení komunikace si ale pamatují na vývodech poslední stav. Takže jsem pomocí dvojitého NPN tranzistoru vytvořil funkci, která má při odpojeném vstupu na konci sepnutý stav, ale když se na vstup přivede logická "1", výstup se rozpojí. Logická jednička je okamžitě po nastartování systému zajišťována jedním z pinů expanderu a i po ukončení systému na tom pinu tato "1" setrvává, takže LEDka už nebliká. Rozblikání LEDky je pak možné až zas v okamžiku, kdy dojde k resetu expanderu (vypnutí a zapnutí napájení) a tím uvedení jeho výstupu do "odpojeného" stavu.  Protože jsem použil "samoblikací" LED, nemusel jsem se už starat o nějaký přerušovač.

Podobná, ale úplně opačná funkce je "Zhasínání podsvětu displeje při ukončení systému".
I vypínání trvá docela dlouho a tak jsem chtěl, abych měl nějakou informaci o tom, že je systém ukončený a že můžu odpojit napájení. 
V tomto případě využívám toho, že GPIO porty přímo na RasPi se chovají tak, že při ukončení systému přejdou do odpojeného stavu Na rozdíl od expanderu si tedy nepamatují poslední stav. Tak jsem na jeden z těchto GPIO portů připojil tranzistor a přes něj spínám podsvět displeje. Když zadám příkaz pro vypnutí a RasPi se ukončí, dojde zároveň i k zhasnutí podsvětu a já můžu odpojit napájení.

Do krabičky jsem chtěl ještě přidělat potenciometr pro plynulou změnu jasu displeje, aby mne při nočním pozorování neoslňoval. Jenže už jsem tam neměl moc místa. Tak jsem to nakonec vyřešil jen malým přepínačem. Ten do série s podsvětem připojí odpor, který podsvět hodně zeslabí.
Možná tam časem udělám ještě nějaký fotoodpor, který bude měřit jas okolí a podle toho se bude řídit podsvět displeje. Zatím mi ale ten přepínač [ den / noc ] postačuje.

Přímo v krabičce mám jeden digitální teploměr DS18B20. Další teploměry je možné připojit do rozšiřujícího konektoru na krabičce.


Tady je popis jednotlivých částí

1) GPIO expander s adresou 0x20. Stará se o obsluhu maticové klávesnice, 4 LEDek vedle klávesnice, zapínání pískáku, čtení stavu tlačítka na joysticku a vypínání blikací ledky po startu RasPI.
2) GPIO expander s adresou 0x24. Celý jeho port "A" (8 bitů) je vyvedený ven na konektor 17). Je možné ho libovolně konfigurovat pro vstupy, nebo výstupy. Celý port "B" je využit pro posílání dat do dvouřádkového displeje.
3) Osminásobný A/D převodník. 6 vstupů je vyvedeno na konektor CAN9, dva jsou nevyužité.
4) Čtyřnásobný integrovaný spínač HEF4066.
5) Konektor pro připojení maticové klávesnice 4x4 tlačítka.
6) Konektor pro připojení displeje 16x2 znaky.
7) Čtyřnásobný odpor 1k pro omezení proudu LEDkama u klávesnice.
8) Osminásobný odpor 100k pro "Pull-Up" některých logických signálů.
9) Pískák.
10) Trimr pro nastavení kontrastu displeje - dá se nastavit přes malou dírku na boku krabičky.
11) Dvojitý tranzistor KC811 pro ovládání blikací diody, která signalizuje bootování systému. Je to "historický" tranzistor a asi už se ani nevyrábí. Měl jsem ho v šuplíku a tak jsem ho použil. Dá se nahradit dvěma obyčejnými NPN tranzistory
12) Tranzistor pro vypínání / zapínání podsvětu displeje.
13) Dvojice FETů, kteří rozdělují komunikační sběrnici I2C na části 5V a 3,3V.
14) Napěťová reference 2,5V pro A/D převodník. 
15)
Konektor s 8 digitálními vstupy/výstupy. Také je na něm napájení a jednodrátová komunikace pro připojení čidel teploty.
16) Konektor pro připojení dalších I2C periférií (5V).
17) Konektor sběrnice I2C(3,3V) + nějaké další signály, které už se mi nikam nevešly.
18)
Výstupy od čtyřnásobného spínače HEF4066 (pokračují plochým kablíkem k dalšímu konektoru CANON)
19) Konektor CAN9ZS s analogovými vstupy (například pro joystick)
------
20)
Vnitřní teplotní čidlo DS18B20 není z tohoto pohledu vidět - nachází se na druhé straně plošňáku.
21) Světelný senzor BH1750FVI na sběrnici I2C (na fotce taky není vidět)
22) Čidlo atmosférického tlaku přidělané těsně vedle světelného senzoru (fotka) - ZRUŠENO kvůli ovlivňování tlakového čidla teplem z procesoru. Světelné čidlo je také lepší umístit někam mimo krabičku.
23) Modul hodin reálného času (RTC) - jedna z prvních připojených periférií (fotka umístění)


Schéma:


(větší verze po kliknutí)

 


A tady jsou fotky:

Některé fotky už nejsou úplně aktuální - od doby, kdy byly pořízeny, jsem krabičku ještě trochu vylepšil. Zvenku přibyl ještě jeden konektor a vnitřní zapojení jsem také trochu předělal.


  


  


  

  

  

  

  

Připojené periférie (teploměr na GPIO, simulátor joysticku na A/D převodníku a kompas na sběrnici I2C)

 

A na závěr ještě jedno video:  http://youtu.be/hOjojmWsauU

 


úvodní strana webu AstroMiK.org

poslední úprava stránky 23.11.2012