Spisu treści:

Samochód RC Bluetooth z STM32F103C i L293D -- Niedrogi: 5 kroków
Samochód RC Bluetooth z STM32F103C i L293D -- Niedrogi: 5 kroków

Wideo: Samochód RC Bluetooth z STM32F103C i L293D -- Niedrogi: 5 kroków

Wideo: Samochód RC Bluetooth z STM32F103C i L293D -- Niedrogi: 5 kroków
Wideo: Lesson 24: Smart Car Part 2: Moving Forwared, Reverse, left and right and Controling Speed of Car 2024, Listopad
Anonim
Image
Image
Zniszcz pożeracza baterii!
Zniszcz pożeracza baterii!

Zrobiłem samochód Arduino Bluetooth, taki jak ten przedstawiony tutaj, przez Ardumotive_com. Problemem były baterie i ich waga oraz koszt. Od tego czasu tanie power banki do telefonów komórkowych stały się bardzo przystępne. Wszystko, co musiałem zrobić, to zmniejszyć wagę. Ponieważ jestem tani, przesiadłem się na mikrokontroler STM32F103C. Mikrokontroler STM32F103C można kupić za mniej niż 2 USD i jest znacznie mniejszy niż Arduino. Zmieniłem trochę kodowanie, aby działało również z STM32F103C.

Kieszonkowe dzieci

  • Tanie auto zdalnie sterowane, które zjada baterie. Tak, podobnie jak ten, którego używa Ardumotive_com. Wyłączysz system i zamiast tego użyjesz banku zasilania telefonu. Jeśli masz środki na zbudowanie własnego podwozia, miej to na uwadze. Poszedłem do sklepu z zabawkami na ulicy i kupiłem tani samochód za mniej niż 10 dolarów. Samochód zjada baterie, a pilot zjada baterie – idealne do poprawy.
  • Telefoniczny bank energii… Teraz są super tanie. Odejdź od power banków, które mają przycisk zasilania z boku. Nie będziesz mógł podążać za swoim samochodem i przytrzymywać przycisku. To głupie.
  • Chip L293D - jest to podwójny mostek H, który steruje silnikami elektrycznymi.
  • Moduł Bluetooth HC-06
  • Przełącznik – użyłem prostego włącznika/wyłącznika.
  • Niektóre przewody - przewód telefoniczny byłyby w porządku, ale trochę większy linka o średnicy 20 byłby lepszy.
  • Proto Board lub kawałek plastiku lub tektury do zamontowania Blue Pill i L293D. Jestem tani, więc wymyśliłem trochę inny system z cienkiej tektury falistej - jak z pudełka na żarówki.
  • Dwa tanie kable USB do ładowania - można je kupić w Dollar Tree. Nie używaj swojego ładnego kabla do programowania. Jeden zostanie wycięty na włącznik/wyłącznik, a drugi będzie ładował akumulator.

Opcjonalny

  • 4 diody led-jeśli chcesz reflektory i tylne światła.
  • 4 Rezystory 220 Ohm-- dla diod LED w systemie 3.3v.
  • Piezo lub mały głośnik do tuby.

Narzędzia

  • Lutownica i lutownica
  • Pistolet do klejenia na gorąco-- Moja córka jest Ninja pistoletu do klejenia na gorąco!
  • Szczypce do ściągania izolacji i nożyce
  • UWAGA: jeśli użyjesz techniki kartonowej, której używam, a nie prototypowej planszy, będziesz potrzebować Dremel lub małego wiertła

Krok 1: Zniszcz pożeracz baterii

Zniszcz pożeracza baterii!
Zniszcz pożeracza baterii!

Czas na zabawę, niszcząc pożeracz baterii! Tak, JESTEŚ TO! Poczuj dumę, że przyczyniasz się do tego, aby świat stał się bardziej zielony… OK, to trochę naciągane, ale tak czy inaczej… Przejdź do kadru.

Powyżej znajduje się ta sama jednostka, którą zrobiłem w wersji Arduino. Wersja Arduino wykorzystywała poważną moc akumulatora, przez co samochód był cięższy. Więc wróciłem do ramy. Dodałem kilka błotników z plastikowej butelki i gorącego kleju i dostosowałem nadwozie. Więcej o ciele później.

Gdy już masz ramę z silnikami i odsłoniętym układem kierowniczym, znajdź stronę zacisków silnika. Użyj akumulatora lub ładowarki 5 V, aby przetestować silnik.

Na silniku układu kierowniczego, gdy koła skręcają w prawo, oznacz przewód dodatni akumulatora „3”, a przewód ujemny „6”.

Na silniku napędowym, gdy koła obracają się do przodu, oznacz przewód dodatni akumulatora „14” i przewód ujemny „11”.

Krok 2: Kod w Arduino IDE

Kod w Arduino IDE
Kod w Arduino IDE
Kod w Arduino IDE
Kod w Arduino IDE

Być może najlepiej będzie, jeśli najpierw wykonasz prototyp elektroniki swojego samochodu na płytce prototypowej.

OK, to jedna z trudnych części. „Niebieskiej pigułki” nie można zaprogramować przez port USB. Nie znalazłem prostszego wyjaśnienia programistycznego „Niebieskiej pigułki” niż wideo na Youtube Joopa Brokkinga. Wyjaśnia wszystko, co musisz wiedzieć, w tym bibliotekę STMduino Rogera Clarke'a. Jest sposób na zainstalowanie bootloadera, dzięki któremu MOŻESZ użyć USB do zaprogramowania „Niebieskiej pigułki”, ale i tak musisz zaprogramować bootloader przez magistralę szeregową.

Niestety, magistrala szeregowa jest również używana przez adapter Bluetooth. Program musi być zainstalowany przez magistralę szeregową, piny PA9 i PA10, najpierw przez FTDI, a następnie możesz sprawdzić wszystkie ustawienia za pomocą adaptera Bluetooth.

Użyj płytki prototypowej i ułóż wszystko na płytce prototypowej, tak jak na powyższym szkicu. Odłącz linie Serial TX i RX adaptera Bluetooth na stykach PA9 i PA10 STM32F103C. Podłącz swoje FTDI i program. Upewnij się, że linie magistrali szeregowej są skrzyżowane, RX do Tx i Tx do RX. Jeden otrzymuje, a drugi daje.

Po załadowaniu programu możesz otworzyć konsolę szeregową i wysłać

aby sprawdzić, czy światła działają. Jeśli światła działają, możesz wysłać

ponownie, aby je wyłączyć.

Ustaw samochód na bloku, aby podnieść opony i wysłać

Koła powinny iść do przodu. Jeśli nie, zamień przewody. Pamiętaj, jak wcześniej oznaczyliśmy przewody. Odpowiednie piny L293D powinny być dopasowane.

Aby zatrzymać, wyślij

Przyjrzyjmy się znaczącym zmianom w kodzie.

W sekcji komentowanej, na początku, powinieneś zobaczyć autora plików, od Ardumotive. Kilka następnych komentarzy wyjaśnia, gdzie trochę się zmieniłem, aby odzwierciedlić STM32F103C.

/* * Utworzone przez Vasilakisa Michalisa // 12-12-2014 wer.2

* Projekt: Sterowanie RC Car przez Bluetooth za pomocą smartfona z systemem Android * Więcej informacji na https://www.ardumotive.com * * Zmieniono ten kod, aby pasował do STM32F103 autorstwa Jima Garbe, [email protected] * Więcej informacji na https://github.com/jgarbe/RCCAR_STM32F103C * Zauważ, że 8-bitowe wartości 0-255 zostały zmienione na * odzwierciedlają 16-bitowe wartości 0-65535 */ /******************** ********* * Na STM32 zapis analogowy nadal działa przy 8-bitowym 255, * Ale możesz uzyskać pełną funkcjonalność zakresu PWM, 0-65535, deklarując Pin jako PWM * I używanie pwmWrite() zamiast analogWrite() ****************************/

Przede wszystkim piny nie są nazwane w ten sam sposób między Arduino i STM32F103C. Piny deklarujemy za pomocą następnego zestawu linii. Pozostał jeden pin, który jest zadeklarowany w dół pętli. W linii 197, PA5 służy do odczytu poziomu baterii.

////Połączenie L293

const int motorA1 = PB6; // do pinu 15 L293 const int motorA2 = PB7; // do pinu 10 L293 const int motorB1 = PB8; // do pinu 7 L293 const int motorB2 = PB9; // do Pin 2 L293 //Diody LED podłączone do STM32F103C Pin A12 const int lights = PA12; //Brzęczyk / Głośnik do Arduino UNO Pin A8 const int buzzer = PA8; //Bluetooth (HC-06 JY-MCU) Pin stanu na pinie A11 STM32F103C const int BTState = PA11;

Również za pomocą analogWrite(); nadal będzie działać na „BluePill”. Ale lepiej zadeklarować piny PWM za pomocą, pinMode(, PWM);

Następnie użyj

pwmWrite(,);

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

Linie 32-44 to zmiany dokonane w akumulatorze. Jeśli zamierzasz korzystać ze sprawdzania poziomu baterii, musisz użyć dzielnika głosów dla posiadanej baterii. Ta część nie jest odzwierciedlona w szkicu Fritzinga. Istnieje wiele wyjaśnień na temat tworzenia dzielnika napięcia na Youtube. Ponieważ STM32F103C jest chipem 3,3 V, poprawiłem tutaj kod, aby fizycznie użyć dzielnika napięcia. Arduino może tolerować wyższe napięcia przez dostarczone ADC, ale „Niebieska pigułka” nie może.

/* Poziom naładowania baterii zostanie sprawdzony na pinie PA5

* Zmieniłem następną linię dla STM32F103C, ponieważ ADC nie może obsłużyć * niczego powyżej 3,3 V * Właśnie to skomentowałem * Dzielnik napięcia, używając dwóch rezystorów, musi zostać obliczony i użyty * do pomiaru wejścia ADC w dalszej części kodu * przykład: * GND --- 2K rezystor --- 1K rezystor ----5v * | * | * 3.3v */ // const float maxBattery = 3.3; // Zmień wartość na maksymalny poziom napięcia baterii!

Krok 3: Złóż wszystko razem

Poskładać wszystko do kupy
Poskładać wszystko do kupy
Poskładać wszystko do kupy
Poskładać wszystko do kupy
Poskładać wszystko do kupy
Poskładać wszystko do kupy
Poskładać wszystko do kupy
Poskładać wszystko do kupy

Zwykle używam prototypowej płytki do umieszczania elementów i lutowania między otworami, aby wszystko połączyć. Czasami "lutuję martwy błąd" wszystko razem, aby uzyskać bardziej wygląd lutowia Frankensteina/3D.

Wybrałem tę hybrydową metodę, aby urządzenie było czyste i lekkie – i oczywiście TANIO!

Ta metoda pozwala również na etykietowanie. Jedną z najgorszych części lutowania bezbłędnego jest patrzenie na układ scalony od dołu i zapominanie, który pin jest jaki.

Powyższe zdjęcia są dość oczywiste. Myślę, że najtrudniejsze jest znalezienie wystarczająco cienkiej tektury, aby jednocześnie była sztywna i wgłębiona. Możesz również użyć plastiku, ale oznaczenie go jest trochę trudniejsze. Po dociśnięciu kołków do deski i zaznaczeniu wgłębień używam narzędzia Dremel, aby przewiercić każdy otwór na kołek.

Jeśli jeszcze nie zauważyłeś, światła mam tylko jako dodatkową wtyczkę na płycie. Nie używam wskaźnika baterii ani brzęczyka. To dlatego, że mój projekt ma inny cel. To będzie oczywiste, gdy zobaczysz gotowy wynik z karoserią. …ale to wnosi inny pomysł, w tym projekcie jest wiele niewykorzystanych pinów. Może otwieracz bagażnika, otwieracz drzwi samochodowych, detonator petard, … …a nawet mini-Galvani-Edison Generator Zakłóceń Świetlistego Eteru!

Po zakończeniu całego lutowania przetestuj przed przyklejeniem połączeń na gorąco, aby odciążyć przewody.

Użyłem tej samej aplikacji na Androida co Ardumotive, można ją znaleźć na

Po przetestowaniu funkcji samochodu nadszedł czas, aby umieścić baterię i przełączyć. Przejdź do następnego kroku.

Krok 4: Bateria i przełącznik

OK, tutaj nie możesz dokładnie wykonać mojego planu.

W jakiś sposób będziesz musiał znaleźć dobre miejsce do umieszczenia baterii w samochodzie, albo sposób na ładowanie banku baterii za pomocą klucza sprzętowego, albo sposób na bezpośrednie ładowanie wtyczki akumulatora. W filmie wprowadzającym po prostu przykleiłem baterię i mikrokontroler do ramy i uruchomiłem. Kiedy chciałem przestać, po prostu odłączyłem baterię. Problem z tą konfiguracją polega na nietrwałości wtyczek w kablu USB i/lub banku zasilania. Lepiej mieć przełącznik.

Musisz także znaleźć dobre miejsce na przełącznik, gdzie karoseria nadal będzie umożliwiać dostęp. Użyłem zwykłego przełącznika przyciskowego (nie chwilowego) i zamontowałem go na spodzie ramy, gdzie znajduje się oryginalna komora baterii.

Będziesz musiał przeciąć kabel USB na pół i umieścić przełącznik między baterią a portem USB STM32F103C. Tak, możesz zasilać STM32F103C przez port USB. Po prostu nie da się go zaprogramować przez port USB. Ponownie użyłem narzędzia Dremel, aby wywiercić kilka otworów na kołki lutownicze przełącznika. Po przylutowaniu użyłem Hot Glue, ponownie do wzmocnienia połączeń.

Krok 5: Umieść karoserię samochodu na ramie

OK, powiedziałem, że przerobiłem oryginalną wersję Arduino tego samochodu. Właściwym produktem końcowym był więc rekwizyt sceniczny do baletu „Dziadek do orzechów” w wykonaniu naszego lokalnego zespołu baletowego. W scenie otwierającej po scenie przebiegła mysz z przypadkową magią Drosselmeyera. Użyłem szczura IKEA i zamontowałem go na ramie, Arduino i znacznie większym akumulatorze. Rekwizyt był ciężki i nie można go było ładować. To jest dużo lepsze!

Baw się swoim samochodem. Pamiętaj, że w STM32F103C jest o wiele więcej pinów, których można użyć. Może skunks podobny do tego z „Toy Story 4.”