Files
moduleair_pro_4g/README.md
Your Name 8d1fd7ba63 update
2025-05-22 14:44:17 +02:00

192 lines
5.6 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# moduleair_pro_4g
Version Pro du ModuleAir avec CM4, SaraR4 et ecran Matrix LED p2 64x64.
# Installation
## General
```
sudo apt update
sudo apt install git gh apache2 sqlite3 php php-sqlite3 libsqlite3-dev python3 python3-pip jq g++ autossh i2c-tools python3-smbus -y
sudo pip3 install pyserial requests sensirion-shdlc-sfa3x RPi.GPIO gpiozero adafruit-circuitpython-bme280 crcmod psutil --break-system-packages
sudo git clone http://gitea.aircarto.fr/PaulVua/moduleair_pro_4g.git /var/www/moduleair_pro_4g
sudo mkdir /var/www/moduleair_pro_4g/logs
sudo touch /var/www/moduleair_pro_4g/logs/app.log /var/www/moduleair_pro_4g/logs/loop.log /var/www/moduleair_pro_4g/matrix/input_NPM.txt /var/www/moduleair_pro_4g/matrix/input_MHZ16.txt /var/www/moduleair_pro_4g/wifi_list.csv
sudo cp /var/www/moduleair_pro_4g/config.json.dist /var/www/moduleair_pro_4g/config.json
sudo chmod -R 777 /var/www/moduleair_pro_4g/
git config core.fileMode false
```
## Apache
Configuration of Apache to redirect to the html homepage project
```
sudo sed -i 's|DocumentRoot /var/www/html|DocumentRoot /var/www/moduleair_pro_4g|' /etc/apache2/sites-available/000-default.conf
sudo systemctl reload apache2
```
## Serial
Need to open all the uart port by modifying `/boot/firmware/config.txt`
```
enable_uart=1
dtoverlay=uart0
dtoverlay=uart1
dtoverlay=uart2
dtoverlay=uart3
dtoverlay=uart4
dtoverlay=uart5
```
And reboot !
Then we need to authorize connection over device on `/etc/ttyAMA*`
```
sudo chmod 777 /dev/ttyAMA*
```
## Sudo athorization
To make things simpler we will allow all users to use "nmcli" as sudo without entering password. For that we need to open the sudoers file with `sudo visudo` and add this to the bottom of the file:
```
ALL ALL=(ALL) NOPASSWD: /usr/bin/nmcli, /usr/sbin/reboot
www-data ALL=(ALL) NOPASSWD: /usr/bin/git pull
www-data ALL=(ALL) NOPASSWD: /usr/bin/ssh
www-data ALL=(ALL) NOPASSWD: /usr/bin/python3 *
```
## I2C
Decibel meter, BME280 and the RTC module (DS3231) is connected via I2C.
Need to activate by modifying `sudo nano /boot/firmware/config.txt`
```
dtparam=i2c_arm=on
```
And authorize access to `/dev/i2c-1`.
```
sudo chmod 777 /dev/i2c-1
```
Attention: sometimes activation with config.txt do not work, you need to activate i2c with `sudo raspi-config` and go to "Interface" -> I2C -> enable.
It is possible to manage raspi-config only with cli: `sudo raspi-config nonint do_i2c 0`
I2C addresses: use `sudo i2cdetect -y 1` to check the connected devices
## Matrix LED
### Library
To use the Matrix LED on the RPI we will use the [rpi-rgb-led-matrix](https://github.com/hzeller/rpi-rgb-led-matrix) repository from hzeller.
Before compiling any code we need the **include** folder and the **lib** folder from the library. Then we can compile any .cc code with g++.
```
g++ -Iinclude -Llib test.cc -o test -lrgbmatrix
sudo ./test --led-no-hardware-pulse --led-row-addr-type=3
```
### Pinout
Details of connection bewtween components can be found [here](https://docs.google.com/spreadsheets/d/1EJoq7nlJIN9nd_CbVmmozsGb-Ntp0cyxrEt9vokqc6g/edit?usp=sharing).
Some pins for the Matrix need to change because they use uart pins. For this we need to change pins inside `/lib/hardware-mapping.c` and recompile the library:
```
cd /var/www/moduleair_pro_4g/matrix/lib
make
```
### Matrix 64x32
Pour la matrix 64x32 (celle du ModuleAir mini) on utilise le pinout "regular"
Tests avec la biblio de hzeller sur un RPi4:
```
sudo examples-api-use/demo -D0 \
--led-no-hardware-pulse \
--led-chain=1 \
--led-cols=64 \
--led-rows=32 \
--led-gpio-mapping=regular
```
### Matrix 128x64
Pour le grand écran il faut mettre sur ground deux pins (E et D) et ajouter la commande `--led-row-addr-type=3` car il s'agit d'un panneau de type "ABC".
Il faut aussi préciser le type de chip-set avec `--led-panel-type=FM6126A`
Test avec la biblio de hzeller sur un RPi4:
```
sudo examples-api-use/demo -D0 \
--led-no-hardware-pulse \
--led-chain=1 \
--led-cols=128 \
--led-rows=64 \
--led-gpio-mapping=regular \
--led-row-addr-type=3 \
--led-parallel=1 \
--led-panel-type=FM6126A
```
Pour tester sur la CM4
```
sudo ./test_forms --led-no-hardware-pulse
```
### Fonts
Font "6x9.bdf" is 7 pixels height +1 (top) +1 (bottom) = 9 height.
Font "8x13.bdf" is 9 pixels height +2 (top) +2 (bottom) = 13 height.
Font "8x18.bdf" is 14 pixels height +2 (top) +2 (bottom) = 13 height.
### Troubleshooting
Switch off on-board sound:
* `dtparam=audio=off` in `/boot/firmware/config.txt`
* Add the file `sudo nano /etc/modprobe.d/blacklist.conf` with `blacklist snd_bcm2835`
* Command `lsmod | grep snd_bcm2835` should anwser nothing
Add `isolcpus=3` to `/boot/firmware/cmdline.txt`
## Start matrix loop at boot
We can use systemd to create a service (better than con because Cron doesnt monitor the script; if it fails, it wont restart automatically.).
```
sudo nano /etc/systemd/system/matrix_display.service
```
and we add the following:
```
[Unit]
Description=Matrix Display Script
After=network.target
[Service]
ExecStart=/var/www/moduleair_pro_4g/matrix/screen_sensors_loop
WorkingDirectory=/var/www/moduleair_pro_4g/matrix
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
```
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
```