
Dzień dobry!
Będąc zespołem młodych, zmotywowanych ludzi w ciągu roku zbudowaliśmy robota serwującego drinki oraz zaprojektowaliśmy proces jego wytwarzania.

Wymagania jakie sobie postawiliśmy na początku:
- dokładnie odmierzane proporcje składników
- ma pasować każda popularna szklanka i butelka
- powinien dać sobie radę z sokami, alkoholem, mlekiem, syropami i napojami gazowanymi
- żadnego zmywania po każdym drinku (np wino z colą nie może przedostać się do następnego drinka np czystej whiskey)
- konstrukcja z łatwo dostępnego tworzywa wycinana w deterministyczny sposób
- elektronika na popularnych elementach
- dotykowy wyświetlacz z wyborem drinków
- łatwe do złożenia samemu w domu bez specjalnych umiejętności
- jak najprostsza obsługa przez osoby trzecie (np na imprezie)
- zasilanie 12V, aby można było podłączyć do akumulatora
- wyjmowalny okap
- podświetlane składniki z których będzie robiony drink
- powinno móc stać miesiącami na szafie z załadowanymi butelkami z alkoholem i nie wymagać obsługi
- wymienne oprogramowanie pobierane z internetu (firmware też)
- open source
- zdalne zamawianie
- regulowana wysokość tabletu
- 12 butelek (tyle średnio każdy z nas ma w szafie)
- podpowiadanie drinków
- do przenoszenia powinna wystarczyć jedna osoba
- powinien się mieścić w samochodzie typu sedan i szafie 90cm (jako zabudowa)
- łatwość rozbudowy o inne moduły
- jedno załadowanie ma staczać na ok 90 osobową imprezę
- powinno się dać łatwo wymienić butelki
- robot ma podpowiadać drinki niezdecydowanym lub lubiącym eksperymenty
- podświetlenie na imprezie ma wywoływać "wow"
- najważniejsze wymaganie: minimalna cena
Pracowaliśmy rok nad doborem materiałów, technologii i architektur wielokrotnie zmieniając ważne rzeczy aż wreszcie spełniliśmy wszystkie nasze oczekiwania.
Projekt składa się z kilku aspektów:
- hardware
- elektronika
- firmware
- aplikacja na Androida
Rozwiązania techniczne
- wszystkie śruby zunifikowane do 2 rozmiarów
- wszystkie elementy dotykające cieczy maja certyfikaty - nalewaki i szklanki (innych szklanek nie da się kupić)
- możliwość nalewania podwielokrotności miary za pomocą operowania czasem trzymania siłownikiem
- sztywna konstrukcja na bazie skrzyni potrafi bez problemu utrzymać 12 x 2l butelek
- silnik krokowy pozwala na precyzyjny ruch z odpowiednią prędkością
- pokrywa elektroniki trzymana przez magnesy - można łatwo się tam dostać jeśli ktoś chce zmieniać robota, a jeśli nie che to skutecznie chroni wnętrze
- bardzo ciężko, nawet specjalnie zalać elektronikę w skrzynce dzieki odpowiedniej kolejności warstw tworzywa
- regulowany trzymacz do tabletu aby można było postawić robota nawet na niskim stoliku lub wysokim barowym.
- pasek napędowy chroniony listwą
- szerokość pozwalająca na zabudowanie w szafie 90cm
- główny wyłącznik z lewej strony, zasilanie DC z tyłu
- zasilacz z certyfikatem CE
- automatyczna kalibracja mechaniczna
- zasilanie tabletu wbudowanym, zabezpieczonym obwodem
Hardware
Projekt obudowy i wszystkich ruchomych części powstał jako plik 3d, który może być wycięty na każdym laserze o mocy >80W. Na dole strony jest link do źródeł.
Idea jest taka by szklanka jeździła pod nalewakami, które w odpowiednim momencie są otwierane i zwalniają wtedy nominalną pojemność 20 lub 50ml składnika.
12 butelek zostało podzielone na 2 rzędy, a więc karetka musiała umieć się obracać aby tam sięgnąć. Obliczenie wymiarów karetki i siłownika zwalniającego nalewak było bardzo ciężkim zadaniem więc pomagał nam przy tym doktor robotyki.





Czy da się wstrząsać drinka?
Można było użyć shakera ale trzeba by było go myć po każdym użyciu. Jeśli byśmy chcieli wspierać ta metodę to musielibyśmy zbudować zmywarkę, która potrzebuje bieżącej wody do normalnego działania. Z tego powodu zrezygnowaliśmy z tego pomysłu. Robot miesza drinki, nic nie stoi na przeszkodzie aby nalewał do shakera, który ktoś później wstrząśnie.
Drinka można wstrząsać ruchami X oraz Y, testowaliśmy to, nie zastąpi to prawdziwego wstrząsania ale w większości przypadków wystarcza. Mieszanie jest realizowane już przez samo wlewanie od góry.
Po wycięciu części wystarczy je złożyć korzystając z instrukcji z pliku Barobot_assembly_guide_v03.pdf
Elektronika
Płytki elektroniczne zawierają popularne komponenty, które nie będzie trudno zdobyć w chociażby w TME.
Elektronika bazuje na dwóch ATMEGA328, jedna na płytce głównej a druga na karetce (w wózku, który jeździ ze szklanką)
Kolejne 12 płytek do U-Panele - sterujące LEDami, każda butelka jest podświetlana przez 2x4 LEDy (2xRGBW, jedna w górę i jedna w dół).
Każdy LED musi być sterowany z użyciem PWMa. Całość łączy magistrala I2C i ISP (do programowania).
Płytka główna łączy się za pomocą PL2303 do androida, który zarządza wszystkim co nie musi być w atmegach ponieważ łatwiej się programuje logikę działania w Javie niż w C++;
Architektura elektroniki

Firmware
Ważne było aby całość firmware była wymienialna, więc zdecydowaliśmy się na magistralę ISP ciągniętą przez całe urządzenie. Płytka główna po wysłaniu odpowiedniej komendy staje się programatorem zgodnym z stk500 lub arduino. Dodatkowo sama płytka posiada bootloader optiboot aby samemu dać się programować.
Programowanie firmware
Płytka główna posiada piny RESET z Karetki i dwóch UPaneli (pierwszy w przednim i tylnym rzędzie), następne Upanele mają piny RESET poprowadzone do swojego przedniego upanela, który steruje jego resetem. Gdy chcę zaprogramować np ostatni Upanel to w odpowiednim momencie wysyłam do poprzedniego po I2C komendę resetującą następnik.
To pozwoliło uniknąć magistrali gwiazdy w celu programowania. I2C pozwala na komunikację w najważniejszym celu - świecenia. Każda płytka ma auto-negocjację adresu I2C, która jest wykonywana przy każdym starcie, ale raz ustalona kolejność jest zapisywania w eepromie. Pozwala to na pierwsze zaprogramowanie robota nawet już po złożeniu używając tych samych pinów co zwykła praca. Żadnego przełączania kabli
Wsad można rozwijać nawet w aplikacji Arduino IDE.
Płytka karetki posiada szereg czujników aby nie pomylić sie przy nalewaniu.
"Może nie nalać, może nalać źle, ale nie może rozlać"
Pod podstawką znajduje się czujnik wagi (load cell), serwo odchylające do tyłu, serwo siłownika Z, 2 czujniki Halla (dla osi X i Y), czujnik poboru prądu serwa Y i Z, temperatury i 8 LEDów. Czujnik prądu przydaje się do ustalania pozycji serw. W przyszłych wersjach prawdopodobnie nie będzie potrzebny.

Kalibracja
Na karetce znajduje się czujnik halla, który wykrywa nie tylko gdzie sie znajduje ale też pozycje butelek. Na listwie z tyłu robota znajdują się magnesy w pozycjach odpowiadających butelkom. Magnesy mają 2 bieguny, jeden z nich oznacza przedni nalewak, a drugi tylni. Na końcach znajdują sie magnesy neodymowe pozwalające zauważyć kraniec osi. Całość zachowuje się jak zwykła maszyna stanowa.
Wykres odczytu z Halla X

Hall Y pozwala na wykrycie skrajnych pozycji serwa Y czyli pozycji tylnej lub przedniej. Jest to jeden czujnik i 2 magnesy o przeciwnych biegunach.
Zaraz po złożeniu robot sam wykrywa optymalne pozycje.
Czujnik wagi
Obsługa wagi jest jeszcze w trakcie prac. Wykrywamy szklankę, ale można znacznie więcej. Można odczytywać "lepkość" cieszy i tym samym dostosowywać czas trzymania siłownikiem nalewaka.
Aplikacja na androida
Bardzo chcieliśmy, aby z każdego problemu przy nalewaniu zrobić zadanie programistyczne i udało się. Wszystkie czujniki są dostępne z poziomu aplikacji i dzięki temu można w każdej chwili sprawdzić co się dzieje.
Baza danych zawierająca drinki na silniku sqlite pozwala na zapisanie najróżniejszych kombinacji. Można też stworzyć własny schemat mrugania LEDami. Pracujemy nad mechanizmem synchronizacji drinków pomiędzy robotami jako opcją.
Robot sprawdza każdy drink pod kątem jego wykonalności i pokazuje tylko te, do których posiada wszystkie składniki, więc można włożyć kilka butelek, a robot zaproponuje co można z nich zrobić. W każdej chwili można oczywiście dodać jakiś własny przepis.
Tryb wyboru drinka z predefiniowanych:

Tryb samodzielnego komponowania drinków:

Ustawianie zawartości butelki:

Tryb serwisowy trochę odbiega jakością interfejsu, ale raczej się go nie używa:

API w Javie
Cała obsługa robota jest asynchroniczna. Czyli nie czeka się w żadnym momencie na robota - zgłasza on sam swoją gotowość gdy ukończył zadanie.
Zdalne zamawianie
Tablet jest jednocześnie serwerem WWW, który udostępnia usługę przeglądania i zamawiania drinków. Dzięki temu, że działa to jak zwykła strona www można łączyć się z nią z większości urządzeń (iPad, smartfony, inne komputery czy tablety).
Ledy
2x RGBW * 12 butelek = 96
2x GRBW karetka = 8
4x płytka główna (kontrolne)
Razem 108 LEdów
Oczywiście można zbudować robota bez UPANELi, ale jak zauważyliśmy aspekt świecenia jest tu bardzo ważny.
Trudności w samodzielnej budowie
- trzeba sprowadzić nalewaki z UK
- płytki są dwustronne i wymagają frezowania
- nie każdy ma laser, ale jest w Polsce ponad 15 firm które na wycinają z odpowiednimi parametrami (sprawdzałem), można też go wyciąć z drewna, ale surowa sklejka nie lubi wilgoci, a pomalowana zmienia wymiary.
- nie każdy tablet chce się łączyć z portem szeregowym PL2303
- zbudowanie pojedynczej sztuki jest dosyć drogie, warto robić to grupowo
Przyszłość
- Chcemy zintegrować roboty z RFID (np szklanka z pastylką z dołu pozwalała by identyfikować użytkownika i pokazywać mu lepsze propozycje)
- Prosty serwis do synchronizacji drinków
- Optymalizacja podświetlania
Czy takiego typu robot zabierze pracę barmanom?
Nie. Robienie drinków można podzielić na sztukę i rzemiosło. Daleko wszelkim robotom do zastąpienia barmana, nasz robot jest zdecydowanie rzemiosłem, może jedynie tworzyć napój według ściele podanego przepisu. Robot nie zagada, nie opowie kawału ani nie pocieszy (chyba).
Wykonaliśmy ogromną pracę, aby zapewnić wiarygodne i dokładne nalewanie drinków w każdej sytuacji. Dużo wiedzy czerpaliśmy z Elektrody dlatego też publikujemy tu naszą pracę w pierwszej kolejności. Może komuś przyda się sposób programowania, biblioteka Android-Serial, czy kilka innych pomysłów. Wszystkie kody źródłowe są w repozytorium. Jeśli ktoś złoży na tej podstawie robota to będziemy dumni mimo, iż nie jest to bardzo trudne.
Pliku APK (aplikacji na androida) nie mogłem załączyć na elektrodę, a projekt kodu na androida jest bardzo duży i ciągle się zmienia więc dostępny jest w repozytorium SVN.




Można kupić od nas robota jako KIT do samodzielnego montażu. Tym projektem zakwalifikowaliśmy się do finału Gdyńskiego biznesplanu, który odbędzie się za miesiąc.
Kampania w serwisie Kickstarter
Link do repozytorium:
https://code.google.com/p/barobot/
Link do projektu:
http://barobot.com
Cool? Ranking DIY