Cuprins:

Mașină RC Bluetooth cu STM32F103C și L293D - Ieftin: 5 pași
Mașină RC Bluetooth cu STM32F103C și L293D - Ieftin: 5 pași

Video: Mașină RC Bluetooth cu STM32F103C și L293D - Ieftin: 5 pași

Video: Mașină RC Bluetooth cu STM32F103C și L293D - Ieftin: 5 pași
Video: STM32 Arduino IDE Tutorial Getting started with stm32 2024, Septembrie
Anonim
Image
Image
Distrugeți bateria!
Distrugeți bateria!

Am făcut o mașină Bluetooth Arduino ca cea descrisă aici, de Ardumotive_com. Problema pe care o aveam era bateriile și greutatea lor, precum și cheltuielile lor. De atunci, băncile de energie ieftine pentru telefoanele mobile au devenit foarte accesibile. Tot ce trebuia să fac era să reduc greutatea. Fiind că sunt ieftin, am trecut la microcontrolerul STM32F103C. Microcontrolerul STM32F103C poate fi cumpărat cu mai puțin de 2 USD și este mult mai mic decât un Arduino. Am schimbat puțin codificarea pentru a lucra și cu STM32F103C.

Provizii

  • O mașină ieftină cu telecomandă care consumă baterii. Da, la fel ca cea pe care Ardumotive_com o folosește. Veți opri sistemul și veți folosi în schimb o bancă de alimentare a telefonului. Dacă aveți resursele necesare pentru a vă construi propriul șasiu, folosiți-l. M-am dus la magazinul de jucării de pe stradă și am cumpărat o mașină ieftină cu sub 10 USD. Mașina mănâncă baterii, iar telecomanda consumă baterii - perfectă pentru îmbunătățire.
  • O bancă de telefonie - Acum sunt foarte ieftine. Abateți-vă de la băncile de alimentare care au un buton de alimentare pe lateral. Nu veți putea să vă urmăriți mașina și să țineți apăsat butonul. E o prostie.
  • Un cip L293D - Acesta este dublu H-Bridge care va controla motoarele electrice.
  • Un modul HC-06 Bluetooth
  • Un comutator - Am folosit un comutator simplu de pornire / oprire.
  • Unele cabluri Wire - telefon ar fi în regulă, dar un ecartament de 20 mai puțin mai mare ar fi mai bun.
  • Un Proto Board sau o bucată de plastic sau carton pentru a vă monta Blue Pill și L293D. Sunt ieftin, așa că am venit cu un sistem puțin diferit, cu carton ondulat subțire - ca dintr-o cutie cu becuri.
  • Două cabluri ieftine de încărcare USB - Acestea pot fi achiziționate de la Dollar Tree. Nu utilizați cablul dvs. de programare. Una va fi tăiată pentru comutatorul de pornire / oprire, iar cealaltă va încărca bateria.

Opțional

  • 4 LED-uri - dacă doriți faruri și stopuri.
  • 4 rezistențe de 220 Ohm - pentru LED-urile unui sistem de 3.3v.
  • Un difuzor piezo sau mic pentru un corn.

Instrumente

  • Fier de lipit și lipit
  • Hot Glue Gun - Fiica mea este un Hot Glue Gun Ninja!
  • Dispozitive de decojire și decupare a firelor
  • NOTĂ: dacă utilizați tehnica de carton pe care o folosesc mai degrabă decât o placă proto, veți avea nevoie de un Dremel sau un burghiu mic

Pasul 1: Distrugeți bateria

Distrugeți bateria!
Distrugeți bateria!

Este timpul să te distrezi distrugând bateria! Da, GUT THING THING! Simțiți-vă mândru că vă faceți partea pentru a face lumea mai ecologică - OK, asta este o întindere, dar oricum … Treceți la cadru.

Mai sus, este aceeași unitate pe care am făcut-o versiunea Arduino. Versiunea Arduino a folosit o baterie serioasă care a făcut mașina mai grea. Așadar, l-am dus înapoi la cadru. Am adăugat niște aripi dintr-o sticlă de plastic și lipici fierbinte și am personalizat corpul. Mai multe despre corp mai târziu.

După ce aveți cadrul cu motoarele și direcția goale, găsiți care sunt părțile terminalelor motorului. Folosiți o baterie sau un încărcător de 5V pentru a testa motorul.

Pe motorul de direcție, atunci când roțile se întorc la dreapta, etichetați firul pozitiv al bateriei „3” și firul negativ „6”.

Pe motorul de acționare, când roțile se rotesc înainte, etichetați firul pozitiv al bateriei „14” și firul negativ „11”.

Pasul 2: Codul din Arduino IDE

Codul în IDE Arduino
Codul în IDE Arduino
Codul în IDE Arduino
Codul în IDE Arduino

