Gebruikershulpmiddelen

Site-hulpmiddelen


projecten:freddie

Freddie

Algemene informatie

Het project is het bouwen van een robothoofd dat aangestuurd wordt met een controller, en waarvan de beweging kan worden opgeslagen en afgespeeld aan de hand van een tijdcodesignaal. Met de controller kan een robot met maximaal acht servo’s aangestuurd worden. Voor dit project gebruiken we een robothoofd ontworpen door James Bruton. De beweging van een deel van de servo's voor de beweging van het hoofd worden daarnaast verzacht volgens zijn methode. De robot wordt aangestuurd met een Arduino Mega ADK of Arduino Mega 2560. In KiCad is een shield ontworpen om het tijdcodesignaal uit te lezen vanuit een audiosignaal en de controller met draaiknoppen, de servo controller en de module met LCD, SD kaartlezer, resetknop en rotary encoder aan te sluiten. De behuizing is ontworpen in OpenSCAD en kan ge-3D-print worden. De data (servoposities en tijd) worden opgeslagen op een SD kaart. De servo aansturing is gebaseerd op een project van Edwin Dertien. De methode om tijdcode te lezen is van Jim Mack. Het menu op de LCD kan worden bediend met de rotary encoder (gebaseerd op deze code). Hiermee kan je van bestand wisselen en van modus (vrij bewegen/opnemen/afspelen) wisselen.

Gemiddelde tijdsinvestering

Een à twee dagen.

Geschatte kosten

  • Arduino Mega ADK of 2560: 40-50 euro
  • Shield:
  • 3D-print filament:

Gebruikte technieken

  • Arduino met zelf ontworpen shield
  • 3D-printer

Eindresultaat

De robot kan gebruikt worden voor animatronics workshops. Je kan beweging inprogrammeren en koppelen aan een filmpje, zodat de robot meebeweegt met het filmpje.

Ervaringsniveau

Gemiddeld. Ervaring met 3D-printen, Arduino, en solderen is vereist.

Auteur

Martin Klein Schaarsberg

Uitgebreide werkomschrijving

Materiaallijst

  • PLA of PETG filament (evt. verschillende kleuren voor hoofd, iris/pupil, oogwit, en behuizing)
  • 3D-printer
  • Arduino Mega ADK of Arduino Mega 2560
  • Shield voor Arduino
  • Controller met draaiknoppen (M5 8ANGLE)
  • Servo controller (PCA9685)
  • Module met LCD, SD kaartlezer, resetknop en rotary encoder (RepRapDiscount Smart Controller)
  • Schroefjes etc.
  • Audio snoer met 3.5 mm jacks
  • USB kabel/voeding voor Arduino
  • 5V voeding voor servo controller
  • 2.2 μF condensator
  • 10 kΩ weerstand
  • 1N4148 diode
  • 2N3904 transistor

Gereedschap / apparatuur

Stappenplan

Robot

  1. 3D-print de onderdelen van het hoofd (head.zip)
  2. 3D-print de onderdelen van de behuizing (case.zip)
  3. Monteer het hoofd volgens de instructies van James Bruton.
  4. Laat een shield maken. Zie het schema en het pcb-ontwerp. De KiCad bestanden staan hier
  5. Maak op een SD kaart een aantal lege CSV bestanden aan, bijv. 01.CSV t/m 10.CSV
  6. Met deze tool kan je een tijdcodesignaal genereren. Hierbij hoef je alleen de duur aan te passen en evt. de start tijd. Een bestand met 10 minuten tijdcode signaal vind je hier. Kijk bij Extra Informatie als je dit wilt combineren met video.
  7. Laad de volgende code in de Arduino: sketch en de volgende libraries: Encoder, OneButton, Adafruit PWM Servo Driver Library, Adafruit BusIO, M5ANGLE8.
  8. In de “Direct control”-modus kunnen de servo’s direct bestuurd worden met de draaiknoppen. In de “Record”-modus kan de beweging opgeslagen worden. Dit moet gebeuren terwijl er een tijdcodesignaal binnenkomt. In de “Play”-modus wordt de opgeslagen beweging weer afgespeeld, als het tijdcodesignaal herhaald wordt. De bediening gaat met de rotary encoder naast het display. Daaronder zit ook nog een resetknop.

Inbouw in kast

  1. Shield maken. Zie het schema en het pcb-ontwerp. Zie de Board Setup. De KiCad bestanden staan hier. Export naar SVG voor fabricage met de volgende instellingen. Resultaat: B.Cu en EdgeCuts.

Aanraders als vervolg project

Ontwerpen van een kast waar de robot in past.

Troubleshoot / veel gemaakte fouten

De tijdcode wordt niet herkend: controleer of het geluid hard genoeg staat. De servo’s bewegen niet: controleer of de voeding van de servo’s goed aangesloten is.

Bekend probleem: wanneer er tijdcode gelezen bij het afspelen wordt reageert de bediening soms niet. Als het tijdcodesignaal gestopt wordt reageert deze weer. Dit gebeurt als er bij het tijdcodesignaal geen passende bewegingsdata gevonden wordt.

Bekend probleem: wanneer de servo controller is aangesloten op een externe voeding en tegelijk de V+ van de servo controller is aangesloten op de Vin van de Arduino dan faalt het lezen van de SD kaart soms wanneer er in de tijdcode versprongen wordt. Dat de voeding van de Arduino ontregeld wordt is ook te zien aan het inzakken van de helderheid van de LCD bij het bewegen van de servo's in dat geval. Wanneer de verbinding tussen V+ en Vin weggehaald wordt verdwijnt het probleem.

Extra informatie

Om een tijdcodesignaal te combineren met een video kan je ffmpeg gebruiken:

ffmpeg -i video.mp4 -i LTC_00000000_10mins_30fps_44100x24.wav -c:v copy -map 0:v -map 1:a -shortest -y output.mp4 

Hierbij is video.mp4 het videobestand en LTC_00000000_10mins_30fps_44100x24.wav het tijdcodesignaal. Om het tijdcodesignaal op het linker kanaal te krijgen en het mono geluidsignaal van de video op het rechter kanaal, kan het volgende commando gebruikt worden:

ffmpeg -i LTC_00000000_10mins_30fps_44100x24.wav -i video.mp4 -filter_complex "[0:a]aformat=channel_layouts=mono[left];[1:a]aformat=channel_layouts=mono[right];[left][right]amerge=inputs=2" -ac 2 -c:a aac -b:a 256k -strict -2 -c:v copy -shortest output.mp4
projecten/freddie.txt · Laatst gewijzigd: 2024/10/02 14:12 door martinks