Arduino jako alternativa k Mindstorms

Založil Jonas, 05.03.2016, 19:50:50

Předchozí téma - Další téma

0 Uživatelé a 1 Host prohlíží toto téma.

Jonas

Když už má Raspberry své vlákno, tak ať ho má i Arduino.

Propojení světa Lega a počítačů mě zajímá už  téměř 30 let. Řada z vás si možná ještě vzpomene, jak jsem zde na Kostkách popisoval své první kroky, kdy jsem koncem 80. let (minulého století) spojoval Lego s vrcholem tehdejší výpočetní  techniky ZX Spectrum (pro osvěžení zde).

Koncem 90. let jsem si přivezl z USA velký poklad - LEGO Mindstorms - a spolu s mými studenty jsme pak řešili zajímavé projekty. Jejich video se pak promítalo na první výstavě Kostek v Brně.

Když pak TLC přišlo s novými verzemi Mindstorms, docela mě naštvalo, protože komponenty nebyly kompatibilní s předchozí řadou RCX. Nové verze Mindstorms jsem pak už přenechal jiným.

Co mě ale nedávno opravdu oslovilo, je Arduino a jeho koncept levných a hlavně otevřených modulů. Neodolal jsem a koupil si na zkoušku UNO a pár modulů. Přesvědčil jsem se o tom, že opravdu funguje a že se dá spolehnout na neuvěřitelně levné (legální) klony a komponenty z Číny.

Rozhodl jsem se proto, že zkusím vytvořit z Arduina řídící jednotku, kterou by se daly ovládat různé (technické i netechnické) kreace z Lega. UNO jsem nahradil verzí MEGA a po mnoha letech jsem se zase vrátil k bastlení. Výsledkem je níže zobrazený prototyp.



Co umí:
- ovládat až 4 motory, a to prakticky všechny, které kdy Lego dodávalo (stačí pouze přepnout napětí - na desce jsou k dispozici 5V a 9V, použít konektor se správnou redukcí, a je to),
- ovládat až 8 LEDek, které se pouze připojí ke konektoru (který už obstarává bezpečný proud),
- snímat signál (ošetřený Schmittovým invertorem) až 6 z fototranzistorů, což umožňuje snadnou konstrukci rychle reagujících optozávor, bezkontaktních snímačů polohy, měření otáček, atd,
- připojit a ovládat prakticky všechny elektrické prvky z různých předchozích období, tedy zejména z éry 4,5V, 9V, PF a RCX,
- připojit nejméně dalších 10 digitálních I/O zařízení,
- měřit až 16 analogových signálů z mnoha typů snímačů,
- zobrazovat data na LCD displeji
- pracovat s reálným časem, atd. 
Protože je to otevřený systém, dá se připojovat prakticky všechno, co vás napadne. Spoustu si toho můžete vyrobit sami a nebo koupit za neuvěřitelně levné ceny. 

Vedle interfejsu bylo třeba vyrobit nebo upravit:
- světelné prvky - používám zejména 5mm LEDky, které jsem lehce obrousil, abych se dostal na vnitřní rozměr otvorů Technic kostek, 3mm LEDky se zase hodí do headlight bricku,
- kabely - zde jsem obětoval pár (většinou již stejně zpuchřelých a polámaných) 9V kabelů, které mi umožňují připojit 9V i PF komponenty,
- měl jsem pár nefunkčních RCX senzorů, tak jsem je rozdělal a elektroniku v nich jsem zjednodušil a přizpůsobil Arduinu
- konektory různých typů.

A teď pár obrázků:

Příklady některých připojitelných originálních Lego komponent
 

Ukázky některých vlastních prvků

     

Příklad jednoduché optozávory pro počítání otáček


Řídící jednotka právě něco řídí



Např. dva motory se zpětnou optickou vazbou



nebo třeba jednoduchý "skluzavkový" měřič délky kostek pracující s 4 fototranzistory - umí měřit kostky typu 1 x N a k přesnému stanovení délky mu stačí "průlet" krátkým tunelem trvající zlomek sekundy.



P.S.
S Arduinem jsem začal teprve před 2 měsíci, takže zatím žádné větší projekty.




Jonas - Můj Brickshelf

Martins

Hezké téma, pokračuj v tom a informuj nás. Já jsem mindstormák, ale tohle se mi líbí díky tomu kontaktu s elektrotechnikou... což mi u EV3 chybí a o čem také nemám žádné znalosti - bohužel.  ;)

Jonas

#2
Konečně jsem našel trochu času, abych zdokumentoval, kam jsem pokročil s Arduinem.

Prodrátovaný interface popsaný výše sice fungoval, ale pohled na něj byl hrozný. Rozhodl jsem se proto navrhnout a vyrobit vlastní desku plošného spoje. Hezky se to říká, ale znamenalo to nejdřív se naučit pracovat s programem EAGLE a pak si v něm tak dlouho hrát, až se podařilo navrhnout vhodný plošňák. Naštěstí mám kontakt na výrobce, který podle návrhu desku vyrobil. Osazení už bylo poměrně jednoduché. Porovnání prototypu a finální verze je uvedeno níže.

 

Finální verze umí vše, co jsem už popsal v prvním příspěvku + nějaké maličkosti navíc.

Protože jsem si v posledních měsících hodně hrál s GBC (viz můj příspěvek), rozhodl jsem se, že Arduino vyzkouším v nějakém vhodném modulu. Akiyuki mě inspiroval svým rychlým třidičem míčků, který ovšem vyžaduje Mindstorms NXT. Já jsem podobnou úlohu zvládl s mnohem skromnějším vybavením: s Arduinem a s jednoduchým sensorem barev, který jsem si navrhl. Pracuje na principu odrazu světla, které vysílá LED s vhodnou vlnovou délkou a přijímá fototranzistor. Vytvořil jsem dva typy sensoru: Jeden se čtyřmi LED (R, G, B, Y) a druhý s pouhými dvěma (R a G). Tím prvním jsem si vyzkoušel rozpoznávání všech hlavních barev LEGO palety a funguje dost dobře, zvlášť s příhlédnutím k ceně použitých součástek (do 40 Kč). Ten druhý dobře postačí na úlohu rozpoznávání 2 barev. Přikládám obrázek obou sensorů a ukázku, jak se dají snadno upevnit mezi pár plates.





Prototyp třídícího modulu je vidět na dalším obrázku. Jediný 9V motor má dvě hlavní funkce: a) na potřebnou dobu zastaví kuličku pod sensorem, b) po rozpoznání barvy ji posílá doleva nebo doprava. O jeho přesnou funkci se stará tlačítko z éry RCX Mindstorms, které zajištuje, aby se motor zastavil vždy ve správné poloze. Prototyp funguje dost přesně a rychlostí i přesností dobře konkuruje jiným podobným řešením. Na spodním obrázku je zachycen v akci, kdy se k sensoru blíží jedna kulička, zatímco ta předchozí už směřuje do svého zásobníku.



 

Místo dalších slov raději video:
https://www.youtube.com/watch?v=so9QC6HU_Og
Jonas - Můj Brickshelf

milanv

Paráda! Přesně tohle jsem si vždycky představoval, že to chce s Technicem zkombinovat. Levné, mrňavé, bez nutnosti řezat LEGO pokaždé, když to chci použít - super. Asi k tobě půjdu pro rozumy, až to budu chtít do vlastní kuličkodráhy :)
Pán na Žlutém hradě

sohibil

#4
Ten triedič asi ešte má pár múch na vychytanie. Čo robí tá jedna oranžová gulička medzi bielymi? :)
Nečakajte odo mňa chválu, z toho je len stagnácia.
Čakajte dotazy na techniku stavby a kritiku. Jedine to posúva vpred.

Jonas

#5
Citace od: sohibil kdy 28.08.2016, 17:14:23
Ten triedič asi ešte má pár múch na vychytanie. Čo robí tá jedna oranžová gulička medzi bielymi? :)

Určitě je třeba vychytat mouchy. Tu první verzi jsem nafilmoval přesně tak, jak to zatím funguje, tj. v průměru 1 kulička z 20 zamíří do špatného zásobníku.

Odladit to k úplné dokonalosti bude ale stát ještě trochu práce. Jedná se o hodně dynamický děj, a to co funguje spolehlivě v ladícím režimu (při menší rychlosti) už nemusí být stoprocentně spolehlivé při plné rychlosti a při externím napájení. Musím také najít způsob, jak poznat, jestli třeba nedochází k situaci, že barva je rozpoznána správně a že chybný je naopak pohyb mechanické výhybky (např. vlivem setrvačnosti, málo sepnutého kontaktu, atd.)

Mimochodem, v rozhodovacím programu je použit učící se algoritmus, který se sám naučil parametry v době trénování, kdy jsem mu pouštěl kuličky definované barvy. Takže např. pro bílé kuličky (ze setů řady Friends) se musel naučit, že kuličky nejsou jenom bílé, ale také fialové. (Pro znalce: jedná se o Bayesovský klasifikátor s multimodálním gaussovským rozdělením pravděpodobností v dvourozměrném prostoru). Zkouším si na tom nějaké úlohy vhodné pro mé studenty.

 
Jonas - Můj Brickshelf

petr72

To vypadá na moc povedenou záležitost, obzvláště tedy ten vlastní shield pro MEGA.
S Arduinem experimentuji také, ale prozatím spíše v oblasti LEGO TRAIN, motorové výhybky pomocí krokového motoru, ovládání vlaku přes WiFi - ESP s bootloaderem arduino. Koncept funguje, prozatím ve stádiu raného prototypu - tedy hromady drátů :).