Poate fi cel mai bine dacă prototipați mai întâi dispozitivele electronice ale mașinii dvs. pe o placă de calcul.

OK, aceasta este una dintre părțile dificile. „Pilula albastră” nu poate fi programată prin portul USB. Nu am găsit o explicație mai ușoară de programare a „Blue Pill” decât videoclipul Youtube al lui Joop Brokking. Acesta explică tot ce trebuie să știți, inclusiv biblioteca STMduino a lui Roger Clarke. Există o modalitate de a instala un bootloader, astfel încât să POȚI folosi USB-ul pentru a programa „Blue Pill”, dar trebuie să programezi bootloader-ul prin Serial Bus oricum.

Din păcate, Serial Bus este folosit și de adaptorul Bluetooth. Programul trebuie instalat prin Serial Bus, PA9 și PA10 pin, mai întâi printr-un FTDI, apoi puteți verifica toate setările cu ajutorul adaptorului Bluetooth.

Utilizați un panou și aranjați totul pe panou, la fel ca schița plăcută de mai sus. Deconectați liniile Serial TX și RX ale adaptorului Bluetooth de pe pinii PA9 și PA10 ai STM32F103C. Cuplați FTDI și programul dvs. Asigurați-vă că liniile Serial Bus sunt traversate, RX la Tx și Tx la RX. Unul primește și celălalt dă.

Odată ce programul este încărcat, puteți deschide consola serial și trimite

pentru a vedea dacă luminile funcționează. Dacă luminile funcționează, puteți trimite

din nou pentru a le opri din nou.

Puneți mașina pe un bloc pentru a ridica anvelopele și trimiteți

Roțile ar trebui să meargă înainte. Dacă nu, inversați firele. Amintiți-vă cum am etichetat firele mai devreme. Știfturile corespunzătoare ale L293D ar trebui să fie potrivite.

Pentru a opri, trimite

Să analizăm modificările semnificative ale codului.

În secțiunea comentată, începând, ar trebui să vedeți inițiatorul de fișiere, de la Ardumotive. Următoarele câteva comentarii explică unde m-am schimbat puțin pentru a reflecta STM32F103C.

/ * * Creat de Vasilakis Michalis // 12-12-2014 ver.2

* Proiect: Control RC Car prin Bluetooth cu smartphone Android * Mai multe informații la https://www.ardumotive.com * * Schimbat acest cod pentru a se potrivi STM32F103 de Jim Garbe, [email protected] * Mai multe informații la https:// github.com / jgarbe / RCCAR_STM32F103C * Rețineți că valorile de 8 biți 0-255 au fost modificate pentru a * reflecta valorile de 16 biți 0-65535 * / / ****************** ********* * Pe STM32, scrierea analogică funcționează încă la 8 biți 255, * Dar puteți obține funcția completă a gamei PWM, 0-65535, declarând Pinul ca PWM * ȘI folosind pwmWrite () în loc de analogWrite () **************************** /

În special, pinii nu sunt numiți în același mod între Arduino și STM32F103C. Declarăm pinii folosind următorul set de linii. A mai rămas un pin care este declarat în jos în buclă. Pe linia 197, PA5 este folosit pentru a citi nivelul bateriei.

//// L293 Conexiune

const int motorA1 = PB6; // la Pinul 15 din L293 const int motorA2 = PB7; // la Pinul 10 al L293 const int motorB1 = PB8; // la Pinul 7 al L293 const int motorB2 = PB9; // la Pinul 2 din L293 // Leduri conectate la STM32F103C Pinul A12 const int lights = PA12; // Buzzer / difuzor la Arduino UNO Pin A8 const int buzzer = PA8; // Bluetooth (HC-06 JY-MCU) Pin de stat pe pinul A11 al STM32F103C const int BTState = PA11;

De asemenea, folosind analogWrite (); va funcționa în continuare la „BluePill”. Dar este mai bine să declarați pinii PWM folosind, pinMode (, PWM);

Apoi folosiți

pwmWrite (,);

NOTĂ: 8 biți = 0-255, 16 biți = 0-65535

Liniile 32-44 sunt modificări aduse bateriei. Dacă doriți să utilizați verificarea nivelului bateriei, trebuie să utilizați un separator de vot pentru bateria pe care o aveți. Această parte nu este reflectată în schița Fritzing. Există o mulțime de explicații despre cum să creați un divizor de tensiune pe Youtube. Deoarece STM32F103C este un cip de 3,3 v, am remediat codul aici pentru a utiliza fizic un divizor de tensiune. Arduino poate tolera unele tensiuni mai mari prin ADC-urile furnizate, dar „Blue Pill” nu.

/ * Nivelul bateriei va fi verificat pe pinul PA5

* Am schimbat următoarea linie pentru STM32F103C deoarece ADC nu poate gestiona * nimic peste 3.3v * Tocmai l-am comentat * Un divizor de tensiune, folosind două rezistențe trebuie calculat și utilizat * pentru a măsura intrarea ADC mai jos în cod * exemplu: * GND --- 2K rezistor ----------------- 1K rezistor ------ 5v * | * | * 3.3v * / // const float maxBattery = 3.3; // Schimbați valoarea la nivelul maxim al tensiunii bateriei!

Pasul 3: Puneți totul împreună

Puneți totul împreună
Puneți totul împreună
Puneți totul împreună
Puneți totul împreună
Puneți totul împreună
Puneți totul împreună
Puneți totul împreună
Puneți totul împreună

De obicei folosesc o proto-placă pentru a plasa piesele și a lipi între găuri pentru a conecta totul. Uneori, eu „lipesc mortul” totul împreună pentru mai mult un aspect Frankenstein / 3D de lipit.

Am ales această metodă hibridă pentru a face dispozitivul curat și ușor - și, bineînțeles, ieftin!

Această metodă permite și etichetarea. Una dintre cele mai proaste părți ale lipirii deadbug este atunci când te uiți la un cip IC de jos și uiți care pin este ceea ce.

Imaginile de mai sus sunt cam explicative. Cred că partea dificilă este găsirea cartonului suficient de subțire pentru a fi gropit și a fi rigid în același timp. Puteți folosi și plastic, dar marcarea acestuia este puțin mai grea. Odată ce am apăsat știfturile pe tablă și am marcat gropile, folosesc un Dremel pentru a găuri fiecare orificiu.

Dacă nu ați observat deja, am luminile doar ca priză accesorie pe tablă. Nu folosesc indicatorul bateriei și nici semnalul sonor. Pentru că proiectul meu are un scop diferit. Va fi auto-explicativ după ce veți vedea rezultatul final cu caroseria mașinii. … dar asta aduce o altă idee, există o mulțime de pini neutilizați în acest proiect. Poate un deschizător de portbagaj, un deschizător de uși pentru mașină, un detonator antifoc,… … sau chiar un mini-generator de perturbare a eterului luminifer Galvani-Edison!

După terminarea lipirii, testați înainte de a lipi la cald articulațiile pentru a reduce stresul pe fire.

Am folosit aceeași aplicație Android ca Ardumotive, poate fi găsită la

După ce ați testat funcțiile mașinii, este timpul să plasați bateria și să comutați. Mergeți la pasul următor.

Pasul 4: Baterie și comutator

OK, aici nu îmi poți urma planul exact.

Cumva, va trebui să găsiți un loc bun pentru a vă pune bateria pe mașină, fie cu o modalitate de a încărca banca bateriei de la un dongle, fie cu o modalitate de a încărca direct mufa bateriei. În videoclipul introductiv, tocmai am înregistrat bateria și microcontrolerul pe cadru și l-am rulat. Când am vrut să mă opresc, doar am deconectat bateria. Problema cu această configurare este perisabilitatea mufelor de pe cablul USB și / sau banca de alimentare. Este mai bine să aveți un comutator.

De asemenea, va trebui să găsiți un loc bun pentru întrerupător unde caroseria mașinii va permite în continuare accesul. Am folosit un comutator simplu cu buton (nu un comutator momentan) și l-am montat pe partea inferioară a cadrului unde se află compartimentul original al bateriei.

Va trebui să tăiați un cablu USB în jumătate și să puneți comutatorul între baterie și portul USB STM32F103C. Da, puteți alimenta STM32F103C cu portul USB. Pur și simplu nu îl puteți programa prin portul USB. Am folosit din nou un Dremel pentru a găuri niște găuri pentru știfturile de lipit ale întrerupătorului. Odată lipit, am folosit Hot Glue, din nou pentru consolidarea conexiunilor.

Pasul 5: Puneți caroseria mașinii pe cadru

OK, am spus că am refăcut versiunea originală Arduino a acestei mașini. Produsul final real, atunci, a fost un element de scenă pentru baletul „Spărgătorul de nuci” interpretat de compania noastră locală de balet. În scena de deschidere, un șoarece a fugit pe scenă cu magia accidentală a lui Drosselmeyer. Am folosit un șobolan IKEA și l-am montat deasupra cadrului, Arduino și un pachet de baterii mult mai mare. Recuzita era grea și nu putea fi reîncărcată. Este mult mai bine!

Distrează-te cu mașina ta. Amintiți-vă că există mult mai mulți pini pe STM32F103C care pot fi utilizați. Poate o moftură asemănătoare cu cea din „Toy Story 4.”

Recomandat: