Prvé kolo
Vitajte v prvom kole 3D ligy!
V tomto kole sa zoznámite so súčiastkami, programovacím prostredím a samotnou konštrukciou stavebnice. Zvládnutie základov je kľúčové – bez nich by sme nedokázali stavať zložitejšie a zaujímavejšie roboty. Komplexnejším projektom sa budeme venovať v 2. kole.
Pravidlá prípravy
Pre začiatok na setupnutie si vlastnej stavebnice budeme musiet si pripravit:
- Hadrver - Softver
Príprava hardvéru
Celkový setup elektorniky a HW súčiastok
Príprava arduino rozhrania
Pred začatím odporúčame prezrieť si prehľad premenných a operátorov.
Vytlačená stavebnica
Súčasťou vašej sady je aj 3D tlačená stavebnica – podobne ako Merkur, skladá sa z rôznych dielikov, ktoré sa dajú spájať skrutkami M3 do ľubovoľných tvarov a konštrukcií.
Prehľad dielikov
| Farba | Typ dielikov | Popis |
|---|---|---|
| Biela | Základné stavebné prvky | Nosné diely s dierami pre skrutky M3 (8mm od seba) vo veľkostiach 1×N dier, ohnuté spoje (90° vertikálne aj horizontálne) |
| Žltá | Základné doskly | Ploché dosky s dierami pre skrutky M3 (8mm od seba) vo veľkostiach 3×N a 4×N dier. |
| Červená | Moduly pre senzory a joystick a držiaky na káble | Držiaky elektronických komponentov – napájajú sa priamo na biele časti |
| Čierna | Elektronické krabičky a ohnuté dosky | Krabička pre napájanie (batérie), modul pre mikrokontrolér RP2350-Zero a ohnuté dosky M×N dier v tvare U s odierkovanými bočnými hranami na skrutky M3 (8mm od seba). |
| Modrá | Moduly a ramienka pre servo motorčeky | Niektoré majú diery pre M3 matice, ktoré spolu so skrutkou spájajú modul s bielimi/žltími/čiernymi súčiastkami. |
Inšpirácia
Pozri si tieto dva modely a nechaj sa inšpirovať – čo všetko sa dá z dielikov poskladať:
A tu je príklad toho, čo dokázali poskladať iní účastníci – srdce len zo základných dielikov:
Galéria súčiastok a ich zapojenie
Zadanie
VAŠA ÚLOHA: Poskladajte si z dielikov čokoľvek, čo vás napadne. Nemusí to byť funkčný robot – pokojne to môže byť zviera, písmeno, stavba alebo čokoľvek iné. Použite svoju fantáziu!
Hotovú konštrukciu odfotografujte a foto odošlite.
Čo sme sa naučili?
- Spoznali sme jednotlivé typy dielikov stavebnice a ich farebné označenie.
- Vyskúšali sme si, ako sa dieliky spájajú pomocou skrutiek M3.
- Zistili sme, že zo stavebnice sa dá poskladať prakticky čokoľvek – od robotov až po dekorácie.
Prva stavebnica
V prvej stavebnici sa zoznámite so základnými elektronickými modulmi. Niektoré z nich sa vám budú hodiť pri ladení zložitejších robotov – napríklad LED vám vie ukázať v akom stave sa robot nachádza, bzučiak vás upozorní keď sa niečo stane. Iné moduly sú dôležité pre pochopenie základov, na ktorých budeme neskôr stavať.
Budeme sa zaoberať:
- RGB LED – farebná dióda na vizuálnu signalizáciu
- Bzučiak – jednoduchý reproduktor na zvukovú signalizáciu
- Mikrofón – zachytávanie zvuku z okolia
- Ultrazvukový senzor – meranie vzdialenosti
- Servo motorček – presné ovládanie pohybu
Na konci prvej stavebnice poskladáte autíčko ktoré sa samo vyhýba prekážkam – prvého autonómneho robota!
Roomba
Naučili ste sa ako narábať s hlavnými komponentmi stavebnice. Teraz využijete všetky znalosti dokopy a postavíte si robotického vysavača – Roombu.
Autíčko bude skúmať terén pred sebou. Keď narazí na prekážku, pozrie sa doprava a doľava, nájde voľný smer a pokračuje ďalej. Konštrukciu auta môžete nechať z predchádzajúcej úlohy – stačí pridať 180° servo s ultrazvukovým senzorom na otáčanie hlavy.
Použijete:
- 2× 360° servo (kolesá)
- 1× 180° servo (otáčanie senzora)
- 1× HC-SR04
- 1× RGB LED modul (voliteľné)
- 1× bzučiak (voliteľné)
Algoritmus
Roomba má v každom momente nejaký stav – a podľa neho sa rozhoduje čo urobiť:
- Ide rovno – ak je pred ňou voľno (> 20 cm)
- Narazila na prekážku – otočí senzor doprava a zmeria
- Ak je doprava voľno – otočí sa doprava a pokračuje
- Ak nie – otočí senzor doľava a zmeria
- Ak je doľava voľno – otočí sa doľava a pokračuje
- Ak je všade prekážka – cúvne a zopakuje skenovanie
LED a bzučiak sú voliteľné – ale môžu pekne znázorniť jednotlivé stavy (napr. zelená = ide, červená = prekážka, pípnutie pri otočení).
VAŠA ÚLOHA: Zostrojte Roombu a naprogramujte algoritmus podľa opisu vyššie. Dostávate štruktúru na doplnenie:
Bonus: Roomba si môže pamätať históriu otočení – ak sa viackrát za sebou otočila doprava, skúsi to doľava a naopak. Tak sa vyhne zaseknutiu v rohu.
Hotový program nahrajte do mikrokontroléra, natočte krátke demonštračňé video a odošlite.
Čo sme sa naučili?
- Komplexnejšie správanie robota sa dá rozložiť na jednoduché stavy a prechody medzi nimi.
- 180° servo vie presne namieriť senzor na konkrétny uhol – využili sme ho ako "hlavu" robota.
- Kombináciou všetkých komponentov vieme postaviť autonómneho robota schopného orientovať sa v priestore.
Druhá stavebnica
V druhej stavebnici prídete do kontaktu s presnejšími a výkonnejšími senzormi. Oproti prvej stavebnici tu pracujeme s modernými komunikačnými protokolmi – I2C zbernicou a 12-bitovými analógovými prevodníkmi, ktoré nám dávajú oveľa presnejšie merania.
Budeme sa zaoberať:
- VL53L0X – laserový senzor vzdialenosti (Time of Flight), presnejší ako ultrazvuk
- BNO055 – gyroskop ktorý meria orientáciu a rotáciu robota v priestore
- QTR-8A + 74HC4051 – line senzor s multiplexerom na sledovanie čiary
Ku každému komponentu si postavíme jednoduché autíčko ktoré využíva jeho schopnosti – až kým na konci nebudete mať robota ktorý sleduje čiaru, vyhýba sa prekážkam a vie kde sa nachádza.
Tretia stavebnica
Najľahšie nakoniec! Túto stavebnicu sme navrhli ako oddych od programovania – aby ste si užili skladanie podľa návodu. Najprv sa zoznámime s dvoma novými ale jednoduchými elektronickými komponentmi: joystickom a touch senzorom. Po zoznámení sa s nimi sa vrhneme do stavby jednoduchého robotického ramena.
Ak nájdete chyby v návode, prosíme napíšte nám ich pri odovzdávaní výsledkov.
Joystick
Joystick ktorý ste dostali má 2 osi (X a Y) a 1 tlačidlo (SW – stlačenie joysticku). Funguje ako dva potenciometre – otočením v smere X alebo Y sa mení odpor a tým aj analógová hodnota na výstupe.
Zapojenie
| Pin joysticku | Pin na RP2350-Zero |
|---|---|
| VCC | 3.3V |
| GND | GND |
| VRX (os X) | GP26 (ADC) |
| VRY (os Y) | GP27 (ADC) |
| SW (tlačidlo) | GP6 |
Kód
Vyskúšaj toto: Skopíruj a spusti nasledujúci program. Otvor sériový monitor (115200 baud) a pohybuj joystickom. Sleduj ako sa menia hodnoty.
const int JOY_X = 26;
const int JOY_Y = 27;
const int JOY_SW = 6;
void setup() {
Serial.begin(115200);
analogReadResolution(12); // 12-bitové ADC (0–4095)
pinMode(JOY_SW, INPUT_PULLUP); // tlačidlo – aktívne LOW
}
void loop() {
int x = analogRead(JOY_X);
int y = analogRead(JOY_Y);
int sw = digitalRead(JOY_SW); // 0 = stlačené, 1 = nestlačené
Serial.print("X: "); Serial.print(x);
Serial.print(" Y: "); Serial.print(y);
Serial.print(" SW: "); Serial.println(sw == LOW ? "stlacene" : "volne");
delay(100);
}
| Novinka | Vysvetlenie |
|---|---|
INPUT_PULLUP |
Aktivuje vnútorný pull-up rezistor – tlačidlo číta LOW keď je stlačené a HIGH keď nie
|
sw == LOW |
Tlačidlo je aktívne LOW – stlačenie stiahne pin na GND |
Touch senzor
Touch senzor detekuje dotyk prsta pomocou zmeny kapacitancie. Keď sa dotknete senzora, váš prst zmení elektrické pole okolo elektródy – senzor to zaznamená a vyšle digitálny signál.
Zapojenie
| Pin senzora | Pin na RP2350-Zero |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SIG | GP7 |
Kód
Vyskúšaj toto: Skopíruj a spusti nasledujúci program. Dotknite sa senzora prstom a sleduj zmenu v sériovom monitore.
const int TOUCH_PIN = 7;
void setup() {
Serial.begin(115200);
pinMode(TOUCH_PIN, INPUT);
}
void loop() {
int val = digitalRead(TOUCH_PIN);
if (val == HIGH) {
Serial.println("Dotyk detekovaný!");
} else {
Serial.println("Žiadny dotyk");
}
delay(100);
}
Robotické rameno
Teraz keď poznáte joystick a touch senzor, postavíte si robotické rameno ovládané joystickom. Touch senzor bude slúžiť ako tlačidlo pre uchopenie objektu (napr. otvoriť/zatvoriť kliešte).
Rameno pozostáva z niekoľkých servo motorčekov ktoré ovládajú jednotlivé kĺby – podobne ako ľudská ruka.
Postavte rameno podľa návodu:
Vaša úloha
VAŠA ÚLOHA: Naprogramujte ovládanie ramena joystickom:
- Os X joysticku otáča rameno doľava/doprava
- Os Y joysticku pohybuje ramenom nahor/nadol
- Stlačenie joysticku (SW) otvára/zatvára kliešte
- Dotyk touch senzory pohybujú ramenom dopredu/dozadu
Bonus: Pridajte pamäť pohybov – rameno si zapamätá sekvenciu pohybov a bude ju opakovať. Každé stlačenie joysticku uloží aktuálnu pozíciu všetkých serv do poľa. Po stlačení touch senzora rameno sekvencию prehrá.
Hotové rameno natočte pri práci a video odošlite.
Čo sme sa naučili?
- Joystick kombinuje dva potenciometre a tlačidlo – os X a Y dávajú analógovú hodnotu 0–4095.
- Touch senzor detekuje dotyk bez mechanického tlačidla – využíva zmenu kapacitancie.
- Robotické rameno kombinuje všetky doterajšie znalosti – servo motorčeky, joystick aj touch senzor.