Inhoudsopgave:

DIY Educatieve Micro:bit Robot - Ajarnpa
DIY Educatieve Micro:bit Robot - Ajarnpa

Video: DIY Educatieve Micro:bit Robot - Ajarnpa

Video: DIY Educatieve Micro:bit Robot - Ajarnpa
Video: Tobbie II & Micro:bit Kit 2024, Juli-
Anonim
DIY Educatieve Micro:bit Robot
DIY Educatieve Micro:bit Robot
DIY Educatieve Micro:bit Robot
DIY Educatieve Micro:bit Robot

Deze instructable laat je zien hoe je een relatief toegankelijke, capabele en goedkope robot kunt bouwen. Mijn doel bij het ontwerpen van deze robot was om iets voor te stellen dat de meeste mensen zich konden veroorloven, zodat ze op een boeiende manier informatica konden onderwijzen of erover konden leren.

Als je deze robot eenmaal hebt gebouwd, kun je genieten van de verscheidenheid aan sensoren en actuatoren om basis, maar ook behoorlijk geavanceerde dingen te doen, afhankelijk van de versie die je bouwt (ik zal twee versies leveren). Met deze robot geef je ogen (180° zicht!) en benen (met precieze beweging mogelijk!) aan de micro:bit terwijl de micro:bit je geweldige functies biedt zoals de LED-matrix, de radiocommunicatie, bluetooth-communicatie, versnellingsmeter, compas, maar ook toegang tot al die dingen met ofwel MicroPython of met een visuele programmeertaal vergelijkbaar met scratch (eigenlijk ook in C++ en javascript, maar die vind ik minder geschikt voor onderwijs).

Ik zal ook aan deze instructable werken, zodat ik de lezers en makers op het goede spoor kan zetten om meer te ontdekken over mobiele robotica, elektronica, ontwerpen en houtsnijden. Hiervoor heb ik alles zo modulair mogelijk ontworpen. Ik zal bijvoorbeeld geen lijm gebruiken om vrij te kunnen monteren en demonteren, waardoor upgrades en foutopsporing gemakkelijker worden. Ik zal de stappen ook zo incrementeel mogelijk maken, zodat u geleidelijk kunt begrijpen wat er aan de hand is, kunt controleren of de dingen werken zoals ze zouden moeten en het einde bereiken met een robot die werkt.

Stap 1: Verzamelen van de stukken

De stukken verzamelen
De stukken verzamelen

Voor dit project heb je minimaal een beer nodig:

  • 5 mm dik MDF-hout en een lasersnijder voor het skelet
  • 1x18650 lithiumbatterij, 1x batterijschild voor de energie en een onderbreker
  • 1xMicro:Bit-kaart en 1xMicro:bit-uitbreidingskaart voor de hersenen (hoewel beide gemakkelijk kunnen worden vervangen door een Arduino)
  • 2x28BYJ-5V stappenmotoren, 2xA4988 stappenmotor drivers en 2x development board om de drivers voor de benen te monteren
  • 1x TOF10120 en 1x Mini 9g servomotor voor de ogen Sommige kabels en schroeven
  • 1x universeel wiel, hoogte = 15mm

Hiervan zijn slechts drie delen geen standaarden, daarom zijn hier links om ze te vinden: zoek het uitbreidingsbord dat ik hier heb gebruikt (maar ik raad je aan deze te gebruiken in plaats daarvan voor de nette versie van de robot. verander bijna niets aan het ontwerp en het zal de bedrading veel eenvoudiger maken met gebogen vrouwelijke-vrouwelijke headers), het batterijscherm hier en het universele wiel hier.

Idealiter heb je ook tot je beschikking:

  • een multimeter
  • een breadboard
  • Een soldeerbout

Voor zowel degenen als de lasersnijder, controleer of je een fablab in je buurt hebt! Dat zijn geweldige plekken om inspirerende makers te ontmoeten!

Stap 2: De benen klaar maken

De benen klaar maken
De benen klaar maken
De benen klaar maken
De benen klaar maken
De benen klaar maken
De benen klaar maken
De benen klaar maken
De benen klaar maken

Je eerste missie, als je die accepteert, is om onze stappenmotor te laten draaien met de micro:bit als controller! Waarom een stappenmotor? Ik had voor een gelijkstroommotor met verloopstukken kunnen gaan, maar ik heb ze geprobeerd en ik vind het moeilijk om goedkope motoren op lage snelheid te laten draaien. Ik dacht ook dat het leuk zou zijn om precies te weten met welke snelheid mijn wielen draaien. Om die redenen waren stappenmotoren de beste optie.

Dus nu, hoe bestuur je een 28BYJ-motor met een 4988-driver? Het antwoord is… een beetje lang. Het is me niet gelukt om het netjes in deze instructable te laten passen, dus ik heb er speciaal voor dit doel nog een gemaakt die je hier kunt vinden. Ik nodig je uit om die stappen tot het einde te volgen met het maken van een klein prototypebord van 26x22 mm groot met 2x2 mm gaten van 17 mm om het aan de zijkanten te monteren zoals weergegeven in de afbeelding hierboven (merk op dat zoals vermeld in het artikel waarnaar wordt verwezen, de gele draad aan de linkerkant die uitsteekt, is er alleen om u eraan te herinneren dat u SLP en RST aan elkaar moet solderen).

Nadat ik dit met één motor met het prototyping-bord had laten werken, ontwierp ik ook mijn eigen PCB om de zaken wat opgeruimder te maken. Ik heb het bijbehorende easyEDA-bestand bijgevoegd. Het is een txt-bestand, maar je kunt het nog steeds openen met het gratis online bewerkingsplatform easyEDA.

Stap 3: Ik zie het licht !! (Optioneel)

Ik zie het licht !! (Optioneel)
Ik zie het licht !! (Optioneel)
Ik zie het licht !! (Optioneel)
Ik zie het licht !! (Optioneel)
Ik zie het licht !! (Optioneel)
Ik zie het licht !! (Optioneel)

Als je gewoon wilt bouwen en niets meer, ga dan naar de vorige paragraaf van deze stap om te zien hoe je een TOF10120 op de micro:bit aansluit. Indien niet doorzetten.

Omdat onze micro:bit niet wordt geleverd met een camera of naderingssensor, is hij een soort van blind voor elke mobiele robotica-toepassing. Het wordt echter geleverd met een radiozender en -ontvanger waarmee we het skelet kunnen bouwen over wat we al hebben en een op afstand bestuurbare robot krijgen. Maar zou het niet geweldig zijn om onze robot autonoom te maken? Ja dat zou het zijn! Dus laten we eens kijken hoe we daar kunnen komen.

Waar we nu in geïnteresseerd zijn, is om onze robot uit te rusten met sensoren, zodat onze robot wat informatie over zijn omgeving krijgt. Er zijn veel soorten sensoren beschikbaar, maar hier zullen we ons concentreren op de nabijheidssensor. Toen ik deze robot ontwierp, was mijn doel vooral dat de robot nergens tegenaan botst, daarom wilde ik dat hij obstakels zou voelen. Ook hiervoor zijn er een aantal mogelijkheden. Een eerste, heel simpele, zou kunnen zijn om bumpers te gebruiken, maar ik vind de informatie over de omgeving wat beperkt. Aan de andere kant kun je denken aan het toevoegen van een camera (of een Lidar of een kinect!). Ik ben dol op camera's, computervisie en al die dingen, maar helaas ondersteunt Micro:bit die niet (we zouden een Raspberry Pi moeten gebruiken om dergelijke apparaten te ondersteunen, geen micro:bit of Arduino).

