Mündəricat:

STM32F103C və L293D ilə Bluetooth RC Avtomobil - Ucuz: 5 addım
STM32F103C və L293D ilə Bluetooth RC Avtomobil - Ucuz: 5 addım

Video: STM32F103C və L293D ilə Bluetooth RC Avtomobil - Ucuz: 5 addım

Video: STM32F103C və L293D ilə Bluetooth RC Avtomobil - Ucuz: 5 addım
Video: Программирование STM32 Blue Pill с помощью релейной логики ПЛК LDmicro 2024, Noyabr
Anonim
Image
Image
Batareya yeyənləri məhv edin!
Batareya yeyənləri məhv edin!

Ardumotive_com tərəfindən burada təsvir edilənə bənzər bir Bluetooth Arduino Avtomobil etdim. Yaşadığım problem batareyalar, çəkiləri və xərcləri idi. O vaxtdan bəri, cib telefonları üçün ucuz güc bankları çox əlverişli hala gəldi. Etməyim lazım olan tək şey arıqlamaq idi. Ucuz olduğum üçün STM32F103C Mikro nəzarətçisinə keçdim. STM32F103C Mikrokontroller 2 dollardan aşağı qiymətə alına bilər və Arduinodan xeyli kiçikdir. STM32F103C ilə işləmək üçün bir az kodlaşdırma dəyişdim.

Təchizat

  • Batareya yeyən ucuz uzaqdan idarə olunan maşın. Bəli, Ardumotive_com -un istifadə etdiyi kimi. Sistemi söndürüb əvəzinə bir telefon güc bankı istifadə edəcəksiniz. Öz şassinizi qurmaq üçün resurslarınız varsa, buna sahib olun. Küçədəki oyuncaq mağazasına getdim və 10 dolların altına ucuz bir maşın aldım. Avtomobil batareyaları yeyir və uzaqdan idarəetmə batareyaları yeyir-təkmilləşdirmək üçün idealdır.
  • Telefon gücü bankı- İndi çox ucuzdur. Yanında güc düyməsi olan güc banklarından uzaqlaşın. Avtomobilinizi izləyə və düyməni basıb saxlaya bilməyəcəksiniz. Bu axmaqlıqdır.
  • L293D çipi-Bu elektrik mühərriklərini idarə edəcək ikili H-körpüsüdür.
  • Bir HC-06 Bluetooth Modulu
  • Bir keçid- Sadə bir açma/söndürmə açarı istifadə etdim.
  • Bəzi telli telefon telləri yaxşı olardı, amma bir az daha böyük bir qapalı 20 ölçü daha yaxşı olardı.
  • Blue Pill və L293D -ni bağlamaq üçün bir Proto Board və ya plastik və ya karton parçası. Ucuz olduğum üçün nazik büzməli kartondan bir az fərqli bir sistemlə tanış oldum- bir ampul qutusundakı kimi.
  • İki ucuz USB şarj kabeli-Bunlar bir dollar ağacından əldə edilə bilər. Gözəl proqramlaşdırma kabelindən istifadə etməyin. Biri açma/söndürmə açarı üçün kəsiləcək, digəri isə batareyanı dolduracaq.

İsteğe bağlı

  • 4 LED -faralar və arxa fənərlər istəyirsinizsə.
  • 4 220 Ohm Rezistorlar- 3.3V sistemdəki LEDlər üçün.
  • Buynuz üçün piezo və ya kiçik dinamik.

Alətlər

  • Lehimləmə Dəmiri və Lehim
  • İsti Yapışqan Tabancası- Qızım İsti Yapışqan Ninjadır!
  • Tel çıxarıcılar və kəsicilər
  • DİQQƏT: Bir proto taxtadan çox istifadə etdiyim karton texnikasından istifadə edirsinizsə, Dremel və ya kiçik bir matkapa ehtiyacınız olacaq

Addım 1: Batareya Yiyənini məhv edin

Batareya yeyənləri məhv edin!
Batareya yeyənləri məhv edin!

Batareya yeyəni məhv etməklə əylənmək vaxtıdır! Bəli, BU ŞEYDƏN GÖRÜN! Dünyanı yaşıllaşdırmaqda öz payınızı etdiyiniz üçün qürur duyun- Tamam, bu uzanır, amma hər halda… Çərçivəyə keçin.

Yuxarıda, Arduino versiyasını hazırladığım eyni vahiddir. Arduino versiyası avtomobili ağırlaşdıran ciddi batareya gücündən istifadə edirdi. Beləliklə, yenidən çərçivəyə endirdim. Plastik şüşə və isti yapışqandan bir neçə qanad əlavə etdim və korpusa uyğunlaşdırdım. Bədən haqqında daha sonra.

Mühərrikləri və sükanı çılpaq olan çərçivəyə sahib olduqdan sonra, motor terminallarının hansı tərəfinin olduğunu tapın. Motoru yoxlamaq üçün bir batareya və ya 5v şarj cihazı istifadə edin.

Sükan motorunda, təkərlər sağa dönəndə, müsbət akkumulyator telini "3" və mənfi teli "6" işarələyin.

Sürücü motorda, təkərlər irəli döndükdə, müsbət akkumulyator telini "14" və mənfi teli "11" işarələyin.

Addım 2: Arduino IDE -də kod

Kod Arduino IDE -də
Kod Arduino IDE -də
Kod Arduino IDE -də
Kod Arduino IDE -də

Avtomobilinizin elektronikasını əvvəlcə çörək taxtasında prototip etsəniz yaxşı olar.

Tamam, bu çətin hissələrdən biridir. "Mavi həb" USB portu vasitəsilə proqramlaşdırıla bilməz. "Mavi həb" in Joop Brokking -in Youtube videosundan daha asan bir proqramlaşdırma izahı tapmadım. Roger Clarke STMduino kitabxanası da daxil olmaqla bilmək lazım olan hər şeyi izah edir. "Mavi həbi" proqramlaşdırmaq üçün USB -dən istifadə edə biləcəyiniz üçün bir önyükleyici qurmağın bir yolu var, ancaq onsuz da önyükleyicini Serial Avtobus vasitəsilə proqramlaşdırmalısınız.

Təəssüf ki, Serial Bus Bluetooth adapteri tərəfindən də istifadə olunur. Proqram əvvəlcə FTDI vasitəsi ilə Serial Bus, PA9 və PA10 pinləri vasitəsilə quraşdırılmalıdır, sonra Bluetooth adapteri ilə bütün parametrlərinizi yoxlaya bilərsiniz.

Çörək taxtası istifadə edin və çörək taxtasındakı hər şeyi yuxarıdakı fritzing eskiz kimi düzün. STM32F103C -nin PA9 və PA10 pinlərindəki Bluetooth adapterinin Serial TX və RX xətlərini ayırın. FTDI və proqramınızı bağlayın. Serial Avtobus xətlərinin kəsildiyindən əmin olun, RX - Tx və Tx - RX. Biri alır, digəri verir.

Proqram yükləndikdən sonra serial konsolunu açıb göndərə bilərsiniz

işıqların işlədiyini görmək. İşıqlar işləyirsə göndərə bilərsiniz

yenidən söndürmək üçün.

Təkərləri qaldırmaq və göndərmək üçün avtomobilinizi bir bloka qoyun

Təkərlər irəli getməlidir. Əks təqdirdə, telləri geri çevirin. Daha əvvəl telləri necə etiketlədiyimizi xatırlayın. L293D -nin müvafiq pinləri uyğun olmalıdır.

Dayandırmaq üçün göndərin

Koddakı əhəmiyyətli dəyişikliklərə baxaq.

Şərh olunan bölmədə, başlanğıcda, Ardumotive -dən faylların yaradıcısını görməlisiniz. Növbəti bir neçə şərh STM32F103C -ni əks etdirmək üçün bir az dəyişdiyimi izah edir.

/ * * Vasilakis Michalis tərəfindən yaradılmışdır // 12-12-2014 ver.2

