İçindekiler:

STM32F103C ve L293D ile Bluetooth RC Araba - Ucuz: 5 Adım
STM32F103C ve L293D ile Bluetooth RC Araba - Ucuz: 5 Adım

Video: STM32F103C ve L293D ile Bluetooth RC Araba - Ucuz: 5 Adım

Video: STM32F103C ve L293D ile Bluetooth RC Araba - Ucuz: 5 Adım
Video: Bluetooth Kontrollü Araç Yapımı/Uzaktan Kumandalı Araba Yapımı/HC05/HC06 (Arduino )(4WD)(L298N) 2024, Haziran
Anonim
Image
Image
Pil Yiyen'i yok edin!
Pil Yiyen'i yok edin!

Ardumotive_com tarafından burada gösterilene benzer bir Bluetooth Arduino Arabası yaptım. Karşılaştığım sorun piller ve ağırlıkları ve masraflarıydı. O zamandan beri, cep telefonları için ucuz güç bankaları çok uygun hale geldi. Tek yapmam gereken ağırlığı azaltmaktı. Ucuz olduğum için STM32F103C Mikrodenetleyiciye geçtim. STM32F103C Mikrodenetleyici 2 dolardan daha ucuza satın alınabilir ve bir Arduino'dan çok daha küçüktür. STM32F103C ile çalışmak için kodlamanın birazını değiştirdim.

Gereçler

  • Pil yiyen ucuz bir uzaktan kumandalı araba. Evet, tıpkı Ardumotive_com'un kullandığı gibi. Sistemi kapatacak ve bunun yerine bir telefon güç bankası kullanacaksınız. Kendi kasanızı oluşturacak kaynaklara sahipseniz, buna sahip olun. Caddenin aşağısındaki oyuncakçıya gittim ve 10 doların altında ucuz bir araba aldım. Araba pilleri yiyor ve uzaktan kumanda pilleri yiyor - iyileştirme için mükemmel.
  • Bir telefon gücü bankası-- Şimdi çok ucuzlar. Yanlarında güç düğmesi bulunan güç bankalarından uzaklaşın. Arabanızı takip edemeyecek ve düğmeyi basılı tutamayacaksınız. Bu aptalca.
  • Bir L293D Çip-- Bu, elektrik motorlarını kontrol edecek olan ikili H-Bridge'dir.
  • Bir HC-06 Bluetooth Modülü
  • Bir Anahtar-- Basit bir açma/kapama anahtarı kullandım.
  • Biraz Tel -- telefon kablosu iyi olurdu, ancak biraz daha büyük telli 20 gauge daha iyi olurdu.
  • Blue Pill ve L293D'nizi monte etmek için bir Proto Board veya bir plastik veya karton parçası. Ben ucuzum, bu yüzden ince oluklu mukavva ile biraz farklı bir sistem buldum-- bir ampul kutusundan olduğu gibi.
  • İki Ucuz USB şarj kablosu - Bunlar Dolar Ağacından satın alınabilir. Güzel programlama kablonuzu kullanmayın. Biri açma/kapama düğmesi için kesilecek, diğeri ise pili şarj edecek.

İsteğe bağlı

  • 4 LED - farlar ve arka lambalar istiyorsanız.
  • 4 220 Ohm Dirençler-- 3.3v sistemdeki LED'ler için.
  • Bir korna için bir piezo veya küçük hoparlör.

Aletler

  • Havya ve Lehim
  • Hot Glue Gun-- Kızım Hot Glue Gun Ninja!
  • Tel striptizci ve makas
  • NOT: Ön panel yerine kullandığım karton tekniğini kullanırsanız, bir Dremel veya küçük matkaba ihtiyacınız olacaktır

Adım 1: Pil Yiyen'i yok edin

Pil Yiyen'i yok edin!
Pil Yiyen'i yok edin!

