août 10

CM4 PI NAS nvme

But faire un NAS  :
Partie matérielle : avec la carte Raspberry Pi Compute Module 4 IO Board , une carte CM4 , une carte extension Pci-e vers 4xpci-e , et quattre disque nvme de 1To ( avec adaptateur nvme / Pci-e )

Partie Logicielle : surement avec openmediavault , ou autre pas encode décidé /

 

carte Raspberry Pi Compute Module 4 IO Board
La carte d’extension PCI-e vers 4 x PCI-e
4 Disque nvme de 1To , avec Radiateur et Adaptateur nvme/PCI-e
Impression 3D support pour les disques
Montage des disques avec la carte extension PCI-e
pour le test ( et si j’intègre l’alimentation dans le boitier )
Dans la version finale les disque seront  en position Horizontale , et le bloc d’aliemtation sera un bloc externe de 12v.

 

Catégorie : Non classé | Commentaires fermés sur CM4 PI NAS nvme
janvier 4

Plateforme Dev avec Pi4 8Go – SSD 500 Go dual screen ( 15.6″ ou 17.3″ )

But :

Faire une plateforme de dev ( Electronique , arduino , esp8266 ) a partir d’un raspberry pi 4 , disque SSD et double écran .plutôt que dédier un PC portable
le boitier du 1er écran  contiendras :
– un raspberry PI 4 8Go

– un SSD de 500 Go

– un module Buck down permettant de générer le 5V pour le Pi , Le SSD , les Hub USB

– un module buck down permettant de générer le 12V pour les 2 cartes controleur HDMI

– 2 cartes contrôleur HDMI / lvds pour gérer les 2 écrans

– 2 Hub USB 4 ports , un USB3.0 et un USB 2.0

– les 2 écrans ( qui sont des dalles de récuperation sur des pc portables HS ) seront relies ensemble avec une charnière qui permettra au 2eme écran de se se replier sur le 1er écran.

– le bloc d’alimentation sera externe ( pareil bloc de récupération d’un portable HS 19v 5A

– un clavier / souris Raspberry Pi

Préparation Logicielle :

    • modification de la sequence de boot sur le raspberry pi 4
    • création de l‘image Debian 64 bits depuis un poste linux (*****)
      scripts a modifier pour les dernières versions du bootloader ( raspberrypi-bootloader_1.20200723-1_arm64.deb au 2020/08/04 )  et du kernel ( bcm2711-kernel-5.4.51.20200728.tar.xz au 2020/08/04 ) ,
      dans stage2.sh modifier l’utilisateur debian par votre nom d’utilisateur dans mon cas : thierryadduser thierry
      usermod -aG sudo,video,audio,cdrom thierry
      pour l’instant ne pas activer l’option deskop (dans stage2.sh)
      • avant de démonter l’image fichiers a modifier :
        fichier /boot/config.txt:
        enable_uart=1
        dtparam=audio=on
        start_x=1
        gpu_mem=128
        [pi4]
        dtoverlay=vc4-fkms-v3d
        max_framebuffers=2
        arm_64bit=1
        # differentiate from Pi3 64-bit kernels
        kernel=kernel8-p4.imgfichier /boot/cmdline.txt :
        dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait usb-storage.quirks=13fdc:3960:u ipv6.disable=1
        j’avais des pb avec l’adaptateur USB3/SATA , j’ai du rajouter usb-storage.quirks=13fdc:3960:u  dans le cmdline.txtfichier /etc/fstab :
        proc /proc proc defaults 0 0
        /dev/sda1 /boot vfat defaults 0 2
        /dev/sda2 / ext4 defaults,noatime 0 1
    • transfert de l’image sur le SDD ( ici mon sdd est /dev/sdg a adapter selon votre config) :
      sudo dd if=debian-rpi64.img of=/dev/sdg bs=1024k status=progress
    • brancher le SSD sur le Pi4 avec pour l’instant un moniteur hdmi / clavier / souris
    • si le Boot fonctionne on peux continuer sinon on recommence depuis le début .
    • on vas maintenant installer l’interface graphique ( une seule ):
      apt install task-xfce-desktop -y # For XFCE
      apt install task-gnome-desktop -y # For GNOME
      apt install task-kde-desktop-y # For KDE Plasma
      apt install task-mate-desktop -y # For MATE  <== celle que j’ai choisi
      apt install task-lxde-desktop -y # For LXDE
      apt install task-lxqt-desktop -y # For LXQT
    • et on reboote le système , normalement l’interface graphique se lance .
    • encore quelques petites configurations ajout de logiciels
      on lance un terminal :
      sudo apt-get install devscripts build-essential lintian git
      sudo mkdir /opt/Softs
      sudo chown -R thierry: /opt/Softs
      cd /opt/Softs
    • on vas récupérer sur https://github.com/RPi-Distro ce que l’on vas avoir besoin ; raspberrypi-sys-mods , raspi-config ,pi-bluetooth
      git clone https://github.com/RPi-Distro/raspberrypi-sys-mods.git
      git clone https://github.com/RPi-Distro/raspi-config.git
      git clone https://github.com/RPi-Distro/pi-bluetooth.git
    • on compile :
      cd pi-bluetooth
      debuild -us -uc
      cd ..
      cd raspi-config
      debuild -us -uc
      cd ..
      cd raspberrypi-sys-mods
      debuild -us -uc
      cd ..
    • on verifie que tout est compilé : ls -al *.deb
      pi-bluetooth_0.1.13_all.deb raspberrypi-sys-mods_20200729_arm64.deb raspi-config_20200727_all.deb
    • on installe : sudo dpkg -i *.deb
      si on as un message d’erreur de dépendance on lance sudo apt -f install , et tout devrais s’installer correctement
    • on installe la partie bluetooth :
      sudo apt-get install bluetooth bluez blueman

La partie logicielle est pratiquement  terminé , reste encore a installer kicad , arduino , codium et tous les gadgets nécessaire

Partie Matérielle

  • un clavier / Souris Officiel Raspberry Pi
  • Un raspberry Pi 4 8 Go
  • Un SSD 500Go + adaptateur USB/SATA
  • un hub USB 2.0 4 ports
  • un hub USB 3.0 4 ports
  • 2 modules alim Buck down
  • 2 dalles écrans 17″ de recupérations (modele LP173WD1 )
  • 2 cartes contrôleurs HDMI
  • 2 câbles HDMI / micro HDMI

 

***** => il existe maintenant une image 64bit de raspberry pi OS , https://downloads.raspberrypi.org/ raspios_arm64 ( version complète avec bureau ) et raspios_lite_arm64

 

 

Catégorie : Uncategorized | Commentaires fermés sur Plateforme Dev avec Pi4 8Go – SSD 500 Go dual screen ( 15.6″ ou 17.3″ )
mars 23

RadioPi

But: transformer un vieux poste radio a lampes HS des années 60/70 récupéré en vide grenier en poste mp3 avec un raspberry Pi.

Au niveau Matériel :
– un vieux poste radio a lampes HS des années 60/70
– un Raspberry Pi
– un ampli 2.1 20W
– 3 HP 5W
– un Afficheur 128×128 pixels
– deux encodeurs rotatifs
– un disque dur SSD avec adaptateur USB
– horloge RTC en I2C
– bande de led RGB
– deux alimentations 220v/5V  ( une pour la partie Audio , l’autre pour la partie “numérique” 5A) et conneteur alimentation et interrupteur M/A
– un ventilateur 5V avec grille
– un disque dur SSD ( dans mon cas un 120Go)

ou trouvez les divers éléments :
1 x Raspberry Pi
2 x 3-inch-Full-Range-Speaker-4ohm-5W
1 x 4-Pouces Haut-Parleur-4-Ohm-15-W graves
1x Ampli 2.1 20W 5V
2 x Encodeur rotatif
1 x Horloge I2C 
2 x alimentation 220v -5v 3A
2 x câble USB
1 x câble réseau
1 x ventilateur 5v+1 x grille 60mm
1 x interrupteur + 1 x connecteur alimentation

 

Au niveau logiciel :
– Raspbian lite dernière version
– daemon mpd
– python3
– scripts divers ( gestion des encodeurs rotatif en émulation clavier UP,DOWN,LEFT,RIGHT,ENTER,PLAUY/PAUSE).

 

Photos de la transformation :

bon j’avoue en étant électronicien / informaticien , je déteste la partie “mécanique” ( boitier et autre ) , c’est donc mon beau-frère qui s’occupe de cette partie en plus ayant son Fablab perso il a tous les outils nécessaire

pour remplacer la lampe de “l’Œil magique” un afficheur 1.44” SPI  de 128×128 pixels qui permettra d’afficher divers menu et aussi la pochette de la piste en cours a base de st7735 / ili9163

 

câblage des GPIO ( provisoire)

Name Usage Board Usage Name
3.3V RTC.VCC 01 | | 02 LED.VCC 5V
GPIO02 RTC.SDA 03 | | 04 LCD.VCC 5V
GPIO03 RTC.SCL 05 | | 06 GND
GPIO04 07 | | 08 U_TXD GPIO14
GND RTC.GND 09 | | 10 U_RXD GPIO15
GPIO17 ENC1.B 11 | | 12 SPI1_CE0 GPIO18
GPIO27 ENC1.A 13 | | 14 LCD.GND GND
GPIO22 ENC1.SW 15 | | 16 LCD.LED GPIO23
3.3V 17 | | 18 LCD.A0 GPIO24
GPIO10 LCD.SDA 19 | | 20 GND
GPIO09 21 | | 22 LCD.RST GPIO25
GPIO11 LCD.SCK 23 | | 24 LCD.CS GPIO08
GND ENC1.GND 25 | | 26 GPIO07
ID_SD0 * 27 | | 28 * ID_SC1
GPIO05 ENC2.A 29 | | 30 FAN.GND GND
GPIO06 ENC2.B 31 | | 32 FAN.PWM GPIO12
GPIO13 ENC2.SW 33 | | 34 LED.GND GND
GPIO19 SPI1_MISO 35 | | 36 GPIO16
GPIO26 37 | | 38 LED.DI GPIO20
GND ENC2.GND 39 | | 40 SPI1_SCLK GPIO21

installation logicielle , j’ai décidé de me passer de carte SD sur le Raspberry et booter directement sur le SSD ( voir  article frambroise 314 )

j’ai fait 3 partions sur le hdd (/dev/sda1 vfat 100M , /dev/sda2 ext4 8Go , /dev/sda3  ext4 le reste du disque pour stockage des fichiers audios )
mon /etc/fstab

proc            /proc           proc    defaults          0       0
PARTUUID=0c9f0562-01  /boot           vfat    defaults          0       2
PARTUUID=0c9f0562-02  /               ext4    defaults,noatime  0       1
PARTUUID=0c9f0562-03  /var/lib/mpd    ext4    defaults,noatime  0       1

une fois raspbian lite installé et le raspberry pi en route on commence a installer les paquets nécessaire :

sudo apt install python3-pygame python-pygame python-spidev python3-spidev
sudo apt install mpd python-pip python3-pip
sudo apt install evtest telnet samba lame flac faad vorbis-tools 
sudo apt install mc alsa-utils libmpdclient-dev cython

pip install python-uinput
pip install python-mpd2
pip3 install python-mpd2

fichier a créer / modifier

  • /etc/modprobe.d/fbtft.conf
options fbtft_device name=fb_ili9163 gpios=reset:25,dc:24,led:23 speed=40000000 rotate=90 bgr=1 custom=1 fps=60
  • /etc/modules-load.d/fbtft.conf
spi-bcm2835
fbtft_device
  • /etc/modules-load.d/RotaryKey.conf
uinput

logiciels a installer /compiler , je met tous dans /opt/scripts

cd /opt
mkdir scripts
cd /opt/scripts
  • Automatic library-wide shuffle for mpd ( gestion playlist aléatoire )
git clone https://github.com/joshkunz/ashuffle.git
cd ashuffle/
make
sudo make install
  • mpd Album Art
git clone https://github.com/jameh/mpd-album-art.git
cd mpd-album-art
sudo python3 setup.py install
  • gestion du clavier virtuel depuis les 2 encodeurs rotatifs
    • /opt/scripts/RadioKey.py ( script pour gerer le “clavier”) pour l’instant un seul encodeur géré UP,DOWN,ENTER
      #!/usr/bin/env python
      import RPi.GPIO as GPIO
      import uinput
      from time import sleep
      
      # version PCB
      pin_a1 = 37 #GPIO  13
      pin_b1 = 35 #GPIO  19
      pin_sw1= 33 #GPIO  26
      pin_a2 = 36 #GPIO  16
      pin_b2 = 38 #GPIO  20
      pin_sw2= 40 #GPIO  21
      
      GPIO.setmode(GPIO.BOARD)
      GPIO.setup(pin_a1,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
      GPIO.setup(pin_b1,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
      GPIO.setup(pin_sw1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
      GPIO.setup(pin_a2,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
      GPIO.setup(pin_b2,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
      GPIO.setup(pin_sw2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
      
      device = uinput.Device([uinput.KEY_UP, uinput.KEY_DOWN,uinput.KEY_ENTER,uinput.KEY_PLAYPAUSE,uinput.KEY_LEFT,uinput.KEY_RIGHT])
      seq_a1 = seq_b1 = seq_sw1=0
      seq_a2 = seq_b2 = seq_sw2=0
      
      def on_Sw(pin):
          sw = GPIO.input(pin_sw2)
          if sw == 0:
              device.emit_click(uinput.KEY_ENTER)
          sw = GPIO.input(pin_sw1)
          if sw == 0:
              device.emit_click(uinput.KEY_PLAYPAUSE)
      
      def on_edge1(pin):
          global seq_a1, seq_b1
          a1 = GPIO.inp