まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, 1 janvier 2020

Un écran LCD piloté via SPI pour le RaspberryPi

L'écran utilisé pour le WebRadioReveilWiFi donnant au final une qualité d'image assez nulle, et pour le besoin d'autres projets, j'ai regardé un peu ce qu'il se faisait du côté des écrans LCD non-Composite et non-HDMI.

dsc04295.jpg

  • Ce qui revient le plus ce sont les écrans de type ili9340 qui fonctionnent en SPI et qui ont l'avantage d'exister de différentes tailles et résolutions, avec parfois aussi des fonctionnalités tactile résistives.

J'ai acquis deux modèles différents, l'un en 2,2 pouces qui vient sur une plaquette enfichable avec un connecteur GPIO de 40 broches, et un autre de 2,8 pouces tactile sur sa plaquette avec un connecteur GPIO de 26 broches.

  • Voici ce que ça donne en place sur un RPi :

dsc04299.jpg dsc04300.jpg

  • On remarque que l'écran 2.2" est directement soudé sur la plaquette, tandis que l'écran 2,8" est tenu à la plaquette avec un connecteur FCC.

dsc04298.jpg dsc04301.jpg

Fonctionnement :

Ces écrans fonctionnent en SPI, c'est à dire qu'ils exploitent directement les GPIO suivant :

- CE0 (GPIO08)
- MISO (GPIO09)
- MOSI (GPIO10)
- SCLK (GPIO11)

D'autres pins sont utilisées pour gérer le RESET et le D/CX.

Lire la suite...

lundi, 30 décembre 2019

Une carte son pour le RaspberryPi Zero

  • Le modèle RaspberryPi Zero est une machine qui ne dispose pas d'une carte son intégrée.

Donc pas de fiche Jack ni d'amplificateur, impossible donc théoriquement d'écouter du son, si ce n'est par la sortie HDMI.

Et pourtant il a été prévu de permettre cette fonction, en activant la PWM des GPIO12 (pin 32) et GPIO13 (pin 33).
Il me semble qu'on peut plus ou moins choisir d'autres GPIO que celles-ci… Je vous laisse vérifier.

  • En éditant directement le fichier /boot/config.txt, activer le mode PMW Audio pour les GPIO concernés :
dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4

Si on branche donc un Jack pour y connecter un casque sur par exemple GPIO13 + Masse pour le son Droit et GPIO12 + Masse pour le son Gauche, on peut alors écouter le morceau de musique qu'on aura choisi.

  • Ensuite il faudra filtrer ce signal un poil trop brute de numérique, afin de le lisser et le rendre plus analogique.
  • Reste à amplifier le signal, et dans ce cas les solutions ne manquent pas… Je propose ici un amplificateur stéréo à base de LM386 (le même utilisé sur mon WebRadioReveilWiFi

RpiZeroSoundCard.png

  • Liste des composants:
Nom                         Type et valeur          Boîtier

R1, R2                      Résistances 270Ω        SMD 1206
R6, R7, R8, R18             Résistances 150Ω        SMD 1206

C1, C2, C9, C15             Condensateurs 33nF      SMD 1206
C12, C18                    Condensateurs 100nF     SMD 1206
C3, C4, C8, C11, C14, C17   Condensateurs 10µF 16V  SMD 4x5,4 mm
C6, C13                     Condensateur 1µF 50V    SMD 4x5,4 mm
C10, C16                    Condensateur 470µF 16V  SMD 8x10,5 mm

RV1, RV2, RV3, RV4          Potentiomètre 10kΩ      TC33X-103G

U2, U3                      Ampli LM386             SMD  SSOP 8

Ressources :
http://www.tinkernut.com/2017/04/adding-audio-output-raspberry-pi-zero-tinkernut-workbench/
https://learn.adafruit.com/adding-basic-audio-ouput-to-raspberry-pi-zero/pi-zero-pwm-audio
https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/raspberry-pi-usage

dimanche, 30 septembre 2018

WebRadioRéveilWifi -7-

Suite de l'étude précédente :

On a vu comment intégrer l'électronique de l'horloge, et on va regarder comment intégrer tout le reste, cependant il manque la partie pilotage du Raspberry pour les commandes de la WebRadio.
Et puis quelques trucs que j'ai ajouté par la suite, comme un bouton power off et l'interfaçage avec l'arduino. J'avais fait ça sur le tas, avec des plaquettes à trous, et des bouts de schéma épars…

Je me suis donc efforcé de mettre tout cela au propre sur Kicad.

La carte interface :

  • Le Schéma structurel de la carte interface :

interfaceStructurel.png
On retrouve donc les 3 boutons utiles pour la WebRadio (Playlist1/Playlist2/Stop, Station précédente, Station suivante), un Relai pour déclencher la mise sous tension de l'ampli audio, et un autre pour allumer l'écranLCD.
Les deux relais sont pilotés par le Rpi, et celui de l'ampli est aussi piloté par l'horloge, pour permettre à l'alarme de retentir.
L'horloge est aussi reliée au Rpi pour le déclenchement de la WebRadio.

  • Le circuit de la carte interface :

interface.png
interfaceDessousCuivre.png interfaceDessusCuivre.png interfaceSerigraphie.png

  • Liste des composants:
Nom                 Type et valeur

R1 à R12            Résistances  10kΩ
C1 à C7             Condensateur 100nF
Q1, Q3, Q4          Transistor 2N2222
Q2                  Transistor BS170 ou BS138
K1 et K2            Relais D31C2100
J1 à J15            Pin Header

Lire la suite...

dimanche, 23 septembre 2018

Bouton on/off Raspberry Pi, Version µContrôleur

  • Circuit et code modifié le 1er Décembre 2019, pour compatibilité avec le RPi Zero.

Comme je l'évoquais, je ne compte pas utiliser la version précédente du montage « power on/off » pour mon « Pi Hat », car le relais prendrait trop de place, j'ai donc travaillé sur cette nouvelle version à base d'un microcontrôleur Attiny85.

  • Voici donc le schéma de ce nouveau montage :

RpiOnOffAttiny85_V2.png

  • Et il faut s'assurer que le port série (TXD0, RXD0) soit bien actif, soit via « sudo raspi-config » ou en passant à 1 la ligne « enable_uart » du fichier « /boot/config.txt ».

  • Fonctionnement :

- Pour mettre en route le RPi, effectuer une pression sur SW1, la sortie PB0 de l'ATtiny85 est alors mise à l'état haut pour permettre, via le transistor 2N2222 qui envoie un état bas au transistor MOSFET, de faire passer le 5V au RPi.
Ici, comme pour le montage précédent, le signal TXD0 est exploité pour connaître l'état du RPi au moment où le bouton est pressé (état bas, car RPi éteint) .
- Pour éteindre le RPi, presser normalement le bouton SW1, ce qui enverra le signal à la sortie PB1 de passer brièvement à l'état haut, pour déclencher un arrêt propre de GNU/Linux via le GPIO21 du RPi, grâce au script Python3 ci-dessous.
Le pont diviseur que forment R11 et R12 permet de ne n'envoyer que 3,2V au GPIO, car rappelez-vous bien que le RPi fonctionne en 3,3V !!
- Une fois arrêté de cette manière, le signal TXD0 passe donc à l'état bas, l'état du GPIO ayant été mémorisé, un délai est octroyé pour couper l'énergie et donc 3 secondes après la dernière activité de la led verte du RPi, la sortie PB0 passe à l'état bas, le transistor MOSFET ne laisse plus passer le 5V au RPi.
- Presser le bouton SW1 plus de 3 secondes et le courant sera coupé brutalement, utile en cas de plantage du RPi
- Ce montage gère le reboot. Par contre si on utilise un sudo poweroff sur le RPi, le courant ne sera pas coupé automatiquement comme avec le relay du montage précédent. Il faudra alors presser SW1 plus de 3 secondes.

Lire la suite...

- page 2 de 7 -