Pil yiyiciyi yok ederek eğlenmenin zamanı geldi! Evet, BU ŞEYİ GUT! Dünyayı daha yeşil hale getirmek için üzerinize düşeni yaptığınız için gurur duyun-- Tamam, bu biraz gergin, ama yine de… Çerçeveye geçin.

Yukarıda, Arduino versiyonunu yaptığım ünitenin aynısı. Arduino versiyonu, arabayı ağırlaştıran ciddi pil gücü kullandı. Bu yüzden onu çerçeveye geri götürdüm. Plastik bir şişe ve sıcak tutkaldan bazı çamurluklar ekledim ve gövdeyi özelleştirdim. Vücut hakkında daha sonra.

Motorları ve direksiyonu çıplak olan çerçeveye sahip olduğunuzda, motor terminallerinin hangi tarafının hangisi olduğunu bulun. Motoru test etmek için bir pil veya 5v şarj cihazı kullanın.

Direksiyon motorunda, tekerlekler sağa döndüğünde, akü artı kablosunu "3" ve eksi kablosunu "6" olarak etiketleyin.

Tahrik motorunda, tekerlekler ileri döndüğünde, akü artı kablosunu "14" ve eksi kablosunu "11" olarak etiketleyin.

Adım 2: Arduino IDE'deki Kod

Arduino IDE'deki Kod
Arduino IDE'deki Kod
Arduino IDE'deki Kod
Arduino IDE'deki Kod

Arabanızın elektroniğini önce bir devre tahtasında prototiplemeniz en iyisi olabilir.

Tamam, bu zor kısımlardan biri. "Mavi Hap", USB bağlantı noktası üzerinden programlanamaz. "Mavi Hap" için Joop Brokking'in Youtube Video'sundan daha kolay bir programlama açıklaması bulamadım. Roger Clarke'ın STMduino kütüphanesi de dahil olmak üzere bilmeniz gereken her şeyi açıklıyor. Bir önyükleyici kurmanın bir yolu vardır, böylece "Mavi Hapı" programlamak için USB'yi kullanabilirsiniz, ancak yine de önyükleyiciyi Seri Veri Yolu üzerinden programlamanız gerekir.

Ne yazık ki, Seri Veri Yolu Bluetooth adaptörü tarafından da kullanılıyor. Program öncelikle Serial Bus, PA9 ve PA10 pinleri üzerinden FTDI üzerinden kurulmalıdır, daha sonra Bluetooth adaptörü ile tüm ayarlarınızı kontrol edebilirsiniz.

Bir devre tahtası kullanın ve yukarıdaki fritzing taslağı gibi her şeyi devre tahtasına yerleştirin. Bluetooth adaptörünün STM32F103C'nin PA9 ve PA10 pinlerindeki Seri TX ve RX hatlarını ayırın. FTDI'nizi bağlayın ve programlayın. Seri Veri Yolu hatlarının kesiştiğinden, RX'den Tx'e ve Tx'den RX'e olduğundan emin olun. Biri alır diğeri verir.

Program yüklendikten sonra seri konsolu açıp gönderebilirsiniz.

Işıkların çalışıp çalışmadığını görmek için. Işıklar çalışıyorsa gönderebilirsiniz.

tekrar kapatmak için.

Lastikleri yükseltmek ve göndermek için arabanızı bir bloğa koyun

Tekerlekler ileri gitmeli. Aksi takdirde, kabloları ters çevirin. Telleri daha önce nasıl etiketlediğimizi hatırlayın. L293D'nin ilgili pinleri eşleştirilmelidir.

Durdurmak için gönder

Şimdi koddaki önemli değişikliklere bakalım.

Yorumlama bölümünde, başlangıçta, Ardumotive'den dosya oluşturucuyu görmelisiniz. Sonraki birkaç yorum, STM32F103C'yi yansıtmak için nerede biraz değiştiğimi açıklıyor.

/* * Vasilakis Michalis tarafından düzenlendi // 12-12-2014 ver.2

* Proje: Android Akıllı Telefon ile Bluetooth üzerinden RC Arabayı Kontrol Edin * Daha fazla bilgi https://www.ardumotive.com adresinde * * Bu kodu STM32F103'e uyacak şekilde değiştirdi Jim Garbe, [email protected] * Daha fazla bilgi için https://github.com/jgarbe/RCCAR_STM32F103C * 0-255 arasındaki 8 bitlik değerlerin * olarak değiştirildiğine dikkat edin, 0-65535 16 bitlik değerleri yansıtır */ /*********************** ********* * STM32'de analog yazma hala 8-bit 255'te çalışıyor, * Ancak PWM aralığının tam işlevini, 0-65535, Pimi PWM olarak bildirerek elde edebilirsiniz *VE analogWrite() yerine pwmWrite() kullanma ******************************/

En önemlisi, pinler Arduino ve STM32F103C arasında aynı şekilde adlandırılmamıştır. Bir sonraki satır grubunu kullanarak pinleri bildiririz. Döngüde aşağı doğru bildirilen bir pin kaldı. 197 satırında, pil seviyesini okumak için PA5 kullanılır.

////L293 Bağlantı

const int motorA1 = PB6; // L293'ün Pin 15'ine const int motorA2 = PB7; // L293'ün Pin 10'una const int motorB1 = PB8; // L293'ün Pin 7'sine const int motorB2 = PB9; // L293'ün Pin 2'sine //STM32F103C'ye bağlı ledler Pin A12 sabit int ışıklar = PA12; //Buzzer / Hoparlör - Arduino UNO Pin A8 const int buzzer = PA8; //Bluetooth (HC-06 JY-MCU) STM32F103C'nin A11 pinindeki durum pini const int BTSState = PA11;

Ayrıca analogWrite(); hala "BluePill" üzerinde çalışacak. Ancak PWM pinlerini kullanarak bildirmek daha iyidir, pinMode(, PWM);

Sonra kullan

pwmWrite(,);

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

32-44 arasındaki satırlar pilde yapılan değişikliklerdir. Pil seviyesi kontrolünü kullanacaksanız sahip olduğunuz pil için mutlaka bir voltaj bölücü kullanmalısınız. Bu kısım Fritzing taslağına yansıtılmamıştır. Youtube'da voltaj bölücünün nasıl oluşturulacağına dair birçok açıklama var. STM32F103C bir 3.3v çip olduğundan, fiziksel olarak voltaj bölücü kullanmak için buradaki kodu düzelttim. Arduino, sağlanan ADC'ler aracılığıyla bazı yüksek voltajları tolere edebilir, ancak "Mavi Hap" yapamaz.

/*Pil PA5'te pil seviyesi kontrol edilecek

* STM32F103C için sonraki satırı değiştirdi çünkü ADC 3.3v'nin üzerinde hiçbir şeyi işleyemez * Sadece yorumladım * İki direnç kullanan bir voltaj bölücü hesaplanmalı ve kullanılmalıdır * ADC girişini kodun daha aşağısında ölçmek için * örnek: * GND---2K direnç-----------------1K direnç ------5v * | * | * 3.3v */ // const float maxBattery = 3.3; // Değeri maksimum akü voltajı seviyenize değiştirin!

3. Adım: Hepsini Bir Araya Getirin

Hepsini bir araya getirmek
Hepsini bir araya getirmek
Hepsini bir araya getirmek
Hepsini bir araya getirmek
Hepsini bir araya getirmek
Hepsini bir araya getirmek
Hepsini bir araya getirmek
Hepsini bir araya getirmek

Her şeyi bağlamak için parçaları ve lehimi delikler arasına yerleştirmek için genellikle bir proto-board kullanırım. Bazen daha fazla bir Frankenstein/3D lehim görünümü için her şeyi birlikte "deadbug lehim" yaparım.

Cihazı temiz ve hafif yapmak için bu hibrit yöntemi seçtim ve tabii ki UCUZ!

Bu yöntem etiketlemeye de izin verir. Deadbug lehimlemenin en kötü kısımlarından biri, bir IC çipine alttan bakıp hangi pinin ne olduğunu unutmanızdır.

Yukarıdaki resimler biraz açıklayıcı. Sanırım zor kısım, aynı anda hem çukurlaşacak hem de sertleşecek kadar ince kartonu bulmak. Plastik de kullanabilirsiniz ancak işaretlemek biraz daha zordur. Pimleri tahtaya bastırıp çukurları işaretledikten sonra, her bir pim deliğini delmek için bir Dremel kullanıyorum.

Henüz fark etmediyseniz, panoda sadece aksesuar fişi olarak ışıklarım var. Pil göstergesini veya bip sesini kullanmıyorum. Çünkü benim projem farklı bir amaç için. Araba gövdesi ile bitmiş sonucu gördüğünüzde kendi kendini açıklayıcı olacaktır. …ama bu başka bir fikir getiriyor, Bu projede bir sürü kullanılmayan pin var. Belki bir bagaj açıcı, araba kapısı açıcı, yangın bombası fünyesi, … …hatta bir mini-Galvani-Edison Aydınlatıcı Eter Bozulma Üreteci!

Tüm lehimleme işlemi tamamlandıktan sonra, tellerdeki gerilimi azaltmak için eklemleri sıcak yapıştırmadan önce test edin.

Ardumotive ile aynı Android Uygulamasını kullandım, https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller adresinde bulunabilir.

Aracın fonksiyonlarını test ettikten sonra, aküyü yerleştirme ve değiştirme zamanı. Bir sonraki adıma geçin.

Adım 4: Pil ve Anahtar

Tamam, planımı tam olarak takip edemeyeceğin yer burası.

Her nasılsa, pilinizi bir dongle'dan şarj etmenin bir yolu veya pil fişini doğrudan şarj etmenin bir yolu ile pilinizi arabaya koymak için iyi bir yer bulmanız gerekecek. Tanıtım videosunda sadece pili ve mikrodenetleyiciyi çerçeveye bantlayıp çalıştırdım. Durmak istediğimde sadece pili çıkardım. Bu kurulumdaki sorun, USB kablonuzdaki ve/veya güç bankanızdaki fişlerin bozulabilir olmasıdır. Bir anahtarın olması daha iyidir.

Ayrıca, araba gövdesinin hala erişime izin vereceği anahtar için iyi bir yer bulmanız gerekecek. Düz bir basmalı düğme anahtarı (anlık bir anahtar değil) kullandım ve orijinal pil bölmesinin bulunduğu çerçevenin altına monte ettim.

Bir USB kablosunu ikiye kesmeniz ve anahtarı pil ile STM32F103C USB bağlantı noktası arasına koymanız gerekecek. Evet, STM32F103C'yi USB bağlantı noktasıyla çalıştırabilirsiniz. USB portu üzerinden programlayamazsınız. Anahtar lehimleme pimleri için bazı delikler açmak için tekrar bir Dremel kullandım. Lehimlendikten sonra, bağlantıları güçlendirmek için tekrar Hot Glue kullandım.

Adım 5: Araba Gövdenizi Çerçeveye Yerleştirin

Tamam, bu arabanın orijinal Arduino versiyonunu yeniden tasarladığımı söyledim. Gerçek nihai ürün, o zaman, yerel bale topluluğumuz tarafından gerçekleştirilen "Fındıkkıran" balesinin sahne dekoruydu. Açılış sahnesinde, bir fare Drosselmeyer'in tesadüfi büyüsüyle sahnenin karşısına koştu. Bir IKEA faresi kullandım ve çerçevenin, Arduino'nun ve çok daha büyük pil takımının üzerine yerleştirdim. Pervane ağırdı ve şarj edilemezdi. Bu daha iyi!

Arabanızla iyi eğlenceler. STM32F103C'de kullanılabilecek çok daha fazla pin olduğunu unutmayın. Belki de "Oyuncak Hikayesi 4"tekine benzer bir kokarca.

Önerilen: