Inhoudsopgave:

Bluetooth RC-auto met STM32F103C en L293D -- Goedkoop - Ajarnpa
Bluetooth RC-auto met STM32F103C en L293D -- Goedkoop - Ajarnpa

Video: Bluetooth RC-auto met STM32F103C en L293D -- Goedkoop - Ajarnpa

Video: Bluetooth RC-auto met STM32F103C en L293D -- Goedkoop - Ajarnpa
Video: Arduino Bluetooth RC car (4WD) 2024, Juni-
Anonim
Image
Image
Vernietig de Battery Eater!
Vernietig de Battery Eater!

Ik heb een Bluetooth Arduino-auto gemaakt zoals hier afgebeeld, door Ardumotive_com. Het probleem dat ik had, waren batterijen en hun gewicht, evenals hun kosten. Sindsdien zijn goedkope powerbanks voor mobiele telefoons zeer betaalbaar geworden. Het enige wat ik moest doen was het gewicht verminderen. Omdat ik goedkoop ben, ben ik overgestapt op de STM32F103C Microcontroller. De STM32F103C Microcontroller kan worden gekocht voor minder dan $ 2, en is veel kleiner dan een Arduino. Ik heb een beetje van de codering gewijzigd om ook met de STM32F103C te werken.

Benodigdheden

  • Een goedkope op afstand bestuurbare auto die batterijen eet. Ja, net als degene die Ardumotive_com gebruikt. Je schakelt het systeem uit en gebruikt in plaats daarvan een powerbank voor je telefoon. Als je de middelen hebt om je eigen chassis te bouwen, doe het dan. Ik ging naar de speelgoedwinkel verderop in de straat en kocht een goedkope auto voor minder dan $ 10. De auto vreet batterijen en de afstandsbediening vreet batterijen - perfect voor verbetering.
  • Een telefoon powerbank-- Ze zijn nu super goedkoop. Verdwaald van de powerbanks die een aan / uit-knop aan de zijkant hebben. U kunt uw auto niet volgen en de knop ingedrukt houden. Dat is gek.
  • Een L293D-chip -- Dit is de dubbele H-brug die de elektromotoren aanstuurt.
  • Een HC-06 Bluetooth-module
  • Een schakelaar-- Ik gebruikte een eenvoudige aan/uit-schakelaar.
  • Sommige draad - telefoondraad zou prima zijn, maar een beetje grotere gestrande 20 gauge zou beter zijn.
  • Een Proto Board of een stuk plastic of karton om je Blue Pill en L293D op te monteren. Ik ben goedkoop, dus ik bedacht een iets ander systeem met dun golfkarton, zoals uit een gloeilampendoos.
  • Twee goedkope USB-oplaadkabels - deze kunnen worden gekocht bij een Dollar Tree. Gebruik niet je mooie programmeerkabel. De ene zal worden afgesneden voor de aan / uit-schakelaar en de andere zal de batterij opladen.

Optioneel

  • 4 LED's - als u koplampen en achterlichten wilt.
  • 4 220 Ohm-weerstanden - voor de LED's op een 3.3v-systeem.
  • Een piëzo of kleine luidspreker voor een hoorn.

Gereedschap

  • Soldeerbout en soldeer
  • Heet lijmpistool-- Mijn dochter is een hete lijmpistool Ninja!
  • Draadstrippers en kniptangen
  • OPMERKING: als je de kartontechniek gebruikt die ik gebruik in plaats van een protobord, heb je een Dremel of een kleine boor nodig

Stap 1: Vernietig de Battery Eater

Vernietig de Battery Eater!
Vernietig de Battery Eater!

Het is tijd om plezier te hebben met het vernietigen van de batterijvreter! Ja, DAT DING! Voel je trots dat je je steentje bijdraagt om de wereld groener te maken. Oké, dat is even zoeken, maar hoe dan ook… Ga naar het kader.

Hierboven is dezelfde eenheid die ik de Arduino-versie heb gemaakt. De Arduino-versie gebruikte serieuze batterijstroom die de auto zwaarder maakte. Dus ik nam het terug naar het frame. Ik had wat spatborden van een plastic fles en hete lijm toegevoegd en de carrosserie aangepast. Later meer over het lichaam.

Zodra u het frame met de motoren en het stuur vrij hebt, zoekt u uit welke kant van de motoraansluitingen dat zijn. Gebruik een batterij of 5v-oplader om de motor te testen.

Op de stuurmotor, wanneer de wielen naar rechts draaien, label de positieve batterijdraad "3" en de negatieve draad, "6".

Op de aandrijfmotor, wanneer de wielen naar voren draaien, label de positieve batterijdraad "14" en de negatieve draad "11".

Stap 2: De code in Arduino IDE

De code in Arduino IDE
De code in Arduino IDE
De code in Arduino IDE
De code in Arduino IDE

Het is misschien het beste als u eerst een prototype van de elektronica van uw auto maakt op een breadboard.

Oké, dit is een van de lastige onderdelen. De "Blue Pill" kan niet via de USB-poort worden geprogrammeerd. Ik heb geen eenvoudigere programmeer-uitleg van de "Blauwe Pil" gevonden dan de YouTube-video van Joop Brokking. Het legt alles uit wat je moet weten, inclusief Roger Clarke's STMduino-bibliotheek. Er is een manier om een bootloader te installeren, zodat je de USB kunt gebruiken om de "Blue Pill" te programmeren, maar je moet de bootloader toch via de seriële bus programmeren.

Helaas wordt de seriële bus ook gebruikt door de Bluetooth-adapter. Het programma moet eerst worden geïnstalleerd via de seriële bus, PA9- en PA10-pinnen, via een FTDI, daarna kunt u al uw instellingen controleren met de Bluetooth-adapter.

Gebruik een breadboard en leg alles op het breadboard neer, net als de fritzing-schets hierboven. Ontkoppel de seriële TX- en RX-lijnen van de Bluetooth-adapter op de PA9- en PA10-pinnen van de STM32F103C. Haak in uw FTDI en programma. Zorg ervoor dat de seriële buslijnen worden gekruist, RX naar Tx en Tx naar RX. De een ontvangt en de ander geeft.

Zodra het programma is geladen, kunt u de seriële console openen en verzenden

om te zien of de lichten werken. Als de lichten werken, kunt u sturen

om ze weer uit te schakelen.

Zet uw auto op een blok om de banden op te heffen en stuur

De wielen moeten vooruit. Als dat niet het geval is, keert u de draden om. Onthoud hoe we de draden eerder hebben gelabeld. De corresponderende pinnen van de L293D moeten overeenkomen.

Om te stoppen, stuur

Laten we eens kijken naar de belangrijke wijzigingen in de code.

In het becommentarieerde gedeelte, te beginnen, zou u de oorspronkelijke maker van de bestanden moeten zien, van Ardumotive. De volgende paar opmerkingen leggen uit waar ik een beetje heb veranderd om de STM32F103C weer te geven.

/* * Gemaakt door Vasilakis Michalis // 12-12-2014 ver.2

* Project: Bedien RC Car via Bluetooth met Android Smartphone * Meer informatie op https://www.ardumotive.com * * Deze code aangepast naar STM32F103 door Jim Garbe, [email protected] * Meer info op https://github.com/jgarbe/RCCAR_STM32F103C * Merk op dat 8-bits waarden 0-255 zijn gewijzigd in * geven 16-bits waarden 0-65535 weer */ /******************** ********** * Op de STM32 werkt analoog schrijven nog steeds op 8-bit 255, * Maar u kunt de volledige functie van het PWM-bereik, 0-65535, krijgen door de pin als PWM te declareren *AND pwmWrite() gebruiken in plaats van analogWrite() *******************************/

Het meest opvallende is dat de pinnen niet op dezelfde manier worden genoemd tussen de Arduino en de STM32F103C. We declareren de pinnen met behulp van de volgende reeks regels. Er is nog één pin over die helemaal naar beneden in de lus wordt gedeclareerd. Op lijn 197 wordt PA5 gebruikt om het batterijniveau af te lezen.

////L293 Verbinding

const int motorA1 = PB6; // naar pin 15 van L293 const int motorA2 = PB7; // naar pin 10 van L293 const int motorB1 = PB8; // naar pin 7 van L293 const int motorB2 = PB9; // naar Pin 2 van L293 // Leds aangesloten op STM32F103C Pin A12 const int lichten = PA12; // Zoemer / Luidspreker naar Arduino UNO Pin A8 const int zoemer = PA8; //Bluetooth (HC-06 JY-MCU) Staat pin op pin A11 van STM32F103C const int BTState = PA11;

Gebruik ook analogWrite(); zal nog steeds werken op de "BluePill". Maar het is beter om de PWM-pinnen te declareren met, pinMode(, PWM);

Gebruik dan

pwmWrite(,);

OPMERKING: 8-bit = 0-255, 16-bit = 0-65535

Regels 32-44 zijn wijzigingen aan de batterij. Als u de batterijniveaucontrole gaat gebruiken, moet u een spanningsdeler gebruiken voor de batterij die u heeft. Dit deel komt niet terug in de Fritzing-schets. Op Youtube staan genoeg uitleg over het maken van een spanningsdeler. Omdat de STM32F103C een 3.3v-chip is, heb ik de code hier aangepast om fysiek een spanningsdeler te gebruiken. De Arduino kan wat hogere spanningen verdragen via de meegeleverde ADC's, maar de "Blue Pill" kan dat niet.

/* Batterijniveau wordt gecontroleerd op pin PA5

* Veranderde de volgende regel voor de STM32F103C omdat de ADC niets aankan * meer dan 3,3 v * Ik heb het zojuist becommentarieerd * Een spanningsdeler, met behulp van twee weerstanden, moet worden berekend en gebruikt * om de ADC-ingang verderop in de code te meten * voorbeeld: * GND---2K weerstand -----------------1K weerstand ------5v * | * | * 3.3v */ // const float maxBattery = 3.3; // Verander de waarde naar uw maximale batterijspanningsniveau!

Stap 3: Zet het allemaal samen

Voeg het allemaal samen
Voeg het allemaal samen
Voeg het allemaal samen
Voeg het allemaal samen
Voeg het allemaal samen
Voeg het allemaal samen
Voeg het allemaal samen
Voeg het allemaal samen

Ik gebruik meestal een proto-board om de stukjes te plaatsen en soldeer tussen de gaten om alles te verbinden. Soms "deadbug" soldeer ik alles samen voor meer een Frankenstein/3D prop soldeerlook.

Ik koos voor deze hybride methode om het apparaat schoon en lichtgewicht te maken - en natuurlijk GOEDKOOP!

Deze methode maakt het ook mogelijk om te labelen. Een van de ergste onderdelen van deadbug-solderen is wanneer je vanaf de onderkant naar een IC-chip kijkt en vergeet welke pin wat is.

De foto's hierboven spreken een beetje voor zich. Ik denk dat het moeilijkste is om het dun genoeg karton te vinden om kuiltjes te maken en tegelijkertijd stijf te zijn. Je kunt ook plastic gebruiken, maar het markeren is iets moeilijker. Zodra ik de pinnen op het bord druk en de kuiltjes markeer, gebruik ik een Dremel om elk gaatje door te boren.

Mocht het je nog niet zijn opgevallen, ik heb alleen de lampjes als accessoire stekker op het bord. Ik gebruik de batterij-indicator niet, noch de pieper. Het is omdat mijn project voor een ander doel is. Het spreekt voor zich zodra u het eindresultaat met de carrosserie ziet. …maar dit brengt een ander idee met zich mee, er zijn veel ongebruikte pinnen op dit project. Misschien een kofferbakopener, autodeuropener, vuurwerkontsteker, … …of zelfs een mini-Galvani-Edison Luminiferous Aether Disturbance Generator!

Zodra al het solderen is voltooid, test u voordat u de verbindingen heet lijmt voor spanningsverlichting op de draden.

Ik heb dezelfde Android-app gebruikt als Ardumotive, deze is te vinden op

Nadat je de functies van de auto hebt getest, is het tijd om de accu te plaatsen en over te schakelen. Ga naar de volgende stap.

Stap 4: Batterij en schakelaar

Oké, dit is waar je mijn plan niet precies kunt volgen.

Op de een of andere manier zul je een goede plek moeten vinden om je batterij op de auto te plaatsen, met een manier om de batterijbank op te laden met een dongle, of een manier om de batterijstekker direct op te laden. In de inleidende video heb ik de batterij en microcontroller gewoon op het frame geplakt en uitgevoerd. Toen ik wilde stoppen, heb ik gewoon de batterij losgekoppeld. Het probleem met deze opstelling is de bederfelijkheid van de stekkers op je USB-kabel en/of je powerbank. Het is beter om een schakelaar te hebben.

U zult ook een goede plaats moeten vinden voor de schakelaar waar de carrosserie nog toegang zal geven. Ik gebruikte een gewone drukknopschakelaar (geen momentschakelaar) en monteerde deze op de onderkant van het frame waar het originele batterijcompartiment zich bevindt.

Je zult een USB-kabel doormidden moeten knippen en de schakelaar tussen de batterij en de STM32F103C USB-poort moeten zetten. Ja, u kunt de STM32F103C van stroom voorzien via de USB-poort. Je kunt hem gewoon niet programmeren via de USB-poort. Ik heb opnieuw een Dremel gebruikt om wat gaten te boren voor de soldeerpennen van de schakelaar. Eenmaal gesoldeerd, gebruikte ik Hot Glue, opnieuw voor het versterken van de verbindingen.

Stap 5: Zet uw carrosserie op het frame

OK, ik zei dat ik de originele Arduino-versie van deze auto opnieuw had gebruikt. Het eigenlijke eindproduct was dus een toneelrekwisiet voor het ballet "De Notenkraker", uitgevoerd door ons plaatselijke balletgezelschap. In de openingsscène rende een muis over het podium met de toevallige magie van Drosselmeyer. Ik gebruikte een IKEA rat en plaatste deze bovenop het frame, Arduino en een veel groter batterijpakket. De prop was zwaar en niet oplaadbaar. Dit is veel beter!

Veel plezier met je auto. Onthoud dat er veel meer pinnen op de STM32F103C zijn die kunnen worden gebruikt. Misschien een stinkdier dat lijkt op dat in 'Toy Story 4'.