Eind Retrospective

Het was een hele opgave maar ik heb mijn projecte eindelijk afgerond. Ik vond het aan de ene kant een geweldig leuk project maar aan de andere kant kwam er ook veel frustratie bij kijken. Het bouwen van hardware vereist veel tijd en materialen, daarbij kan het ook nog eens voorkomen dat er iets kapot gaat. Combineer het mislukken van zaken met een matige planning en je komt al snel voor problemen te staan. Ondanks alle problemen waar ik tegen aan ben gelopen heb ik wel veel geleerd en ben ik veel te weten gekomen over de Raspberry pi en de programmeer taal Python.

Wanneer ik dit project opnieuw zou moeten beginnen zou ik mijn aanpak aanpassen en me veel meer gaan richting op kleine stapjes, daarnaast heb ik gemerkt dat ik werken met hardware wel leuk vind maar dat het als snel een stuk minder leuk word onder de druk van een deadline, dit probleem heb ik minder als het gaat om werken met software zoals Unity of Autodesk Maya.

Uiteindelijk ben ik wel blij met het behaalde resultaat en heb veel kennis opgedaan over de Raspberry pi, Programmeren en computers als de Raspberry pi in het algemeen.

Retrospective

Wat ging er goed ?

Ik heb het super druk gehad de laatste weken en ondanks dat is het me toch gelukt om waardevolle stappen te zetten voor het project. Ik zat een tijd helemaal vast maar gelukkig heb ik doorgezet en de benodigde stappen toch nog kunnen maken.

Wat kan beter ?

Ik moet me meer focussen op het nemen van kleine stapjes in plaats van meteen het einddoel willen bereiken. Soms wil ik te snel iets maken en mis ik kansen om te leren.

Wat moet beter?

Planning ! Het beter verdelen van mijn taken en op tijd beginnen blijft een probleem. Ik heb vooruitgang geboekt wat betreft plannen maar het blijft lastig.

Op afstand besturen

Mijn robot kan nu python scripts lezen en op deze manier uit zichzelf bewegen maar ik wil mijn robot op afstand kunnen besturen. In het ideale geval wil ik mijn robot besturen met mijn draadloze Xbox controller maar het samenvoegen van het xbox controller script en dit robot besturings script gaat niet zo makkelijk als ik had gehoopt.

Ik heb er voor gekozen om wat makkelijker te beginnen en ga proberen mijn robot aan te sturen via mijn computer met behulp van de toetsen op mijn toetsenbord. Op dit moment gebruik ik windows remote desktop om toegang te krijgen tot de desktop van mijn Raspberry pi maar voor het op afstand besturen van mijn robot heb ik in principe alleen de Linux terminal nodig. Met behulp van een programma dat PuTTY heet kan ik gemakkelijk toegang krijgen tot de Linux terminal van de Raspberry.

PuTTY.png

Met de linux command line
$ ifconfig
kan ik achterhalen wat het IP adres is voor de Raspberry en via poort 22 kan ik dan verbinding maken met de linux terminal.

PuTTY2.png

Nu is het een kwestie van het schrijven van de juiste code voor het lezen van keypresses.
Met behulp van code die geschreven is voor de pi2go robot ben ik gaan testen hoe ik deze code kon gaan aanpassen om vervolgens te kunnen gebruiken voor mijn robot. Code remote.png

Ik begin de code met het importeren van de benodigde modules, zoals time, Robot en sys. robot = Robot.Robot(left_trim=LEFT_TRIM, right_trim=RIGHT_TRIM) zorgt er voor dat de trim functie juist word opgevraagd uit het robot script. Met left en right trim kan ik de eventuele afwijking van de motors compenseren.

Code remote2.png

De code die je hierboven ziet zorgt ervoor dat de input van mijn keyboard begrepen word door de raspberry pi.

code remote3.png

De bovenstaande code zorgt voor de aansturing van de robot. De code checkt of er een gespecificeerde key word ingedrukt en voert vervolgens de code uit die bij deze key hoort.

Met deze code en de remote terminal via de PuTTY applicatie is het nu mogelijk om mijn robot met een computer en toetsenbord te besturen. De computer en de raspberry pi moeten wel op hetzelfde netwerk aangesloten zijn. Hier zie je het resultaat.

 

Leerervaring & tijdsbesteding

Ik heb een efficiente manier gevonden om mijn robot op op afstand te kunnen besturen met PuTTY. Ik heb geleerd hoe gemakkelijk toegang kan krijgen tot mijn Raspberry’s Linux terminal met behulp van PuTTy en heb dit ook op verschillende computers getest. Het werkend krijgen van de code heeft me weer meer geleerd over hoe Python werkt en ik weet nu hoe keypressed werkt. Het uitzoeken en vinden van de juiste pragramma’s en code om tot dit resultaat te komen heeft veel tijd in beslag genomen en het opzetten en schrijven van de code was ook niet heel makkelijk in de eerste instantie. al met al ben ik zeker rond de 8 uur bezig geweest om mijn robotje aan rijden te krijgen.

Bronnen:

https://linuxconfig.org/linux-ipconfig-equivalent
http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

https://github.com/the-raspberry-pi-guy/robot

Robotje bouwen

De volgende stap word het daadwerkelijk bouwen van mijn robotje. Zoals ik eerder vertelt heb, heb ik een robot setje gekocht en daarnaast een motor HAT. De Motor HAT is aangesloten op de Raspberry en nu is het aan mij de taak om de robot in elkaar te bouwen en de DC motors aan te sluiten. Ik ben begonnen met het bouwen van het frame van de robot. alle componenten moeten uiteindelijk op dit frame geplaatst gaan worden. Zoals je kunt zien worden die wielen zometeen aangedreven door 2 kleine DC motors.

DSC_0426.JPG

Na het bouwen van het frame ben ik verder gegaan met het aansluiten van de motoren. de motoren hebben twee draden en moeten worden aangesloten op de M1 en M2 slots op de motor HAT. Op de motor HAT heb ik terminal blocks gesoldeerd en met behulp van mijn male to male jumper wires kan ik de motors aansluiten op de daarvoor bestemde poorten.

IMG_20170126_191044.jpg

 

 

 

 

 

 

 

 

 

 

 

 
Vervolgens moest ik zorgen dat niet alleen de Raspberry Pi stroom kreeg maar de Motor HAT ook. Met behulp van een Battery pack is dit mogelijk. In de eerste instantie heb ik de Raspberry nog gewoon op het stopcontact aangesloten en de motor HAT van stroom voorzien met behulp van de battery pack, maar in de toekomst zal de Raspberry ook van stroom moeten worden voorzien door een battery pack. zoals je hieronder kunt zien heeft de battery pack een + en een -, deze kunnen direct aangesloten worden in één van de gesoldeerde screw terminals op de motor HAT.

IMG_20170126_191852.jpg

Vervolgens kan het geheel op het frame gebouwd worden en word het een kwestie van de code maken en de instellingen goed zetten.

DSC_0435.JPG

Eerst moeten er nog een aantal zaken worden gedownload van GitHub en dan kunnen we beginnen met kijken naar de code voor het besturen van de robot.Code op GitHub kan met een aantal commands in de linux terminal worden gedownload.

Code download.jpg

Nu ik de Library’s voor het besturen van de robot heb gedownload kan ik de robot testen met behulp van een example script. Hier zie je de robot het example script uitvoeren.
(Op het eind zie je dat een van de motoren kapot gaat, gelukkig heb ik een nieuwe kunnen bestellen.)

Hieronder zie je de example code. De code importeert als eerst de time en vervolgens de library die nodig is voor het aansturen van de robot. In de geimporteerde Robot.py file staat uitgeschreven wat de funtie robot.backwards bijvoorbeeld precies betekend voor de motor HAT. De functie robot.forward(150. 1.0) heeft net als de andere functies twee waarden die in de functie mee worden gegeven. De eerste waarde geeft de snelheid aan en de tweede waarde de duur. robot.forward(150, 1.0) laat de robot dus voor 1 seconde vooruitbewegen met een snelheid van 150.

Test Code.png

Bronnen:

https://learn.adafruit.com/simple-raspberry-pi-robot/software
https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c
https://learn.adafruit.com/simple-raspberry-pi-robot/hardware
https://www.codecademy.com/

Leerervaring & tijdsbesteding:

In de eerste instantie leek het makkelijk om dit robotje te bouwen, maar er kwam toch meer bij kijken dan ik had verwacht. Het correct aansluiten van de bedrading en het installeren van de correcte updates en library’s duurde toch al snel rond de 8 uur. Ik heb tijdens het bouwen van dit robotje veel geleerd over de werking van de motor HAT en ik heb ervaring opgedaan met solderen. Het installeren en het onderzoeken van de voorbeeld codes heeft me ook nieuwe inzichten gegeven in de programmeer taal Python.

Motor HAT (Raspberry pi shields)

In de robot kit die ik heb gekocht zit een Raspberry pi motor HAT. Deze Motor HAT geeft mijn Raspberry pi extra functionaliteit, maar ik heb eigenlijk niet echt een goed beeld van wat zo’n motor HAT nou eigenlijk doet. Ik ga eerst onderzoeken wat de meerwaarde is van de motor HAT die ik nu ga gebruiken en ik ga onderzoeken welke shields er nog meer zijn voor de Raspberry Pi, daarna ga ik aan de slag met het aansluiten.

Onderzoek

Volgens adafruit is deze motor HAT ideal voor projecten zoals robots.De Raspberry Pi zelf heeft aan gelimiteerde hoeveelheid PWM (pulse width modulation) aansluitingen. Met PWM poorten kun je een servomotor laten draaien zoals ik in eerder experimenten al heb getoond. Ik kwam er zelf al snel achter dat het lastig is om meerder servo’s aan te sluiten op een kale Raspberry, de Motor HAT lost o.a. dit probleem op. Het is ook mogelijk om meerdere motor HATS op de Raspberry aan te sluiten voor meer servo’s, dit noem je ook wel stacken. Het besturen van meerdere servo’s word mogelijk omdat dit shield een eigen circuit heeft speciaal voor het aansturen van servo’s of DC motoren.

Specs:
4 H-Bridges: TB6612 chipset provides 1.2A per bridge (3A brief peak) with thermal shutdown protection, internal kickback protection diodes. Can run motors on 4.5VDC to 13.5VDC

De Motor HAT is een extensie voor de Raspberry Pi en je moet deze dan ook aansluiten en vast solderen om het te kunnen gebruiken. Dit heb ik als eerst gedaan met behulp van de Adafruit tutorial voor het aansluiten van de motor HAT

https://learn.adafruit.com/adafruit-dc-and-stepper-motor-hat-for-raspberry-pi/assembly

DSC_0419.JPG

solderen.jpg

DSC_0434.JPG

Na het aansluiten van de Motor HAT op de Raspberry ben ik natuurlijk eerst gaan testen of alles goed is aangesloten. Mijn plan is om voor mijn robotje de onderstaande DC Motor (in micro servo body) te gebruiken. Deze DC Motor werkt anders dan de servo’s waarmee ik tot nu toe gewerkt heb, maar deze zijn beter geschikt. Om de DC motors en de motor HAT werkend te krijgen moets ik eerste nog wat L2C bus instellingen veranderen. Deze instellingen zorgen voor een goede communicatie tussen de verschillende microprocessoren en IC’s.

DC Motor in Micro Servo Body

Met behulp van deze tutorial heb ik de instellingen veranderd
https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c

Na het aanpassen van de instellingen is de motor HAT klaar om gebruikt te worden voor de aansturen van mijn robot.

Bronnen:

https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c

Klik om toegang te krijgen tot adafruit-dc-and-stepper-motor-hat-for-raspberry-pi.pdf

https://learn.adafruit.com/adafruit-dc-and-stepper-motor-hat-for-raspberry-pi/assembly
https://www.adafruit.com/products/2348

Leerervaring & tijdsbesteding

Toen ik begon te merken dat het aansluiten van meerder componenten een probleem begon te worden ben ik me gaan verdiepen in zaken zoals deze motor HAT en ik wist er eigenlijk nog niks van af. Tijdens het aansluiten van mijn eigen motorHAT ben ik veel dingen te weten gekomen over de architectuur van de motor HAT en ik snap nu waarom je zo’n ding zou willen gebruiken. Het aansturen van een robot zoals dat wil word met een Motor HAT een stuk makkelijker en de mogelijkheden vergroten. Ik dacht toen ik met het aansluiten begon dat het allemaal meteen zou werken maar dat bleek dus niet zo te zijn. Ik heb zoals ik hierboven heb vertelt nog verschillende instellingen moeten aanpassen in de software van de Raspberry om de HAT aan de praat te krijgen, maar dit heeft me wel weer meer inzicht gegeven in de software van de Pi. De tijd die zit in het solderen en aansluiten is ongeveer 2 a 3 uur met vooronderzoek en het uitzoeken van de juiste instellingen koste me ongeveer 3 uur. Om een beter inzicht te krijgen in de werking van de motor HAT heb ik ook nog rond de 2 uur youtube filmpjes gekeken en artikelen gelezen over de motor HAT.

Chasis en gebruik van een Motor HAT

Hallo,

Ik heb recentelijk het chasis voor mijn robot besteld en heb daarbij een aantal onderdelen besteld voor het gemakkelijker samenvoegen van de geleerde zaken. De set met onderdelen die ik hebgekocht zie je hieronder.

raspberry_pi_img_4418

Ik heb er voor gekozen andere servo’s te gebruiken voor het aandrijven van mijn robot, maar deze zijn in de basis hetzelfde. Ik heb ook een motor HAT gekocht voor uitbereiding van mijn Raspberry. Met deze motor HAT kan ik meer PWM poorten creëren voor mijn raspberry.

Voor ik aan de slag ga me het in elkaar bouwen van mijn robot en het samenvoegen van code wil ik meer gaan leren over de motor HAT en wat deze precies doet.

Ultrasonic sensor

Vraag: Hoe detecteer ik voorwerpen en meet ik afstand met mijn robot.

Vandaag heb ik een ultrasonic sensor aangesloten op mijn Raspberry pi. Het doel van deze sensor is het detecteren van voorwerpen. In de eerste instantie was mijn plan om PIR sensoren te gebruiker echter ontdekte ik in mijn onderzoek dat deze minder geschikt zijn voor mijn doel. Ik heb met behulp van een breadboard de sensor aangesloten en met een python test script meet ik de afstand tot een object in centimeters.

 

De Python code gebruikt voor dit prototype is als volgt.

code-ultra-sensor

 

Leerervaring en tijdsbesteding.

Het bekabelen van een Ultrasonic sensor was toch net wat anders als de voorgaande hardware. Door op fora te lezen en verschillende voorbeelden te bekijken heb ik geleerd dat er wat betreft aansluiten meerder wegen naar Rome leiden. Het gebruik van weerstandjes verschilt ook per uitleg dus heb ik ook wat zaken geleerd over het gebruik van weerstandjes en de gevolgen van het weglaten ervan. Het typen van de Python code was net als het aansluiten van de sensor net een tikje anders dan bij de voorgaande testen en ik heb wederom meer kennis van Python vergaard. Voor ik begonnen ben aan de ultrasonic sensor heb ik eerst onderzoek gedaan naar een PIR sensor en andere mogelijkheden. De onderzoek fase heeft me ongeveer 3 uur gekost, daarnaast heeft het juist aansluiten van de ultrasonic sensor me ongeveer 2 uurtjes gekost en het schrijven van de code en het debuggen ervan koste ook rond de 2 uur.

Bronnen:

Ik heb met behulp van de volgende bronnen mijn ultrasonic sensor aangesloten.

http://treehouseprojects.ca/ultrasonictutorial/

https://www.modmypi.com/blog/hc-sr04-ultrasonic-range-sensor-on-the-raspberry-pi

https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=72404

To do list

Ik wil deze week de volgende dingen doen.

  • Ultrasonic sensor onderzoek
  • Ultrasonic sensor aansluiten op de raspberry.
  • Robot laten draaien
  • Meerdere LED’s aansluiten (koplampen & achterlampen)
  • Battery pack aansluiten
  • alles monteren op een frame.

Retrosepective

Wat ging er goed ?

Deze week veel onderzoek gedaan en ik heb een aantal nieuwe dingen geleerd, bijvoorbeeld snap ik nu beter hoe een PIR sensor werkt. Deze week heb ik ook mijn Python kennis nog wat bijgespijkerd en daar ben ik ook wel tevreden over.

Wat kan beter. ?

Iets sneller overgaan op acties en niet te lang blijven hangen in onderzoek of keuzes.

Wat moet beter ?

Bronvermelding en leerervaring beter documenteren. Op tijd beginnen met de blogs maken blijft toch een lastig puntje.