
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).
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ć 🙂
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.