<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <link href="https://funduinoshop.com/nl/blog/projecten/?sAtom=1" rel="self" type="application/atom+xml" />
    <author>
        <name>Funduinoshop</name>
    </author>
    <title>Blog / Atom feed</title>
    <id>https://funduinoshop.com/nl/blog/projecten/?sRss=1</id>
    <updated>2026-04-08T16:06:53+02:00</updated>
    
        <entry>
            <title type="text">RC auto bouwen voor Arduino: Autonoom Voertuig - Deel 3</title>
            <id>https://funduinoshop.com/nl/rc-auto-bouwen-voor-arduino-autonoom-voertuig-deel-3</id>
            <link href="https://funduinoshop.com/nl/rc-auto-bouwen-voor-arduino-autonoom-voertuig-deel-3"/>
            <summary type="html">
                <![CDATA[
                
                                            Welkom bij het derde deel van onze blogserie over robotauto&#039;s. In het eerste deel hebben we de basisbeginselen van het basisvoertuig geleerd. In het tweede deel hebben we een universeel codesysteem ontwikkeld dat we kunnen gebruiken om de rijniveaus voor de robotauto in te ste...
                                        ]]>
            </summary>
            <content type="html">
                <![CDATA[
                  Inzicht in de mobiliteit van de toekomst met robotauto&#039;s, deel 3  
 Welkom bij het derde deel van onze blogserie over robotauto&#039;s. In het   eerste deel  &amp;nbsp;leerden we over de basisprincipes van het basisvoertuig. In het   tweede deel  &amp;nbsp;ontwikkelden we een universeel codesysteem om de rijstappen van de robotauto te definiëren en realiseerden we een eenvoudige afstandsbediening met een infrarood afstandsbediening. Vanwege de fysieke beperkingen van deze afstandsbediening, wil ik in deze aflevering de overdracht van rij-instructies met Bluetooth laten zien, bijvoorbeeld van een smartphone naar de BT-ontvanger HC-05. Bluetooth is een 2,4GHz radiosignaal met een kort bereik. Veilig tot ca. 10 m en storingsvrij in zonlicht. 
 De Bluetooth module HC-05 is eigenlijk een  transceiver=zender + ontvanger . We gebruiken hem echter alleen als ontvanger, voor het verzenden van de rij-instructies gebruiken we een Bluetooth APP op een Android smartphone (vanwege de speciale manier waarop Apple met Bluetooth omgaat, werkt het niet met een iPhone). In principe is het ook mogelijk om een Bluetooth afstandsbediening te bouwen met de HC-05; hiervoor zijn echter een tweede HC-05, een microcontroller en een invoerapparaat (joystickcontroller) nodig. 
 &amp;nbsp;  
  Van de zes pinnen op de HC-05 module zijn er slechts vier nodig: VCC (5V) en GND voor de voeding van de module en RXD en TXD voor de verbinding met twee pinnen van de microcontroller waarop SoftwareSerial is ingesteld. Je kunt het opschrift LEVEL: 3.3V echter niet negeren om de module niet te beschadigen. Op onze microcontroller met 5V logica hebben we een spanningsdeler nodig van 5V naar 3,3V op zijn minst voor de RXD pin, bijvoorbeeld weerstanden van 1 kOhm en 2,2 kOhm. 
 Het schakelschema: HC-05 module op de microcontroller    
 De AT-commando&#039;s van de HC-05 module voor Arduino microcontrollers 
 Links van de connector met het opschrift Key zit een klein knopje dat belangrijk is voor de configuratie. Als dit knopje wordt ingedrukt als de module is ingeschakeld, komen we in de AT-commando-modus (de LED knippert langzaam in een ritme van 2s), waarin we de instellingen uitvoeren met zogenaamde AT-commando&#039;s (voor Attention, Achtung). Hiervoor gebruiken we een aangepast voorbeeldprogramma, waarbij de gebruikelijke seriële interface is aangesloten op de Seriële Monitor van de Arduino IDE en de HC-05 via SoftwareSerial. 
  /*
  SoftwareSerial meervoudige seriële test
 Ontvangt van de hardware-serieel, stuurt naar software-serieel.
 Ontvangt van de software-serieel, stuurt naar de hardware-serieel.
 Het circuit:
 * RX is digitale pin 10 (aansluiten op TX van ander apparaat)
 * TX is digitale pin 11 (aansluiten op RX van ander apparaat) // spanningsdeler!
 gemaakt in de nevelen der tijd
 gewijzigd 25 mei 2012
 door Tom Igoe
 gebaseerd op het voorbeeld van Mikal Hart
 Deze voorbeeldcode is publiek domein.
 */ 
  #include   &amp;lt;SoftwareSerial.h&amp;gt;  
 SoftwareSerial  BTSerial (10 ,  11 );  // RX, TX // mySerial veranderd in BTSerial 
 char  c= &#039; &#039; ;  // Declaratie van variabele voor verzending 

 void   setup () {
   // Open serial communications and wait for port to open: 
   Serial . begin ( 9600 );                                                                                    // Baud rate changed to 9600 
   Serial . println ( &quot;Serial started!&quot; );

   // set the data rate for the SoftwareSerial port 
  BTSerial. begin ( 38400 );                                                                             // Baud rate for BT 38400 
   Serial . println ( &quot;BTSerial started!&quot; );
}

 void   loop () {  // steeds opnieuw uitvoeren 
  als  (BTSerial .available ()) {
    c=BTSerial. read ();
     Serial . write (c);
  }
  als  ( Serial  .available ()) {
    c= Serial . read ();
    BTSerial. write (c);
     Serial . write (c);                                                                                        // re-transmission of input in Serial Monitor 
  }
} 
 In de volgende afbeelding worden de essentiële AT-commando&#039;s gebruikt. Het externe station, de HC-05, stuurt indien nodig een antwoord en bevestigt met OK. 
 We zijn vooral geïnteresseerd in de naam en het HEX-adres om de module later op de smartphone te kunnen identificeren. De AT commando&#039;s worden ingevoerd in de seriële monitor van de microcontroller. In de volgende afbeelding zie je de seriële monitor van de Arduino IDE. 
 Als je wilt, kun je het standaard wachtwoord 1234 wijzigen met &quot;AT+PSWD=xxxx &quot;, waarbij x staat voor een cijfer van 0 tot 9. Controleer vervolgens met &quot;AT+PSWD? &quot; of de invoer is gelukt.    Nadat de invoer is voltooid, wordt de module even losgekoppeld van de voeding. Na het opnieuw inschakelen zonder op een knop te drukken, staat de HC-05 module in de standaardmodus. De LED knippert snel (ca. 5 keer/s). 
 Aanpassingen aan de RC auto: ander motorschild 
 Nu naar de robotauto. Nadat we de vorige keer de Motorcontroller V2 hadden gebruikt, die alleen de twee I2C-connectoren SDA=A4 en SCL=A5 nodig heeft voor de besturingssignalen, wil ik deze keer de oudere Motorcontroller V1 introduceren, die veel digitale pinnen blokkeert, maar vaak voor een spotprijsje te koop is.     Ik heb dit Motorshield ook een beetje aangepast om toegang te krijgen voor sensoren en radio-ontvangers. Aan de digitale pinnenkant is er maar één pin die toegankelijk is met een haakse connector: Pen 2. Dit is goed voor degenen die hier de IR-ontvanger willen aansluiten. Er zijn meer uitbreidingsmogelijkheden aan de andere kant, waar je toegang hebt tot alle analoge ingangen en de voeding met behulp van vrouwelijke connectors (ook wel socket connectors genoemd). 
 Omdat alle analoge ingangen ook als digitale in- of uitgangen kunnen worden gebruikt, hebben we hier de mogelijkheid om onze radio-ontvangers aan te sluiten. Dit werkt uitstekend met de 433 MHz zendontvanger HC-12 (zie volgende aflevering), maar voor de BT ontvanger HC-05 alleen met beperkingen. Ten eerste kunnen we de RXD-pin niet rechtstreeks aansluiten, daarvoor hebben we de spanningsdeler nodig, en ten tweede leveren de pinnen niet genoeg stroom om de module op deze pinnen van stroom te voorzien. 
 De volgende afbeelding toont een kleine adapter die we zelf hebben gemaakt, die de HC-05 van 5V en massa voorziet via de juiste pinnen, TXD rechtstreeks aansluit op RX van de SoftwareSeriële interface A1 =D15 en RXD via de spanningsdeler op A2 = D16.   
 Het aansluitschema: HC-05 module met L293D Motorshield op de Arduino microcontroller     
 De schakeling kan natuurlijk ook worden gerealiseerd op een mini breadboard met jumper kabels. 
 Net als de vorige keer wordt de code voor de rij-instructies verhoogd of verlaagd met een druk op de knop; deze keer echter niet met IR-afstandsbediening, maar met de aanraakfunctie in de APP van de smartphone en de Bluetooth-vraag via SoftwareSerial. 
 De HC-05 Bluetooth-module koppelen met een Android-toepassing (APP) 
 Voordat de APP verbinding kan maken met de Robot Car, moeten we deze in de instellingen koppelen met de Bluetooth-module. Dit zou vrij eenvoudig moeten zijn, aangezien we eerder de AT-commando&#039;s hebben gebruikt om de naam en het HEX-adres van de HC-05 op te vragen. 
 Als het koppelen is gelukt en een geschikte BT app is geïnstalleerd, kan de app worden gestart en ingesteld. Door op het vergrootglas in de linker afbeelding te tikken, worden geschikte apparaten weergegeven. We tikken op de HC-05 en krijgen de melding &quot;connected&quot;. De app die ik gebruik biedt verschillende interfaces voor de bediening (middelste afbeelding). Ik heb besloten om de spelcontroller te gebruiken. Rechtsboven in de middelste afbeelding staan twee pijlen die een kleine cirkel vormen. Tik hier op als de verbinding verbroken is. 
 De rechterafbeelding toont de knoppen van een spelcontroller. Voordat je ze voor het eerst gebruikt, moet je aan de knoppen de numerieke waarden toewijzen die moeten worden doorgegeven als je erop tikt. 
 Voor de cursorknoppen heb ik de numerieke waarden 1 tot en met 4 met de klok mee gegeven. Aan de andere knoppen heb ik de numerieke waarde 5 toegekend. Deze waarden worden in de sketch doorgegeven aan de variabele  blueToothVal &amp;nbsp;en leiden in de &amp;nbsp;if-pointers van  de functie  loop()  tot de bepaling van de code voor het besturingsniveau.    
 De veranderingen van Infrarood naar Bluetooth en Motorcontroller V2 naar V1 veroorzaken enkele wijzigingen in het hoofdgedeelte van de schets. Aan de andere kant verandert er bijna niets in de motor() functie. Alleen in de notatie worden de functies motor1-&amp;gt;setSpeed() nu motor1.setSpeed() vanwege de verschillende programmabibliotheken (libraries). 
 De programmacode: Een RC-auto bouwen voor Arduino 
 * Voorbeeldcode  voor  robotauto met motorschild V1 en BT-ontvanger   HC-05 , vanaf  20220515 
* gebaseerd op Adafruit Motor shield V2 bibliotheek, copyright Adafruit Industries LLC
*  deze  code is  publiek  domein, veel plezier!
* aangepast  voor  Funduino
* Pinnen
* BT VCC naar Arduino  5V uit.
* BT GND naar GND
* Arduino  A1=15  (SS RX) - BT TX geen spanningsdeler nodig
* Arduino  A2=16  (SS TX) - BT RX via een spanningsdeler (5v naar  3,3v )
*/

  #include   &amp;lt;AFMotor.h&amp;gt;  
AF_DCMotor motor1 (2 );
AF_DCMotor motor2( 3 );

  #include   &amp;lt;SoftwareSerial.h&amp;gt;  
 // HC-05 initialiseren 
 SoftwareSerial  BTSerial (15 ,  16 );  // RX, TX kruisen naar TX, RX(spanningsdeler) 
 char  blueToothVal;
 int  x =  0 ;
 int  y =  0 ;
 int  links =  0 ;
 int  rechts =  0 ;
 int  code =  5555 ;
 int  speedL =  0 ;
 float  factor =  1.8 ;  // Correctie voor speedLevel 255/100 * 6V/VBatt 

 void   setup () {
   Serial . begin ( 9600 );  // set up Serial Monitor at 9600 bps 
   Serial . println ( &quot;Motor test!&quot; );
  BTSerial. begin ( 9600 );  // set up transmission speed for HC-12 
   Serial . println ( &quot;SoftwareSerial initialized!&quot; );
}  // einde setup 

 void   loop () {
  if (BTSerial .available ())  //als data is ontvangen  ... 
 Serial.print(&quot;beschikbaar&quot;);     
{
    blueToothVal=BTSerial. read (); //..sollen diese ausgelesen werden 
 Serial.println(blueToothVal); 
  }
    if  (blueToothVal== &#039;1&#039; )  //als de Bluetooth-module een &quot;1&quot;.... ontvangt 
   {
       if  (code&amp;lt; 9000 )   code = code +  1000 ;      
       Serial . print ( &quot;Code = &quot; );
       Serial . println (code);
    }
    anders   als  (blueToothVal== &#039;2&#039; ) //als   de Bluetooth-module een &quot;2&quot;.... ontvangt
   {
       if  ((code -1000 * int (code/ 1000 ))&amp;lt; 900 )  code = code +  100 ;
       Serial . print ( &quot;Code = &quot; );
       Serial . println (code);
    }
    else   if  (blueToothVal== &#039;3&#039; ) //als de   Bluetooth-module een &quot;3 &quot;ontvangt ....
   {
       if  (code&amp;gt; 2000 )   code = code -  1000 ;        
       Serial . print ( &quot;Code = &quot; );
       Serial . println (code);
    }
    else   if  (blueToothVal== &#039;4&#039; ) //als de   Bluetooth-module een &quot;4&quot; ontvangt ....
    {
     if  (code -1000 * int (code/ 1000 ) &amp;gt;  200 )   code = code -  100 ;
       Serial . print ( &quot;Code = &quot; );
       Serial . println (code);
    }  
    else   if  (blueToothVal== &#039;5&#039; ) //als de   Bluetooth-module een &quot;5&quot; ontvangt...
   {           
      code =  5555 ;
       Serial . print ( &quot;Code = &quot; );
       Serial . println (code);    
    }
    delay  (200 );  //kleine vertraging voor betere seriële communicatie en om stuiteren te voorkomen 
    motor();
}  // einde lus 

 void  motor(){
  int  speedLevel [9 ]={ -100 , -80 , -60 , -40 , 0 , 40 , 60 , 80 , 100 };
  y =  int (code /  1000 );
  x =  int ((code -  1000*y ) /  100 );
  speedL = speedLevel [y-1 ];
  Serial  .print ( &quot;code = &quot; );
  Serial . print (code);
  Serial  .print ( &quot; y = &quot;);
  Serial . print (y);
  Serial  .print (&quot;  x = &quot;);
  Serial . print (x);
  Serial  . print(&quot;  speedL = &quot;);
  Serial  .println (speedL);

  //Correctie van de snelheidsstappen voor bochten 
  als   (x==1 ){
    right = speedL+ 20 ;
    left = speedL -20 ;
  }
  anders   als  ( x==2 ){
    right = speedL+ 15 ;
    left = speedL -15 ;
  }
  anders   als  ( x==3 ) {
    right = speedL+ 10 ;
    left = speedL -10 ;
  }
  anders   als  ( x==4 ) {
    right = speedL+ 5 ;
    left = speedL -5 ;
  }
  anders   als  ( x==6 ) {
    right = speedL  -5 ;
    left = speedL+ 5 ;
  }
  anders   als  ( x==7 ) {
    right = speedL -10 ;
    left = speedL+ 10 ;
  }
  anders   als  ( x==8 ) {
    right = speedL -15 ;
    left = speedL+ 15 ;
  }
  anders   als  ( x==9 ) {
    right = speedL -20 ;
    left = speedL+ 20 ;
  }
  anders  {
    right = speedL;
    left = speedL;
  }

  //Invoer van de rijstappen voor &quot;links&quot; en &quot;rechts 
  Serial  .print ( &quot;links = &quot; );
  Serial . print (left);
  Serial  . print( &quot; rechts = &quot; );
  Serial  .println (rechts);

  als  (links &amp;lt;  40  &amp;amp; links &amp;gt;  -40 ) {
    motor1. run (RELEASE);
  }
  als  (rechts &amp;lt;  40  &amp;amp; rechts &amp;gt;  -40 ) {
    motor2. run (RELEASE);
  }
  als  ( links&amp;gt;=40 ) {
     if  (left&amp;gt; 100 ) left= 100 ;
      motor1. run (FORWARD);
      motor1. setSpeed (left * factor);
  }
  als  ( rechts&amp;gt;=40 ) {
     if  (right&amp;gt; 100 ) right= 100 ;
      motor2. run (FORWARD);
      motor2. setSpeed (right * factor);
  }
  als  (links&amp;lt;=  -40 ) {
     if  (left&amp;lt; -100 ) left= -100 ;
      motor1. run (BACKWARD);
      left = -left;
      motor1. setSpeed (left * factor);
  }
  als  (rechts&amp;lt;=  -40 ) {
     if  (right&amp;lt; -100 ) right= -100 ;
      motor2. run (BACKWARD);
      right = -right;
      motor2. setSpeed (right * factor);
  }
}  // einde motor  
 Tot zover de op één na goedkoopste oplossing voor een robotauto met afstandsbediening (ervan uitgaande dat je een Android smartphone hebt). De volgende keer zal ik laten zien hoe eenvoudig het is om een 433 MHz zendontvanger HC-12 te integreren. Hiermee kan zelfs een bereik van enkele honderden meters worden bereikt. De kosten nemen echter toe omdat er nu twee zendontvangers en nog een microcontroller nodig zijn. Tot dan. 
                ]]>
            </content>

                            <updated>2022-06-20T08:00:00+02:00</updated>
                    </entry>

    
    
        <entry>
            <title type="text">RC auto bouwen voor Arduino: Autonoom Voertuig - Deel 2</title>
            <id>https://funduinoshop.com/nl/rc-auto-bouwen-voor-arduino-autonoom-voertuig-deel-2</id>
            <link href="https://funduinoshop.com/nl/rc-auto-bouwen-voor-arduino-autonoom-voertuig-deel-2"/>
            <summary type="html">
                <![CDATA[
                
                                            Welkom bij het tweede deel van onze nieuwe blogserie over robotauto&#039;s. In het eerste deel leerden we de basis van het basisvoertuig kennen. Deze keer willen we de mogelijkheden van afstandsbediening bespreken, een codesysteem ontwikkelen...
                                        ]]>
            </summary>
            <content type="html">
                <![CDATA[
                  Inzicht in de mobiliteit van de toekomst met robotauto&#039;s, deel 2  
 Welkom bij het tweede deel van onze nieuwe blogserie over robotauto&#039;s. In het  eerste deel  hebben we de basisbeginselen van het basisvoertuig leren kennen. Deze keer willen we de mogelijkheden van afstandsbediening bespreken, een codesysteem ontwikkelen waarmee we de snelheidsstappen van de robotauto kunnen bepalen en tot slot een eenvoudige afstandsbediening realiseren met een infrarood afstandsbediening. 
 Waarom heb ik snelheidsstappen nodig voor een RC auto voor Arduino microcontrollers? 
 1. Voor het regelen van de motorsnelheden vanaf een ander apparaat is er in principe de mogelijkheid om continu waarden te bepalen en door te geven met een potentiometer (poti), of om de waarde van de snelheidstrap te verhogen of te verlagen door op een knop te drukken. De volgende afbeeldingen tonen enkele geselecteerde voorbeelden, in de eerste afbeelding joystickbediening: 
 &amp;nbsp;  
 &amp;nbsp; 
 In de tweede afbeelding zien we onder andere infrarood afstandsbedieningen, een smartphone app met Bluetooth ontvanger en het LCD1602 toetsenbordschild, dat bediend kan worden met een 433 MHz transceiver: 
 &amp;nbsp;  
 &amp;nbsp; 
 Om een uniform schema te krijgen, is het zinvol om de map() functie te gebruiken om de analoge waarden van de pot te reduceren tot waarden die via radio kunnen worden verzonden. De analoog-digitaal omzetter levert 10-bits getallen, dat wil zeggen waarden tussen 0 en 1023. De middelste stand van de mini-joysticks is ongeveer 511. Door de waarde door 100 te delen, kan één joystick twee waarden (x- en y-richting) bepalen die tussen 0 en 10 liggen of, bij gebruik van de map()-functie, tussen 1 en 9. Dit is voldoende voor het invoeren van de snelheid en de snelheid. Dit is voldoende voor het invoeren van de snelheid en voor het nemen van bochten. Ongeacht of we 11 of 9 waarden bepalen, betekent stilstand waarde 5 in de y-richting en voor rechtuit rijden ook waarde 5. 
 Kijkend naar de controller met de twee joysticks (onderdeel van de  4DOF Mini robotarm kit met joysticks en servoaandrijving ), gezien de verscheidenheid aan verschillende systemen, kies ik voor een code tussen 1111 en 9999 die eenvoudig is over te brengen. Het eerste cijfer kan worden gebruikt voor de y-richting van de linker joystick, het tweede cijfer voor de x-richting van de linker joystick, het derde en vierde cijfer voor een optionele tweede joystick of bepaalde toetsen. In het eerste voorbeeld met de IR afstandsbediening hebben we alleen de eerste twee cijfers van de viercijferige code nodig. 
 De snelheidsregeling van de RC Car voor Arduino 
 De snelheidsregeling van de motoren gebeurt met pulsbreedtemodulatie (PWM). De waarde voor de zogenaamde duty cycle is een 8-bits getal, dat wil zeggen een waarde tussen 0 en 255 (=2 tot de macht 8 -1). Als je met een regelbare voeding spanningen tussen 0 en 6 V op de motor zet, zul je merken dat er tot ongeveer 1,5 V niets merkbaar is. Daarna begint de motor te zoemen, maar beweegt niet. Als je tegelijkertijd de stroom meet, zie je een relatief hoge waarde. De energie wordt omgezet in warmte en brommen - niet echt goed. Vanaf 2,4 - 3 volt begint de motor te draaien, de stroomsterkte daalt een beetje als de motor onbelast is. Daarna neemt de snelheid toe, afhankelijk van de toegepaste spanning. Als je de spanning omlaag regelt, zal de motor tot onder 2 volt draaien, maar als hij tot stilstand komt, bijvoorbeeld door verhoogde wrijvingsweerstand of een obstakel, zal hij niet opnieuw starten. Conclusie: Waarden onder ongeveer 2,4 volt moeten worden vermeden, de ingang moet gelijk worden gezet aan 0 (nul) om onnodige slijtage en stroomverbruik te voorkomen. Behalve voor stilstand (code=5) hebben we een Duty Cycle nodig tussen ongeveer 40% en 100% met een voedingsspanning van 6V voor de motoren. 
 De voeding voor de RC Car voor Arduino 
 We hebben in het eerste deel al verschillende mogelijkheden voor de voeding besproken. Vier AA-batterijen van elk 1,5V geven 6V, de maximale spanning van de kleine gele motortjes. Vier AA-batterijen van elk 1,2 V zijn niet genoeg voor de voeding. Je hebt dan een batterijhouder nodig voor 6 batterijen en dat geeft 7,2 volt. En twee lithium-ion batterijen (nominale spanning 3,7 V) leveren meer dan 8 volt als ze volledig zijn opgeladen. Het is dus logisch om in het programma een factor in te stellen die de spanning van het hoogste aandrijfniveau beperkt tot 6V. 
 De RC auto besturen voor Arduino 
 Als de rij-instructies worden gegeven met knoppen, mogelijk zelfs in een smartphone app, wordt de juiste waarde verhoogd of verlaagd voor de uitgangswaarde 55xx (stilstand) zonder het maximum te overschrijden. 
 De code correct uitlezen 
 De toewijzing van het eerste cijfer van de code aan de vereiste waarden van de bewegingstrappen gebeurt via de index van een lijst met de respectieve numerieke waarden. 
 Conclusie: Met een code van vier cijfers kunnen we de snelheid en het bochtenwerk regelen met de eerste twee cijfers, de achterste twee cijfers worden gebruikt voor andere functies (die in eerste instantie niet nodig zijn). Dus, bijvoorbeeld, code95xx voor snelste rechtuit, 55xx voor stilstand, 77xx voor vooruit rijden naar rechts.&amp;nbsp; 
 
 
 
 
 
 y ↓ 0&amp;nbsp; x→ 
 
 
 1 
 
 
 2 
 
 
 3 
 
 
 4 
 
 
 5 
 
 
 6 
 
 
 7 
 
 
 8 
 
 
 9 
 
 
 
 
 9 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  ↑  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 8 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  ↑  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 7 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  ↑  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 6 
 
 
 ← 
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
 ↑ 
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
 → 
 
 
 
 
 5 
 
 
 ← 
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  0  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
 → 
 
 
 
 
 4 
 
 
 ← 
 
 
 &amp;nbsp; 
 
 
 ↙ 
 
 
 &amp;nbsp; 
 
 
 ↓ 
 
 
 &amp;nbsp; 
 
 
 ↘ 
 
 
 &amp;nbsp; 
 
 
 → 
 
 
 
 
 3 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 
  ↙  
 
 
 &amp;nbsp; 
 
 
  ↓  
 
 
 &amp;nbsp; 
 
 
  ↘  
 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 2 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 
  ↙  
 
 
 &amp;nbsp; 
 
 
  ↓  
 
 
 &amp;nbsp; 
 
 
  ↘  
 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 1 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 
  ↙  
 
 
 &amp;nbsp; 
 
 
  ↓  
 
 
 &amp;nbsp; 
 
 
  ↘  
 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 
 &amp;nbsp; 
 Nu willen we onze eerste Smart Robot Car bouwen met de kit, een ATmega328 microcontroller (UNO R3 ontwerp), een MotorShield V2 en IR zender en ontvanger. 
 Het MotorShield V2 kan maximaal vier motoren aansturen, met behulp van de zogenaamde I2C bus met de aansluitingen SDA (=Serial Data) op de analoge ingang A4 en SCL (=Serial Clock) op A5 voor het aansluiten van de stuurlijnen. Adafruit heeft hiervoor ook een geschikte programmabibliotheek ontwikkeld en beschikbaar gesteld. Let op: De bibliotheken voor Motor Shields V1 en V2 zijn niet compatibel. 
 &amp;nbsp;  
 Afbeelding Motor Shield V2 met modificatie:  Gesoldeerde busconnectoren (vrouwelijke connectoren) voor het aansluiten van extra apparatuur 
 Het maakt niet uit welk Motor Shield je wilt gebruiken - V1 of V2 -,&amp;nbsp; het is zinvol om extra busconnectoren te solderen voor beide Motor Shields om later Bluetooth of 433 MHz zenders/ontvangers of sensoren aan te sluiten. Meer hierover in de volgende blogposts. De IR-ontvanger heeft alleen voeding nodig van pin 3 en 4 en pin 2 voor de IR-ontvanger. De soldeerbout kan dan nog koud blijven. 
 Voor de besturing gebruiken we eerst de kleine infrarood afstandsbediening van Funduino en een IR ontvanger. Hoewel de &quot;naakte&quot; IR-sensor voldoende is, raad ik het kleine breakout bord aan, omdat hier een LED flikkert wanneer IR-signalen worden ontvangen; een waardevol hulpmiddel bij het zoeken naar een storing. 
 De schets is samengesteld uit twee beproefde onderdelen: Armin Joachimsmeyer&#039;s voorbeeldschets, die hij toevoegde aan zijn geweldige IRremote programmabibliotheek, en een Robot Car schets van de auteur op basis van Adafruit&#039;s programmabibliotheek. 
 De programmacode voor de RC Car voor Arduino 
  /* Voorbeeldcode voor robotauto met motorschild V2 en IR-ontvanger, vanaf 20220515
* gebaseerd op Adafruit Motor shield V2 bibliotheek, copyright Adafruit Industries LLC, 2009
* en SimpleReceiver.cpp, onderdeel van Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote
* MIT-licentie Copyright (c) 2020-2022 Armin Joachimsmeyer
* aangepast voor Funduino
* Motor Shield V2 gebruikt I2C met SDA=A4 en SCL=A5
* IR-ontvanger gebruikt pin 2
 ************************************************************************************
 * Hierbij wordt gratis toestemming verleend aan iedereen die een kopie verkrijgt van
 * van deze software en bijbehorende documentatiebestanden (de &quot;Software&quot;), om te handelen
 * in de Software zonder beperking, inclusief zonder beperking de rechten
 * de Software te gebruiken, te kopiëren, te wijzigen, samen te voegen, te publiceren, te distribueren, in sublicentie te geven en/of te verkopen, en kopieën van de Software toe te staan
 * kopieën van de Software, en om personen aan wie de Software is geleverd toe te staan
 * om dit te doen, onder de volgende voorwaarden:
 *
 * De bovenstaande copyrightmelding en deze toestemmingsmelding moeten worden opgenomen in alle
 * kopieën of substantiële delen van de Software.
 *
 * DE SOFTWARE WORDT GELEVERD &quot;ZOALS DEZE IS&quot;, ZONDER ENIGE VORM VAN GARANTIE, EXPLICIET OF IMPLICIET,
 * INCLUSIEF MAAR NIET BEPERKT TOT DE GARANTIES VAN VERKOOPBAARHEID, GESCHIKTHEID VOOR EEN
 * BEPAALD DOEL EN NIET-INBREUK. IN GEEN GEVAL ZULLEN DE AUTEURS OF
 * HOUDERS AANSPRAKELIJK ZIJN VOOR ENIGE CLAIM, SCHADE OF ANDERE AANSPRAKELIJKHEID, HETZIJ IN EEN ACTIE VAN
 * CONTRACT, ONRECHTMATIGE DAAD OF ANDERSZINS, VOORTVLOEIEND UIT, UIT OF IN VERBAND MET DE SOFTWARE
 * OF HET GEBRUIK VAN OF ANDERE OMGANG MET DE SOFTWARE.
 *************************************************************************************/ 
 
  #include   &amp;lt;Adafruit_MotorShield.h&amp;gt;  
 // Maak het motorschildobject aan met het standaard I2C-adres 0x60 
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
 // Selecteer welke &#039;poort&#039; M1, M2, M3 of M4.  
Adafruit_DCMotor *motor1 = AFMS.getMotor (2 );
Adafruit_DCMotor *motor2 = AFMS.getMotor( 3 );

 // definieer protocol voor afstandsbediening, voor meer zie voorbeeldcode SimpleReceiver.cpp 
  #define  DECODE_NEC  // Inclusief Apple en Onkyo, ook voor kleine Funduino afstandsbediening  
 //#define INFO // Om waardevolle informatie te zien van universele decoder voor pulsbreedte- of pulsafstandprotocollen 
  #define  IR_RECEIVE_PIN 2  // in plaats van #include &quot;PinDefinitionsAndMore.h&quot;
    #include   &amp;lt;Arduino.h&amp;gt;  
  #include   &amp;lt;IRremote.hpp&amp;gt;  

 // IR ontvanger signaal aangesloten op pin2, VCC op pin3, GND op pin4 
 int  IR_GND =  4 ;  
 int  IR_VCC =  3 ;

 int  x =  0 ;
 int  y =  0 ;
 int  links =  0 ;
 int  rechts =  0 ;
 int  code =  5555 ;
 int  speedL =  0 ;
 float  factor =  1.8 ;  // Correctie voor speedLevel 255/100 * 6V/VBatt 

 id   setup () {
  Serial  .begin  (9600 );
  Serial  .println ( &quot;Motortest! &quot;);
  Serial  .println ( &quot;Motorshield v2 - DC Motortest!&quot; );
  als  (!AFMS .begin ()) {          // create with the default frequency 1.6KHz 
     Serial . println ( &quot;Could not find Motor Shield. Check wiring.&quot; );
     while  ( 1 );
  }
  Serial  .println ( &quot;Motor Shield gevonden.&quot; );
  // Gewoon om te weten welk programma draait op mijn Arduino 
  Serial  .println (F( &quot;START &quot;  __FILE__  &quot; from &quot;  __DATE__  &quot;\rUsing library version &quot;  VERSION_IRREMOTE));
  // De ontvanger starten 
  IrReceiver .begin (IR_RECEIVE_PIN);  //, ENABLE_LED_FEEDBACK); 
  Serial  .print (F( &quot;Klaar om IR-signalen van protocollen te ontvangen: &quot; ));
  printActiveIRProtocols (&amp;amp;Serial );
  Serial  . print(F( &quot;op pin &quot; ));
  Serial  .println (IR_RECEIVE_PIN);  
  // initialiseer digitale pinnen als uitgang voor voeding 
  pinMode (IR_GND ,OUTPUT );
  pinMode (IR_VCC ,OUTPUT );
  digitalWrite (IR_GND ,LOW );
  digitalWrite (IR_VCC ,HIGH );    
}  // einde setup 

 void   loop () {
  if  (IrReceiver.decode()) {
      // Druk een korte samenvatting van ontvangen gegevens af 
      IrReceiver.printIRResultShort (&amp;amp;Serial );
      als  (IrReceiver.decodedIRData.protocol == UNKNOWN) {
           // We have an unknown protocol here, print more info 
          IrReceiver.printIRResultRawFormatted(&amp;amp; Serial , true);
      }
      Serial  .println ();
      /*
       * belangrijk!!! Schakel het ontvangen van de volgende waarde in,
       * omdat het ontvangen is gestopt na het einde van het huidige ontvangen gegevenspakket.
       */ 
      delay  (100 );  // Debounce, geen snel opnieuw proberen      
      IrReceiver.resume(); // Ontvangst van de   volgende waarde inschakelen
      /*
       * Controleer ten slotte de ontvangen gegevens en voer acties uit volgens het ontvangen commando
       */ 
  als  (IrReceiver.decodedIRData.command ==  0x46 )  {
     if  (code&amp;lt; 9000 )   code = code +  1000 ;         
     Serial . print ( &quot;Code = &quot; );
     Serial . println (code);
    }
  anders   als  (IrReceiver.decodedIRData.command ==  0x15 ) {
     if  (code&amp;gt; 2000 )   code = code -  1000 ;      
     Serial . print ( &quot;Code = &quot; );
     Serial . println (code);
    } 
  anders   als  (IrReceiver.decodedIRData.command ==  0x43 )  {
     if  ((code -1000 * int (code/ 1000 ))&amp;lt; 900 )  code = code +  100 ;      
     Serial . print ( &quot;Code = &quot; );
     Serial . println (code);
    }
  anders   als  (IrReceiver.decodedIRData.command ==  0x44 )  {
     if  (code -1000 * int (code/ 1000 ) &amp;gt;  200 )   code = code -  100 ;
     Serial . print ( &quot;Code = &quot; );
     Serial . println (code);
    }
  anders   als  (IrReceiver.decodedIRData.command ==  0x40 )  {
    code =  5555 ;
     Serial . print ( &quot;Code = &quot; );
     Serial . println (code);
    }
  anders  {
     Serial . print ( &quot;invalid code&quot; );
    }
  motor();
  }
}  // einde lus 

 void  motor(){
  int  speedLevel [9 ]={ -100 , -80 , -60 , -40 , 0 , 40 , 60 , 80 , 100 };
  y =  int (code /  1000 );
  x =  int ((code -  1000*y ) /  100 );
  speedL = speedLevel [y-1 ];
  Serial  .print ( &quot;code = &quot; );
  Serial . print (code);
  Serial  .print ( &quot; y = &quot;);
  Serial . print (y);
  Serial  .print (&quot;  x = &quot;);
  Serial . print (x);
  Serial  . print(&quot;  speedL = &quot;);
  Serial  .println (speedL);

  //Correctie van de snelheidsstappen voor bochten 
  als   (x==1 ){
    right = speedL+ 16 ;
    left = speedL -16 ;
  }
  anders   als  ( x==2 ){
    right = speedL+ 13 ;
    left = speedL -13 ;
  }
  anders   als  ( x==3 ) {
    right = speedL+ 10 ;
    left = speedL -10 ;
  }
  anders   als  ( x==4 ) {
    right = speedL+ 7 ;
    left = speedL -7 ;
  }
  anders   als  ( x==6 ) {
    right = speedL  -7 ;
    left = speedL+ 7 ;
  }
  anders   als  ( x==7 ) {
    right = speedL -10 ;
    left = speedL+ 10 ;
  }
  anders   als  ( x==8 ) {
    right = speedL -13 ;
    left = speedL+ 13 ;
  }
  anders   als  ( x==9 ) {
    right = speedL -16 ;
    left = speedL+ 16 ;
  }
  anders  {
    right = speedL;
    left = speedL;
  }

  //Invoer van de rijstappen voor &quot;links&quot; en &quot;rechts 
  Serial  .print ( &quot;links = &quot; );
  Serial . print (left);
  Serial  . print( &quot; rechts = &quot; );
  Serial  .println (rechts);

  als  (links &amp;lt;  40  &amp;amp; links &amp;gt;  -40 ) {
    motor1-&amp;gt; run (RELEASE);
  }
  als  (rechts &amp;lt;  40  &amp;amp; rechts &amp;gt;  -40 ) {
    motor2-&amp;gt; run (RELEASE);
  }
  als  ( links&amp;gt;=40 ) {
     if  (left&amp;gt; 100 ) left= 100 ;
      motor1-&amp;gt; run (FORWARD);
      motor1-&amp;gt; setSpeed (left * factor);
  }
  als  ( rechts&amp;gt;=40 ) {
     if  (right&amp;gt; 100 ) right= 100 ;
      motor2-&amp;gt; run (FORWARD);
      motor2-&amp;gt; setSpeed (right * factor);
  }
  als  (links&amp;lt;=  -40 ) {
     if  (left&amp;lt; -100 ) left= -100 ;
      motor1-&amp;gt; run (BACKWARD);
      motor1-&amp;gt; setSpeed (-left * factor);
  }
  als  (rechts&amp;lt;=  -40 ) {
     if  (right&amp;lt; -100 ) right= -100 ;
      motor2-&amp;gt; run (BACKWARD);
      motor2-&amp;gt; setSpeed (-right * factor);
  }
}  // einde motor 
 
 Uitleg van de programmacode voor de RC Car 
 Na het opnemen van de bibliotheken voor het Motor Shield V2 en IRremote, worden twee motoren geïnitialiseerd met het nummer op het aansluitblok van de controller en worden enkele globale variabelen gedeclareerd (datatype) en geïnitialiseerd (beginwaarde). 
 In de functie  setup(  ) worden de seriële interface en de IR-ontvanger geïnitialiseerd en worden de pinnen voor de voeding van de IR-ontvanger ingesteld als uitgangen met de status HIGH of LOW. 
 In de  loop()  functie wordt eerst het signaal van de IR afstandsbediening ontvangen, daarna wordt de code voor de motorbesturing gewijzigd afhankelijk van de ingedrukte toets. De cursortoetsen omhoog en omlaag veranderen het eerste cijfer, links en rechts het tweede cijfer van de code in het waardebereik van 1 tot 9. De toets X leidt tot stilstand met code 5555. Het derde en vierde cijfer van de code zijn momenteel nog niet significant. Aan het einde wordt de zelfgedefinieerde functie  motor()  aangeroepen zonder argumenten, omdat we de variabelen globaal hadden gedefinieerd, d.w.z. geldig in alle functies. 
 In de zelfgedefinieerde functie  motor() , die we ook in andere configuraties met andere afstandsbedieningen zullen gebruiken, worden de snelheidsstappen voor de linker- en rechtermotor bepaald vanuit de code. De procentuele waarde van het snelheidsniveau wordt uiteindelijk omgezet in de PWM-waarde voor  setSpeed  met behulp van de factor die aan het begin is gedefinieerd. 
 &amp;nbsp;  
 De robotauto is nu klaar voor gebruik. Hij werkt prima zolang je de optische verbinding tussen de afstandsbediening en de IR-ontvanger in stand kunt houden. Tijdens het rijden op de weg heb ik echter ervaren dat sterk zonlicht de ontvangst belemmert. Daarom stap ik over op radioafstandsbediening. Tot snel. 
                ]]>
            </content>

                            <updated>2022-06-09T07:30:00+02:00</updated>
                    </entry>

    
    
        <entry>
            <title type="text">RC auto bouwen voor Arduino: Autonoom voertuig - Deel 1</title>
            <id>https://funduinoshop.com/nl/rc-auto-bouwen-voor-arduino-autonoom-voertuig-deel-1</id>
            <link href="https://funduinoshop.com/nl/rc-auto-bouwen-voor-arduino-autonoom-voertuig-deel-1"/>
            <summary type="html">
                <![CDATA[
                
                                            Welkom bij een nieuwe blogserie over robotauto&#039;s. In het eerste deel maken we kennis met de basis, om zo te zeggen als hulpmiddel bij de aankoopbeslissing, welk chassis, welke microcontroller en welk type afstandsbediening...
                                        ]]>
            </summary>
            <content type="html">
                <![CDATA[
                  Inzicht in de mobiliteit van de toekomst met robotauto&#039;s  
 Welkom bij een nieuwe blogserie over robotauto&#039;s. In het eerste deel maken we als het ware kennis met de basis, als hulpmiddel bij de besluitvorming over welk chassis, welke microcontroller en welk type afstandsbediening het meest geschikt zijn. 
 Twee of vier wielen - de voor- en nadelen van het bouwen van RC auto&#039;s voor Arduino tegen elkaar afwegen 
 Laten we beginnen met het chassis en kijken naar de voor- en nadelen van de goedkope kits met twee of vier aangedreven wielen. Ze hebben allemaal elektromotoren gemeen, dus deze alleen zijn geen selectiecriterium. De robotauto&#039;s met twee wielen zijn in eerste instantie goedkoper omdat ze niet de kosten hebben van nog eens twee elektromotoren en wielen. In plaats daarvan hebben ze één of twee steunwielen, die de RC auto&#039;s een grote wendbaarheid geven. Dus als je wilt &quot;draaien op de plaat&quot;, dan is dit de manier om te gaan. In deze prijsklasse van gelijkstroommotoren kun je echter niet verwachten dat ze vloeiend lopen met een hoge precisie. Daarom is het rechtuit lopen niet zo goed als bij de versie met vier wielen. Vooral bij het opstarten vertonen de motoren een grotere richtingsstabiliteit, maar bochten nemen is alleen mogelijk met aanzienlijk grotere radii. Een ander voordeel van het chassis met vier wielen is meer ruimte voor accu&#039;s, microcontroller, eventueel DC/DC converter en sensoren. 
   
 De keuze van microcontroller voor het bouwen van een RC auto 
 De volgende vraag heeft betrekking op de microcontroller en hoe deze wordt geprogrammeerd. Een microcomputer van het type Raspberry Pi heeft bijvoorbeeld de grootste rekenkracht op het kleine chassis. Vooral wat betreft afstandsbediening bieden de types met ingebouwde WiFi en Bluetooth voordelen en je kunt zelfs beelden van een Raspberry Pi camera doorsturen. Programmeren doe je in de veelgebruikte programmeertaal Python, maar het opstarten van het op Linux gebaseerde besturingssysteem Raspberry Pi OS duurt ongeveer een minuut. Een ander nadeel van de Raspis (kort voor Raspberry Pi) is de noodzaak van een goede 5V voeding. Hiervoor is een goede DC/DC converter nodig. 
 In verband met het onderwerp Bluetooth afstandsbediening wordt in een latere aflevering een voorbeeld getoond met de Raspberry Pi en de Android APP BlueDot van Martin O&#039;Hanlon (medewerker van de Raspberry Pi Foundation). 
 Het opstarten van het systeem gaat veel sneller met een microcontroller gebaseerd op de ATmega 328, bijvoorbeeld de  Funduino Uno  of  Funduino&amp;nbsp;Nano . Ongeveer een seconde na het inschakelen kun je beginnen met de besturingsingangen, je hoeft niet op te starten vanaf een microSD-kaart, het programma dat eenmaal is geüpload wordt niet vergeten. De ingangsspanning kan tussen 5 en 9 volt liggen. Programmeren doe je in de  Arduino IDE , een ontwikkelomgeving die lijkt op C/C++ (voor meer uitleg zie  https://funduino.de/hardware-software) . Daarom zullen we eerst kijken naar voorbeelden met de Funduino Uno R3, waarvoor perfecte motorcontrollers beschikbaar zijn als zogenaamde shields. Deze worden eenvoudig op de Uno geplugd en zogenaamde bibliotheken helpen ons bij het programmeren. 
 Excursus: Wat is een motorcontroller/motordriver? 
 Vanwege de zeer beperkte stroom aan de uitgangen van de microcontrollers hebben grotere verbruikers - en dit omvat alle soorten elektromotoren en relais - een externe voeding nodig en een elektronisch circuit dat het stuursignaal van de microcontroller omzet. De eisen voor deze geïntegreerde schakeling zijn echter nog hoger: aan de ene kant moet deze een variabele snelheid van de motor mogelijk maken en aan de andere kant willen we ook de draairichting van de motor kunnen veranderen door de polariteit om te keren. 
 Met IC L293D als voorbeeld zullen we nu uitleggen hoe het werkt. In principe is dit DIP-component met zestien &quot;pootjes&quot;/aansluitingen voldoende als motorcontroller voor twee elektromotoren.     
 Het IC krijgt spanning via de aansluitingen VCC1 en Ground. We kunnen deze spanning aftappen op de microcontroller. De voeding voor de motoren gaat via VCC2 en Ground. Hier sluiten we de batterij(en) op aan (bijvoorbeeld 6 of 9 volt). Bij grotere motoren moet het IC gekoeld worden, bij de kleine gele uit de kit niet. 
 We sluiten de ene motor aan op 1Y en 2Y, de corresponderende stuurlijnen naar de MCU (Micro Controller Unit) zijn 1A, 2A en 1,2EN. 
 Het omkeren van de polariteit van de motoren om de rijrichting te veranderen gebeurt in principe met een zogenaamde H-schakeling. We realiseren dit met onze microcontroller door twee uitgangspennen (deze gaan naar 1A en 1B) op HIGH of LOW te zetten. 
 De snelheidsverandering wordt gedaan zoals in  voorbeeld nr. 04 - pulserende LED  met pulsbreedtemodulatie (PWM), d.w.z. het zeer snel in- en uitschakelen van de spanning. Daarom hebben we voor aansluiting 1,2EN (&quot;Enable&quot;) een PWM-geschikte uitgang op de MCU nodig (dit zijn de pinnen met de tilde ~). 
 Voor de tweede motor worden de aansluitingen 3A, 4A en 3,4EN aangesloten op pinnen van de MCU. 
 De afbeelding rechts (Logic Diagram) legt uit hoe het IC werkt. We zien de vier versterkers die de ingangssignalen 1A tot 4A respectievelijk met de accuspanning aan de uitgangen 1Y tot 4Y geven. Dit gebeurt echter alleen als de PWM ingangen 1,2EN en 3,4EN ook HOOG worden geschakeld. 
 Twee van deze IC&#039;s L293D zijn geïnstalleerd op het Motor Shield V1, zodat hier maximaal vier motoren kunnen worden aangesloten. 
 Om niet te veel pinnen te gebruiken, zit er een zogenaamd schuifregister (SN74HC595) in het midden van het Motor Shield V1. Uitleggen hoe het werkt zou buiten het bestek van dit artikel vallen. Gelukkig hebben onze collega&#039;s van Adafruit in New York het meeste programmeerwerk voor ons gedaan en een bibliotheek meegeleverd om de motoren eenvoudig aan te sturen.    
 Afbeelding Motor Shield V1 met modificatie:   Gesoldeerde socket connectoren (vrouwelijke connectoren) voor het aansluiten van extra apparatuur 
 &amp;nbsp; 
 Het Motor Shield V2 kan ook maximaal vier motoren aansturen en gebruikt een vergelijkbaar IC, maar dan voor het aansluiten van de stuurlijnen de zogenaamde I2C bus met de aansluitingen SDA (=Serial Data) op de analoge ingang A4 en SCL (=Serial Clock) op A5. Adafruit heeft hiervoor ook een geschikte programmabibliotheek ontwikkeld en beschikbaar gesteld. 
   
 Afbeelding Motor Shield V2 met modificatie:  Gesoldeerde busconnectoren (vrouwelijke connectoren) voor het aansluiten van extra apparatuur 
 Op beide Motor Shields zijn extra vrouwelijke connectoren gesoldeerd om later Bluetooth of 433 MHz zenders/ontvangers of sensoren aan te sluiten. Meer hierover in een van de volgende blogposts. 
 Voeding en besturing voor een RC auto voor Arduino microcontrollers 
 Als we willen dat onze robotauto zelfstandig rijdt, moeten we hem loskoppelen van de USB-poort van de PC. Dit betekent dat de stroomvoorziening ook wegvalt. Vanaf nu worden het commandocentrum (MCU) en de elektromotoren gevoed door batterijen of oplaadbare accu&#039;s. De motoren zijn verreweg de grootste verbruikers. De batterijhouder die bij de meeste kits wordt geleverd is voor vier Mignon (AA) batterijen, dus 6 volt voor de MCU en de motoren. Als je oplaadbare batterijen wilt gebruiken, moet je of zes Mignon (AA) batterijen of twee 18650 lithium-ion batterijen gebruiken vanwege het lagere voltage. 
 Als besturing zullen we in de volgende afleveringen eerst kennismaken met afstandsbedieningen met infrarood afstandsbediening, Bluetooth transceivers met smartphone APP of een tweede microcontroller ook met de BT transceiver HC-05 en met radiografische afstandsbedieningen met 433Mhz en 2,4 GHz. De blogserie wordt afgesloten met aspecten van autonoom rijden, voornamelijk obstakeldetectie. Tot snel. 
 &amp;nbsp; 
                ]]>
            </content>

                            <updated>2022-06-03T11:00:00+02:00</updated>
                    </entry>

    
    
        <entry>
            <title type="text">WISENT-klasse luchtkussenlandingsvaartuig</title>
            <id>https://funduinoshop.com/nl/wisent-klasse-luchtkussenlandingsvaartuig</id>
            <link href="https://funduinoshop.com/nl/wisent-klasse-luchtkussenlandingsvaartuig"/>
            <summary type="html">
                <![CDATA[
                
                                            Op veel modelboten shows zijn de meeste schepen tot in het kleinste detail en van zeer hoge kwaliteit gebouwd. Het is jammer dat dit vaak over het hoofd wordt gezien door de toeschouwers. Spectaculaire en niet alledaagse modellen...
                                        ]]>
            </summary>
            <content type="html">
                <![CDATA[
                 Modelbouw: WISENT-Klasse Landing Craft Air Cushion &quot;LCAC&quot; 
 Op veel modelshows zijn de meeste schepen gebouwd met een zeer hoge kwaliteit en tot in het laatste&amp;nbsp;detail. Het is jammer dat dit vaak over het hoofd wordt gezien door&amp;nbsp;de toeschouwers. Spectaculaire en niet alledaagse&amp;nbsp;modellen trekken eerder de aandacht. Zonder&amp;nbsp;twijfel zijn de hovercrafts daar één van.&amp;nbsp;Waarom bouw je geen model van de grootste in zijn soort?&amp;nbsp;Met een waterverplaatsing van 550 ton is de Zubr klasse (Wisent klasse) een reus.&amp;nbsp;Er is een plastic model in 1:110. Dat was te klein voor mij. ik vond 1:75 precies goed&amp;nbsp;. Dus bouw je eigen model! 
 Bouw je eigen hovercraft: Maar hoe? 
 Het boek &quot;RC Luftkissenboote&quot; van&amp;nbsp;K.Jackson &amp;amp; M.Porter van uitgeverij VTH was een waardevolle hulp. Welke technische&amp;nbsp;componenten het model moesten laten zweven, moest worden uitgeprobeerd op&amp;nbsp;. Berekeningen waren hier niet erg nuttig. Aan het eind van de tekst staat een&amp;nbsp;lijst van de gebruikte batterij- en aandrijftechniek. Er bestaat geen bouwtekening voor&amp;nbsp;dit type, dus moesten er foto&#039;s worden gebruikt en veel&amp;nbsp;berekeningen worden gemaakt. 
 De schaal werd gebouwd met een PU-schuimplaat en een powerlijm&amp;nbsp;van de bouwmarkt. Dit ging vrij snel. Een 70 mm waaier, die vaak voor polystyreen modelvliegtuigen wordt gebruikt, zou de Wisent&amp;nbsp;moeten laten &quot;zweven&quot;. De luchtrok is gemaakt met rip-nylon.&amp;nbsp;Een materiaal dat wordt gebruikt voor tentzeilen en door parachutisten&amp;nbsp;. 
 De stroomvoorziening van de hovercraft 
 Met de geplande afmetingen van 900 x 400 mm was het vanaf het begin duidelijk dat het geen energiezuinig model zou worden. Een 18 V accu met 2,5 Ah uit de serie&amp;nbsp;gereedschap - gecombineerd met een spanningsomvormer - moet de gewenste spanning van gelijkmatig 12 V leveren.&amp;nbsp;Een tweede spanningsomvormer regelt de 12 V weer naar 9 V&amp;nbsp;en voorziet zo de propeller en de nautische verlichting van een&amp;nbsp;gelijkmatige spanning.&amp;nbsp;Zo komt de hele stroomvoorziening uit één accu.&amp;nbsp;Twee van de buitenste propellers zijn ontworpen voor voortstuwing, de middelste&amp;nbsp;motor is omgekeerd en deze propeller is &quot;ondersteboven&quot; op de  aandrijfas gestoken. Achteruit rijden is dus zonder problemen mogelijk.&amp;nbsp;De drie aandrijfgondels zijn voor mij geprint door het bedrijf - Ray Haller van Eibenstock - op&amp;nbsp;de 3D-printer. Ze worden synchroon aangestuurd door een servo.&amp;nbsp;Dit aandrijfconcept heeft zichzelf bewezen.&amp;nbsp;De propellers van 3,5 inch (ongeveer 9 cm) komen uit het assortiment reserveonderdelen voor quadcopters.&amp;nbsp;Ondanks de consequente lichtgewicht constructie weegt het model 4,7 kg met alle hulpstukken&amp;nbsp;. Dit maakt landen mogelijk, maar het is niet geschikt voor tochten&amp;nbsp;op het land. Zelfs het origineel is 99 % op het water&amp;nbsp;. Er zijn 18 van deze &quot;reuzenbizon&quot; gebouwd.&amp;nbsp;Oekraïne, Korea, Rusland, China en Griekenland hebben ze gebruikt. 
 Gebruikte componenten van Funduino: 
 1x&amp;nbsp; R4-E-0-1 :  EDF Turbine Impeller 70mm ADF70-28XL PLUS KV3900  1x R6-C-7-4:  Hobbywing SkyWalker 60A UBEC Brushless ESC&amp;nbsp;(40A controller wordt te heet)  3x R5-E-4-3:  Ready ToSky 1306 KV3100 voor 150 quadcopter  3x R6-E-1-4:  Hobbywing SkyWalker 12AE Brushless ESC  2x R12-B-8-2:  DC-DC Step Down Module 300W 20A 6-40V naar 1,2-36V  
 1x accu 2,5 Ah 18 V van Einhell (rijtijd ca. 15 min) Het model wordt bestuurd met een Carson 6-kanaals afstandsbediening 2,4 GHz. 
                ]]>
            </content>

                            <updated>2022-05-04T15:30:00+02:00</updated>
                    </entry>

    
</feed>
