Interfacebeschrijving

Ventilator

De reComputer RK3576 biedt ventilatorbesturing via het Linux hwmon-subsysteem. De ventilatorsnelheid kan in realtime worden uitgelezen, en de PWM-duty cycle kan handmatig worden ingesteld of aan de automatische thermische governor worden overgelaten.

Paden van de hardwaremonitor

InterfacePadBeschrijving
Ventilatorsnelheid/sys/class/hwmon/hwmon6/fan1_inputHuidig toerental (RPM)
PWM-waarde/sys/class/hwmon/hwmon6/pwm10–255, bepaalt de duty cycle
PWM-modus/sys/class/hwmon/hwmon6/pwm1_enable0=uit 1=handmatig 2=automatisch

Thermische zones

ZonePad
SoC/sys/class/thermal/thermal_zone0/temp
Big Core/sys/class/thermal/thermal_zone1/temp
Little Core/sys/class/thermal/thermal_zone2/temp
DDR/sys/class/thermal/thermal_zone3/temp
NPU/sys/class/thermal/thermal_zone4/temp
GPU/sys/class/thermal/thermal_zone5/temp

Temperatuurwaarden zijn in milligraden Celsius — deel door 1000 om °C te krijgen.

Ventilatorsnelheid uitlezen

bash
cat /sys/class/hwmon/hwmon6/fan1_input

De uitvoer is in RPM. Voorbeeld: 2161

Lees alle temperaturen in één keer uit:

bash
for zone in /sys/class/thermal/thermal_zone*; do
    name=$(cat $zone/type)
    temp=$(( $(cat $zone/temp) / 1000 ))
    echo "$name: ${temp}°C"
done

Ventilatorsnelheid besturen

  1. Schakel over naar de handmatige modus:
bash
echo 1 | sudo tee /sys/class/hwmon/hwmon6/pwm1_enable
  1. Stel de PWM-waarde in (0–255):
PWM-waardeGeschatte snelheid
0Ventilator uit
64~25%
128~50%
192~75%
255Volle snelheid
bash
# Instellen op 50%
echo 128 | sudo tee /sys/class/hwmon/hwmon6/pwm1
  1. Herstel de automatische thermische besturing:
bash
echo 2 | sudo tee /sys/class/hwmon/hwmon6/pwm1_enable

Script voor automatische thermische besturing

Dit script past de ventilatorsnelheid aan op basis van de SoC-temperatuur en draait continu op de achtergrond.

bash
#!/bin/bash
TEMP_SENSOR="/sys/class/thermal/thermal_zone0/temp"
PWM_ENABLE="/sys/class/hwmon/hwmon6/pwm1_enable"
PWM_VALUE="/sys/class/hwmon/hwmon6/pwm1"

echo 1 > $PWM_ENABLE

while true; do
    TEMP=$(( $(cat $TEMP_SENSOR) / 1000 ))

    if   [ $TEMP -lt 40 ]; then PWM=50
    elif [ $TEMP -lt 50 ]; then PWM=100
    elif [ $TEMP -lt 60 ]; then PWM=160
    elif [ $TEMP -lt 70 ]; then PWM=210
    else                        PWM=255
    fi

    echo $PWM > $PWM_VALUE
    echo "$(date '+%H:%M:%S') Temp: ${TEMP}°C  PWM: $PWM"
    sleep 5
done

Sla het script op als fan-control.sh en voer het uit:

bash
chmod +x fan-control.sh
sudo ./fan-control.sh

Voer het uit op de achtergrond:

bash
sudo nohup ./fan-control.sh > /var/log/fan-control.log 2>&1 &

systemd-service

  1. Kopieer het script:
bash
sudo cp fan-control.sh /usr/local/bin/fan-control.sh
sudo chmod +x /usr/local/bin/fan-control.sh
  1. Maak het service-bestand aan:
bash
sudo tee /etc/systemd/system/fan-control.service << 'EOF'
[Unit]
Description=Fan Speed Controller
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/local/bin/fan-control.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
  1. Schakel de service in en start deze:
bash
sudo systemctl daemon-reload
sudo systemctl enable fan-control
sudo systemctl start fan-control
sudo systemctl status fan-control

Snelle referentie

bash
# Ventilator-RPM uitlezen
cat /sys/class/hwmon/hwmon6/fan1_input

# SoC-temperatuur uitlezen
echo "$(( $(cat /sys/class/thermal/thermal_zone0/temp) / 1000 ))°C"

# Volledige snelheid
echo 1 | sudo tee /sys/class/hwmon/hwmon6/pwm1_enable
echo 255 | sudo tee /sys/class/hwmon/hwmon6/pwm1

# Lage snelheid
echo 1 | sudo tee /sys/class/hwmon/hwmon6/pwm1_enable
echo 64 | sudo tee /sys/class/hwmon/hwmon6/pwm1

# Automatisch herstellen
echo 2 | sudo tee /sys/class/hwmon/hwmon6/pwm1_enable

Geteste omgeving

ItemWaarde
ApparaatreComputer RK3576 DevKit
OSLinux 6.1 (op Debian gebaseerd)
hwmon-interface/sys/class/hwmon/hwmon6 (pwmfan)
Ventilatorsnelheid in rust~2155 RPM
SoC-temperatuur in rust~36°C

LED-indicatorstatus

Dit apparaat beschikt over drie ingebouwde LED-indicatoren (Power, Status en User) op het voorpaneel. Met deze LED's kunnen gebruikers de opstartvolgorde van de hardware volgen, het runtimegedrag van het systeem observeren en gebruikmaken van een volledig programmeerbare interface voor aangepaste software-interacties.

image24.png

  • LED-statussen & standaard hardwaregedrag Onder de standaard systeemfirmware vertonen de LED's het volgende standaardgedrag tijdens het opstarten en tijdens de werking na het opstarten:

  • Essentieel voor ontwikkelaars: besturingsgrenzen Voordat je begint met secundaire ontwikkeling, is het cruciaal om de onderliggende hardwarebedrading van elke LED te begrijpen, om onnodig oplossen van problemen te voorkomen:

  • Power-LED (rood): Pure hardwarebesturing. Deze LED is direct vastbedraad aan de hoofdvoedingsrail. Er is geen GPIO of kernelinterface mee verbonden. Hij kan niet via software of commando's worden bestuurd.

  • Status-LED (groen): Hardwarebesturing op systeemniveau. Deze LED wordt fysiek aangestuurd door de onderliggende hardware-powermanagementlogica of PMIC-firmware om de kernstabiliteit van het systeem weer te geven. Hij biedt geen enkele interface naar de Linux-userspace en kan niet via software of commando's worden bestuurd.

  • User-LED (RGB, drie kleuren): Volledig door ontwikkelaars bestuurbaar! Dit is een RGB-LED-capsule die is bedraad naar de ingebouwde GPIO-expander (gpiochip6). Het is de enige indicator op het apparaat die openstaat voor aangepaste programmering en software-automatisering. Standaard claimt het systeem het blauwe kanaal (USER_LED_B) als heartbeat-indicator, waardoor het rode en groene kanaal inactief blijven.

  • Handleiding voor het besturen van de User RGB-LED In de Linux-omgeving (bijv. Armbian) wordt aanbevolen om de moderne gpiod-toolchain (gpioinfo / gpioset) te gebruiken om het inactieve rode en groene kanaal aan te sturen, en de standaard Linux sysfs-interface om het blauwe kanaal aan te sturen. De LED lokaliseren In het systeem worden LED's beheerd via de sysfs-interface. Voer het volgende commando uit om de LED-node te controleren:

bash
ls /sys/class/leds/user-led

Verwachte uitvoer:

image26.png

Handmatige besturing (AAN/UIT) Voordat je de LED handmatig kunt besturen, moet je de triggermodus instellen op none.

bash
echo none | sudo tee /sys/class/leds/user-led/trigger

De LED AAN/UIT zetten

bash
# Inschakelen
echo 1 | sudo tee /sys/class/leds/user-led/brightness
# Uitschakelen
echo 0 | sudo tee /sys/class/leds/user-led/brightness

Geautomatiseerde triggermodi De kernel biedt verschillende triggers om het LED-gedrag te automatiseren op basis van systeemgebeurtenissen.

bash
# Heartbeat-modus
echo heartbeat | sudo tee /sys/class/leds/user-led/trigger
# Aangepaste timermodus (knipperend)
# Timer inschakelen
echo timer | sudo tee /sys/class/leds/user-led/trigger
# Intervallen instellen
echo 500 | sudo tee /sys/class/leds/user-led/delay_on
echo 500 | sudo tee /sys/class/leds/user-led/delay_off

Permanente configuratie bij opstarten Omdat wijzigingen in /sys vluchtig zijn en na een herstart worden gereset, kun je ze permanent maken door een cronjob toe te voegen of rc.local te gebruiken.

Knop

De moederborden van de reComputer RK3576-serie zijn uitgerust met 3 ingebouwde fysieke knoppen, voornamelijk bedoeld voor voedingsbesturing en het flashen van firmware op laag niveau.

image27.png

Opmerking: Zorg er bij het gebruik van Recovery of MaskROM voor het flashen voor dat de Type-C OTG-poort van het apparaat via een datakabel met de hostpc is verbonden. Je hebt de officiële Rockchip-tools nodig (zoals RKDevTool voor Windows of upgrade_tool voor Linux) om de bewerkingen uit te voeren.

GPIO

Het moederbord biedt bovenaan een standaard 40-pins uitbreidingsheader, die ontwikkelaars een uitgebreide set laagniveau-hardware-interfaces biedt. Deze omvatten voeding, debugging en veelgebruikte industriële communicatiebussen (I2C, UART, SPI, CAN, enz.), waardoor het eenvoudig is om externe sensoren, driverboards aan te sluiten of systeemniveau-debugging uit te voeren.

image29.png

Pinout-tabel van de 40-pins header

GPIO-gebruik Standaard functioneren de meeste pinnen op de 40-pins header als standaard GPIO's, tenzij ze vooraf zijn toegewezen door systeemdrivers. De standaard gpiod-toolset (gpiodetect, gpioinfo, gpioset, gpioget) wordt aanbevolen voor manipulatie op shellniveau. Om fysieke pin 21 te manipuleren (die is aangewezen als algemene GPIO en momenteel vrij is):

  • Zoek de bijbehorende controller en het lijnnummer op:
bash
sudo gpioinfo | grep -i PIN_21

Uitvoer:

text
line 14:     "PIN_21"       unused   input  active-high

Dit geeft aan dat deze bij gpiochip1, lijn 14 hoort.

  • Zet de pin op High (bijv. om een LED in te schakelen):
bash
gpioset gpiochip1 14=1
  • Zet de pin op Low:
bash
gpioset gpiochip1 14=0
  • Lees de ingangsstatus van fysieke pin 27: Door sudo gpioinfo | grep -i PIN_27 uit te voeren, zie je dat deze wordt toegewezen aan gpiochip4, lijn 23:
bash
gpioget gpiochip4 23

Om de gespecialiseerde randapparatuur-hardware (I2C, UART, CAN, PWM) op de pinout te ontgrendelen, moet je de bijbehorende Device Tree Overlay (DTBO) expliciet inschakelen. Anders blijven ze gewoon als generieke GPIO's functioneren. Alle overlay-configuraties specifiek voor de 40-pins header bevinden zich in /boot/dtb/rockchip/overlay/ en volgen het strikte naamvoorvoegsel recomputer-rk3576-devkit-40pin-:

Configuratieprocedure:

  • Open het configuratiebestand van de systeemomgeving:
bash
sudo nano /boot/armbianEnv.txt
  • Zoek de regel overlays= (of voeg deze toe aan het einde van het bestand als deze ontbreekt), en voeg de gewenste overlaynaam toe zonder de extensie .dtbo. Scheid meerdere overlays met een spatie:
text
overlays=recomputer-rk3576-devkit-40pin-i2c3 recomputer-rk3576-devkit-40pin-can0
  • Opslaan en afsluiten (Ctrl+O, Enter, Ctrl+X), en herstart vervolgens de hardware om de wijziging van de device tree toe te passen:
bash
sudo reboot

Opmerking: SPI standaard actief

De SPI-buspinnen (pinnen 19, 21, 23, 24, 26) zijn standaard bij het opstarten ingeschakeld. Je hoeft geen aangepaste DTBO voor SPI toe te wijzen in armbianEnv.txt.

Gedeelde hardwarearchitectuur: De fysieke SPI-signalen op de 40-pins header delen exact hetzelfde hardware-busdomein met de ingebouwde uitbreidingsslots voor 4G LTE / LoRaWAN / Hailo Wi-Fi. Om een out-of-the-box-ervaring voor deze communicatiemodules mogelijk te maken, houdt het basisbesturingssysteem dit SPI-kanaal permanent actief.

Aanbeveling voor ontwikkelaars: Als je aangepaste SPI-breakoutboards van derden aansluit op de 40-pins uitbreidingsheader, zorg er dan voor dat je Chip Select (CS) en adressering zorgvuldig afhandelt om communicatiebus-deadlocks met de ingebouwde modules te voorkomen.

USB

Dit apparaat biedt meerdere fysieke USB-interfaces die zijn toegewezen aan de reComputer RK3576-serie. Deze interfaces verzorgen het aansluiten van externe randapparatuur, het flashen van systeemfirmware (OTG) en secundaire beelduitvoer.

De USB-resourcetoewijzing is als volgt gedefinieerd:

Interfacelocatie / labelFysieke vormfactorBusprotocol & maximale bandbreedteHardwarespecificatie & controllerroutering
USB 3.0 HostUSB Type-AUSB 3.2 Gen 1x1 (5 Gbps)Gerouteerd via de interne USB 3.0-controller. Biedt hoogbandbreedte-datakanalen die geoptimaliseerd zijn voor USB 3.0-industriecamera's, NVMe-opslaguitbreiding of hogesnelheids-DAQ-modules.
USB 2.0 HostUSB Type-A (meerdere)USB 2.0 (480 Mbps)Beheerd door de USB 2.0 Host Controller. Gebruikt voor standaardrandapparatuur zoals toetsenborden, muizen, 4G/5G-cellulaire modems, hardwareversleutelingsdongles of USB-naar-UART-bridgeboards.
USB Type-CUSB Type-CUSB 3.0 / 2.0 OTG + DP 1.4 Alt ModeEen multiprotocol-composietpoort gerouteerd naar de RK3576 USB 3.0 OTG-controller en de DisplayPort (DP) TX-PHY. Ondersteunt bidirectionele host-/apparaatrollen en hardwarematige videostreaming.

Met lsusb kun je informatie bekijken over de USB-apparaten die op het systeem zijn aangesloten:

image34.png

Opmerking: architectuur van de USB Type-C-interface

A. Systeemflashing & onderhoud (USB OTG-apparaatmodus): Geactiveerd via de Recovery- / MaskROM-toetsen, start de poort op in apparaatmodus voor het flashen van firmware op laag niveau met RKDevTool.

B. DisplayPort-uitvoer (DP 1.4 Alt Mode): Multiplext hardwarematige videolanes om rechtstreeks een monitor via Type-C-kabels of adapters aan te sturen, met standaard DP 1.4-beeldschermen.

C. Standaard native hostmodus: Valt tijdens de normale OS-runtime standaard terug op een standaard USB 3.0-host om rechtstreeks te communiceren met Type-C-opslag, netwerkadapters of hubs.

SD-kaartsleuf

Het moederbord is uitgerust met één standaard Micro SD (TF)-kaartsleuf, die rechtstreeks is aangesloten op de SDMMC0-bus van de RK3576 SOC. Deze interface wordt voornamelijk gebruikt voor het opstarten van het systeem, het draaien van het besturingssysteem (zoals Armbian OS) en lokale gegevensopslag.

image35.png

Out-of-the-box-ervaring Het apparaat wordt standaard geleverd met een meegeleverde 32GB Class 10 Micro SD-kaart. Deze kaart heeft de strenge compatibiliteitstests van Seeed Studio doorstaan en is prima in staat om dagelijkse Armbian OS-werkzaamheden, basisnetwerkconfiguraties en lichte edge-AI-algoritmevalidaties aan te kunnen, zodat ontwikkelaars direct aan de slag kunnen.

Opmerking: opstartprioriteit & opslagrichtlijnen

Opstartprioriteitsmechanisme (MaskROM-fase): De opstartvolgorde van de firmware op de RK3576 wordt strikt bepaald door de laagniveau-MaskROM. Als er opstartbare firmware aanwezig is op zowel de Micro SD-kaart als de ingebouwde eMMC, geeft de MaskROM voorrang aan het laden van de SPL (Secondary Program Loader) vanaf de Micro SD-kaart. Let goed op dit fysieke kenmerk tijdens firmware-upgrades of bij het schakelen tussen meerdere besturingssystemen.

NVMe-opstartbeperking (U-Boot-fase): M.2 NVMe SSD's vallen NIET binnen het directe MaskROM-opstartpad. Het systeem kan de eerste opstartfase niet rechtstreeks vanaf een ruwe NVMe-drive uitvoeren. Om het OS vanaf een NVMe-SSD te draaien, moet het systeem eerst de bootloader op de Micro SD-kaart of de eMMC uitvoeren om de U-Boot-fase te bereiken, waarna U-Boot vervolgens het besturingssysteem op de NVMe-opslag initialiseert, laadt en de controle daaraan overdraagt.

Upgradeaanbevelingen voor zware workloads: Als je van plan bent om applicaties te draaien met hoogfrequente I/O-lees-/schrijfvereisten aan de edge (zoals grote databases met continue lokale logging, of het beheren van complexe Docker-containerclusters), kan het enorme volume aan willekeurige 4K-lees-/schrijfbewerkingen de prestatiegrens van een standaard Class 10-kaart bereiken. Voor dergelijke zware industriële scenario's raden we aan de kern-rootfs van het OS te migreren naar een M.2 NVMe-SSD (via U-Boot chain-loading), of te upgraden naar een hoogwaardige Micro SD-kaart die expliciet is beoordeeld voor A1 of A2 (Application Performance Class) om optimale systeemresponsiviteit te garanderen.

Koppelpunt: In Armbian OS wordt de Micro SD-kaart doorgaans aangeduid als /dev/mmcblk0.

SIM-kaartsleuf

Het moederbord beschikt over één ingebouwde kaartsleuf, expliciet ontworpen om te werken met 4G LTE-cellulaire modules die in de Mini-PCIe-slot zijn geplaatst. Door een standaard provider-SIM-kaart te plaatsen, kan het apparaat edge-to-cloud-cellulaire connectiviteit realiseren in omgevingen zonder bekabeld Ethernet.

image36.png

Hardwarearchitectuur & mechanisme De signaallijnen van de Nano SIM-sleuf zijn rechtstreeks aangesloten op de specifieke pinnen (zoals UIM_PWR, UIM_DATA, UIM_CLK, UIM_RESET) van de Mini-PCIe-slot.

  • Geen directe verbinding met de SOC: Let op dat de SIM-kaartsignalen niet rechtstreeks met de RK3576 SOC communiceren. In plaats daarvan worden ze volledig beheerd en aangestuurd door de 4G-module die in de Mini-PCIe-slot is geplaatst. Dientengevolge functioneert de SIM-kaart alleen wanneer een compatibele 4G-module actief is.

Opmerking: richtlijnen & bedieningsnormen voor ontwikkelaars

Strikt geen hot-plugging: Plaats of verwijder de SIM-kaart altijd terwijl het apparaat volledig is uitgeschakeld (DC-voeding of PoE losgekoppeld). Het hot-pluggen van de SIM-kaart terwijl het systeem actief is, kan de SIM-interface van de 4G-module permanent beschadigen of netwerkgerelateerde systeemcrashes veroorzaken.

Vormfactorspecificaties: Deze sleuf ondersteunt uitsluitend Nano SIM-kaarten (4FF), het kleinste standaardformaat dat in moderne smartphones wordt gebruikt. Vermijd het gebruik van Micro- of Standard-SIM-kaarten met goedkope plastic adapters, omdat deze gemakkelijk vast kunnen komen te zitten of de interne pinnen van de sleuf kunnen verbuigen.

Plaatsingsoriëntatie: Controleer het zeefdruksymbool of de structurele inkeping bij de sleuf voordat je de kaart plaatst. Doorgaans moet de SIM-kaart worden geplaatst met de gouden contacten naar beneden en de ingekeepte hoek eerst naar binnen (volg de fysieke uitlijnmarkering op het bord).

M.2 Key M 2280-slot

Het moederbord is uitgerust met één standaard M.2 Key M 2280-slot, aangestuurd door een PCIe 2.1 x1-bus. Deze is ontworpen voor hogesnelheids-opslaguitbreiding of edge-AI-computingversnelling.

image37.png

Ondersteunde apparaten

  • NVMe-SSD: Ondersteunt standaard 2280 NVMe Solid State Drives voor het opstarten van het systeem, grootschalige gegevensopslag of het huisvesten van grote AI-modellen.
  • AI-versneller: Compatibel met op M.2 Key M gebaseerde AI-versnellermodules om edge-inferentiemogelijkheden te verbeteren.

Geteste & geverifieerde apparaten Om optimale compatibiliteit en systeemstabiliteit te garanderen, raden we sterk aan de M.2-uitbreidingsmodules te gebruiken die volledig zijn getest en geverifieerd door Seeed Studio:

Opmerking:

Protocolcompatibiliteit: Deze slot ondersteunt uitsluitend PCIe NVMe-apparaten. M.2 SATA-SSD's worden NIET ondersteund en worden niet door het OS herkend.

Bandbreedtebeperking: De slot werkt op een PCIe 2.1 x1-lane, met een theoretische maximale bandbreedte van ongeveer 500 MB/s. Bij de aanschaf van een NVMe-SSD volstaan standaard kosteneffectieve Gen3/Gen4-drives; ultrasnelle Gen4-SSD's worden beperkt door de PCIe 2.1 x1-interface.

Vormfactor: De montagestandoff is specifiek ontworpen voor 2280 (22 mm x 80 mm)-modules.

SSD-gebruikershandleiding

bash
lsblk

image38.png

Handleiding voor Hailo YOLOv11-implementatie & -inferentie

Pakketinstallatie Na het installeren van de basis-PCIe-driver is een systeemherstart vereist om de wijzigingen door te voeren.

image39.png

image40.png

bash
# Installeer het PCIe-stuurprogramma
sudo dpkg -i hailort-pcie-driver_4.23.0_all.deb

# Herstart het systeem
sudo reboot

# Controleer na het herstarten of het stuurprogramma is geladen
lsmod | grep hailo

# Installeer HailoRT
sudo dpkg -i hailort_4.23.0_arm64.deb

# Scan en controleer de apparaatstatus
hailortcli scan

# Maak een virtuele omgeving aan en activeer deze
python3 -m venv hailo_env
source hailo_env/bin/activate

# Installeer de HailoRT Python-bibliotheek
pip install hailort-4.23.0-cp311-cp311-linux_aarch64.whl

# Installatie en apparaatverbinding verifiëren
python3 -c "from hailo_platform import VDevice; vdev = VDevice(); print('Successfully connected via VDevice! Device info:', vdev)"

image41.png

image42.png

image43.png

Hailo Model Zoo installeren Om officiële, vooraf getrainde modellen uit te voeren, moet je de Hailo Model Zoo en de bijbehorende systeemafhankelijkheden installeren.

bash
# 1. Vereiste systeembibliotheken installeren
sudo apt update
sudo apt install -y git libglib2.0-0 libgl1-mesa-glx

# 2. Officiële repository klonen (nieuwste branch aanbevolen)
git clone https://github.com/hailo-ai/hailo_model_zoo.git
cd hailo_model_zoo
pip install -e .

Het YOLOv11-model uitvoeren

  • Cameraboxapparaten controleren: Identificeer het koppelpunt van je webcam.
bash
v4l2-ctl --list-devices
  • Model downloaden: Zorg ervoor dat het modelbestand yolov11n.hef is gedownload en in je werkmap is geplaatst.

Maak een bestand met de naam webcam_yolo11.py aan en plak de onderstaande code erin. Pas HEF_PATH en DEVICE_ID in het configuratiegedeelte aan naar jouw situatie.

python
import numpy as np
import cv2
import time
from hailo_platform import (VDevice, HEF, InferVStreams, ConfigureParams,
                            HailoStreamInterface, InputVStreamParams, OutputVStreamParams)

# ================= Configuratie =================
HEF_PATH = 'yolov11n.hef'
DEVICE_ID = "/dev/video40"  # Update based on v4l2-ctl output
CONF_THRESHOLD = 0.45

# COCO-dataset 80 klassenlabels
COCO_CLASSES = [
    "person", "bicycle", "car", "motorcycle", "airplane", "bus", "train", "truck", "boat", "traffic light",
    "fire hydrant", "stop sign", "parking meter", "bench", "bird", "cat", "dog", "horse", "sheep", "cow",
    "elephant", "bear", "zebra", "giraffe", "backpack", "umbrella", "handbag", "tie", "suitcase", "frisbee",
    "skis", "snowboard", "sports ball", "kite", "baseball bat", "baseball glove", "skateboard", "surfboard",
    "tennis racket", "bottle", "wine glass", "cup", "fork", "knife", "spoon", "bowl", "banana", "apple",
    "sandwich", "orange", "broccoli", "carrot", "hot dog", "pizza", "donut", "cake", "chair", "couch",
    "potted plant", "bed", "dining table", "toilet", "tv", "laptop", "mouse", "remote", "keyboard", "cell phone",
    "microwave", "oven", "toaster", "sink", "refrigerator", "book", "clock", "vase", "scissors", "teddy bear",
    "hair drier", "toothbrush"
]
# ==================================================

def main():
    # 1. Initialize Hailo Hardware
    hef = HEF(HEF_PATH)
    input_vstream_info = hef.get_input_vstream_infos()[0]
    input_h, input_w = input_vstream_info.shape[:2]

    cap = cv2.VideoCapture(DEVICE_ID)
    if not cap.isOpened():
        print("Cannot open webcam")
        return

    # Setup inference variables
    prev_time = 0

    with VDevice() as target:
        config_params_dict = ConfigureParams.create_from_hef(hef, HailoStreamInterface.PCIe)
        network_group = target.configure(hef, config_params_dict)[0]
        with network_group.activate():
            vstream_params = (InputVStreamParams.make_from_network_group(network_group),
                              OutputVStreamParams.make_from_network_group(network_group))
            with InferVStreams(network_group, vstream_params[0], vstream_params[1]) as vstreams:
                print("[INFO] Initialization successful! Running YOLOv11 real-time detection...")
                while True:
                    start_time = time.time()  # Record start time for FPS
                    ret, frame = cap.read()
                    if not ret:
                        break

                    # Preprocessing (Convert to RGB based on previous validation)
                    frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
                    resized = cv2.resize(frame_rgb, (input_w, input_h))
                    input_tensor = np.expand_dims(resized, axis=0)

                    # Inference
                    outputs = vstreams.infer(input_tensor)

                    # Parsing and Drawing
                    h, w, _ = frame.shape
                    for name, class_list in outputs.items():
                        # Iterate through 80 classes
                        for class_id, detections in enumerate(class_list[0]):
                            if len(detections) > 0:
                                for det in detections:
                                    if len(det) >= 5:
                                        ymin, xmin, ymax, xmax, confidence = det[:5]
                                        if confidence > CONF_THRESHOLD:
                                            # Coordinate Mapping
                                            left, top = int(xmin * w), int(ymin * h)
                                            right, bottom = int(xmax * w), int(ymax * h)

                                            # Get class name, display ID if out of bounds
                                            class_name = COCO_CLASSES[class_id] if class_id < len(COCO_CLASSES) else f"ID {class_id}"

                                            # Draw bounding box
                                            cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
                                            # Draw background and label text
                                            label = f"{class_name}: {confidence:.2f}"
                                            cv2.putText(frame, label, (left, top - 10),
                                                        cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

                    # Calculate and display real-time FPS
                    curr_time = time.time()
                    fps = 1 / (curr_time - start_time)
                    # Print in the top left corner
                    cv2.putText(frame, f"FPS: {fps:.1f}", (20, 40),
                                cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)

                    # Display window
                    cv2.imshow('reComputer RK3576 - Hailo YOLOv11', frame)
                    if cv2.waitKey(1) & 0xFF == ord('q'):
                        break

    cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    main()

image44.png

Handleiding voor RK182x-implementatie & -inferentie

RK182x ondersteunt de coprocessormodus, waarbij de host-SoC (bijv. RK3588/RK3576) als de systeemkern fungeert, verantwoordelijk voor taakplanning, resourcetoewijzing en algehele besturing. Het maakt verbinding met de RK1820/RK1828-versnellingseenheid via een hogesnelheids-PCIe (doorgaans onderhandeld naar Gen2 x1 op 5 GT/s, wat ~400 MB/s unidirectionele bandbreedte biedt) of USB 3.0-interfaces. Zowel RK1820 als RK1828 delen dezelfde PCI Device ID (1d87:182a). Het ontwikkelingsframework bestaat uit de modelconversietool aan de pc-zijde (RKNN3 Toolkit) en de runtime-omgeving aan de boardzijde (RKNN3 Runtime).

Optie A: Snelle geautomatiseerde implementatie (aanbevolen) Met het vooraf gecompileerde geautomatiseerde installatiepakket uit de SDK kun je met één klik de kerneldriver, apparaatfirmware, runtimebibliotheken, debugtools en systeemautostartservices implementeren.

bash
# Pakket via ADB van pc naar board pushen
# Optionele pakketten omvatten:
#   - rknn3_rk182x_m2_installer_arm64.tgz (M.2-module)
adb push rknn3_rk182x_m2_installer_arm64.tgz /tmp/installer.tgz
adb shell "cd /tmp && tar xzf installer.tgz && ./install.sh"

# Let op: Een volledige stroomcyclus (fysiek uitschakelen) is VEREIST om correct laden van hardware en firmware te garanderen.
sudo poweroff

Als tijdens ontwikkeling en debugging handmatige controle over de driverbinding vereist is, of wanneer je werkt in een omgeving zonder het geautomatiseerde pakket geïnstalleerd, voer dan de volgende systeembuscommando's in volgorde uit. Let op: RK1820 vereist expliciete handmatige activering van BusMaster na het probe-proces van de driver.

bash
# Stuurprogramma-override forceren en binding activeren
echo pcie-rkep | sudo tee /sys/bus/pci/devices/0000:01:00.0/driver_override
echo 0000:01:00.0 | sudo tee /sys/bus/pci/drivers/pcie-rkep/bind

# BusMaster-register inschakelen om busmastering van de acceleratorcard te activeren
sudo setpci -s 01:00.0 COMMAND=0x0406

Het hostsysteem draait standaard Python 3.11. Zorg er voor de implementatie voor dat je je modellen op een x86-machine hebt geconverteerd met de RKNN3 Toolkit naar het speciale .rknn-formaat (voor zowel LLM's als CNN's) en dat je de resulterende bestanden (bijv. qwen2_5_1_5b_rk1820.rknn) naar de host hebt geüpload.

bash
# 1. Werkruimte aanmaken
mkdir -p ~/rk_182x_work && cd ~/rk_182x_work

# 2. Model Zoo- en Toolkit-repositories klonen
git clone --recursive https://github.com/airockchip/rknn3-model-zoo.git
git clone https://github.com/airockchip/rknn3-toolkit.git

# 3. rknn3-toolkit-lite installeren
cd rknn3-toolkit/rknn3-toolkit-lite/packages
pip3 install ./rknn3_toolkit_lite-1.0.0-cp311-cp311-linux_aarch64.whl

# 4. Afhankelijkheden installeren
pip3 install -r requirements.txt

Mini-PCIe-slot

Het moederbord beschikt over één standaard Mini-PCIe (Mini PCI Express)-slot, voornamelijk ontworpen voor het uitbreiden met industriële draadloze communicatiemodules zoals 4G LTE, LoRaWAN of Wi-Fi HaLow.

image45.png

Signaal- & busarchitectuur Deze Mini-PCIe-slot routeert zowel PCIe- als USB-signalen intern, wat zorgt voor uitstekende compatibiliteit met de overgrote meerderheid van de gangbare draadloze communicatiemodules op de markt.

  • Cellulaire uitbreiding: In combinatie met de ingebouwde Nano SIM-kaartsleuf kun je direct 4G LTE-modules plaatsen om cellulaire netwerkconnectiviteit mogelijk te maken.

Geteste & geverifieerde apparaten Om optimale compatibiliteit en systeemstabiliteit te garanderen, raden we sterk aan de Mini-PCIe-modules te gebruiken die volledig zijn getest en geverifieerd door Seeed Studio:

  • 4G cellulair netwerk
    • Officieel aanbevolen 4G LTE Mini-PCIe-module
  • LoRaWAN & IoT draadloos
    • USB-gebaseerde / SPI-gebaseerde LoRaWAN-gatewaymodules
    • Wi-Fi HaLow (802.11ah) langeafstands-, laagvermogen draadloze modules

Opmerking:

SIM-kaartintegratie: Plaats bij gebruik van een 4G LTE-module de Nano SIM-kaart in de ingebouwde sleuf terwijl het apparaat is uitgeschakeld. Het hot-pluggen van de SIM-kaart kan leiden tot een storing bij het herkennen van de module of permanente schade.

Antenneroutering: Omdat industriële behuizingen draadloze signalen kunnen afschermen, moet je bij het gebruik van 4G- of LoRaWAN-modules altijd IPEX-naar-SMA-pigtails aansluiten om de antennes buiten de behuizing te leiden.

Driver- & netwerkconfiguratie: De meeste industriële 4G-modules vereisen specifieke USB-seriële drivers (zoals de option-driver) in Armbian OS. Ontwikkelaars kunnen NetworkManager of pppd gebruiken om cellulaire verbindingen tot stand te brengen.

Configuratie- & testhandleiding voor 4G-module (EC25)

image46.png

Cellulaire instelling via AT-commando's Plaats de 4G-module met de IoT-SIM-kaart, start het systeem op en controleer de USB-seriële apparaten:

bash
lsusb
ls /dev/ttyUSB*

Installeer en start minicom om met de module te communiceren:

bash
sudo apt install minicom
sudo minicom -D /dev/ttyUSB2

Snelle referentie van de belangrijkste AT-commando's

Gedetailleerde statuscontrole & belworkflow Controle van de SIM-kaartstatus: Stuur AT+CPIN? om de SIM-status te controleren.

text
Command:  AT+CPIN?
Response: +CPIN: READY
Meaning:  The SIM card is present and ready (no PIN lock applied).

Controle van de signaalkwaliteit (RSSI): Stuur AT+CSQ om de draadloze omgeving te beoordelen.

text
Command:  AT+CSQ
Response: +CSQ: 28,99
Meaning:  Excellent signal. The value 28 maps to approx. -57 dBm (range 0-31, >20 is excellent). 99 indicates unknown Rx error rate (normal).

Controle van de netwerkregistratie: Stuur AT+CGREG? en AT+CREG? om de cellulaire aansluiting te controleren.

text
Command:  AT+CGREG?  and  AT+CREG?
Response: +CGREG: 0,1  /  +CREG: 0,1
Meaning:  The trailing 1 indicates "Registered, home network", meaning the module has successfully attached to the tower.

Query van de huidige provider: Stuur AT+COPS? om de operator en netwerkmodus te controleren.

text
Command:  AT+COPS?
Response: +COPS: 0,0,"T-Mobile",7
Meaning:  Currently attached to the specific carrier (e.g., T-Mobile). The trailing 7 indicates the connection is in LTE (4G) mode.

Activering van de datacontext: Vraag op via AT+QIACT?, activeer vervolgens de context met AT+QIACT=1.

text
Command:  AT+QIACT?   -> Response: OK (If empty, no context is currently active)
Command:  AT+QIACT=1  -> Response: OK
Meaning:  Successfully activates Context ID 1. The module will fetch a private IP from the carrier and enable cellular routing.

Opmerking: Spraakoproepen kunnen worden gestart via ATD<number>; als gelijktijdige spraak/data door de hardware en het abonnement worden ondersteund.

Ingebouwde pingtest: Voer AT+QPING uit om de connectiviteit op IP-niveau rechtstreeks vanaf de module te controleren.

text
Command:  AT+QPING=1,"www.google.com",1,4
Response: +QPING: 0["142.250.190.46",32,45,255]
          +QPING: 0,4,4,0,40,52,45
Meaning:  Successfully pinged the target domain. 4 packets sent, 4 received, 0% loss.

Probleemoplossing

Configuratie- & testhandleiding voor de LoRa-module

USB

Apparaatherkenning controleren

bash
ls /dev/ttyACM*
udevadm info /dev/ttyACM0 | grep -E "ID_VENDOR|ID_MODEL"

De verwachte uitvoer bevat:

bash
E: ID_MODEL=STM32_Virtual_ComPort
E: ID_VENDOR=STMicroelectronics

TX-testcommando

bash
cd ~/sx1302_hal/libloragw
sudo ./test_loragw_hal_tx \
  -u \
  -d /dev/ttyACM0 \
  -r 1250 \
  -m LORA \
  -f 867.1 \
  -s 12 \
  -b 125 \
  -n 1000 \
  -z 100 \
  --dig 3 \
  --pa 0 \
  --pwid 13

Verwachte uitvoer

text
Opening USB communication interface
INFO: Configuring TTY
INFO: Connect to MCU
INFO: Concentrator MCU version is V01.00.00
INFO: MCU status: sys_time:197172 temperature:37.2oC
Note: chip version is 0x10 (v1.0)
TX done
TX done

image49.png

Veelvoorkomende fouten & oplossingen

FoutOorzaakOplossing
chip version is 0xFFSPI-modus gebruikt op een USB-moduleVoeg de vlag -u toe
failed to open COM port ... No such file or directoryApparaat losgekoppeld (bijv. na een GPIO-reset)Opnieuw aansluiten of herstarten; voer geen reset_lgw.sh uit
USB disconnect in dmesgreset_lgw.sh heeft GPIO omgeschakeld en USB losgekoppeldSla het resetscript over voor USB-modules

Opmerking: Voer reset_lgw.sh niet uit voordat je modules in USB-modus test. Het resetscript schakelt GPIO-pinnen om die de module aan- en uitschakelen, waardoor USB wordt losgekoppeld. De STM32-MCU handelt de SX1302-reset intern af.

SPI

Apparaatherkenning controleren

bash
ls /dev/ttyACM*
udevadm info /dev/ttyACM0 | grep -E "ID_VENDOR|ID_MODEL"

De verwachte uitvoer bevat:

bash
E: ID_MODEL=STM32_Virtual_ComPort
E: ID_VENDOR=STMicroelectronics

TX-testcommando

bash
cd ~/sx1302_hal/libloragw
sudo ./test_loragw_hal_tx \
  -u \
  -d /dev/ttyACM0 \
  -r 1250 -m LORA -f 867.1 -s 12 -b 125 \
  -n 1000 -z 100 --dig 3 --pa 0 --pwid 13

Verwachte uitvoer

text
Opening USB communication interface
INFO: Configuring TTY
INFO: Connect to MCU
INFO: Concentrator MCU version is V01.00.00
INFO: MCU status: sys_time:197172 temperature:37.2oC
Note: chip version is 0x10 (v1.0)
TX done
TX done
...

image50.png

Configuratie- & testhandleiding voor de HaLow WiFi-module

Voor HaLow WiFi is een device tree overlay nodig om de SPI-bus en GPIO-configuratie voor de MM6108-chip beschikbaar te maken.

Voeg de overlay toe aan de Armbian-omgevingsconfiguratie:

bash
echo "overlays=recomputer-rk3576-devkit-halow-wifi" | sudo tee -a /boot/armbianEnv.txt

Controleer het bestand voordat je herstart:

bash
tail -2 /boot/armbianEnv.txt

Verwachte uitvoer:

image51.png

Herstart om de overlay toe te passen:

bash
sudo reboot

Controleer na de herstart of de driver is geladen en de interface is verschenen:

bash
dmesg | grep -i morse | grep -E "found|Loaded|initialized|MAC"

Verwachte uitvoer:

text
morse_spi spi3.1: Morse Micro SPI device found, chip ID=0x0306
morse_spi spi3.1: Loaded firmware from morse/mm6108.bin, size 459124, crc32 0x51d355b9
morse_spi spi3.1: Loaded BCF from morse/bcf_default.bin, size 1251, crc32 0x941b2a82
morse_spi spi3.1: Firmware initialized
morse_spi spi3.1: Firmware Manifest MAC: 90:03:71:52:9d:8e

De binaries morse-hostapd en morse-wpa_supplicant roepen intern morse_cli aan, maar de geïnstalleerde binary heet morsectrl. Er is een symlink nodig.

bash
sudo ln -s /usr/bin/morsectrl /usr/local/bin/morse_cli

Dit hoeft slechts eenmalig te gebeuren.

Controleer de interfaces:

bash
ip link show | grep -E "wlan0|wlan1|morse0"

AP-modus Maak de configuratie aan:

bash
sudo nano /etc/morse-hostapd.conf

Minimaal werkende configuratie:

text
interface=wlan0
driver=nl80211
ssid=HaLow_Test
country_code=AU          # Change to your region
hw_mode=a
channel=42               # AU channel, see table below
op_class=69
beacon_int=100
dtim_period=2
ieee80211ah=1
s1g_prim_chwidth=1
s1g_prim_1mhz_chan_index=0
s1g_capab=[SHORT-GI-ALL]
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
ctrl_interface=/var/run/hostapd

Zet de interface uit en start de AP:

bash
sudo ip link set wlan0 down
sudo morse-hostapd /etc/morse-hostapd.conf -B

Verwachte uitvoer (geslaagd):

text
s1g mapped ht channel 159
Full Channel Information
    Operating Frequency: 923000 kHz
    Operating BW: 2 MHz
wlan0: interface state COUNTRY_UPDATE->ENABLED
wlan0: AP-ENABLED

Opmerking: Waarschuwingen van het type Unable to set RAW zijn niet-kritiek. Ze verschijnen omdat de geïnstalleerde driverversie geen RAW (Restricted Access Window) ondersteunt. De AP start normaal op.

Controleer de AP-status:

bash
sudo morse-hostapd_cli -i wlan0 status
sudo morse-hostapd_cli -i wlan0 all_sta   # list connected clients

Stationmodus Maak de configuratie aan:

bash
sudo nano /etc/morse-wpa_supplicant.conf

Minimale configuratie:

text
ctrl_interface=/var/run/wpa_supplicant
country=AU

network={
    ssid="HaLow_Test"
    psk="12345678"
    key_mgmt=WPA-PSK
}

Verbinden:

bash
sudo ip link set wlan0 down
sudo morse-wpa_supplicant -i wlan0 -c /etc/morse-wpa_supplicant.conf -D nl80211 -B
sudo dhclient wlan0

Controleer de verbinding:

bash
sudo morse-wpa_cli -i wlan0 status
ip addr show wlan0

Ethernet RJ45

Het moederbord beschikt over twee onafhankelijke Gigabit Ethernet (RJ45)-poorten. Het dual-LAN-ontwerp maakt het ideaal voor het bouwen van industriële edge-gateways, het implementeren van fysieke netwerkisolatie (intranet/extranet) of het configureren van complexe netwerkroutering.

image52.png

Poortdefinities & functies:

  • 1x standaard Gigabit Ethernet (GbE): Ondersteunt Ethernet-verbindingen met automatische onderhandeling van 10/100/1000 Mbps.
  • 1x PoE-geactiveerde Gigabit Ethernet (GbE met PoE PD): Naast standaard Gigabit-netwerken ondersteunt deze poort het PoE PD (Powered Device)-protocol.

Opmerking: Als PoE Powered Device (PD) kan dit RK3576-moederbord rechtstreeks via de Ethernet-kabel worden gevoed door een PoE-switch (PSE), waardoor een aparte DC-voedingsadapter niet nodig is.

Opmerking:

Vereiste PoE-module: De PoE-voedingsfunctie is niet standaard ingebouwd in het basisbord. Hiervoor is een extra, apart aan te schaffen PoE-add-onmodule vereist. Zonder deze geïnstalleerde module functioneert de poort uitsluitend als een standaard Gigabit Ethernet-poort.

Verduidelijking PD versus PSE: Let op dat dit apparaat fungeert als PoE PD (stroomontvanger). Het ondersteunt GEEN PoE-uitvoer (PSE), wat betekent dat het geen stroom kan leveren aan externe apparaten zoals PoE-IP-camera's.

Netwerkconfiguratie van het systeem: In Armbian OS worden deze twee fysieke poorten doorgaans aangeduid als eth0 en eth1. We raden aan om de standaard Linux NetworkManager-tool (via nmtui of nmcli) of systemd-networkd te gebruiken om statische IP-adressen, netwerkbridging of link-aggregatie (bonding) te configureren.

DSI

Het moederbord is uitgerust met één 4-lane MIPI DSI (22-pins)-beeldscherminterface, specifiek ontworpen voor het aansluiten van hoge-resolutie ingebouwde LCD's of industriële touchpanelen.

Interfacefuncties

  • Hogebandbreedte-overdracht: Maakt gebruik van een fysiek 4-lane-linkontwerp, wat aanzienlijk hogere gegevensdoorvoer biedt in vergelijking met traditionele 2-lane-interfaces. Kan probleemloos beeldschermen met een resolutie van 1080P of zelfs 2K aansturen.
  • Fysieke vormfactor: Gebruikt een 22-pins 0,5 mm pitch FPC (Flexible Printed Circuit)-connector met een klemvergrendelingsmechanisme.
  • Compatibiliteit met het Raspberry Pi-ecosysteem: De interface is fysiek achterwaarts compatibel en ondersteunt directe verbindingen met standaard Raspberry Pi DSI-schermen, wat de kosten en moeite voor ontwikkelaars om accessoires te verkrijgen aanzienlijk vermindert.

Configuratie- & testhandleiding voor DSI

Op de reComputer-RK3576 wordt de MIPI DSI-interface beheerd via Device Tree Overlays (DTBO). Gebruikers moeten het vereiste overlaybestand handmatig laden op basis van het aangesloten beeldschermrandapparaat. Open de terminal en bewerk het configuratiebestand van de Armbian-omgeving:

bash
sudo nano /boot/armbianEnv.txt

Voeg de volgende regel toe aan het einde van het bestand om de DSI-schermoverlay op te geven:

text
overlays=recomputer-rk3576-devkit-raspi-7inch-touchscreen

Opslaan en afsluiten (druk op Ctrl + O, vervolgens Enter om op te slaan in nano, en Ctrl + X om af te sluiten). Werk de pakketlijsten bij en zorg ervoor dat de vereiste multimedia- en beeldschermplugins zijn geïnstalleerd:

bash
sudo apt-get update
sudo apt install v4l-utils -y
sudo apt-get install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-x -y

Herstart het systeem om de wijzigingen toe te passen:

bash
sudo reboot

Controleer na het herstarten of het systeem de grafische desktopomgeving succesvol heeft geïnitialiseerd:

bash
echo $XDG_SESSION_TYPE

Opmerking:

Als de uitvoer x11 of wayland is, wordt het DSI-scherm correct aangestuurd en is de grafische interface actief.

Oriëntatie van de FPC-kabel: Let bij het plaatsen van de FPC-kabel strikt op de oriëntatie van de gouden contacten. Ze moeten naar de contactpinnen binnenin de connector wijzen. Als je de kabel achterstevoren plaatst, kan dit kortsluiting veroorzaken of ervoor zorgen dat het scherm niet aangaat. Zorg ervoor dat de klemvergrendeling stevig vastzit na het plaatsen.

Drivers & device tree: MIPI-schermen zijn niet "plug-and-play". Nadat je een beeldscherm hebt aangesloten, moet je de bijbehorende paneeldriver en backlight-besturingsnodes in Armbian OS inschakelen door de juiste Device Tree Overlays toe te passen (bijv. met armbian-add-overlay) of door de DTB-bestanden in /boot aan te passen.

Touch-ondersteuning: Deze 22-pins interface integreert doorgaans I2C-signaalpinnen voor touch-feedback. Als je een MIPI-touchscreen gebruikt, zorg er dan voor dat zowel de beeldschermdriver als de I2C-touch-IC-driver (bijv. GT911) in het besturingssysteem zijn geladen.

CSI

Het moederbord beschikt over twee onafhankelijke 4-lane MIPI CSI (22-pins)-camera-interfaces. Aangedreven door de robuuste ISP (Image Signal Processor) en ingebouwde NPU van de RK3576, is het dual-CSI-ontwerp perfect voor het bouwen van stereovisiesystemen, machinevisie-inspectiestations of het rechtstreeks streamen van video met een hoge framerate voor edge-AI-modelinferentie.

Interfacefuncties

  • Dual 4-lane-architectuur: Biedt twee fysieke poorten (CSI_0 en CSI_1), elk uitgerust met een volledig 4-lane-datakanaal, in staat om twee industriële cameramodules met hoge resolutie of hoge framerate gelijktijdig aan te sturen.
  • Fysieke vormfactor: Gebruikt een 22-pins 0,5 mm pitch FPC-connector.
  • Compatibiliteit met het Raspberry Pi-ecosysteem: De 22-pins connector is fysiek en grotendeels pin-compatibel, en ondersteunt directe verbindingen met standaard Raspberry Pi CSI-camera's (zoals officiële of modules van derden gebaseerd op IMX219-/IMX477-sensoren). Hierdoor kunnen ontwikkelaars hun visie-algoritmes snel valideren.

Opmerking:

Compatibiliteit & selectie: We raden ten zeerste aan om cameramodules te gebruiken die officieel zijn geverifieerd door Seeed Studio. Bij niet-geverifieerde of niet-standaard camera's moeten ontwikkelaars mogelijk zelf Linux V4L2 (Video for Linux 2)-drivers porten.

Normen voor kabelaansluiting: Let goed op de oriëntatie van de gouden contacten van de FPC-kabel. Houd er bovendien rekening mee dat MIPI-signalen bij industriële implementatie of integratie met robotica-frameworks zeer gevoelig zijn voor elektromagnetische interferentie (EMI). Het wordt aanbevolen om de lengte van de camera-lintkabel onder de 30 cm (12 inch) te houden.

Gelijktijdige multicamera-opname: In Linux worden de twee camera's doorgaans aangeduid als /dev/video0 en /dev/video1. Als je AI-applicatie of multimediaframework (zoals GStreamer of OpenCV) beide streams tegelijkertijd moet opnemen, zorg dan voor een juiste toewijzing van de geheugenbandbreedte en gebruik hardwarematig versnelde plugins voor optimale prestaties.

Configuratie- & testhandleiding voor CSI

In dit gedeelte leer je hoe je twee MIPI CSI-camera's tegelijkertijd inschakelt (met de Raspberry Pi Camera V3 als voorbeeld). Bewerk het configuratiebestand van de omgeving:

bash
sudo nano /boot/armbianEnv.txt

Voeg de volgende regel toe aan het einde van het bestand om de V3-cameradrivers voor zowel CAM0 als CAM1 in te schakelen:

text
overlays=recomputer-rk3576-devkit-cam0-rpi-v3 recomputer-rk3576-devkit-cam1-rpi-v3

Let op: meerdere overlays moeten worden gescheiden door een enkele spatie. Sla het bestand op en herstart het apparaat:

bash
sudo reboot

Gebruik na het herstarten de v4l-utils-toolchain om de camerastatus te controleren en te testen. Bekijk de beschikbare camera-apparaten en -nodes:

bash
v4l2-ctl --list-devices

Bekijk de ondersteunde pixelformaten en resoluties voor een specifieke camera (bijv. /dev/video22):

bash
v4l2-ctl --list-formats-ext --device=/dev/video22

Benchmark de framerate van de camera: test de streamingprestaties bij een specifieke resolutie en pixelformaat (bijv. 3280x2464 MJPG):

bash
v4l2-ctl -d /dev/video22 --set-fmt-video=width=3280,height=2464,pixelformat='MJPG' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=3280,height=2464 --stream-count=500

Installeer de GStreamer-commandoregeltools:

bash
sudo apt install gstreamer1.0-tools -y

Voer de volgende pipeline uit om een realtime voorbeeld van de camerafeed te bekijken (vervang device=/dev/video11 door de daadwerkelijke video-node-index die je hebt verkregen via v4l2-ctl --list-devices):

bash
gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=3280,height=2464

HDMI

Het moederbord beschikt over één standaard HDMI (Type-A)-poort, voornamelijk ontworpen voor het aansluiten van externe monitoren, televisies of industriële besturingsschermen, met high-definition, gesynchroniseerde audio- en video-uitvoer.

image57.png

Interfacefuncties

  • Ultra-HD-resolutie: Aangedreven door de robuuste multimediamogelijkheden van de RK3576 ondersteunt deze interface video-uitvoer tot 4K ultra-high-definition, ideaal voor het weergeven van scherpe GUI-dashboards of meerdere bewakingsvideostreams.
  • Audio- & videosynchronisatie: De HDMI-poort verzendt zowel video- als digitale audiosignalen tegelijkertijd. Als je aangesloten monitor ingebouwde luidsprekers heeft, wordt systeemgeluid rechtstreeks via de HDMI-verbinding afgespeeld, zonder dat een extra 3,5 mm-audiokabel nodig is.
  • Ondersteuning voor meerdere beeldschermen: Deze HDMI-poort kan gelijktijdig werken met de ingebouwde Type-C (DP 1.4)- en MIPI DSI-interfaces. Ontwikkelaars kunnen binnen het Linux-besturingssysteem gekloonde beeldschermen of uitgebreide bureaubladmodi configureren op maximaal drie schermen.

Opmerking:

Kabelnormen: Om stabiliteit te garanderen en schermflikkering bij 4K-resoluties te voorkomen, gebruik je uitsluitend hoogwaardige kabels die voldoen aan de specificaties van HDMI 2.0 of hoger.

EDID & automatische resolutiedetectie: Het besturingssysteem (bijv. Armbian / Ubuntu) leest bij het opstarten automatisch de EDID-informatie van de monitor uit om de optimale resolutie toe te passen. Als je een "Geen signaal"-probleem tegenkomt, kun je via SSH inloggen en het commando xrandr gebruiken om de status van de beelduitvoer te debuggen.

Headless-modusbewerkingen: Als je het apparaat puur als edge-computingnode implementeert zonder fysieke monitor, kan het besturingssysteem het renderen van de desktop-UI opschorten om resources te besparen. Als je in een headless-opstelling toch VNC-toegang op afstand nodig hebt, raden we aan een "Dummy HDMI Plug (Display Emulator)" in de poort te plaatsen.