Taula de continguts:
- Pas 1: el disseny
- Pas 2: Com funciona
- Pas 3: crear un prototip de demostració
- Pas 4: programació de l'ATTiny85
Vídeo: Construeix un millor botó d’engegada de Raspberry Pi: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
És molt fàcil crear un botó d’apagat o apagat del gerd. Hi ha un munt de projectes d’aquest tipus al web i alguns aquí a Instructables, però cap d’ells (que puc veure) no us indica quan el vostre Pi ha acabat d’apagar-se i, per tant, és segur tirar d’energia. De fet, ni tan sols reconeixen que s'hagi vist el botó premut.
També hi ha projectes per reiniciar un Pi que s'ha tancat, però tampoc no us proporcionen retroalimentació visual.
Però qui necessita aquest botó? Si sou una mica un nerd com jo, o fins i tot només un aspirant a un nerd, sempre podeu iniciar sessió al vostre Pi localment o per la xarxa i escriure sudo shutdown -h ara. Però si esteu construint un projecte per a usuaris no tècnics, això no ho farà. És cert que gairebé sempre es pot sortir amb només estirar el cable d'alimentació, però tingueu en compte que he dit gairebé sempre. Tota la sort s’acaba tard o d’hora. Només la setmana passada em vaig morir una targeta SD, tot i que mai no sabré si realment es va deure a una pèrdua brusca d’energia.
En el meu cas, calia afegir un botó d’engegada a un Pi que utilitzem com a seqüenciador midi per gravar i reproduir himnes i cançons a l’església, quan no tinguem disponible un pianista en directe. Sempre puc escriure l'ordre shutdown, però he de deshabilitar-la per quan no hi sigui.
La meva intenció aquí no és oferir-vos un producte acabat, amb una funda impresa en 3D, com tantes altres instruccions. Tothom en tindrà un ús diferent o voldrà incorporar-lo al seu propi projecte. Més aviat, us configuraré amb la tecnologia que podeu afegir al vostre projecte, ja sigui un centre multimèdia, un dispositiu IoT o qualsevol altra cosa.
(Al vídeo ho demostro amb un Pi Zero v1.2 i un monitor que he fet amb una pantalla de portàtil reutilitzada i un controlador de l'Extrem Orient.)
Pas 1: el disseny
Això és el que farà el meu botó d'engegada per vosaltres:
- Quan el Pi funciona, s’encén un LED de forma contínua. Si s'apaga manualment, el LED només s'apaga quan es desconnecta el corrent de seguretat.
- Mentre s’executa, si premeu el botó durant almenys un segon, s’iniciarà l’aturada i el LED parpellejarà un quart de segon cada segon fins que desconnecteu l’alimentació de manera segura.
- Des d'un estat d'apagat (si no s'ha tret l'alimentació), en prémer el botó s'inicia l'arrencada i s'encén el LED durant un quart de segon cada segon fins que s'engega. (Pot trigar una mica més a executar-se tots els serveis com ssh i vnc).
Els components són molt econòmics. Tot el que necessites és:
- ATTiny85 (xip compatible amb Arduino)
- 3 resistències: 2 x 330Ω i 1 x 10kΩ
- 1 LED: us suggereixo verd o blau, però és la vostra elecció
- taulers de connexió i cables de pont, o taulers, o com vulgueu construir.
Pas 2: Com funciona
Com passa amb tots els botons d’alimentació Pi, aquest treu un pin GPIO a un estat baix per indicar una sol·licitud d’aturada a un programa auxiliar que s’executa al Pi. He utilitzat GPIO4 (pin 7), però es pot utilitzar qualsevol altre pin.
L’única manera de dir que un Pi ha finalitzat l’aturada és mirant el pin 8 de TxD, que després baixa. Això depèn de la habilitació de la consola sèrie, que és per defecte. De fet, TxD pujarà i baixarà regularment mentre s’utilitza com a consola sèrie, però mai baixarà durant més de 30 mS alhora, fins i tot a la velocitat de transmissió més baixa. Encara es pot utilitzar per a una consola de sèrie, ja que només la mirem passivament.
Per reiniciar, hem d’estirar breument SCL1 (pin 5) cap avall. Aquest pin l’utilitzen qualsevol dispositiu I2C (inclosa la meva interfície midi), però després d’iniciar l’arrencada el deixem en pau.
La major part de la complexitat es troba a l’esbós d’Arduino que carreguem a l’ATTiny85. Això implementa una "màquina d'estats": una manera molt útil i potent de codificar qualsevol problema que pugui representar una sèrie d'estats. Una rentadora funciona de la mateixa manera. Els estats representen les etapes del cicle de rentat i cadascun defineix què ha de fer la màquina en aquest punt (motors o bombes que s’han d’executar, vàlvules que s’han d’obrir o tancar) i quines entrades del sensor (temperatura, nivell d’aigua, temporitzadors) determinar quan passar al següent estat i quin estat següent triar.
L’esbós manual és el meu primer esborrany d’un diagrama d’estats, que mostra totes les transicions d’estat. Això és només per mostrar-vos com podeu planificar inicialment els vostres estats i transicions d’estats; pot ser que no sigui completament precís com abans de començar la depuració.
En el nostre cas, tenim 6 estats que he anomenat OFF, SOL·LICITUD D'INICI, ARRANC, RUNNING, SOL·LICITUD D'APAGAMENT i APAGADA. (Després d’APAGAR es torna a DESACTIVAR.) S’identifiquen mitjançant comentaris a l’esbós i, per a cadascun d’ells, altres comentaris indiquen què hauria de fer i quins esdeveniments el mouran a un altre estat.
El programa d’ajuda que s’executa al Pi és una mica més complicat que per a la majoria de botons d’aturada. Respon a un pols baix llarg al pin GPIO iniciant un apagat, però també respon a un impuls curt per si mateix estirant breument el pin GPIO cap avall. Així és com l'ATTiny85 pot dir que s'està executant i, per tant, pot passar de l'estat BOOTING a RUNNING.
Pas 3: crear un prototip de demostració
A efectes de demostració, podeu prototipar-lo en una placa de soldadura sense soldadura, tal com es mostra, però també us he donat l’esquema perquè pugueu elaborar el vostre propi disseny mitjançant un tauler de fusta o un PCB personalitzat, potser formant part d’un projecte més ampli.
Pas 4: programació de l'ATTiny85
A aquest pas s’adjunten l’esbós d’Arduino i el programa d’ajuda. A la carpeta de croquis Arduino, creeu una carpeta anomenada PiPwr i copieu-hi el fitxer PiPwr.ino. Llançant l'IDE Arduino, ara el trobareu al vostre quadern de dibuixos.
Hi ha diverses maneres de programar un ATTiny85. Si el vostre té un carregador d’arrencada instal·lat, podeu utilitzar una placa de desenvolupament ATTiny85 que costa només unes quantes lliures. Es connecta al vostre PC mitjançant un port USB. He utilitzat un Hidiot que és essencialment el mateix però amb una àrea de prototipatge.
Afegiu el fitxer IDE a Arduino, a Fitxer - Preferències
digistump.com/package_digistump_index.json
als URL del gestor de taulers addicionals.
A Eines - Tauler, ara hauríeu de veure diverses opcions de Digispark. Seleccioneu Digispark (per defecte: 16,5 MHz).
Si el vostre ATTiny85 no té un carregador d’arrencada (o no ho sabeu), podeu obtenir un programador ISP AVR per unes quantes lliures. O podeu utilitzar un Arduino Uno o Pro Mini o Nano més barat com a programador. Google per a "arduino as isp attiny85" (sense les cometes) per obtenir instruccions.
Si voleu modificar l’esbós, el trobareu completament comentat i esperem que sigui fàcil de seguir. Per a la depuració és molt més fàcil utilitzar un Arduino Pro Mini o Nano. Descomenteu el serial.begin () a la configuració i les instruccions d’impressió a loop () per veure els passos que realitza mitjançant el monitor sèrie. Hi ha definicions alternatives de pins a la font, comentades, per a Uno, Pro Mini o Nano.
Al vostre Raspberry Pi, copieu el fitxer shutdown_helper.py a la carpeta / etc / local / bin i configureu-lo com a executable amb l'ordre
sudo chmod + x /usr/local/bin/shutdown_helper.py
Ara editeu el fitxer /etc/rc.local amb el vostre editor favorit. (Haureu de fer-ho com a root). Abans de l'última línia (sortida 0), inseriu la línia
nohup /usr/local/bin/shutdown_helper.py &
Reinicieu i el programa d'assistència s'iniciarà automàticament.
Recomanat:
Afegiu un botó d’engegada a la instal·lació de LibreELEC en un Raspberry Pi: 6 passos
Afegiu un botó d’engegada a la vostra instal·lació de LibreELEC en un Raspberry Pi: a continuació aprendrem com afegir un botó d’engegada a LibreELEC que s’executa en un Raspberry Pi. Utilitzarem un PowerBlock per afegir no només un botó d’engegada, sinó també un LED d’estat que indica l’estat d’alimentació de la vostra instal·lació de LibreELEC
Botó d'engegada de Raspberry Pi: 3 passos
Botó d'engegada de Raspberry Pi: si sou com jo, potser heu estat explorant Internet buscant la millor solució per encendre i apagar el Raspberry Pi amb només prémer un botó. Tot i que existeixen moltes solucions, la majoria requereix que descarregueu un script Python i el feu executar
Toca el botó d'engegada de Raspberry Pi: 3 passos
Botó d’alimentació tàctil per a Raspberry Pi: des que vaig imprimir i vaig començar a utilitzar aquesta funda per a la meva Retropie, sempre vaig imaginar com fer un botó d’engegada. La idea era canviar el disseny per fer que el botó de moviment i després moure un commutador. Al final vaig tenir una altra idea, on no calia canviar el cas
Botó d'engegada de Super Ghetto a My Oneplus One (hauria de funcionar en qualsevol cosa): 3 passos
Botó d'engegada de Super Ghetto a My Oneplus One (hauria de funcionar en qualsevol cosa): el problema: tots els botons del meu telèfon estan trencats. Substituir-los només és una solució temporal, ja que la meva tapa posterior està trencada i no trobo enlloc cap substitució que no superi el preu d’un OPO usat, però he pensat per què no actualitzar si
Botó d'engegada extern a un ESC: 3 passos (amb imatges)
Botó d’engegada extern a un ESC: construeixo un monopatí elèctric i he d’afegir un commutador extern al meu ESC per poder posar tots els meus electrònics al mateix recinte. Llista de peces: -Pushbutton-wires-shrinktube (opcional) -hotglue (opcional) -ESC (banggood: https://goo.gl/4n8kzB)