Dus wat ondersteunt micro:bit tussen een camera en bumpers? Er zijn kleine actieve sensoren die licht naar de omgeving sturen en controleren wat er wordt ontvangen om informatie over de wereld te krijgen. Degene die ik al kende was de GP2Y0A41SK0F die een triangulatiemethode gebruikt om de afstand tot obstakels in te schatten. Ik vroeg me echter af of ik iets beters kon vinden, dus ik deed wat onderzoek en ik ontdekte uiteindelijk de TOF10120 (en de GY-VL53L0XV2 maar ik heb hem nog niet ontvangen:(). Hier is een leuk artikel om het te ontdekken. Deze sensor zendt in principe een infrarood signaal uit dat reflecteert op obstakels en ontvangt vervolgens het gereflecteerde licht. Afhankelijk van de tijd die het licht nodig heeft om heen en weer te gaan, kan de sensor de afstand van het obstakel inschatten (vandaar de naam TOF=time of flight Vanwege zijn kleine formaat, afstandsbereik en stroombehoefte heb ik besloten om de TOF10120 te gebruiken.

Terwijl mijn eerste idee was om er drie op de robot te plaatsen (één vooraan en twee aan de zijkanten), wilden het Chinese nieuwjaar en de COVID-19-pandemie dat niet zo omdat het problemen leek te veroorzaken met zendingen. Dus omdat ik beperkt was tot één TOF10120, die ik ook aan de zijkanten wilde zien en omdat ik wat servomotoren had liggen, besloot ik mijn sensor op een servo te monteren. Er ontbreken nu dus twee dingen: hoe gebruik ik de TOF10120 met de micro:bit ? En dezelfde vraag met de servo.

Gelukkig is de micro:bit uitgerust met I2C-communicatieprotocol en maakt het ons leven heel gemakkelijk: sluit de rode draad aan op 3,3 V, zwart op aarde, groen op SCL en blauw op SDA en dat is het voor het hardwaregedeelte. Voor de software moedig ik je aan om iets te lezen over I2C-communicatie en de python-code te proberen die ik op de micro:bit heb bevestigd. Dat programma zou u de afstand moeten afdrukken die door de sensor is gemeten op de REPL (Read Evaluate Print Loop). Dat is het. We hebben zojuist onze micro:bit in het vizier gekregen.

Laten we hem nu de nek omdraaien als u mij toestaat mijn analogieën met dierlijke anatomie voort te zetten. Het enige dat we daarvoor nodig hebben, is een servomotor aan te drijven met de micro:bit. Dit deel wordt lang, dus ik geef je deze link met alle informatie die je nodig hebt en de code die ik heb gebruikt om het te testen. Als je wilt, heb ik ook een eenvoudige code toegevoegd om de servo te besturen met pin0. Vergeet niet om uw servo van stroom te voorzien met 5V en niet met 3,3V.

Stap 4: Het batterijschild hacken

Het batterijschild hacken
Het batterijschild hacken
Het batterijschild hacken
Het batterijschild hacken
Het batterijschild hacken
Het batterijschild hacken

Nu we onze actuatoren en sensoren gereed hebben, is het tijd om naar het batterijbeheersysteem te kijken. Om meer te weten te komen over het batterijschild dat ik heb gekozen, raad ik je aan dit artikel te lezen. Ik vind het heel duidelijk en toegankelijk. Uit dit artikel kunnen we veel voordelen zien van dit batterijschild, maar er is een belangrijk nadeel dat ik niet wilde accepteren: de AAN/UIT-schakelaar heeft alleen invloed op de USB-uitgang. Dit betekent dat als u de schakelaar uitzet, alle andere 3.3V- en 5V-pinnen worden gevoed. Als gevolg hiervan, omdat we die pinnen voor onze robot gebruiken, zal de schakelaar helemaal niets doen …

Maar ik wil mijn robot kunnen uitschakelen om mijn batterij niet voor niets leeg te maken, dus moest ik het batterijschild hacken. Het zal niet mooi zijn, maar het werkt en het kost niets. Daarom wil ik een schakelaar om het circuit te openen of te sluiten, zodat het mijn batterijcel isoleert van het batterijscherm. Ik heb niet de apparatuur om de printplaat aan te raken, maar ik heb overal stukjes plastic. Dus stel je nu voor dat ik een stuk plastic knip zodat het aan het ene uiteinde van mijn batterijcel in het schild past, zoals in de eerste afbeelding hierboven. Het circuit is nu open en mijn batterij is veilig opgeborgen.

Ja, maar ik wil de robot niet hoeven te openen om toegang te krijgen tot het batterijscherm om dit stuk plastic te plaatsen en te verwijderen! Makkelijk: pak een schakelaar en plak twee kleine vierkantjes aluminium op elk van de draden die op de schakelaar zijn aangesloten. Plak nu die twee stukken aluminium op het stuk plastic om de twee aluminium stukken van elkaar te isoleren en om het aluminium aan de buitenkant van uw systeem te laten zien. Normaal gesproken zou dat moeten kunnen. Plaats je nieuwe creatie in het batterijscherm naast de cel, en de schakelaar zou je in staat moeten stellen om het circuit dat op de cel is aangesloten te openen of te sluiten.

Nog een laatste ding: om het monteren en demonteren van de robot gemakkelijk te maken, zou ik je aanraden om vrouwelijke headers op het batterijscherm te solderen. Op deze manier kunt u eenvoudig aansluiten en loskoppelen wat u met de motoren en hun stuurprogramma's bouwt.

Stap 5: 3D-ontwerp en knippen

3D-ontwerp en knippen
3D-ontwerp en knippen
3D-ontwerp en knippen
3D-ontwerp en knippen

Het enige dat nu nog ontbreekt, is het bouwen van de structuur die al onze componenten bij elkaar houdt. Hiervoor heb ik gebruik gemaakt van het online platform tinkercad. Dit is echt een leuke omgeving om wat basis CAD te doen, wat vaak genoeg is om dingen voor de lasersnijder te ontwerpen.

Na even nadenken was het tijd om te knutselen. Om dit te doen begon ik 3D-modellen samen te stellen van de verschillende onderdelen die ik had (eerst de servo en TOF buiten de vergelijking houden). Dat omvat de batterij en het schild, de stappenmotoren en de motordrivers, en natuurlijk de micro:bit met zijn uitbreidingskaart. Ik heb alle bijbehorende 3D-modellen als stl-bestanden bijgevoegd. Om het proces te vergemakkelijken, besloot ik mijn robot symmetrisch te maken. Als gevolg daarvan sleutelde ik aan slechts de helft van de robot en bereikte het ontwerp dat in de bovenstaande afbeelding wordt getoond.

Hieruit kwamen een aantal versies tot leven, waarvan ik er twee selecteerde:

  • Een heel netjes, zonder de nabijheidssensor, waardoor er geen draden verschijnen. Hoewel niet autonoom, kan deze versie nog steeds worden geprogrammeerd via bluetooth via bijvoorbeeld een iPad, of kan worden geprogrammeerd om te worden bestuurd met behulp van radiosignalen die bijvoorbeeld door een andere micro:bit kunnen worden verzonden, zoals weergegeven in de video hierboven.
  • Een veel minder opgeruimde die het mogelijk maakt om veel verder in mobiele robotica te gaan, omdat het de afstand van obstakels met een 180°-beeld kan vastleggen dankzij de naderingssensor die op een servomotor is gebouwd.

Om dit op te bouwen, gaat u naar uw favoriete Fablab en gebruikt u de lasersnijder die u vindt om het model van uw voorkeur te snijden: de eerste die overeenkomt met de bestanden design1_5mmMDF.svg en design1_3mmMDF die respectievelijk overeenkomen met de delen die in de 5 mm MDF moeten worden gesneden hout en degenen die uit de 3 mm moeten worden gesneden; de tweede komt overeen met het bestand design2_5mmMDF.svg. Stel de zwarte contouren in die moeten worden gesneden en de rode die moeten worden gegraveerd.

Kanttekening: ik heb het rode patroon toegevoegd om het wat op te pimpen. Dit is een Hilbert-vulfunctie die ik heb gegenereerd met behulp van de bijgevoegde python-code.

Stap 6: Het beest monteren

Het beest monteren
Het beest monteren
Het beest monteren
Het beest monteren
Het beest monteren
Het beest monteren

De stappen die ik heb gevolgd om de eerste versie van de robot te monteren zijn de volgende (de afbeeldingen zouden normaal gesproken in de juiste volgorde moeten staan):

  1. Verwijder de blauwe dop van de motoren en knip deze een stukje door zodat de kabel uit de achterkant van de motor steekt.
  2. Monteer de motoren aan weerszijden met M2 schroeven en bouten.
  3. Monteer het prototypebord aan de zijkanten met behulp van de gaten van 2x2 mm en enkele schroeven en bouten.
  4. Plaats de A4988-stuurprogramma's en plak de motorkabels vast om het netjes te houden.
  5. Monteer het universele wiel onder het onderste deel en voeg de zijkanten toe.
  6. Monteer het uitbreidingsbord van de micro:bit op het bovenste gedeelte.
  7. Monteer de onderkant van de flexibele voorklep.
  8. Plaats het batterijschild en sluit alles aan (om dit te doen, omdat ik nog steeds wachtte op de levering van het uitbreidingsbord dat ik wilde en dat ik er maar één had met vrouwelijke headers die eruit staken, recycleerde ik een IDE-kabel van een oude computer om te beheren mijn kabels niet op het bord steken om dit alles te bedekken door de opvouwbare voorklep). Hoewel de code die ik heb verstrekt heel gemakkelijk aan te passen is, moet je om hem direct te gebruiken de linker STEP op pin 2, de rechter STEP op pin 8, de linker DIR op pin 12, de rechter DIR op pin 1 aansluiten.
  9. Zet de micro:bit in de extensie.
  10. Test of alles werkt met MoveTest.py voordat je verder gaat.
  11. Monteer de schakelaar op het bovenste gedeelte en plaats het plastic bit naast de lithiumcel.
  12. Schroef het bovenste deel van de voorklep vast.
  13. Monteer de achterkant en je bent klaar! Opluchting ! Zoveel stappen had ik niet verwacht! Het is zoveel gemakkelijker erover na te denken en het te doen dan het in woorden uit te leggen! (En ik weet zeker dat er nog steeds informatie zal ontbreken!)

Als u de tweede versie bouwt met de naderingssensor, dan:

  1. Volg de instructie hierboven. Het enige verschil is dat je in stap 7 wat M2-afstandhouders moet toevoegen (hoewel dat is wat ik deed, maar het is niet vereist), negeer stap 8 en stap 13 (omdat er geen vooromslag is)
  2. Monteer de servomotor met M2-schroeven en sluit de VCC en GND van de servo rechtstreeks aan op de 5V van het batterijscherm en sluit de besturingsingang aan op pin 0 van de micro:bit.
  3. Monteer de twee stukken hout die bovenop de servo gaan met een schroef, schroef de TOF-sensor hierop en het witte plastic stuk dat bij de servo wordt geleverd.
  4. Monteer deze laatste unit op de servo en sluit de sensor aan met I2C of micro:bit zoals beschreven in stap 3.

Stap 7: Programmeren

Dat is het ! Je hebt een robot die je kunt programmeren in micro:python of in makecode. Ik heb hier een voorbeeldcode bijgevoegd die ik heb gebruikt om de bovenstaande video's te maken:

  • Voorbeeld 1: Zet radioControl.py op de micro:bit van de robot en ReadAccelero.py op een andere micro:bit om de robot te besturen met de helling van de tweede micro:bit.
  • Voorbeeld 2: Zet Autonomous.py op versie 2 van de robot die de omgeving gaat verkennen.

Dat zijn slechts basisvoorbeelden die u kunt gebruiken om veel, veel verder te gaan. Ik hou bijvoorbeeld heel erg van gelijktijdige lokalisatie en mapping, en normaal gesproken is er alles wat je nodig hebt in versie 2 van deze robot om dat te doen! Hoewel een groot nadeel voor mij is om zo'n project te doen, is dat de micro:bit PWM-driver een softwaredriver is die dezelfde timer gebruikt voor alle kanalen, wat betekent dat alle PWM's die we instellen dezelfde frequentie moeten hebben (wat ik deed weet niet wanneer ik de voorbeeldcodes heb geschreven, hoewel ik iets vreemds ontdekte toen ik Autonomous.py schreef).

Stap 8: Verder gaan

Aarzel niet om het ontwerp te verbeteren, enkele problemen op te lossen die ik niet zag. Ik wil bijvoorbeeld uiteindelijk:

  • Voeg een IR-sensor toe aan de onderkant van de robot om te detecteren of de grond zwart of wit is of dat deze het einde van mijn bureau bereikt.
  • Verander het batterijbeheersysteem omdat ik er nog niet tevreden over ben. Op dit moment, om de batterij op te laden, moet de robot gedemonteerd worden om de cel of het batterijscherm te verwijderen… Ik ben daarom van plan om: 1. een mini-USB-connector aan de achterkant van de robot toe te voegen die ik zal verbinding maken met het batterijscherm, zodat ik het kan opladen; 2. Snijd een gat aan de onderkant om de LED's van het batterijscherm te zien om te zien wanneer het opladen voorbij is.
  • Controleer of er een acceptabele manier is om PWM's met verschillende frequenties uit te voeren.
  • Probeer de VL53L0XV2 om de TOF10120 te vervangen, want het zou een goedkopere optie kunnen zijn waardoor het voor nog meer mensen toegankelijk zou zijn. Hoewel ik meer over deze sensor heb gelezen en het lijkt erop dat het bedrijf dat deze goedkoop maakte het expres heel moeilijk maakte om mee om te gaan …
  • Test verschillende ontwerpen voor de wielen om ze duurzamer te maken (op dit moment zou ik verwachten dat als ik de wielen er vaak in en uit haal, het hout geleidelijk zal beschadigen. Als ik het hout elastischer maak en het ontwerp aanpast, zou ik langer mee kunnen gaan)

Veel dank aan de mensen van het mobiele robotica-team (nu onderdeel van het Biorobotics-laboratorium) van EPFL die me enorm hebben geholpen mijn kennis van elektronica en mechanica uit te breiden!

Aanbevolen: