SandwichBoxBot – problemy z zasilaniem i zmiany w projekcie

0
28
dav

Zaczynając pracę nad projektem robota i zapisując zadania w Trello w pewnym momencie doszedłem do wniosku, że mój projekt jest zbyt mały i prosty na 10 tygodni. Stwierdziłem, że montaż i przetestowanie hardware do projektu zajmie max kilka dni i przez resztę czasu będę się “bujał” z software. Software dla nie skomplikowanego robota, który tak naprawdę tylko jeździ, siłą rzeczy też będzie stosunkowo nieskomplikowany. Nie zbieram tu też (póki co) danych z żadnych czujników, które mógłbym wrzucić gdzieś w chmurę IoT i potem analizować.

Rzeczywistość bardzo szybko zweryfikowała założenia. Podczas pierwszych prób z napędem pojawił się pierwszy spory problem od strony zasilania. Nodemcu Amica, którego używam, nie posiada tak naprawdę wyprowadzenia 5V, które  mógłbym użyć do zasilania silników. Sprawdziłem miernikiem i na wejściu Vin – po podpięciu zasilania przez USB – pojawiło się około 5V. Nodemcu LoLin ma dedykowane wyprowadzenie, które powinno teoretycznie być sprzężone z zasilaniem 5V z USB, ale LoLin jest za szeroki na płytkę stykową. Wiedziony więc brakiem doświadczenia (i zaćmieniem umysłowym) próbowałem zasilać silniki z wyprowadzenia Vin. Oczywiście, jedyne co otrzymałem to pisk dochodzący z napędów i bardzo dziwne zachowanie jednej z czujek IR, których będę używał do detekcji obiektów przed robotem. Po krótkiej chwili, zauważyłem też że układ regulatora zaczyna się bardzo grzać a potem pojawił się nad nim lekki dymek (sic!). Na szczęście odpiąłem bardzo szybko zasilanie, i wygląda na to że nic się nie zjarało :).

Cóż. Mądry polak po szkodzie. Powinienem był przewidzieć, że skoro na wyprowadzeniu jest napisane że jest to wejście to pewnie raczej jest to tylko wejście. Poza tym dwa silniki potrzebują sumarycznie około 400 mA i Amica raczej mi takiego prądu nie dostarczy (być może zrobił by to LoLin, nie wiem jednak dokładnie jak przeprowadzone jest to zasilanie do wyprowadzenia 5V USB).

Trzeba było wymyślić rozwiązanie alternatywne. Początkowo chciałem bardzo zasilać wszystko nadal za pomocą powerbanku. W zestawie startowym do RaspberryPi, który kiedyś kupiłem znalazłem moduł zasilając 5V/3.3V na płytkę stykową (dla porządku cena: ok 4 pln). Spróbowalem z nim i szybko zrezygnowałem. Całość robi się wtedy niepotrzebnie duża. Doszedłem też do wniosku, że jednak zrezygnuję z powerbanku. Pomimo tego, że jak na power bank nie jest wielki to i tak jest duży i ciężki. Zdecydowałem więc, że wykorzystam cztery zwykłe baterie AAA, które spięte w szereg dadzą mi napięcie ok 6V.

Aktualny schemat połączeń przedstawiam poniżej (wybaczcie plątaninę – po raz pierwszy używałem fritzing-a ):

Po pierwszych próbach uruchomienia okazało się jednak, że silniki nadal piszczą i stoją w miejscu. Tym razem fakap był związany z niewłaściwym wysterowaniem wyjść PWM w kodzie. W przypadku klasycznego Arduino wyjścia skalowane są w zakresie 0-255, natomiast w przypadku ESP8266 skalowanie jest identyczne jak dla wejść: 0 – 1023. Cóż … RTFM chciało by się powiedzieć 🙂

Dodatkowo okazało się, że muszę skorzystać z dwóch czujników IR, bo ich pole działania jest trochę zbyt małe. Te czujniki niestety warte są swojej ceny. Teoretycznie powinny mierzyć odległość, ale w praktyce można o tym zapomnieć. Rzeczywisty zakres pomiarowy jest rzędu może 2mm. Generalnie działają zero-jedynkowo i tak też je podłączyłem.

Na chwilę obecną uruchomiłem czujniki przeszkody, napęd, brzęczyk i laser (czyli w zasadzie prawie wszystkie elementy).

Aktualny kod testowy jest na githubie. W dalszej kolejności planuję zaimplementować OTA, żeby nie łączyć się układem za każdym razem za pomocą kabla. Być może zamontuję sobie jakiegoś dip-switcha, który przełączy mi robota pomiędzy trybem programowania, a trybem pracy – zobaczymy.

Nagrałem też filmik. Prezentuję układ testowy zmontowany bez obudowy i z grubsza biorąc tłumaczę co i jak w kodzie:

ZOSTAW ODPOWIEDŹ

Please enter your comment!
Please enter your name here