Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 30 maja 2025, o 22:55


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 12 lut 2018, o 23:11 
    Offline
    Nowy

    Dołączył(a): 11 gru 2014
    Posty: 8
    Pomógł: 0

    Cześć!

    Postanowiłem podzielić się na forum małym projektem, który zrobiłem ostatnio właściwie przez nadmiar wolnego czasu.
    Jest to zdalnie sterowany samochodzik z czterema kołami, omija on przeszkody.
    Pewnie wielu z Was już widziało coś takiego, dlatego chciałem dołożyć coś oryginalnego od siebie i tym sposobem stworzyłem filmik "reklamujący" to cudo ;)



    Jak wspomniałem robot omija przeszkody, tzn przy wykryciu przeszkody (w odległości poniżej 10cm przed nim) odbiera możliwość sterowania, wykonuje losowy skręt w losowym kierunku i przywraca możliwość sterowania, co sygnalizuje kolorowa dioda RGB.

    Zanim rozpiszę się jak to działa, kilka słów wstępnych:
    Chciałem pokazać ten filmik na forum przede wszystkim dlatego, że całą wiedzę i miłość do programowania (nie tylko w C) zawdzięczam Bluebookowi ;) Byłbym niewdzięcznikiem, gdybym zachował to dla siebie. Mam przede wszystkim nadzieję, że kogoś ten projekt zaciekawi lub rozbawi, choć wiem że "avoiding obstacle robot" nie jest czymś nowatorskim :lol: ale na pewno świetną zabawą!

    Co i jak, czyli rozwinięcie napisów końcowych.
    Części w aucie:
    -takie jak podstawka można znaleźć w różnych sklepach modelarskich, osobiście staram się nie przykładać ręki do takich mechanicznych spraw jak wiercenie i cięcie, więc kupiłem gotowca;
    -silniki 6V, wraz z przekładnią i kołami (nieskrętnymi) również modelarskie;
    -sterowniki do silników L298N czyli właściwie proste (w obsłudze) jak mostek H;
    -zasilanie: powstawiałem 4 baterie 1,5V (szeregowo) do zasilania mikrokontrolera oraz 4 baterie do zasilania silników... okazało się, starczą na kilka minut samych testów, więc dorzuciłem równolegle kolejne 4;
    -na samochodziku jeździ obudowane arduino uno z atmegą 328p, które mile mnie zaskoczyło funkcjonalnością i liczbą cyfrowych I/O, które wykorzystałem do maksimum;
    -czujnik do omijania przeszkód - ultradźwiękowy hc-sr04, o wystarczającej do tego projektu dokładności i powtarzalności pomiarów. bardzo prosty w obsłudze, wystarczyło podłączyć pod wejście analogowe i śmigał bez rezystorów, kondensatorów itp.;
    -dioda RGB - słynna WS2811! wstawiłem mały kondensator między zasilające oraz rezystor na pin sygnałowy, ale chyba dla picu, bo zadziałało jeszcze bez nich ;) zielony-jeździmy, czerwony-przeszkoda;
    -moduł komunikacyjny hm-r868s, jest to odbiornik fal 868MHz, z którego znów jestem zadowolony, bo miałem poprzednio w rękach taniego chińczyka, coś związanego z pasmem 433mhz... nigdy więcej! nowy moduł sprawił się świetnie, zero zakłóceń i problemów, a podłączony jest bezpośrednio pod pin RX.
    Części w jednostce sterującej:
    -płytka evbavr04 z atmegą 32A, nie wiem w sumie skąd ją wytrzasnąłem, ale ma sporo dodatkowych funkcjonalności choć mi było potrzebne tylko parę I/O :)
    -dla sprawdzania co się dzieje w obliczeniach LCD screen 16x2, wyświetlałem na nim głównie co się dzieje z...
    -joystickiem! fajnie wyglądający mały joystick, który jest tragiczny jeśli chodzi o czułość. działa na zasadzie potencjometru- ma dwie osie X i Y z wyprowadzeniami na których mierzymy napięcie względem zasilającego... więc zajął dwa wejścia analogowe, a zasilałem go z pinów mikrokontrolera :D
    -do transmisji danych z joysticka moduł hm-t868s czyli odpowiednik receivera w aucie. jedynym moim wkładem żeby zadziałał było... włożenie kabelka z pinem męskim w dziurkę ANT :lol: to wydłużyło sygnał o tyle metrów, że w domu nie sprawdzę;
    -programator do płytki... jakiś chińczyk z czasów pierwszego projektu na atmedze8 na drugim roku studiów :D jakim cudem to działa...!

    Software
    Nie wiem do końca jak się zachować, czy wrzucać źródłowy... :? w każdym razie jestem bardzo zadowolony, bo cały program od podszewki napisałem osobiście!! Jeśli ktoś będzie chciał zobaczyć dokładnie działanie, mogę podzielić się kodem, a teraz opiszę pod kątem myślenia inżynierskiego co i dlaczego zrobiłem. Jedziemy po kolei tak jak idzie sygnał sterujący:
    -joystick w prosty sposób ogarnąłem przetwornikiem adc w atmedze. interesowała mnie znacznie mniejsza dokładność pomiaru niż pozwalał na to przetwornik, dlatego wynik dzieliłem przez 64...
    -a następnie wysyłałem dane przez moduł komunikacyjny. wszystko gładko dzięki uartowi, użyłem ramki 8n. z tego miejsca dziękuję producentom atmegi za przykłady kodu w nocie katalogowej :lol: programowanie jeszcze nigdy nie było takie proste!
    -dane odbieram w głównej pętli sterującej autkiem. ponieważ są to współrzędne X, Y położenia (wychylenia) joysticka, to dla ułatwienia zmieściłem je w jednym bajcie - mogłem to zrobić, gdyż wystarczyła mi rozdzielczość 2^4;
    -przed rozpoczęciem jazdy sprawdzenie co widzi czujnik, być może trzeba już skręcać ;)
    -sterowanie kołami! w normalnym aucie mamy dwa niezależne źródła sterowania: pedały i kierownicę. podczas gdy ja miałem tylko joystick, gdzie jedna współrzędna musi odpowiadać za jazdę w przód lub tył, druga zaś na boki, ale zależnie też od tej pierwszej... ponieważ samo wychylenie joysticka tylko w bok nie spowoduje jazdy w przód/tył! obmyśliłem więc, że współrzędna X jest pedałem gazu, zaś Y takim ujemnym gazem, który spowalnia jedną stronę kół według jakiegoś równania - jest to jedyna możliwość skrętu autka. dla szczególnego przypadku, gdy x=0, wartość Y obraca kołami w przeciwnym kierunku (np lewe w przód, prawe w tył, umożliwia to sterownik silników) dla szybszego obrotu.
    -przy okazji, problemem był fakt, że najmniejszą wartość X,Y joystick podaje będąc w lewym dolnym położeniu, więc zakres wartości od tego miejsca to 0-7... czyli po drodze troszkę matematyki aby przerobić na 0-3 i informację o kierunku...
    -dalej już tylko dodawanie, mnożenie wartości, żeby miały sens dla PWM. wykorzystałem timer0 i timer2 w fast PWM mode, gdyż mają taką samą rozdzielczość;
    -jak mówiłem, samochód zatrzymuje się po wykryciu przeszkody - jest niestety zbyt mało skrętny, by ją omijać jadąc. pod tym względem fajniejszym rozwiązaniem byłoby np. auto o bliższych osiach (wtedy np mniejszych kołach), które skręcałoby o 90stopni prawie w miejscu, lub dwukołowe z trzecim kołem skrętnym.
    -dioda RGB! ileż szarych komórek dzięki niej przepaliłem. gdy spojrzałem w notę aplikacyjną, myślałem, że jest tam błąd... ramka danych działająca w prędkościach typu 250 nanosekund :shock: wymyśliłem, że pora kupić oscyloskop, ale szybko obliczyłem, że musi być zbyt mocny na moją kieszeń. wtedy policzyłem, że gdyby tak używać jakichś prostych instrukcji w atmedze, to można ją spowolnić o kilka cykli procka pomiędzy ustawianiem 0 i 1 na wyjściu... dla tej potrzeby odkryłem asemblerową komendę NOP. wiedziałem, że muszę metodą prób i błędów sprawdzić rzeczywisty czas narastania zbocza i prędkość procka, nie wiedziałem tylko jak wstawić NOPa w języku C. I wtedy natknąłem się na youtubowy poradnik pewnego znanego programisty :lol: :lol: reszta poszła więc z górki, bo wystarczyło mi, że skopiowałem tyle NOPów ile było trzeba :D .
    -biblioteka do wyświetlacza LED odgrywała niewielką rolę, a miałem ją już od kilku lat pewnie dzięki Bluebookowi :D
    -wszystko to rozpoczęte jednym porządnym initem, obejmującym uart, adc, timery, kolor diody itd.

    Czego nie udało się zrobić?
    -Komunikacja przez bluetooth jeszcze przede mną. Chciałbym sterować samochodzikiem przez telefon, to znaczy zrobić do tego odpowiednią aplikację - chyba imitującą joystick, bo z lenistwa nie będę już zmieniał algorytmu sterowania :D moduł BT mam, czasu niestety brak.
    -Pożeranie baterii to jakaś masakra. Nie znam się za bardzo na takiej energetyce, ale 8 baterii wydaje mi się niepotrzebnie dużo dla tak wolnego samochodu.
    -Parę niedociągnięć jak to, że bez sygnału sterującego samochodzik tańczy :D


    Bardzo dziękuję całemu forum, wszystkim kolorowym książkom i ich autorowi za to że jesteście i rozkochaliście mnie w programowaniu dla zabawy :)


    PS. Bardzo żałuję że nie zrobiłem zdjęcia całości, niestety jestem poza domem ale postaram się wrzucić zaraz po powrocie. Na razie filmik musi wystarczyć :|



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 lut 2018, o 23:26 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27406
    Lokalizacja: Szczecin
    Pomógł: 1043

    No po prostu BOMBA :D ... fajny filmik no i samo urządzenie :D ... rewelacja. Gratulacje !!! ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 lut 2018, o 23:35 
    Offline
    Użytkownik

    Dołączył(a): 19 paź 2014
    Posty: 357
    Lokalizacja: stolyca pyrlandii :)
    Pomógł: 18

    A już się bałem, że będzie to dyskusja nt. wyższości aut niemieckich nad ... japońskie/francuskie/jakiekolwiek inne :P
    Ze swojej skromnej strony, zaproponowałbym tylko zmianę trzech literek w tym projekcie z E..... na ATB :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 lut 2018, o 07:01 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2596
    Pomógł: 128

    Fajnie wyszło, gratuluję!
    P. S. Ten kondensator na Din diody to niepotrzebny, bo bedzie rozjeżdżał zbocza.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 lut 2018, o 22:46 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Zabawy z kotem rządzą ;)

    aiwa napisał(a):
    -Pożeranie baterii to jakaś masakra.

    Przekalkuluj sobie czy nie lepiej zainwestować w akumulator. Przykładowe gotowe rozwiązanie:
    DIGI-LION 3PB (ŁADOWARKA Z PRZETWORNICĄ)

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 maja 2018, o 18:32 
    Offline
    Nowy

    Dołączył(a): 11 gru 2014
    Posty: 8
    Pomógł: 0

    Dzięki wszystkim za odzew :) .
    Posłuchałem rady z Android Studio i stworzyłem apkę do sterowania tym robotem wykorzystując BTM-222.
    W przyszłości na pewno jeszcze wykorzystam je w następnych projektach.
    Poniżej humorystyczne udokumentowanie. Pozdrawiam :)




    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO