Your Name ae62c472da update
2025-05-21 17:29:01 +02:00
2025-05-21 17:29:01 +02:00
2025-03-28 16:41:54 +01:00
2025-05-21 17:29:01 +02:00
2025-03-27 17:23:01 +01:00
2025-03-27 17:23:01 +01:00
2025-05-21 17:29:01 +02:00
2025-03-27 11:04:51 +01:00
2025-03-28 14:20:50 +01:00
2025-03-28 15:59:54 +01:00
2025-05-21 17:29:01 +02:00
2025-03-27 17:23:01 +01:00
2025-02-26 10:39:00 +01:00
2025-02-20 15:30:34 +01:00
2025-03-28 15:59:54 +01:00
2025-02-21 11:02:21 +01:00
2025-02-26 10:39:00 +01:00
2025-02-20 15:10:54 +01:00
2025-03-31 15:12:09 +02:00

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 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 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. 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

Description
No description provided
Readme 12 MiB
Languages
C++ 37.9%
Python 32.9%
HTML 17.2%
Shell 4.8%
PHP 3.3%
Other 3.9%