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
pypylon
telepí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.py
cvr_backend.py
input.py
output.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 wlan0
static ip_address=192.168.4.1/24
nohook wpa_supplicant
interface wlan1
nohook wpa_supplicant
A hostapd
csomag telepítése:
sudo apt install hostapd
Engedélyezés és elindítás:
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
A hostapd.conf
fájl például így nézhet ki:
interface=wlan0
driver=nl80211
ssid=RubikPiAP
hw_mode=g
channel=7
wmm_enabled=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=erostitokod
wpa_key_mgmt=WPA-PSK
rsn_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=wlan0
dhcp-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