Zelfrijdende auto: Difference between revisions

From Hackers & Designers
(Created page with "{{Article |MainNavigation=No }} Category:Tutorials 500px|self driving toycar == Workshop manual == === Team up! === * Form teams o...")
 
No edit summary
 
(13 intermediate revisions by 2 users not shown)
Line 2: Line 2:
|MainNavigation=No
|MainNavigation=No
}}
}}
[[Category:Tutorials]]
[[File:self-driving-toycar.jpg|500px|self driving toycar]]
[[File:self-driving-toycar.jpg|500px|self driving toycar]]


== Workshop manual ==
== Workshop manual ==


=== Team up! ===
=== Maak groepjes! ===
* Form teams of 3-4 people
* Maak groepjes van 3-4  
* Give your team a name!
 
----
----


=== Deconstuct the car ===
=== Haal de auto uit elkaar ===
* Remove the screws to remove the top.  
* Verwijder alle schroeven en verwijder de buitenkant van de auto.
* Cut of all the wires going to the PCB, as close as possible to the PCB. (make sure the power switch keeps working and that it is off)
* Snijd alle kabels van de PCB af. Let op: Snijd zo dicht bij de PCB als mogelijk. Controleer of de power schakelaar nog werkt en uitgeschakeld staat.
[[File:UNADJUSTEDNONRAW_thumb_15ce.jpg|500px|strip]]
[[File:UNADJUSTEDNONRAW_thumb_15ce.jpg|500px|strip]]


----
----


