add button event and screeens
This commit is contained in:
97
README.md
97
README.md
@@ -1,6 +1,15 @@
|
||||
# moduleair_pro_4g
|
||||
# ModuleAir Pro 4G
|
||||
Version Pro du ModuleAir avec CM4, SaraR4 et ecran Matrix LED p2 64x64.
|
||||
|
||||
**Capteurs d'air intérieur IoT avec écran LED RGB 128x64 contrôlé par bouton.**
|
||||
|
||||
## Fonctionnalités
|
||||
- **Capteurs multi-polluants**: PM1, PM2.5, PM10, CO2, température, humidité
|
||||
- **Connectivité 4G/WiFi**: Transmission automatique des données via modem SARA R4
|
||||
- **Affichage LED interactif**: 4 modes d'écran commutables par bouton-poussoir
|
||||
- **Interface web locale**: Configuration et visualisation en temps réel
|
||||
- **Base de données SQLite**: Stockage local avec nettoyage automatique
|
||||
|
||||
# Installation
|
||||
## General
|
||||
```
|
||||
@@ -144,48 +153,68 @@ Switch off on-board sound:
|
||||
|
||||
Add `isolcpus=3` to `/boot/firmware/cmdline.txt`
|
||||
|
||||
## Start matrix loop at boot
|
||||
## Affichage Matrix LED avec contrôle par bouton
|
||||
|
||||
We can use systemd to create a service (better than con because Cron doesn’t monitor the script; if it fails, it won’t restart automatically.).
|
||||
```
|
||||
sudo nano /etc/systemd/system/matrix_display.service
|
||||
Le système dispose de 4 modes d'affichage contrôlés par un bouton-poussoir connecté au GPIO6 (GND quand pressé):
|
||||
|
||||
### Modes d'affichage
|
||||
|
||||
1. **État du réseau**: Statut de connectivité 4G et WiFi avec qualité du signal
|
||||
2. **Tous les capteurs**: PM1, PM2.5, PM10 et CO2 avec indicateurs de qualité
|
||||
3. **CO2 + PM + Réseau**: CO2, PM2.5, PM10 et statut réseau résumé
|
||||
4. **Écran noir**: Tous les pixels éteints
|
||||
|
||||
### Compilation des programmes d'affichage
|
||||
|
||||
```bash
|
||||
# Compiler la bibliothèque matrix
|
||||
cd /var/www/moduleair_pro_4g/matrix/lib && make
|
||||
|
||||
# Compiler tous les programmes d'affichage
|
||||
cd /var/www/moduleair_pro_4g
|
||||
g++ -I/var/www/moduleair_pro_4g/matrix/include -L/var/www/moduleair_pro_4g/matrix/lib /var/www/moduleair_pro_4g/matrix/screenNetwork/network_status.cc -o /var/www/moduleair_pro_4g/matrix/screenNetwork/network_status -lrgbmatrix -lsqlite3
|
||||
g++ -I/var/www/moduleair_pro_4g/matrix/include -L/var/www/moduleair_pro_4g/matrix/lib /var/www/moduleair_pro_4g/matrix/screenSensors/displayAll4_v2.cc -o /var/www/moduleair_pro_4g/matrix/screenSensors/displayAll4_v2 -lrgbmatrix -lsqlite3
|
||||
g++ -I/var/www/moduleair_pro_4g/matrix/include -L/var/www/moduleair_pro_4g/matrix/lib /var/www/moduleair_pro_4g/matrix/screenSensors/displayCO2_PM_Network.cc -o /var/www/moduleair_pro_4g/matrix/screenSensors/displayCO2_PM_Network -lrgbmatrix -lsqlite3
|
||||
g++ -I/var/www/moduleair_pro_4g/matrix/include -L/var/www/moduleair_pro_4g/matrix/lib /var/www/moduleair_pro_4g/matrix/screenSensors/blank_screen.cc -o /var/www/moduleair_pro_4g/matrix/screenSensors/blank_screen -lrgbmatrix
|
||||
```
|
||||
|
||||
and we add the following:
|
||||
```
|
||||
[Unit]
|
||||
Description=Matrix Display Script
|
||||
After=network.target
|
||||
### Contrôle du système d'affichage
|
||||
|
||||
[Service]
|
||||
ExecStart=/var/www/moduleair_pro_4g/matrix/screen_sensors_loop
|
||||
WorkingDirectory=/var/www/moduleair_pro_4g/matrix
|
||||
Restart=always
|
||||
User=root
|
||||
Group=root
|
||||
```bash
|
||||
# Démarrer le système avec contrôle par bouton
|
||||
sudo systemctl restart moduleair-boot.service
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
# Démarrage manuel du contrôleur de bouton
|
||||
sudo python3 /var/www/moduleair_pro_4g/matrix/button_screen_controller.py
|
||||
|
||||
# Test du bouton uniquement
|
||||
sudo python3 /var/www/moduleair_pro_4g/test_button_controller.py
|
||||
|
||||
# Arrêter le système
|
||||
sudo systemctl stop moduleair-boot.service
|
||||
|
||||
# Vérifier le statut
|
||||
sudo systemctl status moduleair-boot.service
|
||||
```
|
||||
|
||||
Then Reload systemd and Enable the Service:
|
||||
```
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable matrix_display.service
|
||||
sudo systemctl start matrix_display.service
|
||||
|
||||
```
|
||||
|
||||
You can check/restart/stop this service (restart combines stop and start)
|
||||
|
||||
```
|
||||
sudo systemctl status matrix_display.service
|
||||
sudo systemctl stop matrix_display.service
|
||||
sudo systemctl restart matrix_display.service
|
||||
|
||||
```
|
||||
### Fonctionnalités du contrôleur
|
||||
|
||||
- **Debounce 500ms**: Évite les pressions accidentelles multiples
|
||||
- **Redémarrage automatique**: Relance le programme d'affichage s'il plante
|
||||
- **Arrêt propre**: Nettoyage GPIO et termination des processus
|
||||
- **Gestion des signaux**: Réagit aux signaux SIGINT/SIGTERM
|
||||
|
||||
### Branchement du bouton
|
||||
|
||||
Connecter un bouton-poussoir entre GPIO6 et GND. Le système utilise une résistance de pull-up interne, donc aucune résistance externe n'est nécessaire.
|
||||
|
||||
## Hardware requis
|
||||
|
||||
- **Raspberry Pi CM4** avec connecteur GPIO
|
||||
- **Bouton-poussoir** connecté GPIO6 → GND
|
||||
- **Écran Matrix LED 128x64** FM6126A
|
||||
- **Capteur NPM** (particules) via Modbus RTU
|
||||
- **Capteur MH-Z19** (CO2) via UART
|
||||
- **Module BME280** (T/H/P) via I2C
|
||||
- **Modem SARA R4** (4G) via UART
|
||||
- **Module RTC DS3231** via I2C
|
||||
|
||||
Reference in New Issue
Block a user