Skocz do zawartości

Tablica liderów


Popularna zawartość

Pokazuje zawartość z najwyższą reputacją od 08.05.2015 we wszystkich miejscach

  1. 15 punktów
    Witam wszystkich! =) Od dłuższego czasu zbieram się do opisu mojej pierwszej "poważniejszej" konstrukcji. Jako że semestr się dopiero zaczyna i jeszcze jest czas na cokolwiek, a na dodatek w ciągu ostatnich dni została otworzona kolejna edycja konkursu z Proxxonem, przyszedł czas na zrealizowanie tego planu. Tym samym z wielką przyjemnością prezentuję robota mobilnego klasy micromouse: Let Me Out 1. Pomysł Podczas zeszłorocznych wakacji moje zainteresowanie zostało skierowane w kierunku dwóch zagadnień: roboty klasy micromouse oraz silniki krokowe. Z tego pierwszego bardzo szybko podjąłem decyzję o budowie takiego robota. Interesując się zaganieniem drugim (silników krokowych), dowiadując się o ich możliwościach i ograniczeniach zacząłem się zastanawiać nad ich wykorzystaniem w robocie klasy micromouse. Niestety, przewalając internet dniami i nocami nie znalazłem żadnego sensownego opisu zrealizowanej i zbadanej konstrukcji napędu robota mobilnego opartego na silnikach krokowych. W ten sposób narodził się pomysł o zaprojektowaniu, zbudowaniu i przetestowaniu takiego rozwiązania. 2. Założenia projektowe • Spełnienie podstawowych warunków konstrukcyjnych oraz programowych zawartych w regulaminie konkurencji micromouse. Robot projektowany był tak, żeby mógł wziąć udział w zawodach w Polsce. • Oparcie projektu o procesor z rodziny AVR W tamtym momencie STM-y dopiero wynurzały mi się zza horyzontu, więc zdecydowałem się na popularnego AVR-a, którego już dobrze znałem i umiałem go programować. • Konstrukcja umożliwiająca poruszanie się po skosie labiryntu Aby móc zastosować bardziej złożone algorytmy przemierzania labiryntu. • Zastosowanie silników krokowych jako napęd główny robota • Umożliwienie bezprzewodowej komunikacji z robotem Głównie w celu odbierania danych o aktualnym stanie zmapowania labiryntu przez robota i możliwości wizualizacji aktualnej sytuacji na komputerze. • Zaprojektowanie płytki PCB w sposób umożliwiający wykonanie jej metodą fototransferu Oczywiście w celu zaoszczędzenia na czasie i funduszach, zdecydowałem się na warsztatową metodę wykonywania płytki. • Implementacja algorytmu pozwalającego na rozwiązywanie algorytmu metodą "floodfill" 3. Konstrukcja Mechaniczna 3.1 Napęd 3.1.1 Silniki Jako napęd zdecydowałem się na użycie silników krokowych. Zalety silników krokowych (+) Sterowanie pozycją - dokładne sterowanie w otwartej pętli sterowania (+) Silnik pracuje z pełnym momentem w stanie spoczynku (+) Żywotność silnika wyznaczona wytrzymałością łożysk i cewek - brak szczotek Wady silników krokowych (-) Przeznaczone do pracy z małymi prędkościami (-) Możliwość wystąpienia zjawiska "gubienia kroków" (-) Duża emisja ciepła (-) Duża masa i rozmiary (-) Skomplikowany sposób sterowania Ze wszystkich silników krokowych dostępnych na polskim rynku, silniki o kodzie producenta S20STH30-0604A firmy Pololu najbardziej nadawały się do projektowanej konstrukcji. Porównanie parametrów wybranych silników krokowych z popularnymi mikrosilnikami Pololu Parametr • Silnik krokowy • Mikrosilnik Pololu 30:1 Waga • 60g • 10g Wymiary • 20 x 20 x 30 mm • 10 x 12 x 24 mm Napięcie zasilania • 3.9 V • 3-9 V Pobór prądu • 600 mA • 120-1600 mA Moment obrotowy • 140 g*cm (0.017 Nm) • 600 g*cm (0.059 Nm) Średnica wału • 4 mm • 3 mm Cena • 100 zł • 70zł Sterowanie • Trudne • Proste Problemy do rozwiązania w projektowaniu napędu opartego o silniki krokowe: Problem: Silniki krokowe przeznaczone są do pracy przy niewielkich prędkościach obrotowych (zazwyczaj 4-10 RPS to ich maksymalne osiągi). Rozwiązanie: Zasilanie silników z dużo wyższego napięcia (w tym wypadku 24 V). Pozwala to na skrócenie czasu narastania prądu na cewkach, prez co można je przełączać częściej, w efekcie uzyskując wyższą prędkość obrotową. (Udało mi się rozkręcić te silniki do 45 RPS - w powietrzu, nie na jadącym robocie) Problem: W robocie potrzebne jest napięcie 24 V Rozwiązanie: Zasilanie silników z przetwornicy step-up, generującej 24 V z napięcia zasilania (7.4 V bądź 15.8 V) Problem: Zasilając silnik z wyższego napięcia, prąd na cewkach będzie proporcjonalnie większy, co po przekroczeniu wartości nominalnej (600 mA) prowadzić będzie do ich spalenia Rozwiązanie: Zastosowanie gotowego modułu sterownika silnika krokowego z ogranicznikiem prądu (funkcja Chopper) 3.1.2 Koła Jako koła wybrano gumowe koła firmy Solarbotics o średnicy 2.8 mm i szerokości 13 mm. Koła mają świetną przyczepność i doskonale nadają się do tego zastosowania. Jedyną jak dotąd zaobserwowaną wadą jest bardzo duża zdolność do zbierania kurzu i drobnych odpadów, przez co jazda po zabrudzonej powierzchni bardzo szybko doprowadza do zmniejszenia przyczepności kół. 3.1.3 Mocowania silników Niestety na rynku nie istnieją mocowania do silników krokowych w tym rozmiarze (Nema 8), więc musiałem takie mocowania wyprodukować sam. Mocowania silników zostały zaprojektowane w programie TinkerCad dostępnym w wersji przeglądarkowej. Zamówienie przyjęło i wykonało techniką druku 3D koło naukowe działające przy Politechnice Wrocławskiej "Rapid Troopers". Mocowania zawierają 4 otwory na śruby mocujące silnik do elementu, oraz 4 otwory na śruby służące do przytwierdzenia silnika wraz z mocowaniem do platformy. 3.1.4 Podwozie Jako podwozie wykorzystałem płytkę PCB z elektroniką, przedstawioną w dalszej części artykułu 4 Elektronika Schemat elektroniczny jak i płytka PCB zostały zaprojektowane w programie CadSoft Eagle. 4.1 Zasilanie Robot może być zasilany z jednego bądź dwóch (połączonych szeregowo) akumulatorów Li-Po 7.4 V o pojemności 250 mAh. Dwa akumulatory stosowane są w celu podwyższenia napięcia na wejściu przetwornicy, co skutkuje obniżeniem poboru prądu z akumulatora i wydłużeniem możliwego czasu działania robota. 4.1.1 Zasilanie silników Silniki zasilane są napięciem 24 V podawanym z przetwornicy step-up opartej o układ XL60098. Przy pracy pobierają 1 - 1.2 A. 4.1.2 Zasilanie logiki Wszystkie układy logiczne zasilane są napięciem 5 V uzyskiwanym z przetwornicy step-down D24V6F5. Powodem zastosowania przetwornicy zamiast stabilizatora liniowego jest różnica napięć na wejściu i wyjściu układu. Występuje tu obniżenie napięcia z ~16 V do 5 V, co przy stabilizatorze liniowym generowałoby bardzo duże ilości ciepła i mogłoby prowadzić do jego uszkodzenia lub poparzenia użytkownika podczas obsługi robota. 4.2 Procesor Jednostką sterująca całego robota jest ośmiobitowy procesor AVR Atmega 128 firmy Atmel, taktowany zewnętrznym kwarcem 16 Mhz. Procesor zasilany jest napięciem 5 V. W celu zmniejszenia rozmiarów robota, zastosowano procesor w obudowie TQFP64. 4.3 Czujniki odległości Jako czujniki odległości zastosowano diodę LED SFH4550 działającą w paśmie podczerwieni. W robocie umieszczono 6 takich zestawów. Dwa skierowane w przód, dwa na boki oraz dwa odchylone od diametralnej robota o 45°. Prąd płynący przez diody IR to 95 mA, co daje wystarczające natężenie światła do dokładnego odczytywania odległości przy jednoczesnym braku konieczności uważania na przepalenie się diody spowodowane długim świeceniem przy zbyt dużym prądzie. 4.4 Sterowniki silników Zastosowano sterowniki firmy Pololu oparte na modula A4988. Sterowniki pozwalają na pracę w trybach: pełnokrokowym, półkrokowym, ćwierćkrokowym, 1/8 oraz 1/16 kroku. Funkcja ograniczania prądu (chopper) pozwala sterować silniki wyższym napięciem bez ryzyka uszkodzenia cewek silnika. Kolejną zaletą zastosowania sterowników silników krokowych jest możliwość sterowania silnika za pomocą tylko jednego pinu (tylko jeden pin mikrokontrolera podaje sygnał częstotliwościowy odpowiedzialny za taktowanie silnika). W celu umożliwienia generowania sygnałów o różnej częstotliwości, każdy ze sterowników obsługiwany jest przez inny timer. Obydwa szesnastobitowe timery sterujące działają w sprzętowym trybie Clear on Compare Match. Pozwala to na automatyczne generowanie sygnału o zadanej częstotliwości bez udziału samej jednostki obliczeniowej. 4.5 Interfejs komunikacyjny Jako interfejs komunikacyjny robota służą dwie diody LED, buzzer, interfejs UART wraz z modułem bluetooth HC-05 oraz dwa przyciski. Programowanie robota realizowane jest poprzez interfejs SPI. 4.6 Płytka PCB Płytka PCB na której zostały umieszczone wszystkie elementy robota została zaprojektowana za pomocą programuy CadSoft Eagle. Długość: 101 mm Szerokość: 94 mm Płytka pełni jednocześnie funkcję podwozia robota. Takie wymiary pozwalają na swobodny obrót robota w miejscu między ścianami, oraz jazdę po skosie w labiryncie. Płytka w swoim kształcie jest symetryczna, lecz główna masa elementów skupiona została przy tylnej części. Powoduje to brak efektu kołysania się robota ze względu na dociśnięcie tyłu do podłoża. Płytka została stworzona metodą fototransferu oraz wytrawiona w warunkach domowych. Otwory wykonano na wiertarce stołowej. Prostokątny otwór na środku płytki jest miejscem na wystające elementy silników, w których znajdują się gniazda przewodów zasilających. Warstwa Top zawiera wszystkie układy scalone, czujniki, silniki, akumulatory i złącza. W przedniej części robota znajdują się czujniki, mikrokontroler, układ ULN2003 (sterowanie diodami LED) oraz jeden z akumulatorów. Z tyłu umieszczono sterowniki silników krokowych, obydwie przetwornice, moduł bluetooth, drugi akumulator oraz buzzer. Silniki znajdują się w osi symetrii robota Na dolnej stronie płytki umieszczono jedynie kilka rezystorów oraz slizgacz, znajdujący się w diametralnej robota, w jego tylnej części. Zdjęcie poniżej pokazuje stopień upakowania elementów i modułów w robocie. 5 Oprogramowanie Główną częścią projektu było rozwinięcie oprogramowania związanego z obsługą peryferii oraz algorytmem rozwiązującym labirynt. Program napisany został w języku C. 5.1 Pomiary odległości Pomiar z każdego z czujników dokonywany jest z częstotliwością 200 Hz. Zastosowano pomiar różnicowy z uśrednianiem wyników. 5.2 Sterowanie prędkością robota Prędkość robota sterowana jest częstotliwością sygnału podawanego na sterowniki silników. 5.3 Algorytm Zaimplementowany algorytm opiera się na algorytmie Dijkstry, służącym do znajdywania najkrótszej drogi w grafie. 6 Podsumowanie Projektowanie, budowa oraz zaprogramowanie robota zostały zrealizowane zgodnie z założeniami. Robot dobrze radzi sobie w labiryncie. 6.1 Sprawność silników krokowych w robocie mobilnym Podczas jazdy kroki są gubione dość rzadko, co pozwala na wystarczająco dokładne wysterowanie robota w otwartej pętli sterowania z kompensacją pozycji od czujników odbiciowych. Osiągane maksymalne prędkości podczas testów (oczywiście poza labiryntem i po prostej) sięgają 2 m/s. Głównymi wadami tych silników w robocie są ich masa, wielkość, konieczność stosowania sterowników silników krokowych oraz wyższego napięcia. Kolejną wadą jest konieczność ograniczania przyspieczeń, w celu zminimalizowania gubionych kroków. Zaletą stosowania silników krokowych jest brak konieczności stosowania sprzężenia zwrotnego w postaci enkoderów obrotowych. Sterowanie robotem klasy (2.0) w otwartej pętli regulacji Sterowanie w otwartej pętli regulacji z wykorzystaniem silników krokowych jest możliwe. Rozwiązanie to jest wygodniejsze i prostsze do zrealizowania, aczkolwiek posiada bardzo dużą wadę, w postaci braku informacji o gubionych ktokach. Cała kalibracja pozycji opierać musi się na odczytach z czujników odbiciowych. Budowa tego robota z pewnością przyczyniła się do znacznego poszerzenia mojej wiedzy na temat budowy robotów mobilnych, projektowaniu schematów elektronicznych oraz płytek PCB, kategorii micromouse oraz silników krokowych. Niestety nie miałem dostępu do pełnowymiarowego labiryntu, dlatego filmiki z testów są tylko na ćwiartce labiryntu. Robot jeździ wolno, bo w momencie kiedy zaczął działać i poprawnie rozwiązywać labirynt, semestr zaczął być tak gorący że musiałem porzucić prace nad jego rozwojem i zająć się studiami. Na pewno może jeździć o wiele szybciej - pozostaje tylko kwestia gubienia kroków. Zeby pokazać w sumie clue sprawy związanej z zastosowaniem silników krokowych, poniżej filmik na którym robot jedzie z wyłączonymi czujnikami, z wgraną na stałe sekwencją (prosto, prawo, lewo, prosto itp.) Widać jak dokładne może być pozycjonowanie się na silnikach krokowych (które i tak dobierane było "na oko"). Jazda bez sprzężenia od czujników A tutaj testy na labiryncie. Robot rozwiązujący labirynt Nie chcę się już bardziej szczegółowo rozpisywać na poszczególne tematy, żeby artykuł nie rozrósł się do rozmiarów nieczytelnych. Jeśli kogoś interesują detale budowy tego robota i używania tego napędu, zapraszam do dołączonej w załącznikach prezentacji oraz raportu z budowy robota. Jeśli jesteś zainteresowany schematami elektronicznymi tego robota - napisz w komentarzu. KoNaR - Bartlomiej Kurosz - Micromouse Let Me Out.pdf Zastosowanie silnikow krokowych w robotach mobilnych.pdf
  2. 13 punktów
    Witam po dłuższej przerwie, z tego co kojarzę to mój pierwszy post na Forbocie - wcześniej pisałem jeszcze na dioda.com.pl. Przedstawiam projekt inteligentnej kawalerki oparty o Raspberry Pi i kilku modułów pracujących w magistrali I2C i 1wire. Umożliwia on na automatyzację instalacji elektrycznej mieszkania poprzez m.in. sterowanie oświetleniem przez dedykowaną aplikację www, rozszerzenie funkcji przycisków światła w mieszkaniu poprzez niezależne przypisywanie funkcji np.gaszenie wszystkich świateł włącznikiem przy łóżku, a zapalanie tylko oświetlenia dodatkowego. Monitorowanie temperatury w pomieszczeniu i na zewnątrz, oraz informowanie komunikatami głosowymi o zdarzeniach. System jest elastyczny i modyfikowany w zależności od zachcianek użytkownika, dzięki czujce ruchu, możemy np. w zaprogramowanych nocnych godzinach delikatnie rozjaśniać światła dekoracyjne, nie oślepiając zaspanego nocnego marka. Innym przykładem który pojawił się podczas używania systemu, było wysłanie diodą IR sygnału do włączenia się telewizora po wejściu do mieszkania, lub w przypadku braku użytkowników w mieszkaniu i zwiększonym zużyciu prądu (np zostawione żelazko) - poinformowanie i wyłączenie sprzętów. Ilość możliwych funkcji do zrealizowania jest ogromna niestety każda kolejna powoduje dodatkowe koszty. O ile część modyfikacji można wykonać małym kosztem - jak wspomniane sterowanie ir, to już realizacja pomysłu zabezpieczenia łazienki przed zalaniem poprzez sensor wody i elektrozawór na głównym przyłączu wodociągowym wiąże się z dodatkowym nakładem pracy. W projekcie użyłem popularnych i wspieranych przez społeczności użytkowników części oraz oprogramowania. W krótkim wstępie nie sposób wymienić wszystkich funkcjonalności i drobnych smaczków o których sam dopiero sobie przypominam. W dalszej cześci opiszę działanie całego systemu od strony programowej i sprzętowej oraz udostępnię kody źródłowe strony www i skryptów odpowiedzialnych za automatykę wraz z obrazowym poradnikiem jak to wszystko uruchomić. Mam nadzieje że dam radę bo trochę tego się uzbierało, na początek film z działania: Część sprzętowa. Pierwszym etapem prac było przerobienie instalacji elektrycznej w mieszkaniu. Tutaj głównym założeniem było wykorzystanie standardowych pojedynczych bistabilnych przycisków i pociągniecie wszystkich przewodów włączników i punktów oświetleniowych do jednego punktu. Gniazda zasilające zostały podzielone na 3 sekcje - kuchnia, sprzety rtv, łazienka. Punktów oświetleniowych jest 5, włączników razem z dzwonkiem na zewnątrz również 5. Do włączników został pociągniety przewód 2 x 1.5mm2, tak aby w przypadku demontażu systemu, można było podłączyć wszystko na stałe. Przewody do punktów oświetleniowych 3x1.5mm2, 3 linie gniazd zasilających 3x2.5m + dodatkowy przewód 5x2.5mm2 do trójfazowego zasilania kuchni. Do centralnego punktu zostało doprowadzone 5 sztuk skrętki cat.5 i wyprowadzone odpowiednio do: łazienki, kuchni, routera, oraz dwóch rogów pomieszczenia. Skrętka umożliwia podłączanie do całego systemu np. czujników w magistrali 1-wire, czy sterowanie sygnałem PWM układami mocy oświetlenia ledowego. Łacznie wykorzystałem około 150metrów przewodów. W skrzynce rozdzielczej zamontowane zostały zabezpieczenia oraz listwy rozdzielcze umożlwiające podłączanie urządzeń do układów wejść - wyjść. Poniżej zdjęcia z procesu wymiany instalacji elektrycznej. Cześć sprzętowa - elektronika. Tutaj zastosowane zostały: - Raspberry Pi - jako główny mózg całego systemu - Moduł 8 wejść - wyjść firmy Kamami. - Moduł przetwornika A/C firmy Adafruit. - Moduł 16 wyjść PWM firmy Adafruit. - 2 Czujniki temperatury DS18B20 - Konwerter napięć 3.3 <> 5V - Moduł 4 przekaźników. - 2 Moduły transystorów mosfet do sterowania ledami. - Głośniki komputerowe zasilane z USB Wszystkie podłączenia wykonane zgodnie ze standardowymi przykładami danych modułów czy czujników nie ma tu jakiś skomplikowanych połączeń - wszystkie moduły pracują na magistrali I2C przy zasilaniu 5V - dlatego potrzebny był dodatkowy konwerter napięć tak aby można było podłączyć magistralę do 3.3 woltowego Raspberry Pi. Czujniki na magistrali 1wire spokojnie dają radę przy 15 metrowej skrętce podłączone bezpośrednio pod RPI. Wykorzystane oprogramowanie. - Framework WebIOPi. Głównym frameworkiem użytym w projekcie jest WebIOPi. Jest to gotowa aplikacja dedykowana dla komputera RaspberryPi pozwalająca na sterowanie podłączonymi do niego urządzeniami za pomocą strony internetowej lub skryptów działających w tle. Framework dostępny jest w postaci gotowej paczki instalacyjnej dla systemu linux. Aplikacja uruchamia na komputerze serwer www, na którym możemy uruchomić stronę internetową, a z jej poziomu sterować poszczególnymi urządzeniami. WebIOPi pozwala na sterowanie i monitoring ponad 30 urządzeń pracujących zarówno na magistrali I2C jak i 1-Wire. Framework rozdziela układ sterowania na dwa podstawowe elementy – część sterowania i monitoringu dostępną z poziomu przeglądarki dla użytkownika oraz część komputera, pracującą niezależnie. Skrypty wykonywane na komputerze napisane są w języku Python. Framework pozwala na pracę wielu skryptów jednocześnie. Od strony przeglądarki wykorzystana jest technologia jQuery. Użyłem wersji 0.7 webiopi. Więcej na temat samego farameworka znajdziecie tutaj: http://webiopi.trouch.com/ -Framework Bootstrap - strona www w PHP Bootstrap to środowisko służące do budowania responsywnynych stron internetowych, pozwala na bardzo dokładne dopasowanie do stron własnych potrzeb. Zawiera 12-kolumnową siatkę, zarówno w wersji ze stałą jak i z automatyczną szerokością. Posiada bogaty pakiet UI - począwszy od typografii,poprzez formularze, tabele, po nawigacje i ikonki. Całość dopełnia kolekcja skryptów JS pozwalająca na obsługę animacji ekranu. System operacyjny: Komputer Raspberry Pi działa pod kontrolą systemu operacyjnego Raspbian. Baza danych: Baza danych wykorzystana w projekcie to MySQL w wersji 5.5.41. Baza ta służy do rejestracji wszystkich zdarzeń. Pozwala na długoterminową rejestrację temperatury, napięć i prądów w całym systemie. Zapis danych realizowany jest za pomocą skryptów powłoki systemu (Bash) uruchamianych w określonym czasie za pomocą systemowego narzędzia Cron. Dane z bazy pozwalają na późniejsze tworzenie wykresów poszczególnych parametrów na stronie www. Sporą częścia projektu jest strona www - aplikacja internetowa, stąd wykorzystanie bazy MySQL i frameworka PHP, nie chciałbym się rozpisywać na temat samego pisania i uruchamiania strony www bo ta może mieć dowolną formę. Z poziomu systemu wbudowanego chodzi o to, że strona www wywołuje funkcję javascriptową frameworka webiopi, np. po wciśnięciu przycisku wywoływana jest funkcja zmiany stanu wejścia z "0" na "1" lub funkcja okresowo sprawdzająca dane z czujnika temperatury. Dzięki wykorzystaniu frameworka korzystamy praktycznie z gotowego rozwiązania które realizuje dwukierunkową komunikację www - raspberry. Uruchomienie systemu - nie jest to poradnik krok po kroku jednak przedstawia gotowy przepis. - Instalacja i podstawowa konfiguracja raspbian - tutaj odsyłam do poradników w internecie - Instalacja fail2ban Ten etap nie jest konieczny jednak ze względu na mnóstwo botów próbujących dostać się do raspberry podłączonego do internetu polecam użycie tego programu. Pozwala on na dodawanie reguł blokujących połączenia z Internetu po ustalonej liczbie nieudanych logowań. Zapobiega to atakom typu brute-force. W pliku konfiguracyjnym pakietu, dostępne są m.in. ustawienia monitorowanego portu, maksymalna liczba nieudanych prób połączenia, czas blokowania danego adresu IP . Ze względu na powtarzające się przypadki uzyskania próby dostępu do komputera ilość możliwych prób dostępu to 3, a czas blokady 30 dni. Ponieżej zrzut ekranu pokazujący adresy IP zablokowane w ciągu zaledwie jednego dnia. Potwierdza to tylko konieczność stosowania tego typu zabezpieczeń, oraz nie używania prostych haseł do tego typu systemów. Oczywiście nie raz zdarzyło się mi zablokować samego siebie - jednak w przypadku fizycznego dostępu do RPI nie stanowi to większego problemu. Po zabezpieczeniu dostępu do komputera, kolejnym krokiem jest instalacja pakietu i2ctool. Jest to pakiet dzięki któremu możliwa jest obsługa i diagnostyka magistrali I2C. Po zainstalowaniu pakietu możemy sprawdzić podłączone urządzenia za pomocą polecenia i2cdetect –y 1. Wyświetli nam ono listę podłączonych urządzeń w formie matrycy adresowej. Adresy wyświetlane są w formie szesnastkowej. Adresy poszczególnych urządzeń konfigurowane są za pomocą odpowiednich połączeń wyprowadzeń na danych modułach. W prezentowanym rozwiązaniu pod adresem 20 znajduje się moduł 8 wejść – wyjść. Adres 40, to układ 16 wyjść PWM. Adres 48 zajmuje przetwornik analogowo – cyfrowy. W celu umożliwienia sterowania magistralą niezbędne jest też dodanie użytkownika do grupy i2c. Po poprawnym zainstalowaniu I2C widoczny jest taki wynik polecenia i2cdetect: Obsługa magistrali 1-wire, nie wymaga instalacji dodatkowego oprogramowania w systemie. Lista podłączonych urządzeń wraz z ich adresami dostępna jest po sprawdzeniu zawartości katalogu systemowego /sys/bus/w1/devices/, wynik polecenia ls dla tego katalogu został przedstawiony na zdjęciu poniżej. Do magistrali zostały podłączone dwa czujniki temperatury DS18B20. Dla najnowszego raspbiana powyższy opis może być trochę przekłamany, ja korzystałem z dystrybucji pobranej w styczniu 2015 roku, ostatnio przy zabawie z raspberry i uzyciu najnowszego systemu konieczne jest dopisanie linijki w pliku konfiguracyjnym. Opisane jest to m.in tutaj: http://osworld.pl/raspberry-pi-obsluga- termomertrow-ds18b20/ Głównym etapem jest instalacja najważniejszego frameworka, pakietu WebIOPi. Instalacja polega na pobraniu spakowanej paczki ze strony autora i uruchomieniu skryptu instalacyjnego. Tutaj żeby nie kopiować internetu również odsyłam na stronę gdzie opisana jest cała instalacja: http://webiopi.trouch.com/INSTALL.html Dostępne sa tam również przykłady dla konkretnych urządzeń oraz dokumentacja pozwalająca zrozumieć zasadę działania. W dalszej części przedstawie fragmenty swoich skryptów, dla konkretnego rozwiązania. Początek etapu instalacji: Po zainstalowaniu pakietu. I wydaniu polecenia startowego /etc/int.d/webiopi start, możemy za pomocą przeglądarki internetowej otworzyć domyślną stronę internetową frameworka WebIOPi. Adres strony to numer IP komputera oraz domyślnie port :8000. Po wpisaniu adresu, strona będzie wymagała uwierzytelnienia w postaci domyślnego hasła. Widok domyślnie hostowanej strony został przedstawiony na zdjęciu poniżej. Są to podstawowe elementy frameworka umożliwiające sprawdzenie jego działania w tym przypadku działania układów wejść -wyjść. Po sprawdzeniu działania podstawowych funkcji frameworka, należy za pomocą pliku konfiguracyjnego określić sposób jego działania. Polega to na dopisaniu wszystkich adresów urządzeń które mają być obsługiwane. W projekcie będą to 3 urządzenia w magistrali i2c, opisane jako adc, mcp oraz pwm. A także 2 urządzenia magistrali 1-wire opisane jako temp1 oraz temp2. Każde ze zdefiniowanych urządzeń prezentuje na stronie diagnostycznej rejestrowane parametry oraz jeżeli jest to możliwe, przyciski do sterowania testowania i zadawania wartości. Na tym etapie możliwe jest dokładne sprawdzenie działania wszystkich podzespołów. Po zakończeniu testów, w pliku konfiguracyjnym należy podać ścieżkę docelowej strony sterującej, oraz dodać aplikację do skryptów startowych systemu. Dokładny opis: http://webiopi.trouch.com/Tutorial_Basis.html Kolejnym krokiem jest instalacja serwera apache wraz z modułami bazy danych mysql potrzebnymi do jej obsługi. Po instalacji wymagane jest stworzenie bazy danych, potrzebnej do rejestracji parametrów z czujników. Instalacja serwera FTP, znacznie ułatwia wymianę plików z komputerem, oraz późniejsze edytowanie skryptów odpowiedzialnych za działanie systemu. W prezentowanym rozwiązaniu został zainstalowany pakiet proftpd. Współpracuje on z programem fail2ban zabezpieczając dodatkowo zawartość przed niepowołanym dostępem. Wszystkie niezbędne pakiety zostały zainstalowane. Za pomocą protkołu FTP została wgrana strona www oraz skrypty sterujące do ścieżki wcześniej ustawionej w pliku konfiguracyjnym WebIOPi. Aplikacja internetowa: Aplikacja internetowa. Aplikacja internetowa w formie strony www została napisana wykorzystując języki HTML, CSS i JavaScript. Wykorzystanie skryptów JavaScript pozwoliło na wyświetlanie i sterowanie parametrami sterownika na stronie bez konieczności jej przeładowywania. Jednym z założeń było stworzenie strony działającej na urządzeniach mobilnych. Zostało to zrealizowane przy pomocy frameworka Bootstrap, który automatycznie dopasowuje jej zawartość do szerokości i proporcji ekranu. Interfejs aplikacji został zaprojektowany w formie prostokątnych kafli, z których każdy odpowiada za inną funkcję. Poniżej został przedstawiony widok strony startowej na komputerze z monitorem o rozdzielczości 1920x1080, oraz telefonu komórkowego o takiej samej rozdzielczości. Pomimo takiej samej rozdzielczości ekranu, strona została odpowiednio powiększona i dopasowana do komfortowego przeglądania jej na telefonie komórkowym. Poszczególne zakładki zostały ukryte w formie rozwijanego menu dostępnego pod jednym przyciskiem (prawy górny róg). Strona składa się z 4 głównych zakładek: monitoring, oświetlenie, diagnostyka oraz ustawienia. Pierwsza zakładka to jednocześnie strona startowa. Wyświetla ona najważniejsze rejestrowane parametry takie jak temperatura w pokoju dziennym, temperatura na zewnątrz, prąd pobierany przez cały obiekt, stan poszczególnych punktów oświetlenia, napięcie zasilania sterownika, oraz stan elementów nadzorujących bezpieczeństwo w obiekcie. Poszczególne kafelki wyświetlają informacje o tych parametrach oraz pozwalają na interakcję w postaci uruchamiania określonych funkcji. W przypadku przekroczenia nominalnej wartości danego parametru, np. temperatury w pokoju dziennym wyższej niż 22 stopnie Celsjusza, kafelek wyświetlający ten parametr zmienia kolor na pomarańczowy. Użytkownik zostaje również powiadomiony o tym fakcie, odtworzeniem informacji „Temperatura w pomieszczeniu jest za wysoka”, za pomocą podłączonych do komputera głośników. Odtwarzaniem dźwięku zajmują się niezależnie pracujące skrypty. Analogiczna sytuacja ma miejsce w przypadku zbyt niskiej wartości temperatury. Kafelek zmienia kolor na niebieski, a użytkownikowi zostaje odtworzony komunikat „Temperatura w pomieszczeniu jest za niska”. Aplikacja internetowa spełnia tylko rolę interfejsu komunikacyjnego z użytkownikiem, nie jest niezbędna do działania całego systemu, jednak pozwala na sterowanie systemem oraz podgląd zarejestrowanych parametrów. Kafelek odpowiedzialny za wyświetlanie temperatury, jest jednocześnie przyciskiem otwierającym okno wykresu, który generowany jest na podstawie ostatnich 200 pomiarów temperatury, rejestrowanych co 15 minut.: Wykres generowany jest za pomocą biblioteki Google Chart API, pozwalającą na dowolną konfigurację wyświetlanych elementów. Po kliknięciu na dany punkt wykresu, w prawym górnym rogu wyświetlana jest szczegółowa informacja o zarejestrowanym parametrze. Wykres jest animowany, pozwala na powiększenie danego fragmentu w celu dokładniejszej analizy, co w przypadku np. pomiaru prądu, umożliwia zlokalizowanie źródła zużycia energii elektrycznej. Poszczególne elementy kodu potrzebne do zrealizowania wykresu to skrypt rejestrujący temperaturę i datę wykonania pomiaru do bazy danych, oraz skrypt generujący wykres, korzystający z biblioteki Google Chart API. Aktualne parametry pobrane ze sterownika wyświetlane są na stronie www za pomocą java skryptu korzystającego z możliwości frameworka WebIOPi. Jako przykład zostanie przedstawiona funkcja odświeżająca wszystkie parametry na stronie startowej z interwałem 500ms. Jej kod jest zaprezentowany poniżej: Kolejną główna kartą aplikacji internetowej jest oświetlenie. Za pomocą tej podstrony możemy sterować wszystkimi punktami oświetleniowymi, oraz monitorować ich stan. W zależności od sprzętowej konfiguracji systemu wyświetlane są tu kafelki odpowiedzialne za włączanie lub wyłącznie oświetlenia, a także sterowanie jego jasnością. Kafelek w prawym dolnym rogu pozwala na włączanie lub wyłączanie wszystkich lamp w pomieszczeniu. Ikona żarówki podświetlona na żółto informuje o zapalonej danej lampie. Wyświetlany stan jest zależny od rzeczywistego stanu wyjścia przypisanego do sterowania danej lampy. Sterowanie fizycznymi przyciskami może odbywać się niezależnie od działania aplikacji internetowej. W przypadku włączenia światła przez użytkownika w pomieszczeniu przy wykorzystaniu fizycznego przełącznika, stan przycisku w aplikacji internetowej również ulegnie zmianie. Ostatnim elementem na stronie jest sterowanie jasnością oświetlenia LED. Odbywa się ono poprzez przesuwany pasek, który zadaje wartość z przedziału 0-100 w zależności od swojej pozycji. Jednocześnie wartość ustawiana jest na przypisanym wyjściu cyfrowym w module PWM, który generuje przebieg prostokątny o wypełnieniu procentowym z przedziału 0-100. Karta „diagnostyka” jest bardzo przydatna w procesie montażu i serwisowania całego systemu. Umożliwia wykonywanie niektórych komend systemu, bezpośrednio z poziomu przeglądarki, pozwala na sprawdzanie stanu i adresów podłączonych do magistral urządzeń, posiada opcje restartu lub wyłączenia systemu, oraz wykonuje testowe odtwarzanie komendy głosowej konieczne w przypadku regulacji nagłośnienia. Ostatnią zakładką jest zakładka „Ustawienia”, która docelowo ma służyć do ustawień wyglądu poszczególnych ekranów, wartości krytycznych dla danych parametrów, oraz włączania i wyłączania poszczególnych funkcji systemu. Programami nadzorującymi pracę systemu są skrypty wykonywane cyklicznie lub na żądanie użytkownika. Skrypty wykonywane cyklicznie w systemie, zostały napisane w jezyku powłoki Bash, zaś skrypty odpowiedzialne za działanie systemu w zależności od stanu poszczególnych urządzeń napisane są w języku Python. Skrypty te wykonują większość zadań całego systemu inteligentnego budynku i są podstawą jego działania. Cykliczne wykonywanie programów zrealizowane jest za pomocą systemowego narzędzia CRON, uruchamia on co 15 minut skrypt odpowiedzialny za pomiar temperatury z czujnika temperatury i zapis jego stanu do bazy danych. Dzięki temu możliwe jest generowanie przebiegów temperatury w aplikacji internetowej. Dla każdego czujnika istnieje osobny skrypt. Kod skryptu przedstawia się następująco: Programy realizujące poszczególne funkcje systemu to skrypty pracujące pod kontrolą frameworka WebIOPi. Pozwalają one na nadzorowanie np. stanu przycisków i w przypadku jego zmiany wykonanie określonej funkcji. Ze względu na możliwość sterowania oświetleniem zarówno z aplikacji internetowej, jak i fizycznych przycisków, pojawił się problem zmienionej pozycji przełącznika światła, w przypadku zgaszenia lampy z poziomu aplikacji internetowej. Przypisanie funkcji światła na stałe do przycisku, uniemożliwiło by sterowanie nim z innych źródeł. Rozwiązaniem tego problemu jest poniższy kod, reagujący tylko na zmianę stanu przycisku i zmieniający stan lampy w zależności od tego czy jest zapalona czy zgaszona. Innym przykładem funkcji systemu są funkcje realizowane poprzez wywołanie danego makra przez użytkownika. Po wciśnięciu przycisku z poziomu przeglądarki wywoływana jest funkcja frameworka, wykonująca dane makro napisane w języku Python. I tak makro „shutdown” wykonuje polecenie systemowe „reboot” po czym zwraca do funkcji wartość „Sterownik: system zostanie wyłączony”, dzięki czemu aplikacja może wyświetlić odpowiedni komunikat. Przykładowe funkcje przedstawia poniższy fragment kodu. Za pomocą opisanych skryptów możliwa jest realizacja dowolnej funkcji żądanej przez użytkownika. W prezentowanym rozwiązaniu zostały zaimplementowane m.in. takie funkcje jak gaszenie światła w całym mieszkaniu za pomocą włącznika przy łóżku, który jednocześnie zapala tylko lampkę nocną. Szybkie przełączenie przycisku przy drzwiach wejściowych wyłączające wszystkie światła, bez konieczności wyłączania wszystkich po kolei. Skrypty powiadamiające użytkownika za pomocą odtwarzanych komunikatów, realizują swoją funkcje tylko w przypadku odpowiedniej pory dnia. Czujnik ruchu niezbędny w skrypcie alarmowym, w przypadku rozbrojonego alarmu załącza z minimalną jasnością oświetlanie LED, umożliwiając dojście do łazienki bez konieczności zapalania świateł. Podwyższony pobór prądu, który w przypadku dłuższego braku ruchu w pomieszczeniu, pozwala na poinformowanie właściciela o włączonym odbiorniku energii elektrycznej. Nie jestem w stanie opisać całego kodu aplikacji - bo jest go sporo, zamieszczam źródła do przejrzenia - które raczej nie pozwolą na bezpośrednie uruchomienie systemu ale dla kogoś korzystającego z opisanych frameworków mogą być przydatne. Na koniec jeszcze film z testów czujnika temperatury. Inteligentna kawalerka.zip
  3. 12 punktów
    KTR-X1 8x8 To pojazd zdalnie sterowany do wykonywania zadań w bardzo trudnym terenie, charakteryzuje się prostotą konstrukcji, niskim środkiem ciężkości oraz uniwersalnością. KTR-X1 8x8 zbudowany jest z dwóch sekcji połączonych przegubem, dzięki temu każda sekcja jest niezależna, dodatkowo ruchome wahacze dają ogromne możliwości w pokonywaniu przeszkód w terenie. Pojazd obojętnie w jakim terenie się porusza,oraz jak stoi, zawsze ma doskonałą przyczepność na wszystkie 8 kół. Dzięki temu że KTR-X1 jest hybrydą można bez obaw wybrać się na dalekie wyprawy gdyż prądu nam nie zabraknie. Specyfikacja: Podwozie: rama stalowa z profila zamkniętego 30x30x1,5 spawana Wahacze: profil zamknięty 40x80x2 wspawane bloki łożyskowe Osie: stal utwardzana Poszycie: blacha aluminiowa 0.8mm wzmacniania kątownikami Przegub: blacha stalowa 10mm plus łożyska Przeniesienie napędu: przekładna łańcuchowa przełożenie1,5:1 Napęd: 4 silniki 24V / 450W każdy (moc znamionowa) 123 RPM Układ skrętu: pompa hydrauliczna 120 bar plus dwa siłowniki Sterownik silnika: Sabertooth 4x32A Sterownik pompy: Sabertooth 2x32A Zasilanie: Akumulatory kwasowe 12V 40Ah 2x Układ ładowania: silnik spalinowy 200c OHV plus alternator 28V 55A Koła: 145/70/6 Pilot sterowania: HK-T6 Oświetlenie: led 2x9W przód, 2x2W tył Układ chłodzenia: 2x wentylator 4800 RPM Przyłącza: szybkozłącze montażowe plus gniazdo zasilania Spalanie: 0,5-1,2l/mth Masa: 140Kg Prędkość max: 8km/h Wymiary: szer 90cm, dłu 192cm, wys 68cm, prześwit 27cm Dalsze plany: Pług do śniegu obrotowy (zrobiony) Zamiatarka (dalszy etap) Kosiarka (dalszy etap)
  4. 11 punktów
    Witam serdecznie Pragnę zaprezentować mój zdalnie sterowany pojazd o wdzięcznej nazwie Przebiegły Tyran Podstępności Konstrukcja powstawała przez 5 miesięcy. Zbudowana jest głównie ze stali i aluminium. Pojazd waży 24 kg i ma 60 cm długości. Prędkość maksymalna to około 15-20 km/h. Konstrukcja nie posiada skrętnej osi, skręcanie odbywa się jak w czołgu Każde koło jest napędzane własnym silnikiem z przekładnią z chińskiej wkrętarki. Każdy silnik pobiera bodajże 26A maksymalnie i działa na 12V. Za zasilanie odpowiadają dwa żelowe akumulatory 12V po 10Ah każdy, a także 8 litowo-jonowych akumulatorów 3,7V - 2200 mAh. Silniki są sterowane z Arduino Pro Mini przez mostki zbudowane z tranzystorów mosfet. Na pokładzie znajduje się także drugie Arduino gdyż zabrakło mi pinów na wszystkie podzespoły Komunikacje z trzecim Arduino będącym pilotem zapewniają moduły radiowe HC-11 433MHz. Oświetlenie przednie zapewniają 2 LEDY 1-watowe, 2 LEDY 3-watowe i 2 halogeny po 35W. Tylne oświetlenie to cztery 1-watowe czerwone LEDY. Na dachu znajduję się odsuwana klapa zasłaniająca wyrzutnie rakiet. Otwiera się dzięki gwintowanemu prętowi zamocowanemu na osi silnika i nakrętce przytwierdzonej do ruchomej części. Wyrzutnia rakiet zmienia kąt strzału dzięki serwu. Mieści 6 pocisków. Odpalanie działa tak że każda rakieta ma wokół lontu owinięty cienki drucik, dwa końce drucika są połączone z akumulatorem poprzez przekaźnik. Gdy przełącze przekaźnik, prąd przepala drucik i następuje zapłon. Każda rakieta ma swój własny przekaźnik więc mogą być odpalane niezależnie.
  5. 10 punktów
    Cześć, chciałbym przedstawić Wam mojego robota Celem pracy było wykonanie zdalnie sterowanego robota dobrze radzącego sobie w terenie, który wysyła obraz i dane z czujników do operatora. Budowa: Pierwszy etap budowy to projekt CAD w programie Autodesk Inventor 2015. Zawieszenie to uproszczona wersja systemu jezdnego rocker - bogie. (Link do wiki z zasadą działania wikipedia ) Zawieszenie: Praca zawieszenia: Silniki to Pololu 37Dx57L mm z przełożeniem 100:1, do tego adaptery na hex 12mm, i koła z Wild thumpera. Na maszcie znajduje się dedykowany moduł kamery do Raspberry Pi, wraz z reflektorami + dwa serwa Tower Pro do sterowania ruchem masztu. Oprócz tego z boku jest mała skrzyneczka w której znajduje się buzzer oraz czujnik wilgotności i temperatury DHT22: Całość projektu wygląda następująco, z tyłu widać zamontowaną antenę: Konstrukcja została wykonana tak jak przewidywał projekt, oprócz tego robot został oklejony folią moro, co dodało mu powagi ;D Praca zawieszenia: Elektronika: - Raspberry Pi - główny komputer sterujący, - Moduł rozszerzeń podłączany do portów GPIO (zawiera przetwornik ADC MCP3008, zegar RTC, cyfrowy kompas HMC588L i układ Darlingtona ULN2803A) - Silnikami sterują elektroniczne regulatory prędkości używane w samochodach RC, - Generator PWM Adafruit - generuje sygnał do serwomechanizmów i ESC, - Nano router TP-Link TL-WR703N do zapewnienia łączności WiFi, został lekko zmodyfikowany - przylutowałem złącze RPSMA do podłączenia zewnętrznej anteny. - Akumulatory to pakiety ogniw 18650, zostały stworzone dwa - jeden 2S do zasilana elektroniki, drugi 3S do zasilania serwomechanizmów i silników. Półka elektroniki: Pozostałe elementy: Oprogramowanie: Aplikacja sterująca na PC wykorzystuje bibliotekę QT, i SFML (obsługa pada Xbox), na robocie całość została napisana w Pythonie Okno wygląda następująco, jak widać znajdują się tam wszystkie odczyty z czujników, sterowanie światłami, buzzerem, oraz przycisk uruchamiający kamerę: Strumieniowanie video: Aby zapewnić jak najmniejsze opóźnienie i obraz HD został użyty Gstreammer. Starałem się wszystko opisać w dużym skrócie, jak macie jakieś pytania to piszcie
  6. 10 punktów
    The way I see it, if you're gonna build a line follower, why not do it with some style? W ten oto wyjątkowy dzień OCT 21 2015, chciałbym zaprezentować swoją najnowszą konstrukcję, na początek jednak please excuse the crudity of this model. I didn't have time to build it to scale or paint it - a tak na poważnie brak czasu i masa obowiązków a zostało trochę rzeczy do dopieszczenia m.in wydruki 3d. Tak więc dokumentacja, porządne zdjęcia, i filmy pokazujące pełne możliwości tej konstrukcji zostaną opublikowane w późniejszym terminie - a robot na bank pojawi się na Robotic Arenie we Wrocławiu (możliwe że gdzieś wcześniej). ELEKTRONIKA Projekt składa się z czterech płytek PCB zaprojektowanych w CadSoft EAGLE. Płyta główna - grubość 1mm, pokrycie HASL bezołowiowy (plated gold), grubość miedzi 35um. Sercem robota jest 32 bitowy PIC32MX270F512H, do jego dyspozycji jest również osobny 1mb pamięci NVSRAM z podtrzymaniem bateryjnym Microchip 23LCV1024 (np. zapamiętanie trasy w trakcie zmiany głównej baterii). Napięcie 5.9V zapewnia przetwornica ST1S10PHR, natomiast za 3.3V odpowiada Microchip MCP1826S. Do sterowania silnikami - Toshiba 6612FNG. Na płytce znajdują się również trzy rejestry przesuwne NXP 74HC595 do sterowania efektami świetlnymi. 3 przyciski w tym dwa maleństwa do obsługi tablicy. Możliwość odbioru IR przez Vishay TSOP34836. P-MOSFET IRLML6401 do ochrony wejścia przed odwrotną polaryzacją. Większość drobnicy w obudowach 0603 Płytka czujników - grubość 0.8mm, pokrycie HASL bezołowiowy (plated gold), grubość miedzi 35um. KTIR0711S oraz miejsce pod SHARP GP2Y0D340K. Płytka enkodera i płytka silnika - grubość 0.8mm, pokrycie HASL bezołowiowy (plated gold), grubość miedzi 35um. Płytka przeznaczona do podłączenia enkoderów AS5040 - z prawie lustrzanym odbiciem z obu stron w celu obsługi dwóch kół robota z wykorzystaniem jednego wykonania PCB dla obydwóch stron. Razem z płytką silników imituje "kominy" filmowego De Loreana. FLUX CAPACITOR - 12 białych diod LED (wlutowanych do góry padami) odpowiada za efekt pracy kondensatora strumienia. RADIATION METER - dzielnik rezystorowy + ADC -> pomarańczowa dioda 0603 zaczyna migać w momencie spadku napięcia baterii. TIME CIRCUITS - tablica z niezależnym podświetleniem każdej daty - dwoma przyciskami ustawiamy na niej przed jazdą tryb w jakim ma robot pracować. NEONY - 3 wytrawione na głównej płytce + cztery 3mm diody do podświetlenia rurek wychodzących od płyty głównej do płytki enkoderów. OUTATIME - element obowiązkowy MR FUSION - na spodzie - bateria, góra skrywa w sobie malutki włącznik. ŚWIATŁA niezależne sterowanie światłami: przednimi (osobno wewnętrzne osobno zewnętrzne) oraz tylnymi (stopy, migacze, wsteczny). LICZNIK - when this baby hits 88cm/s you gona see some serious shit - wskazuje prędkość, przy 88cm/s odpalają się neony. MECHANIKA CDN... __________ Komentarz dodany przez: Treker Ale kolega punktów w regulaminie działu złamał... Ciężko wyliczyć wszystkie... Jednak w związku z oryginalnością konstrukcji poprawiłem niezbędne minimum i opublikowałem
  7. 9 punktów
    Przedstawiam mój projekt który zrealizowałem w ostatnim czasie, jest to prosty manipulator osadzony na platformie mobilnej. Założeniem tego projektu było maksymalne uproszczenie konstrukcji i sterowanie jej za pomocą kontrolera od Playstation 3. Całość miała też po naciśnięciu przycisku wykonywać określone funkcje automatycznie. Konstrukcja jest rozwojowa, będzie wyposażona w kamerkę bezprzewodową i dodatkowe czujniki. Konstrukcja to zmaterializowane pomysły z głowy. Przebieg budowy był improwizacją, aczkolwiek niektóre elementy były projektowane. Podwozie zostało zaprojektowane od podstaw, manipulator to zmodyfikowany projekt dostępny w sieci. Podwozie: Manipulator: BUDOWA MECHANICZNA Większość elementów konstrukcyjnych to wydruki 3D. Gąsienice i koła to produkcja LEGO, koła zostały odpowiednio zmodyfikowane przez wklejenie w nie łożysk tocznych. Naciąg gąsienic zrealizowany jest za pomocą podwójnego mimośrodu w tylnych kołach. Wszystkie śruby, nakrętki i podkładki są oczywiście nierdzewne. W każdym połączeniu ruchomym ramienia znajduje się tulejka mosiężna. Nakrętki samochamowalne. ELEKTRONIKA Podwozie napędzane jest przerobionymi serowomechanizmami TowerPro MG995, manipulator wyposażony w TowerPro MG90, tryby metalowe. Do zasilania zastosowano pakiet Litowo-polimerowy 7,4V 1300mAh, na pokładzie znajduje się przetwornica obniżająca odpowiednio napięcie do pracy serw. Mózgiem Jest Arduino UNO z USB host shieldem + Bluetooth. Użytkownik informowany jest o napięciu pakietu i w odpowiednim momencie też ostrzegany sygnałem dźwiękowym za pomocą testera. Na przodzie umieszczono dwie diody led. Podsumowując: - 2x TowerPro MG995 - 3x TowerPro MG90 - Pakiet LiPo 7,4V 1300mAh - Przewornica 3/5A - Arduino UNO - USB Host Shield 2.0 - USB Bluetooth - LiPo tester - 2x LED STEROWANIE Zgodnie z założeniami całość sterowana jest za pomocą Kontrolera od PS3. Lewy analog odpowiada za jazdę, prawy analog obsługuje ramię główne i ramię manipulatora. Przycisk analogowy R2 odpowiedzialny jest za uchwyt. Przycisk R1 powoduje zapamiętanie uścisku, czyli trzyma przedmiot beż konieczności trzymania przycisku R2. Kolejno, przycisk L1 pozwala włączyć oświetlenie LED na przodzie. START uruchamia pętle z programikiem który ma za zadanie podnieść przedmiot oddalony o 15cm przed obrócić się o 180 stopni, położyć przedmiot przed sobą, ponowne naciśnięcie tego przycisku wychodzi z pętli. Czas obrotu dobrany empirycznie. Powtarzalność miejsca uzyskana na poziomie 0,5cm (zadowalająca) SELECT służy do włączenia testu wszystkich serw, ustala określone pozycje, wyjście z pętli po ponownym naciśnięciu przycisku. Podsumowując: - LEWY ANALOG -> jazda - PRAWY ANALOG -> manipulator - R2 -> uchwyt manipulatora - R1 -> zapamiętanie uchwytu - L1 -> włączenie oświetlenia - START -> program wykonujący przenoszenie obiektu (w pętli) - SELECT -> Program testujący pracę serw (w pętli) OPROGRAMOWANIE Program dla płytki mikrokontrolera napisany został w środowisku Arduino IDE, zmodyfikowano w dużym stopniu przykład PS3BT. EFEKTY Zdjęcia: Aktualizacja 29.02 Platforma posiada kamerkę bezprzewodową przekazującą kolorowy obraz i dzwięk. Film: Pierwsze testy sterowania padem: https://www.youtube.com/watch?v=ACa2hxboEXs
  8. 9 punktów
    Cześć! Jako że ostatnio na Forbocie jest opisywanych coraz mniej robotów biorących udział w zawodach postanowiłem opisać swojego robota nanosumo. Sam robot powstał już jakiś czas temu (ok 1,5 roku temu), ale do dzisiaj nieźle mu szło na zawodach i ogólnie jestem całkiem zadowolony z konstrukcji. Wyciągnąłem z niej wiele wniosków i mam nadzieję że kolejna będzie jeszcze lepsza Mechanika : Rama robocika zbudowana jest z malutkich kawałków laminatu, na których ściankach są umieszczone od środka zębatki. Wszystkie koła zebate jak i silniki pochodzą ze znanych 9 gramowych serw. Największym wyzwaniem było upchnięcie dwóch silników na sobie tak by nie podnosiły za mocno całej konstrukcji oraz były dobrze spasowane z zębatkami. Same silniki są przyklejone do siebie oraz do podstawy robota. Koła to przerobione nakrętki mosiężne, w tym momencie nie umiem powiedzieć skąd pochodziły. Wywierciłem w nich otworki i odlałem małe silikonowe oponki. Z przodu robota widoczny jest pług przymocowany na stałe jak i opadający. W sumie nie jestem pewien czy kiedykolwiek pomógł mi podważyć przeciwnika, a czasami sprawiał kłopot z postawieniem bez opadnięcia przed rozpoczęciem walki. Elektronika: Robotem steruje atmega8 taktowana 8mhz z zewnętrznego kwarcu. Ma wgrany bootloader, by oszczędzić pinów na płytce. Oczami są 4 czujniki, z czego jeden jest nieaktywny, gdyż nie miałem miejsca na moduł startowy i musiałem pozbyć się diod ir. Czujniki to, jak w każdej mojej konstrukcji, tsopy i diodki ir smd. Są naprawdę fajne pod względem zasięgu (który da się regulować), jednak zajmują sporo miejsca na pcb. Diodki są sterowane tranzystorami, jednym na parę diod. Mostek to malutki 24 pinowy qfn od freescale - MPC17531. Czujniki linii to ktiry0711s zamocowane na samym dole robota. Moduł startowy postanowiłem umieścić w całości w robocie. Chciałem mieć pewność, że moduł za każdym razem się poprawnie zaprogramuje, a następnie bez problemu wystartuje. Oprócz tego jest trochę drobnicy, nie ma regulatora, wszystko zasilane jest bezpośrednio z li-pola 140 mAh. Program: Zawsze staram się pisać jak najprostsze programy do walczących robotów i tak też było w tym przypadku. W sumie tradycyjnie "wyifowane" warunki na czujniki i poszczególne reakcje silników - nic szczególnego. Pora na osiągnięcia: - 1 miejsce Robomaticon 2015 - 1 miejsce TTR 2015 - 1 miejsce Roboxy 2015 - 2 miejsce Sumochallenge 2015 - 1 miejsce RoboticArena 2015 - 3 miejsce Robomaticon 2016 W tym roku nanoHaker2 dostał się także do ćwierćfinałów Robotchallenge 2016. Robot jest już stary i szykuję powoli nową konstrukcję, w nadziei że w końcu uda się zdobyć podium w Wiedniu I jeszcze na koniec parę zdjęć : Jak znajdę jakieś filmiki z udziałem nanoHakera wrzucę linki. Mam nadzieję, że się podobało i czekam na pytania Pozdrawiam, Piotrek
  9. 8 punktów
    Odkryłem ciekawy sposób na darmowe płytki drukowane dla uczniów i studentów i postanowiłem się nim z wami podzielić. Najpierw podam instrukcje potem opiszę możliwości produkcyjne i otrzymane dzisiaj płytki. NIEAKTUALNE! NOWE INSTRUKCJE TUTAJ! Instrukcje: 1. Wchodzimy w link. Jest to mój reflink po rejestracji z którego dostajecie dodatkowe $5 na płytki (4 warstwy etc.). 2. Rejestrujemy się poprzez wyświetlony formularz. 3. Wysyłamy z konta e-mail na który się zarejestrowaliśmy maila do service@pcbway.com ze zdjęciem legitymacji uczniowskiej/studenckiej i informacją że chcemy skorzystać z http://www.pcbway.com/free_pcb.html. 4. Czekamy na odpowiedź. 5. Składamy zamówienie przez stronę, czekamy aż status zmieni się na "ready to pay" jeszcze nic nie płacimy. 6. Odpisujemy na ostatniego maila (z potwierdzeniem kwalifikacji do programy darmowych płytek) z prośbą o adres do zapłacenia kosztów przesyłki. 7. Płacimy podane koszty przesyłki na ten adres przez PayPal. Koszt przesyłki to $10 za 7 dni albo $25 za 3 dni. Do tego dochodzi czas produkcji - max. 4 dni. 8. Czekamy na płytki. Ograniczenia darmowych płytek: 1. Wielkość płytki 10cmx10cm. 2. Maksymalnie 2 warstwy. 3. Ilość kopii: 5 lub 10. 4. Minimalny rozmiar wiertła 0.3mm. 5. Minimalna szerokość ścieżki 6 mil. 6. Na jednej płytce maksymalnie jeden unikalny projekt. 7. Maksymalnie 30 płytek w zamówieniu (chodzi o panelizacje). 8. Kolor soldermaski: czerwony, niebieski, zielony, żółty. Ceny płytek poza programem studenckim to $13 za 2, $35 za 4 i $154 za 6 warstw. Za dodatkową opłatą można ominąć ograniczenia z powyższej listy. Za umieszczenie na ich stronie zdjęć otrzymanych płytek można dostać $5 do wydania u nich. Moje obserwacje: Zamówiłem u nich płytki 3x5cm, 10 sztuk. Otrzymałem je po 10 dniach pomimo wybrania tańszej przesyłki. Jakość moim zdaniem co najmniej równa Satland Prototype. Soldermaska idealnie ostra i równa, silk screen bardzo czytelny, nawet gdy bardzo mały (opisy pomiędzy padami elementu 1206). Wszystkie warstwy są dobrze nałożone, otwory wycentrowane. Dobrze się lutuje. Został dodany numer identyfikacyjny płytki na silk screenie pod elementem. Galeria: Skan gotowej płytki (białe wewnątrz otworów to tło skanera): Stosik otrzymanych płytek: Zlutowana płytka (będzie wkrótce osobno opisana):
  10. 8 punktów
    Ten robot był eksperymentem w kilku dziedzinach jednocześnie. Po pierwsze, jest to mój pierwszy skończony dwunożny robot kroczący. Po drugie, jako mózgu użyłem nowego wówczas układu ESP8266. Po trzecie, po raz pierwszy użyłem sub-micro-serwa zasilane napięciem 3V. Na koniec, nawet obudowa była eksperymentem, sprawdzającym jak dobrze plastik ze starych opakowań nadaje się do tego celu. Później dla tego własnie robota wytrawiłem swoją pierwszą płytkę drukowaną. Ostatnim eksperymentem, który się niestety już nie powiódł, było użycie optycznego cyfrowego czujnika odległości, który z jakiegoś powodu okazał się nie działać. Ale do rzeczy. Robot ten bardzo mocno bazuje na projekcie znanym ogólnie jako "Bob" (http://www.robotrebels.org/index.php?topic=11.0). W zasadzie jest to moje podejście do zrobienia jego miniaturoej, pomniejszonej wersji. Niestety nie posiadałem dostępu do drukarki 3D, żeby zrobić obudowę i szkielet, zatem podszedłem do tematu tak jak zwykle -- zlepiając ze sobą losowe części i lutując wszystko "na pająka". Wyszło mi coś takiego: Dużym wyzwaniem były gniazdka do serw, bo ich rozstaw nóżek to 1.27mm. Moduł ESP8266, którego użyłem, ma rozstaw padów 2mm, więc już trochę łatwiej. Diody świecące dodałem, żeby widzieć czy robot jest włączony czy nie. Stopy są wycięte ze starej karty kredytowej. Gumka recepturka przytrzymuje baterię. Zadowolony z tej konstrukcji, postanowiłem zrobić do niej obudowę ze starego opakowania (tak zwanego "blistera") po gamepadzie. Wyciąłem z niego kawałek w miarę płaskiego plastiku, narysowałem na nim siatkę pudełka, wyciąłem i skleiłem Kropelką. Po dopasowaniu do robota powycinałem otwory. Potem dokleiłem trochę kawałków starych zabawek do ozdoby... Z czasem wymieniłem stopy na wykonane z takiego samego materiału jak obudowa i dodałem robotowi moduł ładowania baterii (jest to pojedyncze LiPo, więc dość łatwo je ładować). Do programowania wykorzystałem powstający wówczas dopiero firmware NodeMCU dla ESP8266, który pozwolił mi oskryptować wszystko w Lua. Było to bardzo wygodne, gdyż mogłem na żywo testować kod w konsoli, na którą po prostu łączyłem się telnetem. Przy okazji próby używania PWM do kontrolowania serwomechanizmów, znalazłem dwa błędu w NodeMCU, które zostały szybko poprawione (https://github.com/nodemcu/nodemcu-firmware/issues?q=is%3Aissue+author%3Adeshipu+is%3Aclosed). Jest tu zastosowany jeden trik, gdyż NodeMCU obsługuje co najwyżej 3 kanały PWM (zrobili to do kontroli diody RGB), a ten robot ma 4 serwomechanizmy. Otóż dwa z tych serwomechanizmów sterowane są tym samym sygnałem i zawsze mają tę samą pozycję -- to nie przeszkadza przy tym sposobie chodzenia, jaki ma ten robot: W tym stanie robot postał na półce jakiś rok -- zabrałem go na dwie konferencje, żeby się pochwalić. Niestety, po powrocie z ostatniej przestał działać -- urwał się jeden z padów na ESP8266, do których przylutowane były druciki. Niestety nie dało się tego naprawić bez praktycznego przebudowania całego robota, więc robot sobie leżał i czekał na lepsze czasy. Lepsze czasu nadeszły, gdy kupiłem odczynniki do trawienia płytek i postanowiłem spróbować w tym swoich sił. Zrobiłem płytkę dla naszego bohatera: A w zasadzie całą serię płytek, gdyż nie udało mi się jej poprawnie wytrawić za pierwszym razem: W końcu udało się zrobić coś, co miało większość potrzebnych połączeń i wywiercić w tym otwory, łamiąc przy tym tylko trzy wiertła. Po zlutowaniu całości, tak jak wspomniałem wcześniej, czujnik odległości okazał się nie działać, ale robot nadal chodzi i do tego teraz może mrugać oczami: Być może jeszcze kiedyś wrócę do tego projektu i spróbuję uruchomić ten czujnik, albo użyć innego. Mógłbym też znacznie rozszerzyć jego repertuar zachowań, na przykłąd nauczyć go tańczyć. Ogólnie z robota jestem bardzo zadowolony, dostarczył mi naprawdę wiele zabawy przy budowie i nauczył przy tym dużo, choć jest to chyba projekt przy którym jak dotychczas napsułem najwięcej komponentów (w sumie dwie płytki esp8266, jeden sensor optyczny, który zniszczyłem przy lutowaniu, milion nieudanych płytek, wiertełka). __________ Komentarz dodany przez: Treker 1 - Poprawiłem temat, w którym nie działał encja µ. 2 - Typ robota należy wybierać z listy rozwijanej zamiast wpisywać go ręcznie. 3 - Opisy robotów muszą zawierać jedno zdjęcie w załączniku, które jest prezentowane w katalogu robotów oraz na stronie głównej. Tym razem poprawiłem, pamiętaj proszę na przyszłość o tych zasadach. [ Dodano: 14-10-2015, 11:06 ] 1 - Nie lepiej by było naprawić forum tak, żeby działała? 2 - Nie widziałem tam nigdzie listy rozwijanej. UPDATE: Już widzę, jest na szaro po stronie etykiety pola, musiałem jakimś cudem przeoczyć, przepraszam. Jakoś mogę to naprawić? 3 - Jestem pewien, że załączyłem jedno zdjęcie jako załącznik, własnie tak, jak piszesz. Nie mam pojęcia czemu się to nie pojawiło. Poprawiłem teraz.
  11. 8 punktów
    Cześć! Jako że już po sezonie to postanowiłem opisać tu moją i mateuszm konstrukcję. Robot powstał w ramach rekrutacji do koła naukowego robotyków KoNaR i debiutował na Robotic Arenie 2015. Był to nasz debiut w konstruowaniu robotów, ponieważ wcześniej żaden z nas tego nie robił. Mechanika Głównym założeniem mechaniki robota było wykorzystanie w pełni maksymalnej dopuszczalnej masy oraz skupienie jej w podstawie. W osiągnięciu tego celu pomógł nam projekt Autodesk Inventor, w którym to został wykonany szczegółowy projekt robota uwzględniający wszystkie drobne elementy mechaniczne. Podstawa robota została wykonana z trzech elementów: - ostrze z węglika spiekanego - płytka stalowa 3mm - płytka górna, 2mm, która łączyła dwa elementy wymienione wyżej W płytkach zostały wycięte otwory, w których następnie umieszczone były małe, okrągłe płytki z czujnikami białej linii. Stal była cięta laserowo oraz później frezowana. Napęd robota stanowiły znane i lubiane silniczki Pololu HP z przekładnią 50:1 przykręcone bezpośrednio do podstawy za pomocą dedykowanych mocowań. Podpięte do elektroniki były przy pomocy złączy ARK co umożliwiło ich łatwy demontaż w celach serwisowych. Obudowa robota została wykonana z laminatu 1mm. Na obudowie znajduje się nazwa robota oraz nasze imiona i nazwiska. Obudowa mocowana jest do podstawy za pomocą śrub, a jej elementy są do siebie lutowane. Dach robota wykonaliśmy z 2 mm przeźroczystego szkła akrylowego. Finalnie robot mierzy w najwyzszym miejscu 33,7 milimetra od podstawy do dachu, a od podłoza do dachu 37,2. Jego podstawa ma wymiary 98,9 mm na 99,6 mm. Masa waha się od 490 do 499g w zależności jak bardzo nakarmimy robota przed zawodami Elektronika Priorytetem projektu robota była jego dobra konstrukcja mechaniczna, w wyniku czego wymiary płytki z elektroniką były z góry narzucone. Elektronika została zaprojektowana w programie KiCad po zaimportowaniu wymiarów przeznaczonych na nią z programu Inventor. Elektronika robota dzieli się na dwie płytki: główną, która znajduje się tuż nad podstawą robota oraz dodatkowej, na której umieściliśmy włącznik zasilania, interfejs komunikacyjny oraz złącze na moduł startowy. Płytki połączone zostały ze sobą taśmą FFC. Mała płytka widoczna na zdjęciu nad płytką główną służy nam jako podstawka pod akumulator LiPo 7.4V, którym zasilamy robota. Sercem naszego robota został mikroprocesor STM32F1. Wybór tej rodziny wynikał z łatwości ich programowania przez początkujących. Czujniki odległości wykorzystane w robocie to znane i lubiane cyfrowe Sharpy 40cm. Umieściliśmy je 4, dwa z przodu oraz po jednym na bokach. Na czujniki białej linii użyliśmy dwa KTIRy 0711S. Jak wcześniej wspomniałem zostały one umieszczone na małych płytkach, które umieściliśmy w wycięciach w podstawie. Na sterowniki silników wybraliśmy dwa, podwójne mostki H TB6612. Zostały one dobrane ze względu na ich dobrą wydajność prądową, co umożliwiło nam skuteczne wysterowanie silników Pololu bez obawy o to, że przy pełnym zwarciu mostki ulegną uszkodzeniu. Płytki zostały wykonane metodą termotransferu oraz wyfrezowane za pomocą Dremela i pilników ręcznych. Software Kod robota został napisany w środowisku System Workbench for STM32 (SW4STM32) z użyciem generatora kodu konfiguracyjnego STM32CubeMX. Program podzielony był na dwie sekwencje: startową i walki. W pierwszej ustawiana była konfiguracja algorytmu robota oraz dostępne były funkcje testu czujników (widoczny na zdjęciu poniżej - cztery czerwone diody, które odpowiadały za pokazanie aktualnego stanu czujników) oraz czyszczenia kół (drobna funkcja pomocnicza ustawiająca małą prędkość na kołach). Sekwencja walki załączała się po otrzymaniu przez robota sygnału startowego z modułu. Większa część algorytmu walki opierała się na prostych if-ach z odpowiednio dobranymi nastawami silników w każdym przypadku, co okazało się wystarczające w większości starć. Następnie zostały dodane pewne udoskonalenia, o których już rozpisywać się nie będę Osiągnięcia - II miejsce Robomaticon 2016 - I miejsce Robotic Tournament 2016 - III miejsce Festiwal Robotyki Cyberbot 2016 - II miejsce [Minisumo] oraz I miejsce [Minisumo Deathmatch] Trójmiejski Turniej Robotów 2016 - II miejsce Opolski Festiwal Robotów 2016 - I miejsce Robotic Day 2016 [Praga] A poniżej kilka filmów z udziałem robota: 2Weak4U vs Hellfire 2Weak4U w Wiedniu 2Weak4U vs Dzik 2Weak4U vs Shevron (chyba) 2Weak4U w Deatmatchu [Rzeszów] 2Weak4U vs Szwagier Pozdrawiam i do zobaczenia w następnym sezonie, Aleksander
  12. 7 punktów
    Skoro forum powoli zmienia profil i przestajemy się skupiać na robotach, to postanowiłem, że zrobię sobie tutaj trochę bezczelnej reklamy i napiszę o projekcie, nad którym pracowałem od jakiegoś roku, który choć związany z mikrokontrolerami i programowaniem, robotem stanowczo nie jest. Zaczęło się mniej więcej rok temu, kiedy wpadłem na pomysł jak można sprawić, żeby nauka języka Python była znacznie łatwiejsza, mniej problematyczna oraz przede wszystkim fascynująca. Micro:bit i Raspberry Pi pokazały, że programowanie dedykowanego urządzenia daje bardzo dużo radości oraz poczucie kontroli nad techniką — moim zdaniem bardzo ważne rzeczy przy uczeniu jakichkolwiek technicznych tematów. Niestety, moje doświadczenia z przeróżnych szkoleń i warsztatów pokazały także achillesową piętę takiego podejścia: zawsze coś nie działa. Ludzie przychodzą z własnymi laptopami, niektórzy mają na nich poinstalowane jakieś Windowsy czy inne Makoesiksy, połowa z nich nie potrafi zainstalować sterownika, druga połowa akurat miała system update i sterownik im przestał chodzić, trzecia połowa dopiero ściąga prze konferencyjne WiFi środowisko uruchomieniowe i kompilator, a czwartej połowie nie chcą zainstalować się biblioteki. W efekcie ponad połowa czasu zawsze jest tracona na ustawianie wszystkiego. Do tego kiedy już uczniowie napiszą te swoje gry i będą chcieć się nimi pochwalić, to nie będą mogli — bo działają tylko na ich komputerze gdzie jest wszystko zainstalowane, a uruchomienie na komputerze kolegi wymaga przechodzenia całego procesu ponownie. Koszmar. Zatem postanowiłem zrobić urządzenie dedykowane do pisania gier, usuwając przy tym z drogi jak najwięcej przeszkód tak, aby można się było skoncentrować na celu — czyli samym programowaniu — bez wszystkich dodatkowych problemów. Początkowo stworzyłem shield dla płytek sprzedawanych przez Adafruit, zawierający przyciski i prosty kolorowy wyświetlacz LED 8x8, aby dało się pisać gry w rodzaju snake-a czy tetris-a. Jednak nie było to jeszcze rozwiązanie idealne, choć pozwoliło mi zbadać co działa, a co nie, oraz doszlifować moje umiejętności. Dzisiaj udostępniam szerszej publiczności moje najnowsze dzieło, czyli "prawdziwą" przenośną konsolę do gier. Zawiera ona kolorowy ekran 128x128, głośniczek, 6 przycisków i mikrokontroler programowany w CircuitPythonie. Urządzenie po podłączeniu do komputera widoczne jest jako dysk USB, nie wymagając przy tym żadnych sterowników (chyba, że ktoś ma Windows 7, wtedy niestety konieczne jest zainstalowanie sterownika aby mieć dostęp do konsoli na porcie szeregowym), a programujemy je po prostu edytując widoczne na nim pliki (lub kopiując je z komputera, oczywiście). Wbudowana w firmware prosta biblioteka do obsługi duszków i kafelków ułatwia zadanie. Grafika jest trzymana w plikach BMP, dźwięki w plikach WAV, kod w plikach tekstowych — zatem można użyć dowolnego programu jaki akurat się ma dostępny i jaki umie się już obsługiwać. Więcej informacji o projekcie, wraz z logami z jego konstruowania można znaleźć na https://hackaday.io/project/27629 Tylko, że co daje taki projekt zrobiony dla siebie do szuflady? Oczywiście wszystko jest opisane i opublikowane na otwartych licencjach, ale szanse na to, że ktoś inny zbuduje takie urządzenie są w zasadzie znikome. Aby było ono rzeczywiście przydatne, ludzie muszą go używać, a zatem musi być ono dostępne w sprzedaży. Dlatego kolejnym moim krokiem było zlecenie wyprodukowanie małej serii tych urządzeń. Dzisiaj właśnie przyszła paczka z fabryki i rozpoczynam ich sprzedaż na Tindie. Jest ich tylko 50, nie liczę na zbicie na tym kokosów, ale być może uda się zbudować społeczność zainteresowaną programowaniem tych urządzeń. Oczywiście jak na polskie warunki cena jest wysoka — niestety tak to jest z produkowaniem małych serii niestandardowych urządzeń. Ale być może kogoś jednak to zainteresuje: https://www.tindie.com/products/deshipu/game-10-game-console-kit/ Wreszcie, żeby nie było, że to tylko taka reklama i komercja, bardzo chętnie pomogę ludziom chcącym zbudować swoją własną wersję tej konsoli. Nie trzeba do tego wytrawiać płytek i lutować elementów montowanych powierzchniowo — wystarczy dowolna płytka rozwojowa z mikrokontrolerem SAMD21, moduł wyświetlacza, kilka przycisków, trochę kabelków, kostka pamięci flash i opcjonalnie głośniczek lub słuchawki.
  13. 7 punktów
    Witam, pragnę zaprezentować serwomechanicznę ramię nad którym pracowałem przez jakiś czas, zdaje sobie sprawę iż nie jest doskonałe i wymaga jeszcze dopracowania wielu szczegółów, poniekąd jestem konstruktorem amatorem lecz to co robię sprawia mi wielką przyjemność i poczucie osiągania danego celu poprzez naukę, cierpliwość i wytrwałość Serworamię V.1.0. zbudowane jest na podstawie plastikowej obudowy w której zamieszczony jest transformator wraz z przetwornicą napięcia do której to przytwierdzone jest jedno z wielu serw mg995 towerPro dzięki temu obrot ramienia wynosi niemal 230 stopni :-> Wysięgnik ramienia oraz 2 moduł ramienia napędzany jest przez sprzężone serwa mg995 przez co siła uciągu jest podwójna - zapewnia to stabilność oraz znaczne zwiększenie siły wykonywanej pracy. Ostatni moduł ramienia oraz chwytak to spreparowane gotowe konstrukcje zakupione w sklepie botland również napędzane przez serwa mg995 Ogolnie całość napędza 7 serw mg995, zasilacz 150W/12V wraz z przetwornicą 300W step down nastawioną na 6V za bezpieczeństwem odpowiada moduł czujnika temperatury i wentylatora na przetwornicy który pokazuje aktualną temperaturę stabilizatora napięcia. Prąd jaki osiąga podczas pracy przy dużym oporze to blisko 8 Amper. Sterownik jaki zastosowałem obecnie to serwokontroler Polulu mini Maestro 12 kanałowy lecz nie jest on wystarczający do takich prac z powodu częstego "gubienia" zapisanych sekwencji pracy, przez co odtworzenie przynosi wiele uśmiechu myslę o zastosowaniu Arduino w celu tworzenia skryptu oraz przekaźników do zasilania serw - całość będzie bezpieczna, gdyż styki na mini maestro przy gniazdach GoldPin praktycznie się stopiły od prądu przez nie płynącego. z pewnościa konstrukcja wymaga poprawek i wielu modyfikacji, lecz sam nie ukrywam nie mam wystarczająco wiele czasu by działać z tym na bieżąco. zapraszam na film: (video od polowy filmu) __________ Komentarz dodany przez: Treker Następnym razem pamiętaj o dodaniu zdjęć o proporcjach ~3:2 w załączniku (jest one wyświetlane w katalogu robotów). Teraz poprawiłem to za Ciebie
  14. 7 punktów
    Witajcie! Bolt to robot klasy Linefollower Standard. Został zaprojektowany, zbudowany oraz zaprogramowany przez kolegę Hubert.M oraz mnie. Jest on naszą najnowszą konstrukcją. Konstrukcja mechaniczna. Robot składa się z 2 płytek PCB, wykonanych przez firmę SATLAND Prototype. Płytki połączone są dwiema węglowymi listewkami, a z tyłu robota znajduje się aluminiowa podpórka zabezpieczająca przed przewróceniem się robota. Podpórkami listwy czujników są tranzystory w obudowie TO92. Silniki użyte w robocie to popularne Pololu HP 10:1. Koła wykonał dla nas hungrydevil. Masa robota z baterią wynosi 69 gramów. Elektronika. Zdecydowaliśmy się na mikrokontroler STM32F103C8T6. Silniki sterowane są układem TB6612. Zastosowane czujniki linii to KTIR0711. Czujników na chwilę obecną jest 9. Zastosowaliśmy moduł bluetooth HC-05. Zastosowanie modułu znacznie ułatwiło strojenie robota. Ponadto stan każdego czujnika jest odzwierciedlony diodą LED. Robot zasilany jest pakietem Li-pol o pojemności 150mAh. Część logiczna robota zasilana jest napięciem 3.3V. Program. Algorytm robota jest napisany w języku C. Zastosowano regulator PD. Dzięki modułowi BT wszystkie nastawy regulatora mogą być ustawiane bez ponownego programowania robota. Ponadto, program pozwala na np. zdalne sterowanie robota po połączeniu z komputerem. Do zażądania robotem napisaliśmy 2 aplikacje – na telefony z systemem android, aplikacja pozwala na wystartowanie robota, a także na jego zatrzymanie. Z Kolei aplikacja na PC oprócz podstawowej funkcjonalności pozwala na dobieranie nastaw robota. Ponadto można za jej pomocą rysować wykresy uchybu i pochodnej z uchybu. Bolt ma brata bliźniaka, o nazwie Bez Nazwy. Jest on nieco szybszy od Bolta (bo czerwony). Osiągnięcia i plany na przyszłość. - 2 miejsce na Konkursie robotów SEP Gdańsk 2015 - 4 miejsce na SUMO Challenge 2015 W robocie planujemy jeszcze bardziej poprawić jakość sterowania, oraz rozważamy wykonanie węższej listwy czujników z czujnikiem odległości, aby móc startować w kategorii LF Enhanced. Film z przejazdu:
  15. 7 punktów
    Idąc za ciosem, tym razem chciałem przedstawić (najprawdopodobniej) pierwszego na tym forum robota klasy Ketchup House. W pracach nad jego stworzeniem brało udział 5 członków Koła Naukowego Robotyków. Nazwa Nazwa Pomidor wydaje się być dość zrozumiała z uwagi na nazwę konkurencji w której startuje, jednak numeracja już niekoniecznie Otóż bezpośrednim protoplastą tego robota jest robot Pomidor (1). Robot miał parę błędów konstrukcyjnych, które powodowały, że nie spisywał się najlepiej. W związku z tym podjęliśmy decyzję o zrobieniu dużo bardziej zaawansowanego robota – Pomidora 2. Jednak na jakiś czas przed zawodami stwierdziliśmy, że nie zdążymy wykonać go w wymarzonej przez nas formie, więc powstał robot będący hybrydą tych dwóch podejść – Pomidor 1.5. Konstrukcja okazała się na tyle udana, że na jej podstawie powstała kolejna generacja robota – Pomidor 1.6 (o której będzie zapewne w kolejnym poście). Zawody Ketchup House Ponieważ jest to dość egzotyczna kategoria (przynajmniej w Polsce), pozwolę sobie ją najpierw krótko opisać. Moim zdaniem, Ketchup House jest zdecydowanie najbardziej nieprzewidywalną i widowiskową konkurencją odbywającą się na zawodach konstruktorskich. W każdej, trwającej 3 minuty rozgrywce udział biorą 2 roboty. Polem ich zmagań jest biała, kwadratowa plansza o wymiarach min. 1,8x1,8m. Na planszy znajduje się 10 czarnych linii (5 poziomych i 5 pionowych) o szerokości 12mm, tworząc kwadrat o wymiarach 1,2x1,2m, podzielony na 16 mniejszych kwadratów o wymiarach 0,3x0,3m. Na skrzyżowaniach umieszczane są puszki z tytułowym keczupem. Są to typowe stalowe puszki o średnicy 53 mm, wysokości 74 mm i masie ok. 163 g. W każdej, trwającej 3 minuty potyczce biorą udział 2 roboty. Ich zadaniem jest przemieszczenie puszek na swoją linię „domową”. Na początku rozgrywki na planszy znajduje się 5 puszek. 2 z nich, zaznaczone na zielono, znajdują się w ustalonych pozycjach (skrzyżowania C2 oraz C4). Położenie 3 pozostałych puszek jest losowane tuż przed rozpoczęciem pojedynku. Aby zrównoważyć szanse robotów na zwycięstwo, każda z dolosowywanych puszek musi się znaleźć na innej z linii B, C, D. Na początku pojedynku roboty są umieszczane w pozycjach A3 oraz E3. Na znak sędziego roboty są uruchamiane. Od tej pory, aż do zakończenia pojedynku nie ma możliwości ingerencji w ich działanie. Jeżeli podczas rozgrywki robot poruszy jedną z puszek w wylosowanej pozycji, to na jej miejsce dostawiana jest kolejna. Dostawienie następuje po przejechaniu przez robota do następnego skrzyżowania. W trakcie jednego pojedynku na planszy może się pojawić łącznie do 12 puszek. Istnieje zupełna dowolność w sposobie przemieszczania i odstawiania puszek. Nie ma także ograniczeń co do sposobu poruszania się po planszy – roboty mogą poruszać się po wyznaczonych liniach, ale nie muszą. Przypadkowe zderzenia na ogół nie są karane, jednak niezgodne z zasadami jest zamierzone „dążenie do zderzenia” (np. wypychanie poza planszę). Roboty powinny wykrywać i omijać przeciwnika. Po upływie 3 minut następuje zakończenie potyczki. Roboty (jeżeli zachodzi taka potrzeba) są zatrzymywane. Za każdą puszkę dotykającą linii bazowej przyznawany jest 1 punkt. (Na rysunku poniżej przykładowa sytuacja na koniec pojedynku, zakończona wynikiem 5-4 na korzyść robota 2 (niebieskiego)). Mechanika Po tym dość przydługim wstępie, teraz parę słów o samej konstrukcji. Bazę robota stanowią dwie płyty laminatu szklano-epoksydowego. Obie płytki stanowią dwojaką rolę - po pierwsze są to bazowe komponenty, do których montowane są wszystkie pozostałe części, po drugie zaś - rozmieszczone są na nich wszystkie połączenia elektryczne. Obie płyty mają kształt prostokąta o wymiarach 200x190 mm, w którym wycięto V-kształtne wycięcie. Płyty są ze sobą skręcone za pomocą mosiężnych dystansów. Układ napędowy stanowią dwa silniki POLOLU z przekładnią 298:1. Wcześniej stosowaliśmy silniki o dużo mniejszym przełożeniu, jednak podczas naszych pierwszych zawodów okazało się, że jazda ze zbyt dużą prędkością jest nieopłacalna – podczas zderzeń sędzia zawsze uznawał, że to nasza wina, gdyż jechaliśmy z dużo wyższą prędkością (poza tym zastosowanie tak dużego przełożenia pozwoliło nam na uzyskanie większej dokładności enkoderów). Koła podporowe (Kastora) oraz koła napędowe także pochodzą od POLOLU – zostały wybrane głównie ze względu na odpowiedni rozmiar. Do unieruchamiania puszki wykorzystujemy ramkę napędzaną serwomechanizmem. Aby mieć możliwość dokładnego sterowania oraz monitoringu siły, zdecydowaliśmy się na Dynamixela AX-12A (duży wpływ na to miał także fakt, że akurat taki posiadaliśmy w schedzie po starszym projekcie ) Na zawodach zaobserwowaliśmy, że ze względu na wystające kółka czasami robotowi zdarza się zakleszczyć (np. o puszkę) aby uniknąć takich sytuacji wydrukowaliśmy osłonę okalającą całego robota. Elektronika Schemat ideowy całego układu elektronicznego można zobaczyć na rysunku poniżej: Mózgiem robota jest STM32F100RB, będący częścią zestawu STM32 Discovery VL. Zdecydowaliśmy się na takie rozwiązanie, aby móc podczas zawodów zmieniać szybko algorytm pomiędzy potyczkami i mieć możliwość jego szybkiego wymienienia w razie awarii. Jak można zaobserwować na rysunku robot jest wyposażony w dużą ilość czujników. Zdecydowanie najważniejszymi z punktu widzenia algorytmu sterowania są czujniki odbiciowe. Jest ich aż 17 (na dolnej płytce) ich rozmieszczenie można zaobserwować na rys. poniżej. Aby móc dopasowywać się do różnych plansz, układ wyposażono w komparatory oraz potencjometr, które pozwalają na ustawienie poziomu, od którego wykrywana jest czerń. KTiRy można przyporządkować do 3 grup. Czujniki oznaczone numerami 4-11, znajdujące się w przedniej części robota, są wykorzystywane w algorytmie jako źródło danych regulatora sterującego jazdą po prostych, a także (w mniejszym stopniu) do wspomagania obrotu. Czujniki w przednich rogach płytki (odpowiednio 11 i 12 oraz 13 i 14) były wykorzystywane przy dowożeniu puszek - do dokładnego pozycjonowania puszek na linii oraz jako czujniki awaryjne podczas jazdy po prostej. Transoptory po bokach (15, 16 i 17 oraz 18, 19 i 20) umożliwiają wykrycie dojazdu do skrzyżowania oraz są głównymi sensorami wykorzystywanymi w algorytmie obrotu. W toku testowania okazało się, że bardzo przydatne byłyby dodatkowe czujniki, które umożliwiłyby jazdę po linii do tyłu. Aby nie wytrawiać całej płytki od nowa, wykonano dodatkową tylną płytkę, na której znajdują się 3 czujniki (o numerach 1-3) Kolejnymi ważnymi czujnikami były enkodery. Na początku stosowaliśmy enkodery optoelektryczne, które do poprawnego działania wymagały zastosowania komparatorów oraz przejścia żmudnego procesu kalibracji (dla każdego z KTiRów z osobna dobieraliśmy nastawy potencjometru). Jednak gdy tylko pojawiły się enkodery magnetyczne dla silników POLOLU, nasze problemy odeszły do lamusa. (Dla porównania – sygnał z enkoderów optoelektrycznych oraz z magnetycznych) Poza tym stosowaliśmy czujniki odległości – do wykrywania puszki oraz do wykrywania przeciwników na planszy. Aby uniknąć cross-talku do jednego zadania wykorzystaliśmy analogowe czujniki SHARP (4-30) a do drugiego czujniki ultradźwiękowe. Aby ustawić odpowiedni kąt czujników ultradźwiękowych – tak, aby wykrywały jedynie przeciwnika, a nie puszkę, zaprojektowaliśmy specjalne mocowanie, umożliwiające modyfikację ich kąta nachylenia. Dla ciekawskich, poniżej są schematy: Na koniec, tradycyjnie, krótki filmik pokazujący działanie robota: [ Dodano: 28-03-2016, 22:01 ] Nie chcąc przedłużać i tak przydługiego już posta, o algorytmie będzie nieco więcej przy okazji opisu robota Pomidor 1.6.
  16. 6 punktów
    To mój pierwszy post na tym forum ale od razu chciałbym przedstawić zbudowanego przeze mnie robota. Mimo że to pierwszy post to odwiedzałem to i inne fora wielokrotnie w poszukiwaniu przydatnych informacji i wykorzystując jedynie „magiczny” guzik szukaj udało mi się rozwiązać większość problemów z budową. To dla tych którzy nie chcą i nie lubią szukać… Wracając jednak do robota to został on nazwany X-walker i jest czteronożnym robotem kroczącym o symetrycznej konstrukcji. Został zaprojektowany jako robot którego zadaniem będzie przejście po nieznanym terenie przy jednoczesnym zachowaniu równowagi i odpowiednim położeniu korpusu. Prace nad robotem aktualnie się zakończyły, aczkolwiek temat jest obszerny i wiele można jeszcze ulepszyć albo dodać, więc w przyszłości robot zostanie poddany kolejnym modyfikacją. 1.Budowa mechaniczna Konstrukcja mechaniczna robota została zaprojektowana przy użyciu programu Autodesk Inventor 2010. Program ten umożliwił stworzenie wirtualnego modelu robota oraz przetestowanie zależności mechanicznych występujących pomiędzy jego elementami. Dzięki temu wybrano optymalne wymiary poszczególnych części. Poniżej na rysunku 1 zaprezentowano projekt robota z programu Inventor (bez elektroniki oraz okablowania): Na materiał konstrukcyjny wybrano aluminium jako, iż posiada odpowiednią wytrzymałość, jest przy tym lekkie i nadaje się do obróbki za pomocą prostych narzędzi. Zaprojektowane elementy wycięto przy pomocy lasera z 1.5mm i 2mm arkuszy aluminium. Poniżej przedstawiono wycięte elementy: Dalszy etap prac polegał na odpowiednim ukształtowaniu niektórych części. Proces ten odbywał się ręcznie przy udziale odpowiednich kopyt wykonanych z drewna bukowego i stali. Następnie dokonano montażu elementów przy pomocy różnego rodzaju łączników śrubowych o średnicach od 2 do 4mm. Dodano także inne elementy, takie jak tulejki dystansowe czy części składowe stóp ze zintegrowanymi czujnikami stykowymi. Na kolejnym rysunku przedstawiono złożonego robota: Poniżej przedstawiono szczegóły budowy stopy: Napęd robota stanowi 12 serwomechanizmów Power HD 1201 o parametrach przedstawionych poniżej (dane producenta): - moment 12.2/13.2 kg/cm - prędkość 0.16/0.14 sec/60° - napięcia 4.8/6.0 V - waga 60 g - wymiary 40.7 x 20.5 x 39.5 mm Niestety niektóre dane obiegają od wartości rzeczywistych, szczególnie wartość momentu, ale co ciekawe nawet wymiary nie są zgodne z rzeczywistymi. Podsumowując, konstrukcja mechaniczna robota posiada kilka charakterystycznych cech: - zwarta i solidna konstrukcja - podwójne łożyskowanie wszystkich stawów - zintegrowane czujniki stykowe w stopach - całkowita rozbieralność konstrukcji – tylko połączenia śrubowe - możliwie najmniejsze wymiary przy zastosowaniu danych elementów wyposażenia robota - liczne otwory odciążające konstrukcję 2. Elektronika Część elektroniczna robota posiada budowę modułową. Każdy moduł zawiera mikrokontroler AVR i pełni odpowiednie dla siebie funkcje. Każdy posiada także odpowiednio multipleksowane wyprowadzenie ISP, co pozwala programować moduły podczas ich działania. Moduły stanowią odrębne jednostki elektroniczne i można ich używać oddzielnie nie koniecznie w robocie X-walker. Do komunikacji między sobą wykorzystują SPI. Takie rozwiązanie nie ogranicza w dalszej rozbudowie robota i pozwala stale dodawać nowe elementy i funkcje. Poniżej scharakteryzowano poszczególne moduły. 2.1. Moduł sterujący „BRAIN” Jest głównym modułem w robocie, zawiaduje działaniem pozostałych. Został oparty na mikrokontrolerze ATmega 16A z kwarcem 16MHz. Posiada wyprowadzone piny z magistralą I2C i SPI, wyświetlacz LCD oraz 2 dodatkowe przyciski na potrzeby przyszłych funkcji. Poniżej krótka charakterystyka: - arbiter magistrali SPI - komunikacja z akcelerometrem i żyroskopem poprzez I2C - Realizacja filtru Kalmana w celu wyznaczenia aktualnego pochylenia robota - obsługa wyświetlacza LCD - nadzorowanie pracy innych modułów - formowanie odpowiednich ramek danych do komunikacji z PC 2.2. Moduły sterowników serw Robot posiada dwa takie same moduły sterowników serw, każdy obsługuje 6 serwomechanizmów, czyli 2 nogi robota. Moduły także oparte są o mikrokontroler ATmega 16A na kwarcu 16MHz. Najważniejszymi funkcjami tych modułów jest oczywiście generowanie odpowiedniego sygnału PWM dla serwomechanizmów, ale także obsługa czujników stykowych i pomiar napięć na potencjometrach serw (dodatkowy przewód wychodzący z każdego serwa). Ta ostatnia cecha służy sprawdzeniu czy serwomechanizm jest rzeczywiście wychylony od taką wartość jaką wyznacza sterowanie, co jest przydatne w pracy przy dużym obciążeniu. Należy dodać, że sygnały analogowe z potencjometrów przed dotarciem do tych modułów przechodzą przez filtr analogowy. 2.3 Moduł nadawczo odbiorczy „BT_RX_TX” Moduł ten jest odpowiedzialny za obsługę dwóch modułów bluetooth, jednego wysyłającego a drugiego obierającego dane z komputera. Dane przychodzące są odpowiednio filtrowane. W module zastosowano mikrokontroler ATmega 8A oraz kwarc 14.745MHz odpowiedni do transmisji szeregowej. Standardowo w module instaluje się dwa moduły bluetooth BTM-222. Poniżej zdjęcie przedstawiające moduł zamontowany w robocie: 2.4. Moduł zasilający "POWER" Robot jest zasilany dwoma zestawami akumulatorów. Pierwszy większy zestaw (2x LiPo 1850 mAh 7.4V) zasila serwomechanizmy, drugi mniejszy (LiPo 850 mAh 7.4V) zasila układy elektroniczne. Moduł zasilający monitoruje wartości napięć poszczególnych akumulatorów a także mierzy prąd jaki zużywają napędy robota. Zajmuje się także stabilizacją napięć – 5V dla elektroniki i poprzez stabilizator impulsowy (niewidoczny na zdjęciach) 5.3V lub 6V dla serwomechanizmów. Moduł zasilający posiada budowany układ dźwiękowy sygnalizujący niski stan napięcia w akumulatorach. Zajmuje się także monitorowaniem temperatury w istotnych miejscach robota za pomocą magistrali 1-wire oraz czujników DS18b20. Te miejsca to: stabilizator impulsowy dla serw, stabilizator liniowy dla elektroniki, temperatura w serwomechanizmie „udowym”, temperatura otoczenia. Zdjęcie użytego zasilacza impulsowego oraz zdjęcie robota po zamontowaniu modułu "POWER". Widoczny radiator stabilizatora liniowego elektroniki: 2.5 Pozostałe moduły Moduł żyroskopu Zawiera żyroskop cyfrowy L3G4200D oraz kilka elementów elektronicznych niezbędnych do jego działania . Na zdjęciu widać poprawiony błąd na PCB. Praktyczniej było to zrobić w ten sposób niż zmieniać całą płytkę bo wiązałoby się to z ponownym lutowaniem obudowy LGA żyroskopu. Moduł akcelerometru Zawiera akcelerometr (i magnetometr) cyfrowy LSM303DLH oraz tak jak moduł żyroskopu kilka elementów elektronicznych niezbędnych do jego działania. IMU - interial measurmet unit Moduł IMU czyli tzw. interial measurmet unit złożony i zamontowany w całości wraz z konwerterami napięć dla sygnałów magistrali I2C Moduł filtrów analogowych RC (2 sztuki) Filtruje napięcia na potencjometrach serw aby można było je prawidłowo zmierzyć poprzez wbudowane w mikrokontrolerach przetworniki ADC 3. Sterowanie X-walker jest sterowany za pomocą komputera PC i odpowiedniej aplikacji. Zastosowanie dwóch modułów Bluetooth pozwoliło na szybkie przekazywanie danych w obu kierunkach i uzyskanie kroku sterowania na poziomie 40ms. Czas ten nie jest niestety gwarantowany z racji zastosowania protokołu Bluetooth, aczkolwiek robot porusza się płynnie i reaguje błyskawicznie na zmiany sterowania. W jednym cyklu sterowania od robota odbierane są odpowiednie dane, wyliczane jest sterowanie i dane ponownie wysyłane są do robota. Na ekranie komputera możemy obserwować dane generowane przez wszystkie moduły robota jak również aktualne położenie środka ciężkości robota względem jego stóp z naniesionym wielokątem podparcia (obraz poniżej) Po wybraniu odpowiednich ustawień chodu robota oraz prędkości poruszania się następuję połączenie z robotem. O tej pory możemy nim sterować: chód przód, tył, na boki oraz obroty w lewo prawo. Wszystkie inne „akcje” związane z chodzeniem po trudnym terenie robot podejmuje sam. Na filmach poniżej można więc zaobserwować jak przekłada nogę w celu znalezienia odpowiedniego miejsca do położenia jej bądź też ratuje się przed wywrotką po obsunięciu się którejś z nóg. Innych elementów prawdopodobnie nie widać na filmach a mianowicie robot dba cały czas o odpowiednie usytuowanie środka ciężkości tym samym zapewniając sobie stabilność. Każdorazowo dobiera odpowiednie przemieszczenia nóg wzdłuż wszystkich osi oraz przemieszczenie korpusu. Korpus robota jest pozycjonowany automatycznie za sprawa sterowników PID które wyliczają sterowanie na podstawie danych z żyroskopu i akcelerometru przetworzonych przez filtr Kalmana. Wysokość korpusu nad ziemią także jest ustalana przez odpowiedni algorytm. Dodatkowo robot pilnuje aby każda noga która w danej fazie chodu ma spoczywać, w przypadku utraty podłoża „znalazła” nowe poprzez systematyczne obniżanie jej. Opis powyżej przedstawia pokrótce sposób w jaki sterowany jest robot, aczkolwiek nie zawiera wszystkich szczegółów. Zostały wymienione tylko główne funkcje algorytmów sterujących. Zdaje sobie sprawę że opis ten może być ciężki do zrozumienia, ale nigdy nie miałem talentu do opisywania tego co robie, więc śmiało można pytać i będę się starał rozwiewać wątpliwości oraz uzupełnić opis w miarę możliwości. Na koniec jeszcze kilka zdjęć i filmy: Kinematyka odwrotna: Kontrola przechyłu korpusu: Chodzenie po nierównym terenie: Chodzenie po ruchomej równoważni: I jeszcze coś w HD, łażenie po kamyczkach:
  17. 6 punktów
    Pojawiają się tutaj co jakiś czas dyskusje o kosztach naszego hobby i o porównywaniu cen w różnych sytuacjach. Sam ostatnio zacząłem sprzedawać swoje projekty na Tindie, więc postanowiłem napisać artykuł wyjaśniający dlaczego rzeczy nowe, niszowe i robione przez hobbystów są takie drogie, podczas gdy takie Raspberry Pi Zero można kupić za 50zł (i dwa razy tyle kosztu wysyłki). Przy okazji być może wyjaśni to też dlaczego tak wiele kickstarterów się nie udaje. Różnica pomiędzy projektem a produktem Większość z nas ma już jakieś tam doświadczenie w realizowaniu projektów elektronicznych. Wymyśliliśmy (lub skopiowaliśmy z noty katalogowej) schemat, zaprojektowaliśmy płytkę, wytrawiliśmy ją, zamówiliśmy próbki części, zlutowaliśmy wszystko, zaprogramowaliśmy, zdebugowaliśmy, pięknie nam działa, koniec. Czas otwierać szampana i zakładać stronę na kickstarterze, już wkrótce wszyscy hobbyści będą mogli korzystać z naszego wspaniałego nowego produktu, który kosztował nas dużo mniej niż podobne produkty dostępne w sklepach, a przecież wyprodukowaliśmy tylko jedną sztukę -- w masowej produkcji powinno być jeszcze tańsze, prawda? Tak właśnie miałem z moim shieldem. Udało mi się gdzieś kupić okazyjnie matryce ledowe, które wielkością pasują idealnie do D1 Mini i aż się proszą o shielda. Napisałem też ostatnio bilbiotekę do obsługi HT16K33, który bardzo łatwo taką macierzą steruje. Tylko dodać dwa oporniki do I2C i gotowe. Będę to sprzedawał za dolara od sztuki. Kilka miesięcy i 5 prototypów później już nie byłem taki pewien. Oczywiście, błędy, które popełniałem były głupie i wynikały z roztargnienia i zbyt dużej pewności siebie. W końcu to taki prosty projekt. Mimo to czas mija, części na kolejne prototypy kosztują. Kilka razy projekt porzuciłem, ale jakoś zawsze jednak do niego wracałem. W końcu na początku roku uzyskałem coś, z czego byłem w miarę zadowolony. (Muszę tu przyznać, że projekt rzeczywiście był wyjątkowo pechowy, no ale nie kontrolujemy tego i nigdy nie możemy zakładać, że wszystko się uda.) No dobra, to teraz czas rozpocząć produkcję "masową". Powiedzmy 40 sztuk -- powinno się sprzedać błyskawicznie, jak tylko ludzie to zobaczą, to na pewno się rzucą i wtedy będę mógł zrobić kolejną partię, 400 albo i 4000 sztuk. No dobra, to gdzie najlepiej zrobić 40 płytek? Zdecydowałem się na DirtyPCB z ich ofertą 10 (+/-1) płytek o wymiarach 5x5cm -- bo udało mi się wcisnąć w tym obszarze cztery swoje płytki, a pozwalają na panelizację. Poprawiłem kilka detali, wcisnąłem po 4 płytki w jeden gerber, zamówiłem. Miesiąc później nadal czekam na płytki -- piszę do nich o co chodzi, zawsze płytki w 2 tygodnie były -- a oni mi odpisują, że mają dużą kolejkę po chińskim nowym roku, do tego musieli zmienić wykonawcę, etc. Acha, jako bonus, zmienili ostatnio wygląd strony i od tego czasu nie pokazuje się obrys płytki na podglądzie. Niby drobiazg, ale będzie to istotne później. W międzyczasie zamówiłem macierze i czipy. Płytki są małe, więc użyłem w nich najmniejszej wersji HT16K33, z minimalną liczbą nóżek. Okazuje się, że trudno znaleźć je w większych ilościach i są droższe. No trudno, kilka centów na czipie mnie nie zbawi, a płytki już zamówiłem. No to teraz macierze. Okazuje się, że są dwa rodzaje -- ze wspólna anodą i ze wspólną katodą. Oczywiście w przypadku macierzy 8x8 nie ma tu absolutnie żadnej różnicy, bo obie wersje mają po prostu LED-y podłączone do kolumn i wierszy, ale różnią się one wyprowadzeniami. Zatem należy uważać co się zamawia -- oczywiście najtańsze oferty nie mają w opisie informacji o tym jakie mają wyprowadzania albo jakiego są typu -- nie będę ryzykować kupowania 40 macierzy, które się potem okażą złe. Zatem trzeba wziąć te droższe. Zazwyczaj są w paczkach po 10 sztuk, więc sobie wymyśliłem, że zamówię różne kolory i ludzie będą sobie mogli wybrać. Doskonale, ale wszystko, co nie jest czerwone, jest dwa razy droższe. No trudno. To pewnie w ramach promowania komunizmu. Wysyłka na szczęście darmowa, zamówione. Mniej więcej dwa tygodnie po tych zamówieniach, pracując nad innymi projektami zorientowałem się, że co prawda mam zapas oporników, ale nie aż tyle, żeby zmontować te wszystkie macierze. No to jeszcze zamówiłem oporniki, 500 sztuk na zapas. Przyszły macierze. Zamawiając nie zauważyłem, że wszystkie są od tego samego sprzedawcy, więc przyszły w jednej paczce, która przez to przekroczyła próg cła i dopłaciłem drugie tyle za cło (tu gdzie mieszkam płaci się cło i "opłatę manipulacyjną" za to, że sprawdzili co to jest i oclili, która wynosi często więcej niż samo cło). Kolejna kosztowna pomyłka. W tym momencie już wiedziałem, że za dolara ich sprzedawać nie będę. Przyszły w końcu płytki. Okazało się, że zrobiłem błąd w projekcie i otwór na środku płytki, który powinien rozdzielać panele, nie jest wycięty. Oczywiście zemścił się brak podglądu, ale ostatecznie to moja wina. Dwa dni zajęło mi powycinanie 40 płytek dremelem. To teraz składanie. Najpierw polutowałem do wszystkich płytek oporniki i czipy. Oczywiście przez nieuwagę na dwóch płytkach czipy przylutowałem odwrotnie. Pojawiły się pierwsze zamówienia. Polutowałem do końca zamówione egzemplarze, przetestowałem czy działają i... jak ja mam to wysłać? Potrzebuję kopert bąbelkowych. W domu znalazłem dwie, na razie wystarczy, ale trzeba kupić więcej. Poszedłem na pocztę, popatrzyłem na ceny kopert i stwierdziłem, że zamówię je z Chin. No ale trzeba najpierw wysłać zamówienia. Ustalając ceny sprawdziłem koszty wysyłki na stronie poczty, więc teraz całkiem pewnie podaje pani w okienku koperty i mówię, że chcę to wysłać. Pani mierzy grubość i mówi, że musi wysłać jako paczkę, cztery razy drożej. No trudno, płacę i wracam do domu. Zamówiłem koperty (oczywiście dziesięć razy taniej niż na poczcie) i dodałem do strony produktu informację o tym, że wysyłam z nieprzylutowanymi nóżkami, bo inaczej się nie mieści do koperty. Biorę się za lutowanie pozostałych macierzy. Polutowałem wszystkie kolory i zabieram się za sprawdzanie -- zrobiłem sobie testing rig, tak że dość prosto mogę podłączyć i odpalić prosty program zapalający wszystkie piksele. Wszystkie niebieskie sprawne. Wszystkie czerwone sprawne, tylko w jednym miejscu mostek z cyny do usunięcia. Sprawdzam białe -- sprawna co druga. Hmm. Patrzę na kilka macierzy, które mi zostało -- oczywiście oznaczenia góra/dół mają całkowicie losowo -- a to według nich je lutowałem. Odlutować tego teraz już nie ma jak, połowa do wyrzucenia. Przyszły koperty, pojawiło się więcej zamówień. Skończyły mi się piny -- używałem tych, które miałem w zapasie -- trzeba zamówić. Kończy mi się rolka cyny, grot lutownicy zaczyna wykazywać oznaki zużycia. Moja lutownica jest markowa i droga i takież są też do niej groty. Wysyłam to, co mam zrobione aż się nie skończą -- średnio 1-2 zamówienia tygodniowo. Więcej nie będę raczej tego robić. Wszystkie projekty udostępniłem na otwartej licencji -- może jakiś Chinczyk to weźmie i zacznie produkować taniej i z darmową wysyłką. Koniec końców, wyszło około $5 za sztukę, z około $2 za wysyłkę do tego. Czyli siedem razy więcej, niż szacowałem. Oczywiście nie wliczyłem w cenę własnej robocizny -- ani godzin spędzonych na projektowaniu i testowaniu, ani na składaniu tego, ani na bieganiu na pocztę i wysyłaniu. Siedzę i czekam aż płytki dotrą do klientów -- i boję się, że coś będzie nie tak i trzeba będzie oddawać im kasę albo wysyłać nowe. Duży może więcej No dobra, to jakim cudem możemy kupować te płytki za $2 z darmową wysyłką? Dlaczego chińscy producenci nie mają takich problemów? Powodów jest kilka: Po pierwsze, mają subsydiowaną przez rząd darmową wysyłkę i wszystkie części dostępne na miejscu bez cła. Mogą kupować te najtańsze części bez dokumentacji, bo po prostu sobie sprawdzą czy wyprowadzenia są dobre. Po drugie, produkują w naprawdę gigantycznych ilościach i mają hurtowe ceny. Dodatkowo potrafią wynegocjować sobie naprawdę dobre warunki. Po trzecie, nie robią w zasadzie żadnej kontroli jakości. To jest krok, który u mnie okazał się najbardziej kosztowny -- nie dlatego, że był czasochłonny, choć był, ale dlatego, że wadliwych produktów nie sprzedam -- a Chińczyk by sprzedał. Po czwarte, mają naprawdę dobrze ogarnięty cały proces, wszystko przygotowane z góry, robili to już wiele razy, więc wiedzą czego się spodziewać. U mnie wiele kosztów wynikało z tego, że coś przegapiłem albo zapomniałem -- tam, nawet jeśli coś takiego się na początku zdarzy, to te koszty znikną przy takiej skali. Po piąte, nie mają kosztów projektowania, bo to są w większości otwarte projekty, które ktoś już im zaprojektował. Nawet jeśli musi na to spojrzeć specjalista, to znowu koszt jego pensji znika przy tej skali. Czyli kupować tylko od Chińczyka? Z ekonomicznego punktu widzenia, wydaje się to logiczną decyzją -- w końcu pieniądze nie rosną na drzewach. Najlepiej więc projektować wszystko tak, żeby używało tanich chińskich modułów? Taka taktyka działa dobrze na krótką metę. Jednak jest jeden podstawowy problem -- oni rzadko projektują coś nowego, nawet kiedy to robią, to nie jest to zbyt długo wspierane. W tym samym czasie technika galopuje do przodu i pojawiają się nowe rozwiązania. Potrzebujemy nowych projektów i potrzebujemy społeczności wokół nich, które będą je wspierać. Zatem być może jednak warto kupić czasem taki "przedrożony" nowy produkt -- w ramach inwestycji na przyszłość.
  18. 6 punktów
    Witam! Na wstępie chciałbym podziękować użytkownikowi Hudyvolt, który zaraził mnie zamiłowaniem do robotyki oraz "za rękę" przeprowadził przez budowę pierwszej konstrukcji - Dziękuję! Chciałbym Wam przedstawić Pikę - mojego trzeciego i zarazem najmłodszego robota kategorii LF standard. Jest to udoskonalona wersja mojego poprzedniego flagowca - Dzidy, z którą udało mi się odnieść pierwsze zwycięstwo na zawodach. Konstrukcja mechaniczna Na budowę robota składają się standardowo 2 płytki PCB (homemade) - płyta główna stanowiąca jednocześnie podwozie robota oraz listewka z czujnikami. Spójność robota zapewnia pojedyncza listewka z włókna węglowego. Aluminiowe felgi zostały wykonane przeze mnie w technologii WEDM, opony natomiast zostały odlane z poliuretanu 30'. Jako ślizgacz zapobiegający unoszeniu się przodu robota podczas nagłych przyspieszeń zastosowałem kondensator ceramiczny - znakomita odporność na ścieranie! Z kolei przód opiera się na 2 spiłowanych koralikach, które znalazłem gdzieś w domu. Napęd 2x Silnik Pololu HP 10:1 - spisują się rewelacyjnie. Elektronika Za realizację programu odpowiada uC ATmega128, do której za pośrednictwem komparatorów analogowych podłączonych jest 14 czujników KTIR. Stan każdego z czujników wyświetlany jest na dedykowanej do tego diodzie LED. Pozwala mi to na błyskawiczną diagnozę poprawności odczytów - kilka razy uratowało mnie to przed żmudnym poszukiwaniem przyczyny dziwnego zachowania robota. Zdarzało się, że czujniki ulegały delikatnemu uszkodzeniu, mianowicie podawały fałszywy stan jedynie w przypadku delikatnego uderzenia co powodowało zamruganie diody wskazującej na wadliwy czujnik. Sterowanie silnikami odbywa się przy pomocy pojedynczego, dwukanałowego mostka H - Toshiba TB6612FNG. Na pokładzie znajduje się również moduł Bluetooh HC-05, który komunikuje się z uC poprzez interfejs UART. Do wysyłania i odbierania danych używam prostego a zarazem sprytnego terminala na androida - "Bluetooth spp pro". Zasilanie Energię, zależnie od charakteru trasy, dostarczają pakiety Li-Pol 7.4V firmy Dualsky o pojemnościach: 220mAh, 300mAh oraz 550mAh. Najczęściej stosuję akumulator o pojemności 300mAh - mam wrażenie, że robot jeździ na nim nieco szybciej, taki złoty środek pomiędzy masą a wydajnością. Stan naładowania pakietu jest ciągle wyświetlany na 3 diodach LED. Lekkiej modyfikacji poddałem również gniazdo zasilania w robocie - wiszące na oryginalnych przewodach często powodowało mi zwarcia przy samej PCB - przewody od ciągłych zmian pakietów ulegały przełamaniu. Wykorzystałem fabryczne gniazdo, które po delikatnym przycięciu wkleiłem na 2 delikatnie odchudzone goldpiny. Z tym rozwiązaniem nie miałem jeszcze żadnych problemów. Do zasilania części cyfrowej Piki zastosowałem tradycyjny stabilizator 5V, który przy tej ilości diod wyraźnie się grzeje, lecz jeszcze w granicach rozsądku Program Algorytm napisany został w języku C. Opiera się na regulatorze PD z kilkoma pomniejszymi modyfikacjami. Nowa regulacja obliczana jest z interwałami ok. 8ms. Do wprowadzania nastaw, jak już wcześniej wspominałem służy moduł Bluetooth - szalenie wygodne rozwiązanie. Osiągnięcia -I miejsce na zawodach CYBERBOT 2015 w kategorii LineFollower Standard -I miejsce na zawodach ROBO~motion 2015 w kategorii LineFollower Standard (Vmax= 2.70m/s, Vśr = 1.90 m/s) -I miejsce na zawodach Copernicus Robots Tournament 2015 w kategorii Linefollower -I miejsce na zawodach "Opolski Festiwal Robotów" w kategorii Balluf LineFollower -I miejsce na zawodach "Trójmiejski Turniej Robotów 2015" w kategorii Linefollower Standard -IV miejsce w turnieju ROBOXY 2015 w kategorii LineFollower
  19. 6 punktów
    Witam, przedstawiam autonomicznego robota balansującego. Robot balansujący na Atmega 1284P 20MHz. Obsługuje komunikację oraz zmianę wsadu za pomocą bluetooth. Ponadto istnieje możliwość sterowania robotem za pomocą pilota IR, oraz zmiany nastawów regulatorów. Posiada system autonomicznej jazdy z wykorzystaniem 3 sensorów ultradźwiękowych. Delikatne ruchy robota w stanie spoczynku spowodowane są dużymi luzami w przekładniach silników. Robot radzi sobie bez problemów ze średniej wielkości nachyleniami podłoża. Sterowanie odbywa się poprzez aplikację na system android, która to wyświetla także podstawowe informacje o robocie (napięcie baterii, wielkość całki w regulatorze pochylenia itp). Tryb autonomicznej jazdy opiera się o trzy ultradźwiękowe czujniki odległości. W oparciu o ich wskazania, robot samoistnie podejmuje decyzje co do dalszej drogi. Jest to ostateczna wersja robota która posiada także prócz trybu autonomicznego, tryb zdalnego sterowania na odległość do 100 metrów. Zaimplementowany moduł auto diagnozy potrafi wykryć 32 ostrzeżenia i błędy, np od niskiego napięcia 12v 5v, po jego niestabilność, uślizg kół, luzy na piastach, opory toczenia i przekładni... itp.... itd... Uruchomienie poszczególnych funkcji robota odbywa się poprzez komendy terminala uart, lub wygodniej pilot ir. Wszystkie parametry robota wyświetlane są na 5 pulpitach 4 wierszowego wyświetlacza lub uproszczone w dedykowanej aplikacji na system android. __________ Komentarz dodany przez: Treker Witam na forum, następnym razem proszę pamiętać o zdjęciu w formie załącznika, które widoczne będzie później w katalogu robotów oraz na stronie głównej. W tym przypadku już poprawiłem
  20. 6 punktów
    W tym tygodniu mam dużo pracy i jeszcze nie udało mi się usiąść do myszy, ale ostatnio zdefiniowałem sobie problem przyspieszenia i dzisiaj zupełnie przypadkiem zapaliła mi się lampka w głowie: przyczepność i wynikający stąd poślizg to sprawa wtórna. To co istotne to II zasada dynamiki: F=m*a Czyli możliwości przyspieszania myszy zależą głównie od jej bezwładności (masy) i siły, czyli momentu silnika dzielonego przez promień koła. Żeby nie mielić na pusto wzorów, spróbujmy policzyć jaki moment powinien mieć silnik napędowy dla zadanego przyspieszenia, albo może lepiej z jakim przyspieszeniem mogę próbować rozpędzać mysz obecnym napędem. Moja mysz bez zasilania waży równiutko 100 g. Na razie jeżdżę z ciężkim pakietem 1600mAh o masie 102 g. Docelowo pakiet, powiedzmy 180mAh waży 20 g. Masa obecna to 202 g, docelowa120 g. Teraz siła. Silnik Pololu z przekładnią 10:1 ma moment 0,029 Nm. Średnica koła to 42 mm, stąd promień to 21 mm. Tak więc maksymalna siła na jednym kole przy pełnym wysterowaniu silnika to: F = M / r = 0,029 / 0,021 = 1,38 N Silniki są 2 więc mamy łączna siłę 2,76 N. Do tego dojdzie tarcie kulki podporowej, więc zaokrąglam siłę do 2,5 N. Teraz przyspieszenie dla obecnego i docelowego rozwiązania. a = F / m a1 = 2,5 / (9,81*0,202) = 1,26 m/s^2 a2 = 2,5 / (9,81*0,120) = 2,12 m/s^2 Gdybym zmienił przekładnię na 30:1 o momencie 0,059 Nm, to miałbym siłę na kole 2,8 N i łączną powiedzmy 5,4 N. Przyspieszenia to odpowiednio 2,73 m/s^2 oraz docelowo 4,59 m/s^2. Tutaj czuć ogień! Dla kompletu informacji warto podać jeszcze prędkości postępowe obu porównywanych napędów: P10:1 ma prędkość obrotową 3000 obr/min => 50 obr/s, więc prędkość liniowa to obrotowa razy obwód: 50 * 2 * Pi * 0,021 = 6,6 m/s P30:1 ma prędkość obrotową 1000 obr/min => 16,67 obr/s, więc prędkość liniowa to obrotowa razy obwód: 16,67 * 2 * Pi * 0,021 = 2,2 m/s Celem konkurencji jest najkrótsza eksploracja i najszybszy przejazd. Zakładając że eksploracja pozwala na jazdę komórka po komórce, więc robot musi rozpędzić się przez połowę komórki a w drugiej części hamować. Mając przyspieszenie i drogę można policzyć czas przejechania komórki dla obu napędów (10:1 i 30:1): t = sqrt( l / a) t10 = sqrt(0,18 / 2,12) = 0,29 s t30 = sqrt(0,18 / 4,59) = 0,20 s Tutaj widać że trzydziestka bije na głowę dziesiątkę. Szybkość przejazdu to trochę bardziej skomplikowana sprawa. Zróbmy to na jakimś przykładzie, tak aby przyjąć ilość odcinków o zadanej długości, np taki labirynt: ma 12 przejazdów po 1 komórce 3 po 2 komórki 4 po 3 5 po 4 2 po 5 1 po 11 komórek 1 po 12 komórek. Teraz trzeba wyliczyć jaki odcinek potrzebny jest do rozpędzenia się do maksymalnej prędkości. Wychodzę ze wzoru na czas rozpędzania do Vmax: t = v / a t10 = 6,6 / 2,12 = 3,11 s t30 = 2,2 / 4,59 = 0,47 s dochodzę do wzoru na drogę jaką pokona rozpędzając się do Vmax l = a * t^2 l10 = 2,12 * 3,11^2 = 20,5 m l30 = 4,59 * 0,47^2 = 1,01 m Już bez większego liczenia widać że napęd 10:1 aby się rozbujać potrzebuje 20 m i zupełnie nie nadaje się do tego typu robota. Napęd 30:1 rozpędzi się na maksa na drodze 6 komórek labiryntu i drugie 6 będzie hamował, więc w tym labiryncie tylko w jednym przejeździe przez chwilę osiągniemy maksymalną prędkość. To pokazuje że warto rozważyć nawet jeszcze wolniejszy napęd dający jeszcze większe przyspieszenie. W międzyczasie zrobiłem arkusz kalkulacyjny do przeliczenia 4 napędów: 10:1, 30:1, 50:1 i 100:1. Odcinki labiryntu podzieliłem na część w której robot się rozpedza i część z jaką jedzie z maksymalną prędkością. Policzyłem czasy pokonywania drogi przyspieszając, czas jazdy z maksymalną prędkością i łączny czas jazdy. Wyszło mi coś takiego: 10:1 = 6,59 + 0 = 6,59 s 30:1 = 4,6 + 0,06 = 4,66 s 50:1 = 2,77 + 4,01 = 6,77 s 100:1 = 0,73 + 18,97 = 19,7 s Wyniki oczywiście będą się zmieniały w zależności od masy i drogi labiryntu, ale dla zastałych warunków wyraźnie widać, który napęd jest optymalny.
  21. 6 punktów
    Cześć, Od jakiegoś czasu już się zbierałem do opisu konstrukcji. Hexapod, jak sugeruje nazwa, ma 6 nóg i chodzi . Powstał jako projekt 3-osobowego zespołu w ramach koła naukowego w ciągu ostatnich 4 miesięcy. Mechanika 12 stopni swobody, Hitec HS 645MG. Konstrukcja z blachy aluminiowej o grubości 3mm, elementy trzymające serwa z blachy aluminiowej 8mm. Od dołu podparcie na łożysku wkręconym w płytę korpusu. Masa konstrukcji 2100g. To chyba tyle. Całość konstrukcji wykonana przez nas na frezarce(dwuosiowej bez sterowania numerycznego i stołu obrotowego, więc łuki i fazy na ręcznym CNC ). Model 3D w Inventorze jest dość szczątkowy, takie minimum jakie bylo potrzebne do sprawdzenia czy to będzie działać. Żeby nie tracić czasu od razu przeszliśmy do fizycznego modelu 3D. Elektronika Całość układu sterowania opiera się o gotowe rozwiązania-na pokładzie jest Raspberry Pi i MiniMaestro. Układy komunikują się poprzez UART, z konwerterem poziomów po środku. Sterowanie W wielkim skrócie-robot rozwiązuje sobie równania różniczkowe, rzuca rozwiązania na kinematyke odwrotną, i tak w kółko. Serwa ustawiają się stosownie do wyliczonych pozycji. Informację o tym gdzie mają trafić wysyłamy przez UART. W tej chwili system sensoryczny sprowadza się do tego, że jest maszyna stanów, którą mogłby zarządzać sygnaly z czujników, tyle że czujników nie ma(jeszcze), jest za to bezprzewodowa klawiatura Robot może chodzic do przodu, do tyłu, i obracać się przez chodzenie jedną połową robota do przodu, drugą do tyłu. Zasilanie W robocie jest lipol 2S o pojemności 6000mAh. Do niego są 2 przetwornice na 5V. Jedna 5A do części logicznej Maestro i do Raspberry, druga na 9A na samo zasilanie serw. Podsumowanie Opis dość lakoniczny, bo skupiłem się na konkretach. Jeżeli będą jakieś pytania odpowiem. Robot w obecnym stanie pozostanie już niedługo, będzie trochę bardziej zaawansowany i mądrzejszy, ale o tym napiszę jak już taki będzie. Prace są w toku cały czas Zdjęcie robota: Filmik z chodzenia: Filmik z samego wiosłowania:
  22. 6 punktów
    Cześć wszystkim, Chciałbym przedstawić zrealizowany na Politechnice Śląskiej (w ramach trzech równoległych prac magisterskich) projekt grupowy. Jego celem było opracowanie stanowiska laboratoryjnego do badania systemów sterowania wielowirnikowych bezzałogowych obiektów latających. Docelowo systemów sterowania tolerujących uszkodzenia. Podział prac magisterskich: • zaprojektowanie i wykonanie platformy quadrocoptera o możliwości celowego wprowadzania wybranych uszkodzeń (moja część), • opracowanie aplikacji na urządzenie mobilne (tablet) umożliwiającej sterowanie platformą, zadawanie uszkodzeń oraz prowadzenie telemetrii, • wykorzystanie środowiska symulacyjnego (V-REP) do testowania zachowania platformy przy wprowadzanych uszkodzeniach oraz do testowania opracowanych algorytmów sterujących. W skrócie więc: platforma quadrocoptera wyposażona została w układy pozwalające na wprowadzanie trzech uszkodzeń (każde innego typu): uszkodzenie fragmentu śmigła, uszkodzenie sterownika silnika, utrata komunikacji. Wykorzystując tablet jesteśmy w stanie połączyć się z symulatorem quadrocoptera. Możemy sterować, wprowadzać uszkodzenia. Przy użyciu tego samego tabletu (bez konieczności modyfikacji aplikacji) łączymy się do rzeczywistej platformy, gdzie możemy zrobić dokładnie to samo plus dochodzi tutaj również telemetria. Po co wprowadzać uszkodzenia? W celu sprawdzenia jak zachowuje się obiekt pod ich wpływem. W trakcie przeprowadzania eksperymentów dane zapisywane są na zewnętrznym nośniku. Dane te mogą następnie zostać wykorzystane np. w Matlabie. Można na ich podstawie starać się opracować algorytmy, które będą tolerować uszkodzenia. Platforma quadrocoptera Quadrocopter został wykonany z użyciem zarówno gotowych jak i autorskich komponentów. Komponenty oznaczone jako dostępne są to układy, w które wyposażona jest większość platform multiwirnikowych. Wyjątkiem jest tutaj urządzenie mobilne, którego użycie nie byłoby możliwe bez opracowania własnych modułów. Ponieważ głównym celem pracy nie było opracowanie własnego kontrolera lotu, wykorzystano układ DJI Naza-M Lite (2). Do tego zaprojektowane zostały: moduł zasilający (4), moduł nawigacyjny (5) oraz moduł z czujnikami (6). Moduły te zaprojektowane zostały przy wykorzystaniu oprogramowania Altium Designer, a wyprodukowane dzięki uprzejmości gliwickiej firmy KONO, za co im serdecznie dziękuję. Moduł zasilający Jego zadaniem jest zasilanie modułu nawigacyjnego, modułu z czujnikami + 2 dodatkowe wyjścia. Wykorzystano tutaj dwie przetwornice ST1S10 które mogą mieć jedno wspólne, bądź dwa odrębne źródła zasilania. Uwzględnione zostało tutaj zabezpieczenie przed odwrotną polaryzacją zasilania. Istnieje również możliwość rozłączenia mas i zasilania (zworki). Napięcie wejściowe 10 - 20V i wyjściowe 5V. Moduł nawigacyjny Jest to brakujące ogniwo pomiędzy urządzeniem mobilnym a kontrolerem lotu. Wyposażony został w 32-bitowy mikrokontroler STM32F103 o maksymalnej częstotliwości taktowania 72 MHz. Na obwodzie znajduje się układ BTM-222, oraz wyprowadzone złącza UART dla modułu z czujnikami, oraz dodatkowe np. dla minikomputera. Telemetria (obecnie): stan naładowania akumulatora, orientacja platformy w przestrzeni (yaw, pitch, roll). Zapisywane dane na karcie SD: aktualny czas systemowy (uaktualniany przy nawiązywaniu połączenia z tabletem), komendy sterujące (z tabletu), orientacja platformy, stan naładowania akumulatora, stan poszczególnych uszkodzeń. Układ awaryjnego przejmowania kontroli: przy użyciu jednego z kanałów aparatury radiowej mamy możliwość przełączania użytkownika (np. gdy zawiesi się aplikacja tabletu, zerwana zostanie łączność Bluetooth). Funkcja ta została zrealizowana całkowicie w sposób sprzętowy, bez wykorzystania mikrokontrolera. Timelapse projektowania tego ukłądu: Moduł z czujnikami Układ ten wyposażony został w mikrokontroler STM32F407 o maksymalnej częstotliwości taktowania 168 MHz. Zaimplementowany został tutaj system operacyjny czasu rzeczywistego Free RTOS V8.2.1. Określanie orientacji platformy: realizowane na podstawie pracy doktorskiej pana S. O. Madgwicka. Aktualnie pracuje w konfiguracji czujnika IMU, tj. z wykorzystaniem akcelerometru i żyroskopu MPU6050. Na obwodzie znajduje się wyprowadzenie dla modułu GPS i kompasu (do dalszego rozwoju). Włączając do filtru dane z kompasu możliwe jest uzyskanie absolutnej wartości kąta yaw. Moduł jako kontroler lotu: obwód posiada również odpowiednie złącza sygnałów wejściowych i wyjściowych, dzięki czemu istnieje możliwość rozwoju algorytmów stabilizujących. Układ ten może zatem również pełnić rolę autopilota. Dodatkowe układy: zewnętrzna pamięć EEPROM, barometr, złącze dla czujnika ultradźwiękowego, podczerwonego, brzęczyka, diody RGB. Obecnie wykorzystywany jest jedynie ułamek możliwości tego obwodu. Timelapse projektowania tego ukłądu: Aplikacja mobilna Interfejs aplikacji mobilnej posiada trzy główne zakładki: zakładkę sterowania, zakładkę stacji naziemnej oraz zakładkę do zadawania uszkodzeń i telemetrii. Łączy się z modułem nawigacyjnym poprzez łączę Bluetooth. Aplikacja została napisana w języku Java z wykorzystaniem środowiska Eclipse dla systemu operacyjnego Android. Projektowana była na urządzenia o przekątnej ekranu powyżej 5 cali. Minimalną wersją Androida, którą obsługuje aplikacja, jest 4.2. Zakładka sterowania: Jednym z założeń było opracowanie interfejsu sterującego podobnego do aparatury radiowej. Aplikacja wysyła ramki sterujące z częstotliwością 50 Hz, podobnie jak w przypadku aparatury. Dane te zawierają procentowe wypełnienie każdego z czterech kanałów (yaw, throttle, pitch, roll) i w module nawigacyjnym konwertowane są na odpowiednie sygnały PWM. Ramki sterujące wysyłane są z częstotliwością 50 Hz, podobnie jak ma to miejsce w przypadku aparatury radiowej. Problemem występującym w przypadku sterowania z poziomu tabletu jest brak fizycznego czucia drążków sterujących, co powoduje konieczność odwrócenia wzroku od platformy raz na jakiś czas w celu spojrzenia na tablet. Może to być niebezpieczne Zakładka stacji naziemnej: ma na celu wizualizacje wzajemnej odległości pomiędzy quadrocopterem, a pilotem. Zakładka zadawania uszkodzeń: oprócz wizualizacji danych na wykresach, posiada funkcje umożliwiające zadanie uszkodzenia. Aktywowanie jednej z trzech kontrolek spowoduje pojawienie się okna dialogowego na którym można wybrać czas, po którym zostanie zadane i/lub anulowane uszkodzenie. Stanowisko badawcze Jednym z problemów było opracowanie odpowiedniego stanowiska do testowania platformy. Wprowadzanie uszkodzeń w powietrzu mogłoby się udać, ale byłyby to próby jednorazowe Wykorzystano imadło przegubowe, którego szczęki zastąpiono wydrukowanym na drukarce 3D elementem. Jest on przykręcany do dolnej płyty quadrocoptera. Stanowisko to posiada 3 stopnie swobody, umożliwiając obrót pitch i roll w zakresach ok. -40° ÷ 40° oraz nieograniczony obrót yaw. Możliwe jest również wykorzystanie zasilacza laboratoryjnego do prowadzenia testów/eksperymentów. Stanwoisko przedstawione zostało w filmach na końcu. To chyba tyle. Zamieszczony opis, zdjęcia i filmy nie oddają ilości czasu spędzonego przy tym projekcie, ani liczby wykonanych prototypów. Na PCB znalazłem tylko 2 niewielkie błędy, które udało się w prosty sposób naprawić. Wisienką na torcie z mojej perspektywy byłoby opracowanie własnego kontrolera lotu i pozbycie się gotowego - ale to może innym razem Jeżeli kogoś interesują szczegóły wprowadzania uszkodzeń, sterowania, protokołu komunikacyjnego, wyniki badań itp. to dołączam do załączników moją pracę magisterską (schematy na końcu). Autorzy projektu: Łukasz Szustak (symulator), Michał Stobiński (aplikacja mobilna), Grzegorz Wójcik (platforma quadrocoptera). PDM_Grzegorz_Wojcik.pdf
  23. 6 punktów
  24. 6 punktów
    Antiga ma już swoje lata i dziesiątki stoczonych walk za sobą, więc czas wysłać ją na emeryturę. Od dłuższego czasu pracuję nad nowym robotem minisumo. Tym razem chciałem wykonać spory skok technologiczny w stosunku do tego co jest znane w tej kategorii. To co wyróżnia nową konstrukcję to zastosowanie silników bezszczotkowych z wirującymi magnesami. Pomysł wpadł mi do głowy już dawno, a do rozpoczęcia prac zmotywował mnie brak informacji w internecie na temat takich konstrukcji (chyba jestem pionierem) oraz konieczność napisania pracy magisterskiej (dwie pieczenie na jednym ogniu). Obronę miałem na początku lipca i od tamtej pory nic przy robocie nie robiłem, dlatego zakładam ten temat. Mam nadzieję, że wasza konstruktywna krytyka zmotywuje mnie do dalszego działania. To krótko o robocie: NAPĘD Tak jak wspomniałem we wstępie, napęd stanowią dwa silniki BLDC. Wybrałem modelarskie outrunnery NTM Prop Drive Series 28-30A 750kv. Dobierając silniki kierowałem się przede wszystkim rozmiarem oraz współczynnikiem Kv. Outrunnery (zewnętrzny wirnik), ponieważ oponę mogę odlać bezpośrednio na wirniku dla oszczędności miejsca. ENKODERY Do wysterowania silnika bezszczotkowego niezbędna jest informacja o położeniu wirnika. Do tego celu zastosowałem enkodery magnetyczne AMS AS5040. PÓŁ-MOSTKI Tutaj zastosowałem scalone układy TI DRV8332. Co prawda za ich pomocą nie jestem w stanie wykrzesać pełni możliwości silników, bo podają tylko 8A, ale zależało mi na prostocie. CZUJNIKI Standard: 8x SHARP340K i 4x KTIR0711S STEROWANIE 3 mikrokontrolery XMEGA. 1x XMEGA128A3U i 2x XMEGA32E5. XEMGA128A3U - układ główny: odczyt czujników, realizacja algorytmu walki. XMEGI32E5 - po jednej na silnik: odczyt z enkodera, generowanie PWM na półmostki, odbieranie komend z głównego uC po USART Aż 3 XMEGI, bo nie wiedziałem czy jedna podoła obsłudze dwóch silników BLDC oraz czy ja będę w stanie napisać taki kod Teraz wiem, że jedna XMEGA da radę i ja chyba też Na pokładzie jest też moduł BT HC-05 do zmiany parametrów, sterowania itd. Schemat blokowy co i jak: KONSTRUKCJA Elektronikę musiałem rozmieścić na dwóch PCB (pomijając małe PCB z KTIRami), podział na schemacie powyżej. Duża moc silników, duży pobór prądu, krótki czas działania na baterii. W podwozu jest otwór z klapką zatrzaskową do szybkiej wymiany. Lipol powinien wytrzymać ok. od pół do pełnej minuty ostrego przepychania. Tylna oś z silnikami i enkoderami jest jednym podzespołem. Na początku planowałem aby pomiędzy przodem a tyłem był jeden stopień swobody (takie zawieszenie), ale jedyne łożyska, które jeszcze zmieściłem w robocie były za słabe i ulegało uszkodzeniu przy samym manipulowaniu robotem nie mówiąc już o walce. PCB projektowane w Altium Designer 15, konstrukcja w Autodesk Inventor Pro 2015 Na chwilę obecną projekt robota to bardziej PROOF OF CONCEPT, niż robot na zawody. Chciałem przede wszystkim sprawdzić czy podołam z wysterowaniem silników BLDC i jak to się będzie sprawdzać w praktyce. Robot jeździ, jednak tylko jako zdalnie sterowany z BT. Nie wiem jeszcze dlaczego, ale nawet najprostsze algorytmy walki autonomicznej nie działają - robot wariuje, na pewno nie robi tego co zakładałem. Podejrzewam, że namieszałem coś z komunikacją USART pomiędzy XMEGAmi. Zastosowana metoda wysterowania silników to też najprostsza z możliwych, ale miło się zaskoczyłem i silniki działają bardzo dobrze. PLANY - zmiana półmostków - osobne mosfety ze sterownikiem scalonym - obecne układy pod względem mocy są wystarczające, ale ich budowa utrudnia zastosowanie lepszych metod sterowania silnikami - zmiana metody sterowania silnikami - obecnie jest totalne minimum, brak jakiegokolwiek sprzężenia zwrotnego (no poza pomiarem położenia wirnika, który jest niezbędny) - jeden mikrokontroler - może w końcu nauczę się programować STMy - jedno PCB - dzięki temu robot będzie niższy - złącze baterii - teraz jest standard na przewodzie i pomimo zastosowania klapki wymiana jest zbyt trudna i długa
  25. 6 punktów
    Katka to czworonożny robot kroczący z nogami w układzie ssaka. Jest to efekt moich dość wczesnych eksperymentów z budowaniem czworonożnego kroczącego robota o jak najniższej cenie całkowitej. Dzięki zastosowaniu ssaczej konfiguracji nóg możliwe było obliczenie kinematyki odwrotnej dla każdej z nóg pomimo tego, że mają one tylko po dwa serwomechanizmy -- po prostu współrzędne nóg ograniczone są do pionowej, dwuwymiarowej płaszczyzny. Pozwala to jednak na całkiem przyzwoitą kontrolę, a w szczególności, na przemieszczanie środka ciężkości i przesuwanie stóp w liniach prostych po ziemi, dzięki czemu możliwy jest statycznie stabilny chód bez poślizgów. Niestety, są też ograniczenia. Stopy mogą się przesuwać po ziemi jedynie w przód i w tył, zatem niemożliwe jest porządne skręcanie. Owszem, możemy nogami po jednej stronie robota iść szybciej, a po drugiej wolniej albo nawet w przeciwnym kierunku, na zasadzie skręcania czołgu na gąsienicach, ale wiąże się to z dość dużymi poślizgami stóp i w związku z tym sporą nieprzewidywalnością. W sytuacji prawdopodobnie mogłoby pomóc dodatkowe serwo w pasie, pozwalające na skęt tułowia, ale to wymagałoby całkowitej przebudowy robota, więc nie próbowałem tego. Robot jako mózg wykorzystuje Arduino Pro Mini, początkowo umieszczone na domowej roboty płytce z dodanym zasilaniem dla serw, później przełożone na płytkę drukowaną od mojego innego robota. Zasilanie zapewnia pojedyncze ogniwo LiPo z power banku USB, uzupełnione o dużo za duży kondensator elektrolityczny oraz moduł boost zwiększający napięcie do 5V. Elementy wykonawcze to cztery mikroserwa SG90, najtańsze jakie tylko istnieją. Odbiornik podczerwieni pozwala na zmianę trybów działania robota za pomocą pilota TV. Kilka listewek i dźwignie dołączone do serw posłużyły do zbudowania ciała i nóg robota. Elektronika i bateria są przypięte gumką recepturką. Ustawienie nóg nie jest optymalne pod względem ich zasięgu. Tylne nogi musiały zostać obrócone "tyłem naprzód" w stosunku do pierwotnego projektu (oraz w stosunku do tego, jak zazwyczaj wyglądają ssaki), aby uniknąć plątania się z przednimi nogami. Ten układ można jeszcze znacząco poprawić, niestety wymagałoby to przebudowania i przeprogramowania robota, na co nie mam raczej wystarczającej motywacji. Robot ten przez jakiś czas występował "w owczej skórze", wypychając pluszową zabawkę - owcę. Niestety, nie do końca dopasowane wymiary zabawki oraz ślizganie się owiniętych materiałem nóg znacznie pogarszały wydajność chodu, więc zrezygnowałem z tego rozwiązania. Filmik z chodzącym robotem:
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×