Dashboard avec raspberry PI3B

Je suis nouveau sur ce forum,
Je suis débutant avec le Raspberry PI,
Je ne connais pas le langage Python, …
Autant dire que je cumule les handicaps !!!
Une petite touche de soleil, j’utilise Linux depuis plus de 15 ans !!!

Présentation du projet :
Dashboard à base de Raspberry PI
Tableau de bord (secondaire) intelligent pou équiper ma voiture de collection : une Alpine GTA - équipée d’un moteur 24S et d’une injection programmable.

Pourquoi un Raspberry PI ? Puissant, compact, économique et fonctionnement sous Linux.
Il est donc possible d’utiliser le logiciel TunerStudio (écrit en Java) qui me permet de gérer mon injection programmable et de mettre au point mon moteur.
En dehors de la mise au point : un tableau de bord secondaire.

Quelques images du système :
Écran du Raspberry avec Raspbian

Écran du Raspberry en fonction Tableau de Bord
C’est l’écran qui apparaît au démarrage. Lancement automatique du logiciel TunerStudio en mode plein écran.

Écran du Raspberry en fonction Surveillance

Écran du Raspberry en fonction Modification Paramètres

Écran du Raspberry en fonction Modification Table Injection 3D

Enfin une photo du hard (Raspberry PI, Écran, câbles !!!)

Le système fonctionne.
L’écran LCD de 7 pouces (1024x600) et « touchscreen »
Le Raspberry PI3B+ (Raspbian, TunerStudioMS).

Reste à mettre dans une boite. La plus petite possible, l’écran de 7 pouces à été choisi comme le moins encombrant.

Le problème : les câbles.
Le câble HDMI est beaucoup trop raide, les câbles USB beaucoup trop encombrants et longs.
Je dois trouver des prises HDMI, USB, … à câbler avec des nappes hyper souples.
Si vous avez des pistes, je suis preneur.

Deuxième partie du projet : le système d’alimentation, de mise en marche, de mise à l’arrêt.
(actuellement on utilise la prise allume cigare - alimentée en permanence - et un adaptateur 12V/5V)

Le système doit démarrer à la mise du contact.
Le système doit s’arrêter à la coupure du contact (sauf si on le remet rapidement), le Raspberry PI doit s’arrêter proprement.

J’ai choisi d’utiliser un Arduino nano pour piloter 2 relais et diverses tempos.
(c’est très économique, je sais le programmer, çà consomme très peu - fonctionnement permanent, c’est robuste - arrêt par coupure d’alimentation, démarrage très rapide, …
Un relais envoi un signal d’arrêt au Raspberry PI (pendant x secondes)
Un relais gère l’alimentation générale.

Prototype

Le prototype est fonctionnel.
2 leds permettent de simuler les entrées du Raspberry PI (alimentation 5V après relais, contact fermé pour signal d’arrêt).

Reste à relier les deux sous ensemble et à les rendre fonctionnels.
C’est ici que les soucis ont commencé.
J’ai lu beaucoup de littérature (forums, tutos) pour équiper le Raspberry PI d’un bouton d’arrêt (bouton d’arrêt à remplacer par contact de micro relais).
Après compilation des divers scripts, j’ai placé :

  • un fichier boutarret.py dans /usr/bin/ (qui utilise python)
  • un fichier boutarret.sh dans /etc/init.d/

Utilisé comme préconisé les commandes : update-rc.d …
Un service boutarret.sh est lancé mais « mort »
Il n’y a aucun lien dans les répertoires rcx.d !!!

Panique à bord !!!
Si vous avez dans vos archives le tuto qui fonctionne, je suis preneur.
Merci pour votre aide.

Nota : Je n’ai pas trouvé su le forum comment ajouter une signature aux messages.
Signature : La théorie c’est quand on sait tout et que rien ne fonctionne. La pratique c’est quand tout fonctionne et que personne ne sait pourquoi. Moi j’ai réuni théorie et pratique : Rien ne fonctionne… et personne ne sait pourquoi !

hello,

Je ne suis pas très bricolo mais pour tes prises la solution « pirate » qui m’est venu c’est de virer tout ou partie de la gaine.
pour l’usb il t reste deux (ou trois ? ) fil que tu pourras tordre et même raccourcir facilement.
quitte a les envelopper d’alu ou de cuivre ( pour les interférence ? )
Pour l’HDMI idem !

pour le probleme d’arret:
tu devrais essayer d’utliser systemd (cf:https://doc.ubuntu-fr.org/creer_un_service_avec_systemd)

Problème résolu :
Écriture du script Python pour arrêt automatique du Raspberry en shuntant deux pins du GPIO.
Lancement automatique du service au « boot ».

Un petit tuto pour faire cela :
Nota : une partie de ce tuto est prise sur internet, traduit, … complété, …


Comment faire un bouton d’arrêt en toute sécurité pour Raspberry Pi

Couper l’alimentation pour arrêter le Raspberry Pi peut causer des corruptions de fichiers et endommager votre Pi!
Connections au Raspberry Pi à l’aide des broches GPIO et quelques lignes de code. Un commutateur d’arrêt

Le câblage du bouton (ou le relais) à la broche 23 de GPIO (pin 16) et à la masse de GPIO (pin 14).

Attention avec le câblage : Le court-circuit des mauvaises broches peut tuer le Pi.

Script en Python

# !/bin/python
# -*- coding: utf-8 -*-
# Simple script pour arrêter "proprement" un PI 3B+.

import RPi.GPIO as GPIO # import GPIO library
import time # import time functions
import os # imports OS library pour Shutdown control

# Utilise la nuémroration Broadcom SOC pour les pins du GPIO
# Positionne la broche en entrée & en mode PullUp

GPIO.setmode(GPIO.BCM)
GPIO_shutdown=23 # Numero de connecteur pour le bouton darrêt
GPIO.setup(GPIO_shutdown, GPIO.IN, pull_up_down=GPIO.PUD_UP)

while True: # Boucle infinie
     if GPIO.input(GPIO_shutdown) == GPIO.LOW: # Teste si le contact est fermé
        time.sleep(1) # Attendre un temps défini (1 seconde)
        if GPIO.input(GPIO_shutdown) == GPIO.LOW: # Teste si le contact est toujours fermé
            os.system("shutdown now -h") # Donne un ordre d'arrêt au PI
     time.sleep(1) # Temps d'attente pour ne pas surcharger le processeur (1 seconde).

Le script utilise trois bibliothèques externes:

Bibliothèque PPi.GPIO : cette bibliothèque offre un accès facile à la programmation du GPIO sur le Pi.
Bibliothèque time : Pour gérer les temps d’attente.
Bibliothèque os : Pour nous permettre d’arrêter le Pi (on peut utiliser cette bibliothèque pour exécuter n’importe quelle commande de terminal!).

Par défaut, le bouton (ou le relais) est normalement ouvert (NO). Fermé quand on appuie sur le bouton.

Ce programme doit fonctionner en permanence afin que, lorsque le bouton est appuyé (après une session de jeu rétro d’une semaine, cela fonctionne toujours). C’est le rôle de la boucle une boucle True qui est infinie.

À l’intérieur de la boucle, un premier test détectera une pression sur un bouton, puis le code attendra une seconde, puis vérifiera si le bouton est toujours enfoncé.

La dernière ligne indique à la boucle d’attendre 1 seconde avant de vérifier à nouveau le bouton. Cette attente est importante, sans cela python exécutera ce script aussi vite que possible, ce qui mettra une charge inutile sur le processeur.

Exécuter ce programme et le tester.

sudo python /home/pi/piShutdown.py

Le faire fonctionner

Pour que dispositif fonctionne, il faut exécuter le script au démarrage. Modifier le fichier rc.local (rc.local est une liste de tâches que le Pi suit au démarrage). Ouvrir en tant que super utilisateur (sudo). Utiliser leafpad pour éditer rc.local (c’est plus simple que nano).

sudo leafpad /etc/rc.local

Dans rc.local, ajouter une commande pour exécuter le script d’arrêt, à la ligne précédant l’exit 0.

sudo python /home/pi/piShutdown.py &
exit 0

Important le «&» à la fin indique au Pi d’exécuter ce programme en arrière-plan.
Cette dernière étape peut également être réalisée avec crontab, updaterc.d, systemd, …