Popularny post ethanak Napisano Październik 19, 2019 Popularny post Udostępnij Napisano Październik 19, 2019 Tak to jest, jak się najpierw ustala nazwę, a potem dopiero traktuje jako akronim i szuka jakiegoś sensownego określenia 🙂 Ale jeśli ktoś czytał "Cieplarnię" Aldissa powinien już w tym momencie domyślać się, do czego służy SMARDZ (a jeśli nie to warto przeczytać). Kilka słów wyjaśnienia: bardzo lubię Arduino Pro Mini (choćby ze względu na cenę klonów i brak jakichkolwiek niepotrzebnych wodotrysków - ot, po prostu atmega z kwarcem i pinami na zgrabnej płytce). Niestety - o ile programowanie różnych mniej lub bardziej stacjonarnych urządzeń typu automatyka domowa jest całkiem wygodne (o ile się zadba o odpowiedni konwerter) - o tyle przy robotach, które jeżdżą, szwendają się po podłodze i ogólnie starają się usilnie zerwać wszystkie możliwe kable, sprawa staje się bardziej skomplikowana. Próbowałem jakichś wariackich rozwiązań na ESP8266 (coś w stylu "Serial over IP"), ale rezultaty były raczej mało interesujące. Postanowiłem więc przestać bawić się w oszczędzanie i użyć Raspberry Pi Zero W. Rozwiązanie (oprócz tego że działa bezproblemowo) ma jeszcze jedną zaletę: wszystkie pliki trzymane są na karcie pamięci malinki, układ katalogów zgodny jest z oryginalnym układem Arduino, a do komunikacji z malinką możemy użyć dowolnego komputera z zainstalowanym jakimś klientem SSH (np. PuTTY). I tu uwaga: mimo że opisuję dość dokładnie jak takie coś można sobie zrobić - zakładam u potencjalnego użytkownika podstawową wiedzę na temat Linuksa, Arduino i ogólnie elektroniki. Tak że proszę - bez pytań typu "a jak się przegrywa pliki na RPi" i "po co tam Arduino IDE jeśli go nie używam" 🙂 Jak zwykle postanowiłem użyć elementów "wyciągniętych z szuflady". Co prawda jest mało prawdopodobne, aby wiele osób miało w szufladzie jakieś niepotrzebne malinki, ale ponieważ wymagania SMARDZa są bardzo małe, można po prostu na chwilę wyjąć ją z innego urządzenia. Nawet zakup RPi specjalnie do tego celu nie będzie niepotrzebnym wydatkiem - albo posłuży do programowania, albo znajdzie zastosowanie w innym urządzeniu (np. kamerze, serwerze octoprinta co tam sobie wymyślimy). Co do wymagań - potrzeba niewiele. Wystarczy stały adres IP w domowej sieci WiFi, dostępny interfejs Serial na ttyS0 i wolny pin BCM17. Co do malinki - można kupić wersję z wlutowanymi pinami, ale to chyba szczyt lenistwa, SMARDZ jest przeznaczony dla osób, które potrafią się lutownicą posługiwać i wlutowanie czterdziestopinowego gniazda nie powinno stanowić problemu. Zaoszczędzić też możemy na karcie SD, wcale nie musimy kupować najdroższej, wystarczy taka za kilkanaście złotych. Potrzebny będzie jeszcze konwerter napięć i jakieś drobne elementy montażowe. Tak więc mamy już malinkę (z pinami). Zakładam, że większość z tych, którzy chcieliby sobie coś takiego zrobić ma jakiś zasilacz (wystarczy mocniejsza ładowarka od komórki) - ja trafiłem w Tesco ostatnio ładowarkę 2.5A za niecałą dychę przy okazji kupowania jakichś bułeczek 🙂 Instalacja jest prosta, chociaż trochę potrwa. Należy zacząć od skonfigurowania systemu tak, aby otrzymywał stały adres IP w sieci wewnętrznej. Ponieważ sposobów na to jest wiele i wybór ściśle zależy od warunków technicznych - odsyłam do oficjalnych instrukcji konfiguracji RPi. Potrzeba również, aby malinka miała dostęp do Internetu. Również pamiętajmy, że będzie nam potrzebny UART, czyli konfigurujemy malinkę tak, aby UART był aktywny, ale konsola serial wyłączona. W tym celu łączymy się z malinką przez SSH, wydajemy polecenie: sudo raspi-config i kolejno: Wybieramy punkt "Interfacing options" Z nastpnego menu wybieramy "Serial" Na pytanie "Would you like a login shell to be accessible over serial?" odpowiadamy "Nie" Na pytanie "Would you like the serial port hardware to be enabled?" odpowiadamy "Tak" Jako że najprawdopodobniej konfigurować to będziemy w trybie headless (nie bardzo sobie wyobrażam po co komu graficzne środowisko na komputerze bez podłączonego monitora - ale może ktoś ma takie upodobania) - na komputerze z którego przeprowadzamy instalację potrzebny będzie jeszcze vncviewer. I tu znów odsyłam do materiałów dotyczących używanego systemu operacyjnego - w przypadku Ubuntu czy Debiana najprostszy będzie xtightvncviewer. Oczywiście, jeśli mamy graficzne środowisko i podłączony monitor możemy z tego skorzystać! Zaczynamy od instalacji najpotrzebniejszych programów. Jeśli używamy otoczenia graficznego, wystarczy WiringPi i pyserial: sudo apt install wiringpi python-serial Jeśli instalujemy w trybie headless, potrzebne będą dodatkowe programy: sudo apt install wiringpi python-serial x11vnc xserver-xorg-video-dummy Teraz musimy zainstalować Arduino IDE. Tu znów w przypadku graficznego środowiska postępujemy zgodnie z oficjalnymi instrukcjami - Arduino IDE należy co najmniej raz uruchomić! Zajmijmy się więc wersją headless. Należy do katalogu domowego wgrać najnowszą wersję Arduiono IDE dla Linuxa ARM 32-bity (w chwili pisania jest to wersja 1.8.9) i rozpakować poleceniem: tar -xJf arduino-1.8.9-linuxarm.tar.xz Utworzony zostanie katalog arduino-1.8.9 zawierający wszystko, co potrzebne do pracy. Teraz należałoby uruchomić Arduino IDE - niestety, bez grafiki się nie da... trzeba więc nieco oszukać Javę żeby myślała, że wszystko jest w porządku. Najprostszym sposobem jest uruchomienie IDE w symulowanym środowisku graficznym. W tym celu wydajemy polecenie: xvfb-run arduinio-1.8.9/arduino i po odczekaniu dłuższej chwili (IDE musi wystartować, a tego nie widać) zatrzymanie programu przez ctrl-c. Powinny zostać utworzone katalogi ~/Arduino zawierający katalog libraries oraz ~/.arduino15 z (między innymi) plikiem preferences.txt. Jednak lepiej jest widzieć co się dzieje, poza tym nie wszyscy lubią zabawy z zipami i ściąganie bibliotek z githuba, w większości przypadków użycie okienkowego interfejsu jest po prostu wygodniejsze. A więc aby ujrzeć (teraz i następnym razem) interfejs Arduino IDE należy postąpić nieco inaczej. Wydajemy kolejno polecenia: Xvfb -display :20 & x11vnc -display :20 & DISPLAY=:20 arduino-1.8.9/arduino a na komputerze na którym pracujemy uruchamiamy przeglądarkę VNC i łączymy się z naszą malinką. Należy pamiętać, że x11vnc uruchomiony w ten sposób pozwala tylko na jedną sesję! Teraz po prostu po pokazaniu się właściwego interfejsu IDE możemy go zamknąć, a na konsoli malinki wydać polecenie: killall Xvfb Spowoduje to wyłączenie graficznego środowiska oraz serwera VNC. Tak więc nasza malinka jest już gotowa, możemy przystąpić do instalacji plików SMARDZa. Tu już jest to wręcz trywialne. Z załącznika do posta (smardz.zip) trzeba wyciągnąć plik smardz.tgz, przegrać go na naszą malinkę do katalogu domowego i rozpakować poleceniem: tar -xzf smardz.tgz Powinien zostać utworzony katalog bin, a w nim pliki wykonywalne: ardureset arducomp.py ardupload.py arduserial.py Możemy teraz sprawdzić, czy wersja Arduino IDE w pliku ardupload.py zgadza się z wersją zainstalowaną, ew. poprawić linijkę: aversion='1.8.9' zgodnie z zainstalowaną wersją Arduino IDE. Należy pamiętać, że w przypadku wgrania nowej wersji IDE trzeba będzie tę linijkę poprawić ponownie! Jeśli nie stosujemy malinki do innych celów lub żaden zainstalowany program nie używa pinu BCM17 możemy do /etc/rc.local dopisać: /usr/bin/gpio -g mode 17 output /usr/bin/gpio -g write 17 1 Jeśli tego nie zrobimy, może okazać się konieczne wydanie polecenia ardureset zaraz po uruchomieniu systemu. Mamy więc wszystko zainstalowane... ale jakoś to trzeba z naszym Arduino połączyć! Tu już wszystko zależy od inwencji użytkownika. Schemat połączeń będzie oczywiście podobny w każdym przypadku, zworka w obwodzie zasilania jest opcjonalna i służy do rozdzielenia zasilanie, jeśli chcemy oddzielnie zasilać Arduino i SMARDZa. Połączenia między Arduino a RPi powinny przechodzić poprzez konwerter napięć (wykorzystane trzy z czterech par), a więc sprowadzą się do: DTR/1 - GPIO17/11 TxD/2 - RxD/10 RxD/3 - TxD/8 Ja w swoim rozwiązaniu użyłem kawałka dwustronnej płytki uniwersalnej, gniazda zostały wycięte z jednej 40-pinowej pojedynczej listwy żeńskiej, ale to już zależy od własnych potrzeb i możliwości, każdy ma inne. Pozostaje jeszcze kwestia obudowy. Początkowo użyłem wersji z Thingiverse (nota bene bardzo wygodnej), postanowiłem jednak nieco ją zmodyfikować. Pliki STL oraz SCAD w załączniku! No i pora na testy. Potrzebne jest Arduino Pro Mini z wlutowanymi kątowymi pinami do programowania (ja stosuję zawsze pięć). Podłączamy Arduino do SMARDZa, podłączamy zasilanie do RPi, powinna zaświecić się dioda zasilania w Arduino. Teraz łączymy się przez SSH z naszą malinką. Potrzebny jest jakiś dowolny szkic (np. blink) umieszczony w katalogu Arduino (możemy go przegrać choćby z ~/arduino-1.8.9/examples/01.Basics/Blink). Wchodzimy do katalogu Arduino/Blink: cd ~/Arduino/Blink i wydajemy polecenie arducomp.py Program powinien się skompilować, zostać przesłany na Arduino i po chwili powinniśmy zobaczyć migającą diodę. Kolej na użycie monitora serial. W tym celu otwieramy drugie połączenie z malinką i wpisujemy polecenie arduserial.py Powinniśmy zobaczyć ekran monitora. Obsługa jest intuicyjna, wspomnę tylko że wpisanie czegokolwiek jest możliwe tylko przy aktywnym monitorze (przełączanym klawiszem F2), a prędkości przełącza się klawiszami kursora po wciśnięciu F3 przy nieaktywnym monitorze. Na pierwszej konsoli musimy skompilować jakiś program używający seriala. Jeśli nie macie nic takiego pod ręką, przygotowałem taki bardzo krótki test pozwalający sprawdzić zarówno nadawanie, jak i odbiór: void setup(void) { Serial.begin(9600); Serial.println("Program wystartował"); } void loop() { if (Serial.available()) { Serial.println((int)Serial.read()); } } Jeśli wszystko będzie w porządku - możemy już zająć się prawdziwą pracą z naszym robotem. Należy tylko zadbać o to, aby piny interfejsu Arduino zwrócone były w stronę umożliwiającą podłączenie SMARDZa bez konieczności użycia dodatkowych kabli: ...a następnie przystąpić do programowania i monitorowania naszego robota 🙂 (robot na zdjęciu jest wersją próbną w trakcie powstawania, zrzut ekranu monitora pochodzi z tego właśnie robota). Wszystkie pliki potrzebne do odtworzenia SMARDZa w załączniku: smardz.zip Jak zwykle w przypadku pytań pozostaję do dyspozycji. 6 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Październik 21, 2019 Udostępnij Październik 21, 2019 Właśnie zaakceptowałem Twój opis, możesz go teraz zgłosić do akcji rabatowej umieszczając link w temacie zbiorczym. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum 🙂 Link do komentarza Share on other sites More sharing options...
mwwojcik Październik 23, 2019 Udostępnij Październik 23, 2019 Witam, Fajny pomysł i ma sens. Pytanie mam, czy ten SMARDZ ma służyć jako dokładany do różnych projektów programator / monitor Arduino? Przydałoby sie na wstępie trochę dokładniej wyjasnić cel i zastosowanie bo chyba złapałem o co chodzi ale chciałbym doprecyzować. Dzięki za ten projekt, na pewno jest inspirujący 🙂 Link do komentarza Share on other sites More sharing options...
ethanak Październik 23, 2019 Autor tematu Udostępnij Październik 23, 2019 1 godzinę temu, mwwojcik napisał: czy ten SMARDZ ma służyć jako dokładany do różnych projektów programator / monitor Arduino Nie bardzo rozumiem pytanie, w jakim sensie "dokładany"? Czy konwerter USB-UART jest dokładany do różnych projektów? Pamiętaj, że jest to pełny komputer z zainstalowanym Arduino IDE i tak jak swojego laptopa nie dokładasz do każdego projektu, tak samo nie dokładasz SMARDZa. Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
mwwojcik Październik 24, 2019 Udostępnij Październik 24, 2019 No własnie poprosiłem o wyjasnienie a sam ściemniłem 🙂 Dokładnie o to doprecyzowanie mi chodziło, czyli na czas deweloperki / rozwoju / zmian dokładasz SMARDZa (nota bene fajna nazwa!) a potem odłączasz oczywiście bo projekt musi przecież pracować samodzielnie. No to w ramach inspiracji mam pytania: 1) Co z ESP8266 i ESP32, rozumiem że jeśli zainstalujesz na R-Pi wszystkie potrzebne definicje i biblioteki nie bedzie problemu żeby programowac / monitorować i takie płytki? Czy też nie brałeś tego jeszcze pod uwagę? 2) Czy planujesz wersję z USBapp żeby programować procesory "na czysto" bez boot-loadera Arduino? Link do komentarza Share on other sites More sharing options...
ethanak Październik 24, 2019 Autor tematu Udostępnij Październik 24, 2019 14 minut temu, mwwojcik napisał: Co z ESP8266 i ESP32, rozumiem że jeśli zainstalujesz na R-Pi wszystkie potrzebne definicje i biblioteki nie bedzie problemu żeby programowac / monitorować i takie płytki? Czy też nie brałeś tego jeszcze pod uwagę? Ale do nich nie jest potrzebny żaden dodatkowy układ - to się bardzo ładnie programuje przez OTA. Oczywiście - SMARDZ jak najbardziej może do tego służyć, nawet nie musi być do robota podłączony 😉 SMARDZ w tej postaci przeznaczony jest konkretnie do Arduino Pro Mini, ale przecież można go podłączyć do czegokolwiek co potrafi się z RPi skomunikować. Co do programowania "gołych" procków - na razie nie mam takiej potrzeby, ale w razie czego zawsze mogę jakąś przejściówką podłączyć (choćby jakieś Pro Mini w charakterze programatora, mogę wyjąć z tego co kiedyś sobie zrobiłem). Dopisanie jakichkolwiek skryptów czy nawet całkowite przejście na jakieś odmiany make to kwestia potrzeby. Problem jedynie w tym, że główną zaletą SMARDZa jest możliwość zdalnego monitorowania, zdalne programowanie to po prostu wygoda (inaczej: na czas programowania mogę robota podłączyć jakąś wtyczką do swojego kompa, ale w czasie pracy już nie zawsze). Link do komentarza Share on other sites More sharing options...
mwwojcik Październik 24, 2019 Udostępnij Październik 24, 2019 Dnia 19.10.2019 o 17:58, ethanak napisał: Potrzebny jest jakiś dowolny szkic (np. blink) umieszczony w katalogu Arduino (możemy go przegrać choćby z ~/arduino-1.8.9/examples/01.Basics/Blink). Wchodzimy do katalogu Arduino/Blink: cd ~/Arduino/Blynk To teraz tylko taki drobiażdżek: Blynk czy Blink? 🙂 Link do komentarza Share on other sites More sharing options...
ethanak Październik 24, 2019 Autor tematu Udostępnij Październik 24, 2019 Sorki - Blink oczywiście. Niestety już nie mogę edytować posta 😞 1 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Październik 24, 2019 Udostępnij Październik 24, 2019 @ethanak naniosłem poprawkę w pierwszym poście 🙂 Link do komentarza Share on other sites More sharing options...
lukaszd82 Listopad 5, 2019 Udostępnij Listopad 5, 2019 Ja mam tylko jedną uwagę, skoro mowa o robocie itp to liczy się zużycie energii. To proszę o wyjaśnienie po co RaspPi i dodatkowo arduino do sterowania. Przecież w tym wypadku sam RaspPi załatwia sprawę. Można wykorzystać jego GPIO i bezpośrednio z maliny sterować robotem wraz z opcją monitoringu. Można wtedy wykonać o wiele bardziej zaawansowane projekty, można zrobić dodatkowe manualne sterowanie przez wifi itp... Link do komentarza Share on other sites More sharing options...
ethanak Listopad 5, 2019 Autor tematu Udostępnij Listopad 5, 2019 34 minuty temu, lukaszd82 napisał: proszę o wyjaśnienie po co RaspPi i dodatkowo arduino do sterowania Chyba zaszło nieporozumienie. Arduino nie jest "dodatkowym" elementem, a podstawowym. RPi służy wyłącznie do tego, aby w fazie programowania i testów podłączyć go do Arduino (który trochę trudno programuje się zdalnie, szczególnie jeśli siedzi w jeżdżącym robocie). A co do energii to owszem, Arduino pobiera mniej prądu niż RPi 😉 1 Link do komentarza Share on other sites More sharing options...
lukaszd82 Listopad 5, 2019 Udostępnij Listopad 5, 2019 (edytowany) Czyli rasp pi jest tylko elementem stosowanym w fazie testów i zmian. Później już się go pozbywamy. No to ok... Z tekstu wywnioskowałem, że RaspPi robi za taki pkt dostępowy do robota na codzień... 🙂 A w takim układzie to Arduino byłoby zbędne 😉 Edytowano Listopad 5, 2019 przez lukaszd82 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »