Ez a dokumentum a Rubik Pi + Basler kamera alapú image classification projekt Python környezetének beállítását és függőségeinek telepítését ismerteti, 3.11-es Python forrásból fordítva és virtuális környezetben.
1. Python 3.11 fordítása forrásból
sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev git
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.11.8/Python-3.11.8.tgz
sudo tar xvf Python-3.11.8.tgz
cd Python-3.11.8
sudo ./configure --enable-optimizations
sudo make -j$(nproc)
sudo make altinstall
2. Virtuális környezet létrehozása
cd /home/pi/your_project_directory
python3.11 -m venv venv
source venv/bin/activate
3. Pip frissítése
pip install --upgrade pip
4. Függőségek telepítése
pip install flask flask-cors opencv-python numpy tensorflow==2.15.0 pypylon spidev sysv_ipc requests
Megjegyzés:
- A
pypylontelepítése előtt a Basler SDK-nak is telepítve kell lennie a rendszerre (pylon SDK). - A TensorFlow verziója (itt: 2.15.0) összhangban kell legyen a CPU architektúrával (pl. ARMv8 esetén csak bizonyos build-ek működnek).
5. SQLite (bent van a standard lib-ben, nem kell külön telepíteni)
6. Gpio és egyéb rendszer függőségek
GPIO-vezérléshez, ha a gpio_output GPIO libet használ:
- pl. ha RPi.GPIO vagy gpiozero használva van:
pip install RPi.GPIO gpiozero
7. Naplózás
A logging modul beépített Python standard lib, nem igényel külön telepítést.
8. Projektfájlok
Az alábbi forrásfájlok importált moduljai alapján az összes szükséges csomag a fentiek között megtalálható:
camera_server.pycvr_backend.pyinput.pyoutput.py
9. Indítás
A rendszer indításához lépj be a projekt gyökérkönyvtárába, aktiváld a virtuális környezetet, majd futtasd a szervert:
source venv/bin/activate
systemctl start camera_server.py - ha a camera.service fájl a helyén van.
10. Hostapd telepítése és beállítása
Statikus IP-cím: 192.168.4.1
A /etc/dhcpcd.conf fájlban a következő sorokat kell elhelyezni:
interface wlan0static ip_address=192.168.4.1/24nohook wpa_supplicantinterface wlan1nohook wpa_supplicant
A hostapd csomag telepítése:
sudo apt install hostapd
Engedélyezés és elindítás:
sudo systemctl unmask hostapdsudo systemctl enable hostapd
A hostapd.conf fájl például így nézhet ki:
interface=wlan0driver=nl80211ssid=RubikPiAPhw_mode=gchannel=7wmm_enabled=0auth_algs=1ignore_broadcast_ssid=0wpa=2wpa_passphrase=erostitokodwpa_key_mgmt=WPA-PSKrsn_pairwise=CCMP
Az /etc/default/hostapd fájlban adjuk meg a konfigurációs fájl elérési útját:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
DHCP szerver telepítése (ha szükséges):
sudo apt install dnsmasq
Példa dnsmasq.conf részlet:
interface=wlan0dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
10. Webszerver beállítása (Apache + Flask reverse proxy)
A rendszer frontendje (pl. Vue/React) a /var/www/cvr-ui-rest/dist mappában helyezkedik el, míg a Flask-alapú API kiszolgálás a http://127.0.0.1:5000 címen történik. Ehhez egy Apache virtual host konfiguráció szükséges, amely a frontend statikus fájljait szolgálja ki, és továbbítja az /api/ végződésű kéréseket a Flask backend felé.
Apache virtual host konfiguráció
Hozz létre egy konfigurációs fájlt:
sudo nano /etc/apache2/sites-available/rubikpi.conf
Tartalma:
apacheMásolásSzerkesztés<VirtualHost *:80>
ServerName rubikpi.local
DocumentRoot /var/www/cvr-ui-rest/dist
<Directory /var/www/cvr-ui-rest/dist>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ProxyPreserveHost On
ProxyPass /api/ http://127.0.0.1:5000/api/
ProxyPassReverse /api/ http://127.0.0.1:5000/api/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Engedélyezés és újraindítás
sudo a2enmod proxy proxy_http
sudo a2ensite rubikpi.conf
sudo systemctl restart apache2
Hostnév helyi feloldása
Ha nincs DNS, a rubikpi.local névhez adj hozzá bejegyzést a klienseken vagy lokálisan:
sudo nano /etc/hosts
Példa:
192.168.4.1 rubikpi.local