.

 

Arduino robots...



In 2022 werden we gekonfronteerd met alsmaar meer vragen vanuit onderwijsinstellingen naar muzikale robotprojekten die ze met hun studenten zouden kunnen opzetten. Die vraag werd natuurlijk ingegeven door een bezoek aan het robotorkest bij Stichting Logos en het enthousiasme dat dit wist op te wekken bij de studenten.
Gezien de enorme populariteit van het Arduino platform stonden de begeleidende leerkrachten erop dat we de bouwprojekten zouden doen gebruik makend van eenvoudige arduino's. Voor ons betekende dat natuurlijk een zekere vorm van downgrading, aangezien de processoren waarmee we de laatste jaren aan het werk waren voor de bouw en ontwikkeling van onze robots, heel wat geavanceerder zijn. Anderzijds hadden we natuurlijk ruim wat ervaring met eenvoudige 8-bit processoren aangezien we die in het laatste decennium van de 20e eeuw voor bijna alle toen ontwikkelde robots gebruikten.De traditionele Arduino boardjes maken echter gebruik van Atmel processoren, type ATMEGA328P die weliswaar veel gelijkenis vertonen met de Microchip PIC processoren, maar beslist niet kode-compatibel zijn met deze laatste.

Arduino Uno R3: revisie 3 van het oorspronkelijke Arduino board. Ook de 'leonardo' versie kan gebruikt worden.

Arduino Nano: zelfde processor, maar veel kleiner board en intern voor bepaalde recente types alleen werkend op 3.3 Volt, hoewel een 5V aansluiting voor de voeding volstaat. De boards kunnen ook uit een USB connector gevoed worden. De pinning is: Het opgebouwde board ziet er zo uit:

We ontwierpen een eenvoudig enkelzijdig PCB voor de besturing van twaalf ventielen of elektromagneten. Muzikaal gezien zijn daarmee alle noten van een oktaaf polyfoon te spelen. Beide Arduino boards kunnen gebruikt worden, weliswaar mits de nodige aanpassingen in de kode, want de mapping van de pinnen is verschillend. Van het Arduino Nano board bestaan heel wat verschillende versies: de Arduino Nano RP2040 heeft zelfs een 32-bit ARM Cortex processor en vertoont heel wat gelijkenis met de Raspberry Pi. Alle versies kunnen gebruikt worden, al zijn die 32-bit versies hier bepaald wel overkill. (Hoewel...: wie een robot zou willen bouwen waarmee twaalf snaren elektromagnetisch tot trillen kunnen worden gebracht, is met deze processor en ons bordje wel aan het goede adres.) Zo ziet de RP2040 versie eruit: en aan de onderkant: Een voordeel van dit board is dat de pinnen D2 tot D12 als PWM pinnen kunnen gekonfigureerd worden. De Arduino Uno heeft daareentegen slechts zes PWM uitgangen, met name D3, D5, D6, D9, D10 en D11. De pinnen die met PWM kunnen worden gebruikt zijn natuurlijk ideaal geschikt voor het besturen van kleine DC motoren.

Hier is het PCB (op 200% van de ware grootte):

Wanneer de Arduino Nano gebruikt wordt, moeten wel MOSFET's gekozen worden die volledig schakelen met 3.3V op de gate! Noteer dat de Arduino Uno hier omgekeerd wordt gemonteerd terwijl de Nano 'normaal' wordt geplaatst. Uiteraard kan ook een Corridium board (Amicus) gebruikt worden, al heeft dat weinig zin omdat bij gebruik van PIC processoren onze vroegere ontwerpen veel meer te bieden hebben. Hier een foto van beide boards, links de Amicus, rechts de Arduino Uno:

We hebben overigens enkele verschillende versies van het PCB ontworpen: eentje voor alleen Arduino's met de vormfaktor van de Uno, en eentje voor Arduino's met de Nano vormfaktor. Een board voor de MKRZero familie is er nu ook trouwens..

Het schema van de eerste prototype schakeling ziet eruit alsvolgt:

De opgebouwde print - hier met een Arduino Nano - komt er dan zo uit te zien:

Het schema voor de versie waarin gebruik wordt gemaakt van een optocoupler voor het midi ingangssignaal ziet er zo uit:

Het opgebouwde board:

In april; 2023 bouwden we ook een board op voor gebruik met de Arduino MKR Zero. Het schema ziet eruit alsvolgt:

Het afgewerkte board, zonder de optionele 5V voedingsmodule komt er zo uit te zien:

Sketches voor de Arduino's in C++, in Basic en in Python, foto's en verslagen van de workshops met de studenten worden hier verder toegevoegd, naargelang de projekten vorderen.

Een Arduino sketch die midi-in (met buffering en parsing) en midi-uit ondersteund en toelaat de 12 elektromagneten met geimplementeerd velocity-byte aan te sturen is hier downloadbaar. In deze sketch, geschreven in C++, werden de 12 spoelen gemapt op de noten 60 tot 71. Het midi kanaal is vast ingesteld op 0, maar kan uiteraard in de kode gewijzigd worden. Een probleem waarmee alle Arduino boards opgescheept zitten is dat de USB poort die we elegant kunnen gebruiken voor voeden en programmeren gebruik maakt van de UART op de chip. Daardoor is het heel moeilijk diezelfde UART ook voor andere doelen -zoals in ons geval MIDI- beschikbaar te krijgen. Wanneer we een ATMEL programmer gebruiken, aangesloten op de 6-polige header op het Arduino board, kan het probleem opgelost worden. Nooit echter kan de USB poort samen met de Tx/Rx pinnen op de Arduino gebruikt worden. De dokumentatie van Arduino zelf rept met geen woord over dit probleem dat ons toch vele uren zoekwerk heeft gekost... De Arduino Nano RP2040 kent dit probleem niet, maar daarvoor moet de code aangepast worden door Serial1 te gebruiken in plaats van Serial. Hier is de sketch voor dit board.

Wat we hiervoor stelden voor de Nano RP2040, is ook geldig voor de Arduino MKR Zero waarvoor we eveneens een schakeling en een PCB ontwierpen. Een voor dit board geteste sketch is hier te downloaden.

 

Medewerkers aan dit schoolprojekt zijn:

Technische litteratuur:

 

Kostprijs berekening voor het board:

item aantal optional bron kost
Arduino Nano RP2020 1   Farnell 3769780
30,85
weerstanden 28    
1.40
MOSFET's 12   PHP79NQ08LT127 of FQPF20N06L
12.00
ECE10US05 1 Y RS-Components
33.05
DIN 5p chassisdeel 2 Y Farnell
3,46
diodebrug 6A 1 Y Farnell
3,50
elko 1.6mF 1 Y Farnell
7,00
PCB 100 x 160 1   Conrad - Bungartz
18.00
Diodes 12   MUR220G of BYV28
6.00
LED's 2    
0.40
Weidmueller 12-pole sock 2 Y Farnell
7.16
Weidmueller 2-pole sock 2 Y Farnell
1.21
Weidmueller 2-pole plug 14 Y Farnell
21.48
headers - 60 pins Y DigiKey
4.10
polyfuse 1 Y Conrad
0.20
etching-drilling-solder      
45.00
films   Y once only
2.00
totaal      
196.81

Wanneer we een Arduino Uno voorzien (da's de goedkoopste optie) en verder alle optionale componenten schrappen, dan kan de prijs tot 113,46    gedrukt worden. Wanneer we ook afzien van het gebruik van Weidmueller connectoren en de PCB's door de studenten laten boren, etsen en bestukken, dan wordt de bodemprijs 38,61 ...

Bouw- en ontwikkeldagboek:

09.01.2023: Schoolkoncert en voorstelling voor SSKI door Godfried-Willem Raes met het robotorkest. Demo van het samenwerkingsprojekt.
25.01.2023: Schoolkoncert voor muziekakademie Leuven.
27.01.2023: Overleg SSKI.
30-31.01.2023: PCB ontwerp voor verschillende types Arduino's.
01.02.2023: Overleg ICT leerkracht Dirk over type Arduino board. Wil Python proberen...
03.02.2023: Eerste sketch voor robotkontrole op Arduino klaar, met volledig geimplementeerde velocity controle.
04.02.2023: Twee PCB's geetst, geboord en bestukt als prototypes.
05.02.2023: Verder montagewerk aan de beide prototypes boards. Er zijn wat korrekties nodig op het PCB ontwerp: Arduino Uno pin afstand moet gekorrigeerd worden.
06.02.2023: Prototype board meegegeven aan de ICT leerkracht SSKI. We bouwden twee van de prototype boards volledig op. Demo kode voor kloppertjes getest door Kristof Lauwers. PCB aangepast voor toevoeging van een optocoupler en een 3V3 voeding.
07.02.2023: We kunnen de 5V voeding op de print weglaten en gebruikers toelaten de logica voeding alleen te betrekken uit de USB poort. Een goedkope USB dummy voeding kan dan gebruikt worden om de seriele poort weer vrij te krijgen voor Midi I/O.
08.02.2023: Verdere ontwikkeling van de sketch met volledige implemantatie van de midi parser evenals timing van de velo-pulsen.
09.02.2023: nieuwe PCB's ontworpen, specifiek voor de Uno en de Nano.
10-12.02.2023: Onderzoek van de diverse library's die voor de Raspberry Pi chip op de RP2040 beschikbaar zijn.
13.02.2023: PCB versies voor diverse Arduino types uitgetekend. Board nr.4 helemaal bestukt voor een RP2040 versie.
14.02.2023:Tests en verder onderzoek. Pissed off... de school wil nu Raspberry Pi gebruiken...
22.04.2023: Workshop met de Arduino boards voor Muziekakademie Leuven. Begeleiders: Hans Roels en Kristof Lauwers
25.04.2023: PCB voor de Arduino MKR Zero geboord en gesoldeerd.
26.04.2023: Tests met het nieuw opgebouwde MKR Zero board.
27.04.2023: De optocoupler moet uit 5V gevoed worden om betrouwbaar te werken. Eens dit gefikst werkt onze sketch met midi parser en solenoid besturing perfekt. Het eerste exemplaar dat we opbouwden werkte niet, wat te wijten was aan een in de handen van Philippe gesneuvelde Arduino...
29.04.2023: Opnieuw workshop in Leuven.