=== Test the Arduino and the Arduino software ===
=== Test de Arduino en de Arduino software ===
Install [https://www.arduino.cc/en/Main/Software Arduino Software]
Installeer [https://www.arduino.cc/en/Main/Software Arduino Software]


[[File:UNADJUSTEDNONRAW_thumb_15dc.jpg|500px|Arduino]]
[[File:UNADJUSTEDNONRAW_thumb_15dc.jpg|500px|Arduino]]


'''Open your first sketch'''
'''Open je eerste Arduino sketch'''


Open the LED blink example sketch: File > Examples >01.Basics > Blink.
Open de LED blink voorbeeld sketch: File > Examples >01.Basics > Blink.


[[File:UNO_Load_Blink.jpg|500px|Open sketch]]
[[File:UNO_Load_Blink.jpg|500px|Open sketch]]


'''Select your board type and port'''
'''Selecteer je board type en port'''


You'll need to select the entry in the Tools > Board menu that corresponds to your Arduino or Genuino board.
Selecteer de ingang die bij je Arduino board past.  


[[File:UNO_BoardType.jpg|500px|Select board]]
[[File:UNO_BoardType.jpg|500px|Select board]]


 
Selecteer de "serial device" van het board via Tools | Serial Port menu. Om te weten welke port je moet gebruiken kun je de board ontkoppelen en het menu opnieuw openen; de ingang die zou moeten verschijnen is Arduino or Genuino board. Verbind je Arduino opnieuw en selecteer deze ingang.  
Select the serial device of the board from the Tools | Serial Port menu. To find outwhich port to use, you can disconnect your board and re-open the menu; the entry that disappears should be the Arduino or Genuino board. Reconnect the board and select that serial port.


[[File:Serial-port.png|500px|Select COM port]]
[[File:Serial-port.png|500px|Select COM port]]




'''Upload the program'''
'''Upload het programma'''


Now, simply click the "Upload" button in the environment. Wait a few seconds - you should see the RX and TX leds on the board flashing. If the upload is successful, the message "Done uploading." will appear in the status bar.
Nu klick gewoon de "Upload" button. Wacht een aantal secondes. Je zou de RX en TX leds op het board moeten zien blinken. Indien de upload successvol was zie je het bericht: "Done uploading." in de status bar.




[[File:UNO Upload.png|500px|Upload sketch]]
[[File:UNO Upload.png|500px|Upload sketch]]


A few seconds after the upload finishes, you should see the pin 13 (L) LED on the board start to blink (in orange). If it does, congratulations! You've gotten Arduino or Genuino up-and-running.
Na een aantal secondes zou je de pin 13 (L) LED op het board moeten zien blinken (in oranje). Als dit het geval is: Gefeliciteerd! Je Arduino is klaar voor de volgende stappen! 


----
----


=== Connect the Motor Driver ===
=== Verbind de Motor Driver ===
The Motor Driver or Arduino Motor Shield allows you to easily control motor direction and speed using an Arduino.
De Motor Driver of Arduino Motor Shield maakt het mogelijk om de motor richting en tempo met een Arduino te controleren.  
 
Voordat we de shield kunnen aansluiten, moeten we er eerst nog pinheaders solderen. Op deze extra pins kunnen we later in de workshop eventueel nog extra sensors aansluiten.
Het is heel belangrijk dat je dit heel zorgvuldig doet. Er mogen geen verbindingen ontstaan tussen de pinnen, want dat kan tot kortsluiting leiden!
 
[[File:Header positie.jpg|500px|header positie]]


[[File:UNADJUSTEDNONRAW_thumb_15da.jpg|500px|Motor shield]]
We moeten in totaal 9 pinnen solderen, drie groepjes van 3 pinnen.
* Breek eerst voorzichtig met twee tangetjes een rijtje van 3 pinnen van de pinheader af.
* Solder deze in de rij met het label A0-5, in de positie zoals op de foto.
* Doe daarna het zelfde voor de pinnen in de rij met het label GND en +5V.


* '''IMPORTANT!''' disconnect the (green) jumper marked PWR right next to the screw terminal marked EXT_PWR
[[File:Shield connections.JPG|500px|Verbind de motor]]
* Connect the shield to the Arduino
* Connect motor shield and Arduino to the car: Make sure motor, steering and battery cables are connected to the right outputs of the shield


[[File:Shield connections.JPG|500px|Connect the motors]]
* '''Belangrijk!''' Verwijder het (groene) jumpertje gemarkeerd met PWR, naast de schroef terminal gemarkeerd met EXT_PWR
* Verbind de shield met de Arduino
* Verbind de motorshield en Arduino met de auto: Let op dat motor, stuur en batterij kabels verbonden zijn met de juiste uitgangen van het shield. Het is niet heel duidelijk op de foto, maar er gaan 2 kabels naar de EXT_PWR terminal, de plus en min van de batterijen in de auto.


<pre>
<pre>
Steering motor      -> Shield M1
Stuurmotor -> Shield M1
Driving motor        -> Shield M4
Aandrijfmotor -> Shield M4
Car battery wires    -> Shield EXT_PWR
Batterijdraden van de auto -> Shield EXT_PWR
</pre>
</pre>


* Cover the bottom of the Arduino with a piece of tape to prevent a connection of arduino with the battery (short circuit)
* Plak een stuk tape op de onderkant van de Arduino om een kortsluiting te voorkomen 
* Put the AA batteries in the car
* Stop de AA batterijen in de auto.
* Connect 9 v battery to arduino, then connect the battery to the motor shield 
* Verbind de 9v batterij met Arduino.


[[File:UNADJUSTEDNONRAW_thumb_15d4.jpg|500px|battery]]
[[File:UNADJUSTEDNONRAW_thumb_15d4.jpg|500px|battery]]
Line 79: Line 83:
----
----


=== Motors test over serial connection ===
=== Motor test via serial verbinding ===
* Connect Arduino to your computer
* Verbind Arduino met je computer


[[File:UNADJUSTEDNONRAW_thumb_15d6.jpg|500px|connect]]
[[File:UNADJUSTEDNONRAW_thumb_15d6.jpg|500px|connect]]


* We've prepared the example code for this workshop that you can download from GitHub: [https://github.com/swummoq/H-D-Self-Driving-Toycar sample code]
* Er is voorbeld code voor deze workshop die je op Github kunt downloaden: [https://github.com/swummoq/H-D-Self-Driving-Toycar-2/tree/NL-workshop Download de voorbeeld code]
* After downloading the zip file from Github  open SDC_1_motor_test.ino  
* Na de download van het zip bestand open SDC_1_motor_test.ino  
* In Arduino go to "Menu" > "Sketch" > "Include library" > "Manage libraries" > search for "Adafruit Motor shield V1 firmware" and add
* In Arduino op je computer ga naar "Menu" > "Sketch" > "Include library" > "Manage libraries" > en zoek naar "Adafruit Motor shield V1 firmware" en voeg toe add
* Test if the Motor Shield works correctly by opening the Serial Monitor (magnifying glass, right hand corner)
* Test of het Motor Shield het doet door de Serial Monitor te openen (loep boven rechts)
* Test if direction and steering works as expected
* Test of de richting van het stuur werkt zoals verwacht
* Change the cables on the Motor Shield if necessary
* Verander de kabels op het Motor Shield indien nodig


----
----


=== Connect the line sensor ===
=== Verbind de lijn sensor ===


The line detection sensor module sends out short pulses of (invisible) infrared light and measures how much of that light comes back.  
De lijn detection sensor module stuurt korte impulsen van (onzichtbaar) infrarood licht en meet hoeveel licht terug komt. De output is een analog voltage die de Arduino kan gebruiken om de auto te sturen.  
It output the brightness/darkness as an analog voltage that the Arduino can use to steer the car.


[[File:UNADJUSTEDNONRAW_thumb_15d9.jpg|500px|line sensor]]
[[File:UNADJUSTEDNONRAW_thumb_15d9.jpg|500px|line sensor]]


* Take 3 cables, put it on the sensor, look carefully at the colours and connections (A0, GND, VCC). The motor shield has connections for the analog pins on the Arduino conveniently grouped with GND and 5V pins. We use these to connect our sensor to. A0 is the pin right next to the pin marked 9V.  
* Neem de 3 kabels en verbind deze met de sensor. Let goed op de kleuren en de verbindingen (A0, GND, VCC). Het motorshield groepeert de verbindingen voor de analoge pennen met verbindingen voor de GND en 5V pennen, waar we eerder de headers op hebben gesoldeerd. We gebruiken deze ook om onze sensor te verbinden. De A0 pin vind je naast de pin gelabeld 9V.  
* Connect to the Arduino/Motorshield to the sensor
* Verbind de Arduino/Motorshield met de sensor


<pre>
<pre>
Line 111: Line 114:
</pre>
</pre>


* Connect the line sensor analogue output to A0.
* Verbind de lijn sensor analog output met A0.
<pre>
<pre>
Module  ->    Arduino   
Module  ->    Arduino   
Line 124: Line 127:
=== Sensor testing ===
=== Sensor testing ===


* Test line sensor with: SDC_2_line_sensor_test.ino
* Test line sensor met het bestand SDC_2_line_sensor_test.ino
* Follow instructions in the file to find out the lowest and the highest values to distinct the line from the floor.
* Volg instructies in het bestand om de laagste en hoogste waarden te vinden en de lijn van de vloer te onderscheiden.
* Schrijf deze waardes op, in de volgende stap hebben we deze nodig!


[[File:UNADJUSTEDNONRAW_thumb_15e2.jpg|500px|sensor testing]]
[[File:UNADJUSTEDNONRAW_thumb_15e2.jpg|500px|sensor testing]]
Line 132: Line 136:
----
----


=== Upload the car software ===
=== Upload de software ===


* Open and upload SDC_3_car_test.ino  
* Open en upload SDC_3_car_test.ino  
* Adjust the values
* Pas de waarden aan
* Upload the sofware to the Arduino
* Upload de sofware op de Arduino


=== Enhance the software ===
=== Verbeter the software ===


* Test on the line and adjust values of speed or sensor if nessessary 
* Test de sensor op de lijn en pas de waarden van tempo en sensor aan indien nodig.


=== Tips ===
=== Tips ===


* It can help to remove the V9 battery when you upload the program to the arduino
* Het helpt om de V9 batterij te verwijderen als je het programma upload op de Arduino
* Make sure your sensor is close to the ground
* Let erop dat de sensor dicht bij de grond is  
 
=== Ideas: ===


* Add ultrasonic sensor to avoid collisions
=== Ideeën: ===
* Add sound
* The car now always steers either left or right. Can we add straight ahead?
* Try to make the steering proportional to the error in the line sensor
* Make the light sensor trainable. (Maybe add a button to switch between training / driving mode?)


== Workshop ==
* Voeg ultrasonic sensor toe om botsingen te voorkomen
* Presentation
* Voeg geluid toe
** Laptop + powersupply
* De auto stuurt altijd rechts of links. Is er een mogelijkheid om rechdoor te gaan?
** Presentation slides
* Electronics
** Arduinos + usb cables
** Motorshields (with pinheaders presoldered on the servo pins)
** 9V battery clips
** tcrt5000 module
** Ultrasonic sensors
** Protoyping cables
** Dupont cables F-F
* Consumables
** Toycars
** AA batteries
** 9V batteries
* Tools
** Soldering irons
** Tin
** Screwdrivers
** Wireclippers
* Other
** Rubber bands
** Colored tape


== External links ==
== Externe links ==


* HC-SR04 ultrasonic sensor library. https://bitbucket.org/teckel12/arduino-new-ping/downloads
* HC-SR04 ultrasonic sensor library. https://bitbucket.org/teckel12/arduino-new-ping/downloads
* L293D https://github.com/sudar/DCMotorBot
* L293D https://github.com/sudar/DCMotorBot


 
Modules in gebruik:
Used modules:


* https://www.hobbyelectronica.nl/product/l293d-motor-shield/
* https://www.hobbyelectronica.nl/product/l293d-motor-shield/
Line 192: Line 168:
* https://opencircuit.nl/Product/10037/Ultrasonische-afstands-detectie-module
* https://opencircuit.nl/Product/10037/Ultrasonische-afstands-detectie-module


== Stuff that might need explaining? ==
= Repository =  
<tool user="swummoq" repo="H-D-Self-Driving-Toycar" file="readme.md" />
 
 


* Digital and analog / Inputs and outputs
[[Category:Tools]]
* What is an h-bridge?

Latest revision as of 18:10, 23 February 2022

MainNavigation No

self driving toycar

Workshop manual

Maak groepjes!

  • Maak groepjes van 3-4

Haal de auto uit elkaar

  • Verwijder alle schroeven en verwijder de buitenkant van de auto.
  • Snijd alle kabels van de PCB af. Let op: Snijd zo dicht bij de PCB als mogelijk. Controleer of de power schakelaar nog werkt en uitgeschakeld staat.

strip


Test de Arduino en de Arduino software

Installeer Arduino Software

Arduino

Open je eerste Arduino sketch

Open de LED blink voorbeeld sketch: File > Examples >01.Basics > Blink.

Open sketch

Selecteer je board type en port

Selecteer de ingang die bij je Arduino board past.

Select board

Selecteer de "serial device" van het board via Tools | Serial Port menu. Om te weten welke port je moet gebruiken kun je de board ontkoppelen en het menu opnieuw openen; de ingang die zou moeten verschijnen is Arduino or Genuino board. Verbind je Arduino opnieuw en selecteer deze ingang.

Select COM port


Upload het programma

Nu klick gewoon de "Upload" button. Wacht een aantal secondes. Je zou de RX en TX leds op het board moeten zien blinken. Indien de upload successvol was zie je het bericht: "Done uploading." in de status bar.


Upload sketch

Na een aantal secondes zou je de pin 13 (L) LED op het board moeten zien blinken (in oranje). Als dit het geval is: Gefeliciteerd! Je Arduino is klaar voor de volgende stappen!


Verbind de Motor Driver

De Motor Driver of Arduino Motor Shield maakt het mogelijk om de motor richting en tempo met een Arduino te controleren.

Voordat we de shield kunnen aansluiten, moeten we er eerst nog pinheaders solderen. Op deze extra pins kunnen we later in de workshop eventueel nog extra sensors aansluiten. Het is heel belangrijk dat je dit heel zorgvuldig doet. Er mogen geen verbindingen ontstaan tussen de pinnen, want dat kan tot kortsluiting leiden!

header positie

We moeten in totaal 9 pinnen solderen, drie groepjes van 3 pinnen.

  • Breek eerst voorzichtig met twee tangetjes een rijtje van 3 pinnen van de pinheader af.
  • Solder deze in de rij met het label A0-5, in de positie zoals op de foto.
  • Doe daarna het zelfde voor de pinnen in de rij met het label GND en +5V.

Verbind de motor

  • Belangrijk! Verwijder het (groene) jumpertje gemarkeerd met PWR, naast de schroef terminal gemarkeerd met EXT_PWR
  • Verbind de shield met de Arduino
  • Verbind de motorshield en Arduino met de auto: Let op dat motor, stuur en batterij kabels verbonden zijn met de juiste uitgangen van het shield. Het is niet heel duidelijk op de foto, maar er gaan 2 kabels naar de EXT_PWR terminal, de plus en min van de batterijen in de auto.
Stuurmotor -> Shield M1
Aandrijfmotor -> Shield M4
Batterijdraden van de auto -> Shield EXT_PWR
  • Plak een stuk tape op de onderkant van de Arduino om een kortsluiting te voorkomen
  • Stop de AA batterijen in de auto.
  • Verbind de 9v batterij met Arduino.

battery


Motor test via serial verbinding

  • Verbind Arduino met je computer

connect

  • Er is voorbeld code voor deze workshop die je op Github kunt downloaden: Download de voorbeeld code
  • Na de download van het zip bestand open SDC_1_motor_test.ino
  • In Arduino op je computer ga naar "Menu" > "Sketch" > "Include library" > "Manage libraries" > en zoek naar "Adafruit Motor shield V1 firmware" en voeg toe add
  • Test of het Motor Shield het doet door de Serial Monitor te openen (loep boven rechts)
  • Test of de richting van het stuur werkt zoals verwacht
  • Verander de kabels op het Motor Shield indien nodig

Verbind de lijn sensor

De lijn detection sensor module stuurt korte impulsen van (onzichtbaar) infrarood licht en meet hoeveel licht terug komt. De output is een analog voltage die de Arduino kan gebruiken om de auto te sturen.

line sensor

  • Neem de 3 kabels en verbind deze met de sensor. Let goed op de kleuren en de verbindingen (A0, GND, VCC). Het motorshield groepeert de verbindingen voor de analoge pennen met verbindingen voor de GND en 5V pennen, waar we eerder de headers op hebben gesoldeerd. We gebruiken deze ook om onze sensor te verbinden. De A0 pin vind je naast de pin gelabeld 9V.
  • Verbind de Arduino/Motorshield met de sensor
Module  ->    Arduino   
- - - - - - - - - - -
VCC     ->    5V
GND     ->    GND
A0      ->    A0
  • Verbind de lijn sensor analog output met A0.
Module  ->    Arduino   
- - - - - - - - - - -
GND -> GND 
VCC -> 5V

sensor Connected line sensor

Sensor testing

  • Test line sensor met het bestand SDC_2_line_sensor_test.ino
  • Volg instructies in het bestand om de laagste en hoogste waarden te vinden en de lijn van de vloer te onderscheiden.
  • Schrijf deze waardes op, in de volgende stap hebben we deze nodig!

sensor testing sensor testing


Upload de software

  • Open en upload SDC_3_car_test.ino
  • Pas de waarden aan
  • Upload de sofware op de Arduino

Verbeter the software

  • Test de sensor op de lijn en pas de waarden van tempo en sensor aan indien nodig.

Tips

  • Het helpt om de V9 batterij te verwijderen als je het programma upload op de Arduino
  • Let erop dat de sensor dicht bij de grond is

Ideeën:

  • Voeg ultrasonic sensor toe om botsingen te voorkomen
  • Voeg geluid toe
  • De auto stuurt altijd rechts of links. Is er een mogelijkheid om rechdoor te gaan?

Externe links

Modules in gebruik:

Repository

These are example sketches for the Self Driving Toycar workshop.

More information and instructions here