14/12/2025

Arduino Uno Q over usb

Filed under: — cybrarian @ 3:28 pm

Om de Arduino Q rechstreeks aan te sluiten op je computer via usb, moet je de adb tools geïnstalleerd hebben staan:
– debian/ubuntu: adb (android debug bridge)
– opensuse: android-tools (Android SDK Platform-Tools) installeert android-tools, android-tools-bash-completion, libprotobuf33_2_0, libutf8_range-33_2_0

Dan kan je van remote:

adb pull /path/to/file

bv

adb push main.py /home/arduino/ArduinoApps/mijnproject/

en zelfs de arduinoe van op afstand herstarten:

adb reboot

6/12/2025

Arduino Uno Q: brug tussen de MCU en de MPU

Filed under: — cybrarian @ 2:11 am

MCU en MPU
De Arduino Uno Q heeft een MCU (Micro Controller Unit) en een MPU (Micro Processor Unit), en een manier om programma’s te laten communiceren tussen die twee.
Op de MCU, typisch voor een Arduino Uno, draai je een “sketch” die geschreven is in C.
Op de MPU draai je een volledig besturingssysteem (Debian), waarin een toepassing draait die bv gemaakt is in python, gambas, …
Er kunnen ook andere diensten op draaien als webserver, database, …
Als je met een aparte Raspberry Pi en een Arduino Uno werkt, kan je via een seriële kabel (USB) informatie uitwisselen tussen die twee.
Maar omdat de “Q” de twee aan boord heeft, kan je binnenin communiceren.

The Bridge

In dit (gedubt) filmpje worden de basics uitgelegd op basis van de online Arduino documentatie:
https://www.youtube.com/watch?v=fn05RMz14cQ

In de python code heb je bepaalde variabelen die je wil doorgeven naar de C code. Dat gebeurt via de bridge-aanroepen van een functie, waarbij je een bv een boolean meegeeft
(maar kunnen ook meer variabelen zijn zie sketch Pin Toggle waar set_pin_by_name(String name, bool s) is gedefinieerd)

in main.py:

from arduino.aps_utils import *
import time

led_state - False
  
def loop()
    global led_state
    time.sleep(1)
    led_state = not led_state
    Bridge.call("set_led_state", led_state)
  
App.run(user_loop=loop)

Aan de andere kant moet het “aangepakt” worden in de sketch/C code, met gebruik van de Bridge via include:

#include "Arduino_RouterBridge.h"
 
void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
 
    Bridge.begin();
    Bride.provide("set_led_state", set_ledstate);
}

Router

De “Bridge” is de library. Maar onder de motorkap is het een Linux achtergrondproces dat de dienst uitmaakt: arduino-router heet dat.

Je kan die echt checken op de commandolijn:

systemctl status arduino-router

Dan zie je procesinformatie zoals bij de webserver of database server, en wt info over de laatste aktiviteit.

Je ziet iets als “Accepted monitor connection from=..”, wat een voorgedefinieerd Monitor object is dat als een virtuele Serial Monitor toelaat text via RPC naar de MCU te sturen.

Als je problemen hebt na wat al te zwaar werk met buggy code, kan je hem ook herstarten:

sudo systemctl restart arduino-router

en bij het debuggen kan je gaan kijken in de logs:

journalctl -u arduino-router -f

Het is uitgelegd in de Arduino documentatie:
(ARDUINO DOCS Hardware, UNO Q, Tutorials, UNO Q User Manual).

https://docs.arduino.cc/tutorials/uno-q/user-manual/zoek:
“Bridge – Remote Procedure Call (RPC) Library””

en de code een beetje verder onder “Usage Example”.

Licentie
De Arduino voorbeeldcode gebruikt o.m. de “MPL-2.0”

Mozilla Public License, een licentie op het niveau van bestanden, zodat die apart (her)gebruikt kunnen worden.

4/12/2025

Arduino App Lab op Uno Q

Filed under: — cybrarian @ 3:04 pm

Arduino App Lab
(kort ik verder af als AAL)

Het artikel over de nieuwe Arduino Uno Q verwees naar: Dan start de Arduino App Lab - 0.2.4 .... Hier gaan we verder …

Er staan op het scherm een heleboel applicaties die extra hardware nodig hebben, een micro, camera, enz, maar ook een eenvoudige “blink led”

Als je die kiest, en je drukt op Start, begint de IDE allerlei dingen te downloaden, extracten, … En het resultaat is dat er een rode led begint te pinken op het bord: led 3 (de leds zijn genummerd van 1 tot 4 en de blauwe op 2 was aan als aan/uit led leek het (de usb C heeft ook nog een groen led naast de aansluiting aan de overkant van het bord).

In het midden van het scherm bovenaan Editor/console knop.
In Editor staat de hele tekst met uitleg over de app en de code, console geeft de output van het downloaden en uitpakken.

Er is rechtsboven op het scherm nu een “stop” knop zichtbaar, en een “Copy and edit app” knop. Welke denk je dat we kiezen? Copy en edit..

Create new app (naam) : “Copy of Blink LED” staat klaar. Goede naam.

Dan kan je de code aanpassen in Editor met “write” (preview toont de code in een vorm om te lezen, dwz de commentaren normaal en de code gekleurd.

Ik verander de waarde van de time.sleep van 1 naar 5. Er is geen “Save” dus ik doe maar onmiddellijk “run”.
Ik krijg een waarschuwing (omdat de vorige nog liep), en dan begint het werk weer, dat leidt tot “Running”…

Ik merk geen verschil. Ik blijk de Readme file veranderd te hebben, dus ik kijk even verder rond in de IDE en vind onder Files, Python “main.py”. Daar verander ik nu de code, en run… Nu gaat die inderdaad trager.

Een andere voorbeeldapp die geen extra hardware nodig heeft is de weer-app; die haalt data af van online en geeft zijn interpretatie weer via het scherm van de LED-matrix: “Weather forecast”.

Ik vraag me af of het pulserend hart terug start als ik herstart; herstarten gaat vrij snel trouwens. Ik moet het login wachtwoord geven dat ik laatst aanmaakte (min. 8 tekens). De pulserende hartslag is er niet meer *. Dat komt misschien omdat alleen de laatste sketch bewaard wordt in de arduino? Dat zou dan de trager blinking led moeten zijn, maar die lijkt ook niet vanzelf te “runnen”.
(* ps: terug te vinden op https://github.com/arduino/ArduinoCore-renesas/blob/main/libraries/Arduino_LED_Matrix/examples/MatrixIntro/MatrixIntro.ino)

Arduino App Lab Learn
Links beneden een “Learn” knop, die toegang geeft tot korte inleidingen.
– goede uitleg over de arduino Uno Q.
– goede uitleg over arduino lab, hoe te installeren op verschillende manieren
– wat is een app
– wat is een brick
– AI modellen
– hoe werken de ingebouwde voorbeelden
– Q als SBC met uitbreiding op usb-C
– Q in netwerk mode (via wifi/ssh)

Wat ik mis is hoe ik bv extra voorbeelden kan afhalen. Zo bestaat de begin-animatie als project op github onder de naam “MatrixIntro”. Ik zou verwachten dat je ergens meer voorbeelden kan downloaden rechtstreeks vanuit App Lab.
Je kan in de App Lab ook nergens rechtsklikken om meer opties te bereiken, er zijn geen mouseover tooltips, er is zefls geen menu, dus geen File, Open of Help, About.
(en ja, dat is misschien de betekenins van 0.x.x)

Arduino App Lab update naar 0.7.0
Terwijl ik dit allemaal aan het doen ben, komt er een update binnen voor Arduino Lab, met melding 0.7.0 .. dat klinkt goed…of nee, het is de CLI die een update krijgt, niet de desktop applicatie, die blijft 0.2.4.

Wijzigen van een voorbeeldapp

De weather forecast app gaf “regen” terwijl buiten de mist optrok en de zon begon te schijnen. In de weather app staat in de code de stad op “Turijn”, en die moet je dus aanpassen. Dat kan niet in de voorbeeldapp zelf, die is read-only.
Maar ik had eerst al een probleem met het afsluiten van de draaiende app (die had meer dan een dag gedraaid), en sloot dan maar de hele app lab omgeving. Terug open in de weather app, copy and edit als “Weather forecast Belgium on LED matrix”.
Ik vraag me af hoe de steden geschreven zijn, of je bv “Brussel”, of het Engelse “Brussels” moet gebruiken.
Ik vind code op
gtihub.com/arduino/app-bricks-py/tree/main/src/arduino/app_bricks/weather_forecast
maar ik vind niet onmiddellijk de beschikbare steden.

Ik probeer dan maar met een willekeurige Belgische stad, dat lijkt te werken, maar geeft weer regen, dus vraag me af of het inderdaad iets veranderd heeft.
Als je de code aanpast door bv eerst een animatie op het schermpje te zetten bij opstart, en dan een “clear” te doen telkens je gegevens ververst, wordt het duidelijker. Tijdens het draaien kan je ook naar de Console, Python gaan kijken, daar zie je feedback, bv als je een niet gevonden plaatsnaam hebt gebruikt.

Upd:
De volgende keer dat ik de Arduino Q opstart, dwingt AAL me weer tot een update, en daarna heeft hij versienummer 0.3.0.
Eigenaardig of vervelend genoeg gaat die terug helemaal door de installatieprocedure, met bord instellingen (toetsenbord etc), netwerk, en login, wachtwoord gegevens.
Plots moet het wachtwoord ook langer zijn heb ik de indruk, vorige keer was 6 tekens nog goed, nu moet ik er 8 geven. Ergens moest er ook een naam gekozen worden voor het bord, en er wordt standaard iets klaargezet (malia).
Ik weet niet of er iets is fout gegaan met de update, maar de apps die de web browser gebruiken werken niet meer. Ik kan de web browser ook niet uit het Application menu opstarten (buiten de AAL), dus daar lijkt iets fout mee te zijn.

Failed to execute default Web Browser.
Input/output error.

Ik probeer via synaptic package manager (waar hij wel geïnstalleerd staat aangegeven) die te upgraden. Dat helpt niet.

Via de terminal opstarten: chromium

The profile appears to be in use by another Chromium process on another computer (uno-q). Chromium has locked the profile so that it doesn’t get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium.

Er staat niet bij “hoe” je het profiel kan vrijmaken.

Op basis van sommige posts als deze
1) https://bbs.archlinux.org/viewtopic.php?id=294107
waarin verwezen wordt naar de oorzaak beschreven in deze
2) https://wiki.archlinux.org/title/Network_configuration#Set_the_hostname
besluit ik dat de oorzaak het wisselen van de naam is geweest, na die update, naar “malia”, en in de foutmelding wordt gewag gemaakt van de naam “uno-q”.
Dus ik wijzig de hostname naar uno-q om het probleem op te lossen zonder manueel bestanden te moeten gaan verwijderen (zoals beschreven in 1).

sudo hostname uno-q

Dat werkt. Ik kan chromium terug starten, en werkt het in “Blink LED with UI” voorbeeld ook terug.

Linux op Arduino Uno Q

Filed under: — cybrarian @ 3:03 pm

Arduino Uno Q beschikbaar
De aangekondigde Uno Q is ondertussen beschikbaar; hij heeft een extra Qualcomm processor waar Linux op draait, en die kan gebruikt worden voor computerfuncties die gekoppeld worden aan de UNO functionaliteit; data opvragen van het internet; gemeten gegevens opslaan in een database enz. M.a.w. de rollen worden omgekeerd; het controller bord krijgt de uitbreiding ipv de computer die een uitbreiding krijgt met een controller bord.

Uitpakken en uitbreiden
Doosje bevat een summier bordje, kleiner dan een raspberry pi.
Dat is gemakkelijk te verklaren als je begint te zoeken naar de aansluitingen: enkel een usb C.

Het wonderlijke begint als je daar een usb-multi-adapter aan hangt.
Het moet een type zijn dat ook voeding doorgeeft, of anders moet je de arduino voeden via pinnen in de V in of 5 V aansluiting (staat op zijkant van slot).

Je sluit er een muis, toetsenbord en hdmi-scherm op aan, een externe voeding, en steek de adpater usb-C kabel in het arduino uno Q bord. Op het scherm rollen letters voorbij van een startend Debian Linux systeem! Op de matrix van leds op het bord zien we een pulserend hart. Dat LED-eilandje doet denken aan micro-bit, maar hier het zijn er meer: 104 in de opstelling 8×13 (ipv 5×5 bij microbit).

In de toekomst zullen er waarschijnlijk uitbreidingen komen voor de JMISC and JMEDIA high speed headers aan de onderzijde van het bord.

Installeren
Je krijgt een grafisch login scherm, met een setup procedure (met als titel Arduino App Lab – 0.1.2).
Als allereerste moet je het wachtwoord veranderen. Maar let op, als je bv T00B5D getikt hebt, moet je je afvragen of het toetsenbord niet in QWERTY staat!

Dat blijkt immers nadien bij het ingeven van het wifi wachtwoord.
De setup scant automatisch voor draadloze netwerken, je moet het maar uitkiezen en het wachtwoord geven.

Checking for updates .. this might take …
Update required ..

Knop “Start update”; Updating…

Even later:

“All done!” Please restart App Lab to continue using the app.

Het waren dus geen systeemupdates, maar App Lab updates.. die is nu versie 0.2.4

Ik sluit applab, maar daarna is er geen verwijzing naar die applab meer, ik verwachtte een icoon op de desktop of zo, maar daar staan alleen “Home” en “File System”. We bevinden ons in een XFCE desktop merk ik.

File System (Thunar) vertelt dat er 2,8 Gb free space is.
In het menu Accessories vind je Arduino App Lab terug.

Als ik dat start gaat inderdaad de “Board Configuration” voort, nu met toetsenbord keuze; spannend om dat nà de ingave van wachtwoorden te doen…

De volgende vraag is “Board Name”. Wat daar moet komen is niet duidelijk, er is geen help op deze plaats. Als je op reload drukt naast het invulveld wordt er een schijnbaar willekeurige naam ingevuld: melissa, jessi…
Ik geef het de naam Q1, wat ondanks de net voordien gemaakte toetsenbordkeuze A! wordt; ik corrigeer naar wat ik bedoelde door A& te tikken.

Daarna wordt een wachtwoord voor je Linux account gevraagd, maar ik dacht dat we dat voordien al gegeven hadden bij het opstarten? Als username staat arduino ingevuld. Nu staat het toetsenbord wel in Azerty. Je moet minstens 8 tekens invullen… en herhalen (je kan wel kopieren gelukkig).

Dan start de Arduino App Lab – initieel 0.1.2 (0.2.4 na update) : ze zijn bescheiden met hun versienummer… (zie http://linuxuser.copyleft.be/liglog/?p=11818)

Xfce desktop
– het irritante is dat als je de Q een tijdje niet gebruikt, je terug een wachtwoord vraag krijgt van, vermoed ik, de screensaver/screenlocker.
Nergens is daar een instelling van te vinden, bv om die tijd te veranderen.
Ik ga hem afzetten in de settings bij Session and startup, Application autostart.
Ik check met een restart wat er nu gebeurt … de begin-login blijft hetzelfde, ik laat hem nu op het App Lab scherm staan, en na verloop van tijd, als het scherm zwart is, en ik het systeem terug aktiveer, krijg ik geen wachtwoord vraag meer: ok.

Ik vind het ook eigenaardig dat ik het bord eigenlijk niet afgezet krijg. Als ik afsluiten kies, shutdown, dan volgt de procedure voor afsluiten, en onmiddellijk daarna start het systeem terug op, zelfs al raak ik niets meer aan. Ik herhaal het en op het moment dat de leds uitgaan op het bord trek ik snel de usb stekker uit. Maar dat is niet goed voor de slijtage van de usb-poort natuurlijk; ik zal een schakelaar op de voedingsstekker voorzien…

Powered by WordPress