Robot inspekcyjny sterowany przy pomocy modułów nRF24l01

Robot inspekcyjny sterowany przy pomocy modułów nRF24l01

DSC00363

Witam! To będzie mój pierwszy wpis na tej stronie i będzie dotyczył zdalnie sterowanego pojazdu wyposażonego w kamerkę 2,4 GHz. Myślę że jest to ciekawy pomysł na prezent dla dziecka. Moduły nRF24l01 (wersja z antenką) zapewniają spory zasięg i w moim przypadku mogę podglądać każde miejsce w mieszkaniu bez wstawania z łóżka. Na otwartej przestrzeni zasięg tych modułów to PODOBNO powyżej 1000m. Obraz z kamery odbierany jest przy pomocy odbiornika 2,4 GHz podłączonego do laptopa. Serwomechanizm umożliwia rozglądanie się w górę i w dół.

Do wykonania robota użyłem:

  • 3 pojemników na żywność,
  • 4 kółek ze starej zabawki (samochodzika),
  • 2 pojemników na tabletki musujące,
  • kostka elektryczna,
  • pojemnik na baterie,
  • dwa małe kątowniki,
  • śrubki, nakrętki,

w części elektronicznej:

  • 4 silnik DC z przekładnia,
  • 2 arduino nano,
  • 2 moduły nRF24l01,
  • kilka kondensatorów,
  • serwomechanizm,
  • kamerka 2,4 GHz,
  • przetwornica DC/DC ,
  • moduł joystick,
  • potencjometr 10 K,
  • akumulatorki 6 x AA i 1 x 9V,
  • 2 sterowniki l293d,
  • włączniki, przewody, kondensatory itp..

Pojemniki po tabletkach musujących służą do podtrzymania silników przykręconych do ścianek największego pojemnika. Mniejszy zielony pojemnik przeznaczony jest na baterie.

DSC00328

Koła przymocowane są do osi silnika przy pomocy kostki elektrycznej, natomiast serwomechanizm do korpusu robota przy pomocy dwóch kątowników i 4 śrubek co widać na zdj. poniżej:

DSC00340

Kamera zamocowana jest przy pomocy opasek zaciskowych. Konstrukcja jest prosta ale myślę, że efekt nie jest zły biorąc pod uwagę, że pojazd wykonany jest ze zwykłych pojemników na żywność. Kontroler również wykonany jest ze zwykłego pojemnika.

Poglądowy schemat nadajnika:

nadajnik

Poglądowy schemat odbiornika:

nrf

Na schematach pominąłem niektóre połączenia (podałem tylko miejsca ich podpięcia) aby schemat był bardziej czytelny. Nie jestem najlepszy w rysowaniu schematów ale mam nadzieje, że są w miarę czytelne. Na schematach nie ma też kondensatorów wygładzających napięcie.

Zastosowałem kondensatory 10uF przylutowane miedzy pin GND, a VCC (3,3V) w modułach nRF24l01. Między piny silników kondensatory ceramiczne 1uF. Między stabilizowane 5V z arduino (zasilające logikę l293d), a masę kondensator 100uF. Między zasilanie 7,8V (do zasilania silników), a masę dwa kondensatory: ceramiczny 1uF i elektrolityczny 100uF.

Schemat nie pokazuje też obwodu świateł robota ale tego akurat chyba nie trzeba pokazywać (po prostu diody podłączone do baterii przez rezystor i włącznik).

Jeżeli chodzi o obwód nadajnika to został on umieszczony w pojemniku na kanapki z wywierconym otworem na antenkę, przymocowanym joystickiem i potencjometrem.

Serwomechanizm poruszający kamerką zasilany jest przez przetwornice DC/DC podłączoną do baterii.

Cała elektronika schowana jest we wnętrzu robota.

DSC00356

Kod nadajnika:

Kod odbiornika

Jako uzupełnienie mojego artykułu dołączam linki z filmikami prezentującymi robota:

Pozdrawiam! Mam nadzieję, że nie jest źle jak na pierwszy raz.

Ocena: 4.57/5 (głosów: 69)

Podobne posty

36 komentarzy do “Robot inspekcyjny sterowany przy pomocy modułów nRF24l01

  • Jestem miło zaskoczony, spodziewałem się jakiegoś badziewia, a tu całkiem ciekawy projekcik :). Ale po kolei: sprzęt – pełna prowizorka, zgodna z najlepszymi zasadami majsterkowania. Tylko zamiast arduino mogłeś dać “łyse” mikrokontrolery, cena całości od razu idzie w dół. Program jak na pisany w arduino nie jest zły, działa i nie jest specjalnie przekombinowany. No i należy się wielki plus za prawidłowe filtrowanie zasilania.

    Odpowiedz
  • Daję piątkę bo nie można 4.5.
    Dwie uwagi do kodu:

    1) Przygotowując kod do publikacji zadbaj o czytelność – nigdy nie umieszczaj więcej niż jednej instrukcji w linii i zadbaj o to, aby nie przekroczyć prawego marginesu, bo poziome skrolowanie przeszkadza w czytaniu;

    2) Nieprawidłowo stosujesz operator przecinka – to nie to samo co średnik! Przecinek oznacza, że kompilator ma pełną swobodę w wyborze kolejności wykonania instrukcji – a nie chciałbyś pewnie, aby np. najpierw wartość val została przekazana do nadajnika, następnie zostało obliczone map(val,…) a na samym końcu do val podstawiona wartość z wejścia analogowego.

    Odpowiedz
  • Ładny projekt :) Tak przy okazji, możesz sprawdzić tak mniej więcej realny zasięg? W to 1000 metrów nigdy nie wierzyłem, ale jak na otwartej przestrzeni ogarną około 150 metrów to też sobie takiego robota sprawię :D

    Odpowiedz
    • Też sie bałem że będzie problem z zakłóceniami.. ostatecznie nie jest źle ale gdy oddale sie na większą odległość to obraz troche jest zanieczyszczony.. jak będe miał czas to pójdę w plener sprawdzić ile maksymalnie moge sie oddalić od odbiornika.
      Pozdrawiam!

      Odpowiedz
    • Ciężko powiedzieć bo w sumie nie kupiłem jej.. leżała już dłuższy czas niepotrzebna.. kiedyś służyła jako monitoring w sklepie.. plusem jest obecność diod IR dzięki czemu można prowadzić nocne eskapady:D no i fajne jest to że jest dostosowana do monitoringu zewnętrznego ;) ale ceny nie jestem w stanie określić..
      Pozdro!

      Odpowiedz
  • użyłeś jako kodu do “znalezenia się” odbiornika i nadajnika słowa pipe. można oczywiscie wpisac w obu programach np 0001, jestem ciekawy czy da się i czy ktoś wie jak wstawic w setup zmienną by ustawić w nadajniku kilka kodów i za pomocą przełacznika zmieniac to z którym odbiornikiem ma się nadajnik komunikować

    Odpowiedz
  • pipe to nazwa zmiennej z tego co widze więc nie mogłobybyć 0001 :) W zmiennej pipe przechowywany jest adres, wystarczyłoby dodać instrukcje która ustawiałaby inny adres (oczywiście trzeba też z deklaracji zmiennej usunąć “const”)

    Odpowiedz
  • Napisałeś że wykorzystałeś 2x arduino nano. Na schematacie odbiornika jest arduino UNO, a na nadajniku NANO. A z koleji w samym robocie od strony nadajnika jest UNO, a przy odbiorniku NANO xd jak to w końcu jest?:P

    Odpowiedz
  • Super projekt, chętnie sam bym spróbował coś takiego sobie zbudować.

    Patrząc na podane tutaj elementy, jaki może być łączny koszt budowy swojego :)

    Odpowiedz
  • hi sir, i have to control the robot car project. Where the rear wheels in the form of a dc motor is controlled with flex sensors and front wheels in the form of a servo motor controlled by the accelerometer sensor. Robot controller with a car connected with nrf24l01. if one of the sensors to control I can. but if it combines both to control I can not. Both sensors transmit data simultaneously . dc motors and servo motors confused receive data so that its movement is chaotic. How should I fix this? can you help me.? Can I send my program to you and you see.? Please. My email: rema_adhe@yahoo.com

    Odpowiedz
  • Witam. Mam problem z tymi modułami (wiem że ro nie powinno być tu tylko na forum ale tam nikt nie potrafi mi pomóc) Mam przylurowane kondensatory 4.7 uf przy vcc 3.3v i gnd gdy wgrywam program testowy znajduje połączenie ale gdy chce przesłać dane to mam napisane radio niedostępne (bo tak ma być napisane gdy radio nie jest dostępne :) ) mam takie same moduły leżą obok siebie podłączone wszystko dobrze sprawdzałem milion razy. Czy ktoś wie o co chodzi???

    Odpowiedz
  • Arduino:1.8.5 (Windows 7), Płytka:”Arduino/Genuino Uno”

    C:\Users\Marcin\AppData\Local\Temp\arduino_modified_sketch_111650\Blink.ino:11:21: fatal error: RF24.h: No such file or directory

    #include “RF24.h”

    ^

    compilation terminated.

    exit status 1
    Błąd kompilacji dla płytki Arduino/Genuino Uno.

    Ten raport powinien zawierać więcej informacji jeśli w
    File -> Preferencje zostanie włączona opcja “Pokaż
    szczegółowe informacje podczas kompilacji”

    taki blad przy probie wgrania do odbiornika,ktos cos moze wie?

    Odpowiedz
  • czy zastosowany sposób wysyłania położenia potencjometrów z nadajnika, poprzez wysyłanie położenia x i y w tym samym bajcie nie powoduje problemów z kontrolą?
    chodzi mi o to, że kontroler nie zawsze jest wychylony tylko w jednej osi i czasami może być wychylony po przekątnej.
    odbiornik odbierze na zmiane 30 i 180 to jak to bedzie jechalo?

    Odpowiedz
  • potrzebuje kod do “łazika” 4 silniki, arduino uno, nrf24l01, i tu jest problem bo sterownik silników to l298N i nie umiem poprawić kodu aby wszystko działało poprawnie. (kończy się na tym że pojazd nie zatrzymuje się po puszczeniu joysticka ) czy mógł byś coś zaradzić ?

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?