Mise en oeuvre d’un « compute module » RaspberryPi

Pour un projet industriel de fin d’études BTS SNIR, une entreprise a choisi d’utiliser un « compute module » et deux caméras RPi pour réaliser son prototype. La mise en oeuvre d’une telle carte est légèrement différente d’une carte raspberrypi classique. Voyons ce que l’on peut en faire…

Carte support et compute module

Il existe plusieurs compute module (le 1 et le 3) qui corresponde chacun à un type de System On Chip (SOC). Le compute module 1 est équipé d’un BCM2835 ( ARM1176JZF-S : le même que celui des rpi1) , le module 3 est équipé d’un BCM2837 (le même que les rpi3). Les « compute module » sont décrits sur https://www.raspberrypi.org/documentation/hardware/computemodule/ .

Le « compute module » est prévu pour être utilisé sur des cartes « custom », c’est à dire des circuits imprimés dédiés. Dans notre cas nous allons utiliser la carte support officiel vendu par la fondation raspberryPi.

compute module rpi3
Compute Module 3
Carte support pour compute module
Carte support pour « compute module »


Mon choix était donc de travailler avec un module 3. Malheureusement la carte support étant en rupture de stock chez Farnell jusqu’en mars 2020 je me suis rabattu sur un kit module 1. Le kit est donc le suivant : https://fr.farnell.com/raspberry-pi/rpi-compute-dev-kit/kit-dev-module-processeur-raspberry/dp/2427123?st=raspberyypi%20compute%20module

Flasher la mémoire eMMC avec la dernière version de raspbian

Ce module 1 a donc un BCM2835 cadencé à 700MHz par défaut , 512Mo de RAM, 4Go d’eMMC pour le stockage. Il faut flasher dans l’eMMC la dernière version de la raspbian. Sur le site de la fondation, je télécharge les pilotes pour windows qui feront reconnaître le module comme un « mass storage » (une clé USB) depuis cette adresse : https://www.raspberrypi.org/documentation/hardware/computemodule/cm-emmc-flashing.md. Une fois l’installation faite, vérifiez que le cavalier J4 de la carte support est en position « EN » (Enable) puis connecter un câble USB entre votre PC et le port USB Slave (PAS celui appelé PWR IN) enfin alimenter la carte par le connecteur USB PWR IN. Vous devez alors obtenir un nouveau périphérique USB nommé « BCM2708 Boot ». Il faut alors exécuter « rpiboot.exe » : le rechercher dans la barre de recherche de Windows. Apres quelques instants un périphérique USB « mass storage » appelé « Compute Module » apparaît dans l’explorateur Windows.

Vous pouvez alors « flasher » la dernière image raspbian (ici une raspbian buster lite) avec l’utilitaire « Balena Etcher ». Celui-ci reconnait automatiquement le « compute module » comme destination. RAPPEL: il faut être administrateur pour que « Balena Etcher » fonctionne correctement. Une fois que l’image a été transféré, il faut déconnecter le cable USB du connecteur USB Slave et couper l’alimentation.

Il faut alors basculer le cavalier J4 sur la position « DIS » (Disable). Branchez un écran HDMI et un clavier USB sur le port USB HOST, ne rien brancher dans le connecteur USB Slave puis alimenter la carte par le connecteur USB PWR IN. Le « compute module » doit alors démarrer sur la eMMC : la diode verte doit clignoter indiquant une activité sur la eMMC. Vous devez aussi observer le démarrage à l’écran.

Connexion et configuration de base

Identifiez-vous (pi, raspberry : attention le clavier est pour l’instant en QWERTY) puis réalisez les configurations de base avec l’outil raspi-config (passage en français, fuseau horaire, clavier, activation du serveur ssh, etc…). Comme il n’y a pas de connecteur ethernet sur la carte support, la connexion à Internet n’est pas immédiate. La solution la plus facile est de connecter un hub usb sur le connecteur USB Host puis de brancher ensuite un clavier et un dongle usb wifi sur celui-ci. Il faudra configurer la connexion à votre réseau sans fil avec l’utilitaire raspi-config.

Remarque : je viens de chercher si la carte support pour « compute module 1 » est aussi compatible avec les « compute module 3 » et apparemment oui : https://www.raspberrypi.org/forums/viewtopic.php?t=172674 donc quand je le pourrai je commande une cm3 et je teste !

Une fois que vous êtes connecté à Internet, pensez à faire immédiatement une mise à jour avec les commandes « sudo apt update » et « sudo apt upgrade ». J’en profite pour installer la bibliothèque wiringPi et les utilitaires i2c: sudo apt install wiringpi i2c-tools
Testez la commande « gpio readall » pour visualiser l’état des broches.

Mise en oeuvre des caméras

L’activation des caméras n’est pas du tout immédiate contrairement au RPi classique. Il faut rajouter des câbles entre les connecteurs, télécharger un fichier dt-blob.bin et activer le support camera dans l’utilitaire raspi-config. Tous les détails de l’installation des caméras sont disponibles dans cet article : https://www.raspberrypi.org/documentation/hardware/computemodule/cmio-camera.md
Le connecteur CAM1 est celui qui sera reconnu comme la camera 0 et CAM0 sera celui de la camera 1. On peut aussi utiliser les nappes de connexion des Pi0 directement sur la carte support et du coup ne pas utiliser les adaptateurs fournis dans le kit d’origine.
Avec la commande raspistill j’ai vérifié le fonctionnement d’une caméra : c’est fonctionnel.

Cependant ca se complique si on veut rajouter une deuxième caméra (la carte support permet de connecter deux caméras et deux écrans). Il faut lire l’article précédent jusqu’au bout. On y trouve le code source d’un extrait de « device tree » destiné à activer les deux caméras simultanément. Il faut télécharger ce fichier ( https://www.raspberrypi.org/documentation/hardware/computemodule/dt-blob-dualcam.dts ) puis le transférer sur la compute module (avec scp si vous êtes sous GNU/Linux ou Winscp si vous êtes sous Microsoft Windows) pour compiler ce « device tree » avec le compilateur dtc. Le fichier obtenu (un device tree blob : dtb) doit être renommer en « dt-blob.bin » puis être copié dans le répertoire « /boot ». La commande suivante réalise toute ces étapes:
pi@cm1:~ $ sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob-dualcam.dts

Éteignez la carte, connectez les deux caméras, redémarrez puis testez avec les deux commandes suivantes. Elles permettent d’afficher les deux caméras dans deux petites fenêtres cote à cote:
pi@cm1:~ $ raspivid -t 0 -cs 0 -p 0,0,320,200 &
pi@cm1:~ $ raspivid -t 0 -cs 1 -p 320,0,320,200 &
Pour tuer les process: « ps ax|grep raspi » puis « kill num_process« 

Conclusion

C’est un cours article en forme de notes pour que je ne recherche pas à nouveau ces infos lorsque je testerais avec un module cm3…

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.