* Layihə: Android Smartphone ilə Bluetooth vasitəsilə RC Avtomobilinə nəzarət edin * Daha çox məlumat https://www.ardumotive.com saytında * * Bu kodu Jim Garbe, [email protected] tərəfindən STM32F103 -ə uyğun olaraq dəyişdirdi * Ətraflı məlumat https:// github ünvanında.com/jgarbe/RCCAR_STM32F103C*Qeyd edək ki, 0-dan 255-ə qədər olan 8 bitlik dəyərlər*16 bitlik dəyərləri əks etdirən 0-65535*//****************** olaraq dəyişdirildi **********STM32-də analoq yazma hələ də 8-bit 255-də işləyir,*Lakin Pini PWM olaraq elan etməklə PWM aralığının tam funksiyasını əldə edə bilərsiniz, 0-65535. analogWrite () yerinə pwmWrite () istifadə edərək ****************************/

Xüsusilə, sancaqlar Arduino və STM32F103C arasında eyni şəkildə adlandırılmamışdır. Növbəti sətirlərdən istifadə edərək sancaqları elan edirik. Döngədə aşağıya endirilən bir pin qalıb. 197 xəttində, PA5 batareyanın səviyyəsini oxumaq üçün istifadə olunur.

//// L293 Bağlantısı

const int motorA1 = PB6; // L293 const int motorA2 = PB7 -nin 15 -ci pininə; // L293 const int motorB1 = PB8 -in 10 -cu pininə; // L293 const int motorB2 = PB9 7 pininə; // L293 -ün 2 -ci pininə // STM32F103C -ə qoşulmuş Ledlər Pin A12 const int işıqları = PA12; // Buzzer /Dinamik Arduino UNO Pin A8 const int buzzer = PA8; // Bluetooth (HC-06 JY-MCU) STM32F103C const int BTState = A11 pin A11 vəziyyət pin;

Ayrıca analogWrite () istifadə edərək; yenə də "BluePill" üzərində işləyəcək. Ancaq PWM pinlərini elan etmək daha yaxşıdır, pinMode (, PWM);

Sonra istifadə edin

pwmWrite (,);

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

32-44-cü sətirlər batareyada edilən dəyişikliklərdir. Batareya səviyyəsi yoxlamasından istifadə edəcəksinizsə, əlinizdə olan batareya üçün səs bölücü istifadə etməlisiniz. Bu hissə Fritzing eskizində əks olunmur. Youtube -da bir gərginlik bölücü yaratmağın bir çox izahı var. STM32F103C 3.3v çip olduğundan, fiziki olaraq bir gərginlik bölücü istifadə etmək üçün kodu burada düzəltdim. Arduino, təqdim olunan ADC -lər vasitəsilə bəzi yüksək gərginliklərə dözə bilər, ancaq "Mavi həb" dözə bilməz.

/* Batareya səviyyəsi Pin PA5 -də yoxlanılacaq

* ADC 3.3v -dən yuxarı heç bir şeyi idarə edə bilmədiyi üçün STM32F103C üçün növbəti sətri dəyişdi * Sadəcə şərh etdim * İki müqavimət istifadə edən bir gərginlik bölücü hesablanmalı və ADC girişini kodun daha aşağı hissəsində ölçmək üçün istifadə edilməlidir * * misal: * GND --- 2K müqavimət ----------------- 1K rezistor ------ 5v * | * | * 3.3v */ // const float maxBattery = 3.3; // Maksimum batareya gərginliyi dəyərini dəyişdirin!

Addım 3: Hamısını bir araya gətirin

Hamısını Bir yerdə qoyun
Hamısını Bir yerdə qoyun
Hamısını Bir yerdə qoyun
Hamısını Bir yerdə qoyun
Hamısını Bir yerdə qoyun
Hamısını Bir yerdə qoyun
Hamısını Bir yerdə qoyun
Hamısını Bir yerdə qoyun

Adətən hər şeyi birləşdirmək üçün çuxurların arasına parçaları yerləşdirmək və lehimləmək üçün bir proto taxtadan istifadə edirəm. Bəzən daha çox Frankenstein/3D lehim görünüşü üçün hər şeyi bir yerdə "lehimləyirəm".

Cihazı təmiz və yüngül etmək üçün bu hibrid metodu seçdim- və əlbəttə ki, UCUZ!

Bu üsul etiketləmə imkanı verir. Deadbug lehimləmənin ən pis hissələrindən biri, aşağıdan bir IC çipinə baxdığınızda və hansı pinin nə olduğunu unutmağınızdır.

Yuxarıdakı şəkillər öz -özlüyündə izahlıdır. Güman edirəm ki, çətin tərəfi eyni zamanda çökmək və sərt olmaq üçün kifayət qədər nazik karton tapmaqdır. Plastikdən də istifadə edə bilərsiniz, ancaq işarələmək bir az çətindir. İğnələri lövhəyə basıb çuxurları işarələdikdən sonra hər bir deşik açmaq üçün Dremel istifadə edirəm.

Əgər siz hələ fərq etməmisinizsə, lövhədə yalnız aksesuar fiş kimi işıqlarım var. Nə batareya göstəricisi, nə də səs siqnalı istifadə etmirəm. Layihəmin fərqli bir məqsəd üçün olmasıdır. Avtomobilin gövdəsi ilə bitmiş nəticəni gördükdən sonra öz-özünə başa düşüləcəkdir. … amma bu başqa bir fikir gətirir, bu layihədə istifadə olunmayan bir çox sancaqlar var. Bəlkə bir bagaj açan, avtomobil qapısı açan, yanğınsöndürən detonator,…… və ya hətta mini Galvani-Edison Parlaq Eter Bozukluğu Generatoru!

Bütün lehimləmə işləri başa çatdıqdan sonra, telləri gərginlikdən azad etmək üçün oynaqları isti yapışdırmadan əvvəl sınayın.

Ardumotive ilə eyni Android tətbiqindən istifadə etdim, https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller ünvanında tapa bilərsiniz.

Avtomobilin funksiyalarını sınadıqdan sonra, batareyanı yerləşdirmək və dəyişdirmək vaxtıdır. Növbəti addıma keçin.

Addım 4: Batareya və keçid

Tamam, planımı dəqiq yerinə yetirə bilməyəcəyiniz yer budur.

Bir şəkildə, batareyanı maşına qoymaq üçün yaxşı bir yer tapmalı olacaqsınız, ya bir düymə ilə batareya bankını doldurmaq, ya da birbaşa akkumulyator fişini doldurmaq üçün bir yol. Təqdimat videosunda, yalnız batareyanı və mikrokontrolörü çərçivəyə yapışdırıb işə saldım. Dayanmaq istədikdə batareyanı cərəyandan ayırdım. Bu quraşdırma ilə bağlı problem, USB kabelinizdəki və/və ya güc bankınızdakı fişlərin tez xarab olmasıdır. Şalterin olması daha yaxşıdır.

Avtomobil gövdəsinin hələ də girişə icazə verəcəyi keçid üçün yaxşı bir yer tapmalı olacaqsınız. Düz bir düymə açarı istifadə etdim (bir anlıq açar deyil) və orijinal batareya bölməsinin yerləşdiyi çərçivənin altına quraşdırdım.

Bir USB kabelini yarıya bölmək və batareyanı STM32F103C USB portu ilə bağlamaq lazımdır. Bəli, STM32F103C -ni USB portu ilə gücləndirə bilərsiniz. Yalnız USB portu vasitəsilə proqramlaşdıra bilməzsiniz. Açar lehimləmə pinləri üçün bir neçə delik açmaq üçün yenidən Dremel istifadə etdim. Lehimləndikdən sonra, əlaqələri gücləndirmək üçün yenidən Hot Glue istifadə etdim.

Addım 5: Avtomobilinizin Bədənini Çərçivəyə qoyun

Tamam, bu avtomobilin orijinal Arduino versiyasını yenidən təyin etdiyimi söylədim. Əsl son məhsul, yerli balet şirkətimiz tərəfindən ifa olunan "Fındıkkıran" baletinin səhnə dayağı idi. Açılış səhnəsində Drosselmeyerin təsadüfi sehri ilə bir siçan səhnəni keçdi. IKEA siçovulundan istifadə etdim və onu çərçivənin üstünə, Arduino və daha böyük batareya paketinə taxdım. Pervane ağır idi və şarj edilə bilməzdi. Bu daha yaxşıdır!

Avtomobilinizlə əylənin. STM32F103C -də istifadə edilə bilən daha çox pin olduğunu unutmayın. Bəlkə də "Oyuncaq Hekayəsi 4" də olana bənzər bir qoxu.

Tövsiyə: