Getting started

Learn how to easily start using robot Cing

Common info

Installing environment

Programovanie robota Cing je uskutočňované skrz Arduino IDE programovacie prostredie. Pre inštálaciu Arduino IDE prostredia postupujte podľa návodu. V prípade, že používate Windows ako operačný systém je nutné stiahnuť a nainštalovať ovládače. Po stiahnutí ovládačov otvorte stiahnutý .exe súbor. Po otvorení pripojte USB ASP programátor do počítača a uistite sa, že svieti modrá led dióda ako na obrázku. Následne v options zvoľte možnosť "List All Devices". Z menu vyberte USBASP prípadne UNKNOWN. Ako driver zvoľte "libusb-win32" a stlačte "Install WCID Driver".

Setting up an enviroment

Po nainštalovaní Arduino IDE ho otvoríme. Otvoríme si File>>Preferences. Otvorí sa nám niečo podobné ako na obrázku. Stlačte nasledové tlačidlo pre skopírovanie odkazu a vložte tento odkaz do poľa Additional Boards Manager URLs: Copy board manager link Po vložení linku stlačte OK. Následne otvorte Tools >> Board: a zvoľte Board manager.... Po otvorení okna vyhľadajte RobotCing zvolte poslednú verziu a stlačte Install. Ako poslednú vec nainštalujeme knižnice. Knižnice sú pre každý procesor iné a preto odporúčame nainštalovanie knižníc len pre procesory, ktoré máte. Taktiež je potrebné nainštalovať:

Táto inštalácia je uskutočnovaná skrz Sketch >> Include Library >> Manage Libraries a následným vyhľadaním príslušnej knižnice a stlačením tlačidla Install.

Knižnice pre jednotlivé procesory sú:

Táto inštalácia je uskutočnovaná skrz Sketch >> Include Library >> Manage Libraries a následným vyhľadaním príslušnej knižnice a stlačením tlačidla Install.

Using Arduino IDE

Po nainštalovaní programovacieho prostredia Arduino IDE si ukážeme ako nahrávať programy do robota Cing. Po otvorení Arduino IDE môžeme vidieť editor, kde budeme písať kód. V tomto editore sa nachádza void setup(){} a void loop(){}. Program sa píše medzi {} a za každým príkazom sa dáva bodkočiarka. void setup(){} sa spustí raz pri štarte mikrokontroléra. Preto sa do void setup(){} dávaju časti programu, ktoré sa majú spustiť iba raz. void loop(){} je časť programu ktorá sa začne vykonávať po void setup(){} a beží v nekonečnom cykle. Do nej budeme písať väčšinu príkazov. Po naprogramovaní je potrebné vybrať správny procesor. To urobíme skrz Tools>>Board a zvolíme použitý procesor. Ako programátor zvolíme z menu Programmer:USBASP. Pred prvým použitím procesora stlačímenu Burn Bootloader. To zabezpečí správne nastavenie procesora(nastaví sa tým jeho freqvencia a iné parametre). Pre nahrávanie programu stlačíme Sketch>>Upload using programmer. Po krátkej chvíli by sme mali vidieť v dolnej lište Done uploading. V prípade, že nahrávanie je neúspešné a obdržite hlášku avrdude: error: could not find USB device... skontrolujte pripojenie USBASP prípadne preinštalujte driver. V prípade, že obdržite hlášku avrdude: error: program enable: target doesn't answer... skontrolujte pripojenie USBASP do robota Cing.

Introduction

V tejto krátkej príručke sa zoznámite so základnými príkazmi pre programovanie robota Cing a základnými algoritmami týkajúcich sa programovania. Je určená pre začiatočníkov, ale aj pokročilých, detí ale aj dospelých – skrátka pre každého, kto má záujem naučiť sa základy programovania. Robot Cing nepoužíva vlastný programovací jazyk, ale Arduino knižnicu, ktorá umožňuje jednoduché naprogramovanie robota pre začiatočníkov a  stredne pokročilých. Pokročilí a skúsení používatelia môžu robota Cing programovať priamo v Arduino prostredí bez použitia knižnice. V časti Attiny85 sa budeme zaoberať programovaním zakladných algoritmov pre robota Cing s Procesorom Attiny85.

MainBoard description

MainBoard je hlavný plošný spoj robota Cing. Prepája všetky komponenty a obsahuje aj niekoľko základných senzorov. Obsahuje microUSB port, ktorý slúži na nabíjanie batérie a pri pokročilejších procesoroch umožnuje vypisovanie hodnôt do počítača. Taktiež obsahuje porty I2C, Serial, Header1 a Header 2, ktoré slúžia na pripojenie ďalších senzorov a modulov. Porty ServoA,ServoB a ServoC slúžia na pripojenie Servo motorov, prípadne regulátorov. MainBoard obsahuje taktiež 4 individuálne adresovateľné RGB led diódy WS2812.

Top components

  1. Light sensors
  2. Lipo Charger
  3. Header1
  4. Header2
  5. Servo connectors:A,B,C
  6. IR sensor
  7. WS2812
  8. Tlačidlo
  9. Gyro
  10. Processor socket
  11. Battery holder
  12. Lipo Charger
  13. Potenciometer
  14. Motor Driver
  15. DC booster
  16. I2C Header
  17. Serial Header
  18. MicroUSB

Bottom components

  1. Lego sensor adapter
  2. Line sensors
  3. Barometric pressure sensor
  4. Motors

Robot Cing components

MainBoard

MainBoard je hlavný plošný spoj robota Cing. Prepája všetky komponenty a obsahuje aj niekoľko základných senzorov. Obsahuje microUSB port, ktorý slúži na nabíjanie batérie a pri pokročilejších procesoroch umožnuje vypisovanie hodnôt do počítača. Taktiež obsahuje porty I2C, Serial, Header1 a Header 2, ktoré slúžia na pripojenie ďalších senzorov a modulov. Porty ServoA,ServoB a ServoC slúžia na pripojenie Servo motorov, prípadne regulátorov. MainBoard obsahuje taktiež 4 individuálne adresovateľné RGB led diódy WS2812.

Attiny85 processor

Attiny85 je procesor určený pre začiatočníkov. Má 8kb pamäte, 512B EEPROM, 512-Byte SRAM. Podporuje základné príkazy. Na programovnie slúži USBASP programátor.


Knižnice pre processor

Attiny84 processor

Attiny84 je procesor určený pre začiatočníkov. Má 8kb pamäte, 512B EEPROM, 512-Byte SRAM. Oproti Attiny85 dokáže cúvať a získavať dáta z dalších senzorov. Na programovnie slúži USBASP programátor.


Knižnice pre processor

Atmega8 processor

Atmega8 je procesor určený pre mierne pokročilých. Má 8kb pamäte, 512B EEPROM, 1kB SRAM. Podporuje pokročilejšie príkazy a dokáže vypisovať dáta do počítača. Na programovnie slúži USBASP programátor.


Knižnice pre processor

Atmega328 processor

Atmega328 je procesor určený pre pokročilých. Má 32kb pamäte, 1kB EEPROM, 2 kB SRAM. Na programovnie slúži USBASP programátor.


Knižnice pre processor

Atmega32u4 processor

Atmega32u4 je procesor určený pre pokročilých. Má 8kb pamäte, 1kB EEPROM, 2560-Byte SRAM. Podporuje USB 2.0 čo znamená, že sa môže chovať ako HID device. Na programovnie slúži USBASP programátor.


Knižnice pre processor

ESP8266 processor

ESP8266 je procesor určený pre pokročilých. Má 4Mb pamäte, >512-Byte SRAM. Tento procesor podporuje pripojenie k internetu skrz WIFI, OTA update. Preto je vhodný najmä pre robotov prieskumníkov/data loggerov. Na programovnie slúži MicroUSB.


Knižnice pre processor

Battery

Ako batériu robot Cing používa protected 18650. Tá má nominálne napätie 3.7V. MainBoard obsahuje taktiež nabíjačku pre 3.7V batérie, avšak neobsahuje ochranu proti vybitu preto odporúčame použitie batérie protected 18650. Je však možné aj použitie báterie s vyšším napätím pomocou D konektoru avšak vtedy robot nedokáže batériu nabiť. Použitie sekundárnej batérie pre napájanie motorov je taktiež umožnené pomocou 2. D konektoru, ktorý sa nachádza pod DC boosterom. V prípade využitia tejto možnosti je nutné odobrať DC booster. Pri odpájaní batérii je odporúčané vypnúť vypínače MotorSwitch a RobotSwitch.

USBASP

USBASP slúži na programovanie robota Cing. Taktiež sa s ním nastavujú "fuses" na procesore, ktoré udávajú procesoru rýchlosť a konfiguráciu. Pre programovanie robota Cing sa tento programátor pripája do ISCP portu. Pri programovaní robota odporúčame vypnúť motory pomocou vypínača MotorSwitch.

External potentiometer

Slúži na nastavenie hodnoty. Vracia hodnoty v rozmedzí 0-100% v závislosti od uhlu otočenia. Pri procesoroch, ktoré podporujú UART je možné túto teplotu vypísať do počítača.

Shine sensor

Shine senzor je používaný na meranie okolitého svetla(ambient). Vracia hodnoty v rozmedzí 0-100% v závislosti od osvetlenia. Pri procesoroch, ktoré podporujú UART je možné túto teplotu vypísať do počítača.

Tepelný senzor

Tento tepelný senzor slúži na meranie teploty okolitého prostredia. Táto teplota je v °C v rozmedzí -55°C až +125°C. Pri procesoroch, ktoré podporujú UART je možné túto teplotu vypísať do počítača.

Button external

Tento modul umožnuje pripojiť tlačidlo do portu Header1, čo umožnuje zapnutie robota Cing pomocou tlačidla. Tlačidlo vracia hodnoty 0 ak nieje stlačené a 1 ak je stlačené. Pri procesoroch, ktoré podporujú UART je možné túto teplotu vypísať do počítača.

Shine sensor

Shine senzor je používaný na meranie okolitého svetla(ambient). Vracia hodnoty v rozmedzí 0-100% v závislosti od osvetlenia. Pri procesoroch, ktoré podporujú UART je možné túto teplotu vypísať do počítača.

WS2812

WS2812 je RGB adresovateľná ledka, ktorej je možné nastaviť farby v rozmedzí 0-100%. Robot obsahuje tieto ledky 4 no zapojiť ich je možné omnoho viac.

Color sensor

Robot Cing podporuje Lego EV3 farebný senzor. To mu umožnuje rozlišovať až 7 farieb.

Servo

K robotovi Cing je možné pripojiť až 3 servo motory bez použitia I2C Servo expandéru. Odporúčame pripojenie iba 1 serva nakoľko v prípade použití ostatných 2 sa robot Cing nebude vediet hýbať. Je však možné použiť 1 normálne a 2 nekonečné servá čo robotovi Cing dodá servo a z zvýši silu motorov.

Display

Robot Cing podporuje 16x2 I2C display, 128x32 I2C Oled a 128x64 I2C oled. To dovoľuje užívateľovi zobraziť hodnoty bez nutnosti pripojenia k počítaču.

Gyro and Accelerometer

Gyroskop a akcelerometer sú senzory, ktoré umožnujú merať uhlovú rýchlosť a zrýchlenie. Skombinovaním týchto meraní vieme vupočítať uhol v ktorom sa senzor nachádza. Pomocou polohy senzora vieme naprogramovať robota Cing, aby sa otočil o konkrétny uhol. Taktiež vieme zaznamenať pohyb robota Cing.

Attiny85

Getting started with robot

V tejto kapitole sa zoznámime s programovacím prostredím robota Cing a naučíme robota Cing pohnúť sa z miesta. Nebudeme používať žiadne senzory, pretože našou úlohou bude robota Cing rozhýbať.

Going forward and left

Strategy: Robot Cing sa bude pohybovať na oboch motoroch dopredu, na pravom motore doľava a na ľavom motore doprava.


Program: Explenation:

V druhom a štvrtom riadku programu sú príkazy určené pre programovacie prostredie, ktoré povedia, že budeme používať zjednodušené príkazy pre Attiny85 (implementujú knižnicu <Attiny85_IO_basic.h>). Príkazy vo void loop(){} v svorkových zátvorkách:{} bežia v nekonečnom procese a opakujú sa. Príkazy vo void setup(){} v svorkových zátvorkách:{} zbehnú iba raz a používajú sa nastavenie elektroniky. Kedže používame knižnice, nemusíme nastavovať elektroniku a preto ostane void setup(){} prázdny. Attiny.motor (“A”, 1, “digital”) ⇒ pomocou tohto príkazu robot Cing zapne motor “A” na 100% (1=100%). V prípade, že by v príkaze bola v druhom parametri 0, motor sa vypne (0=0%). Prvý parameter, ktorý môže obsahovať “A”, ”B”, ”AB” určuje, pre ktorý motor/motory sa vzťahujú nasledujúce parametre príkazu. Posledný parameter určuje spôsob zapínania motoru (“digital”, “analog”). V prípade, že je parameter nastavený na “analog”, vieme motor regulovať od 0% po 100%. V nasledujúcom príkaze má motor nastavený parameter na 33% ⇒ Attiny.motor(“B”, 33, ”analog”). Príkaz delay (2000) ⇒ čaká 2000 milisekúnd. Ako si môžete vyskúšať, robot sa hýbe dve sekundy smerom dopredu oboma motormi, potom 1000 milisekúnd motorom “A” dopredu, pričom motor “B” stojí.

Speeding up and slowing down

Strategy:

Robot Cing bude postupne zvyšovať svoju rýchlosť a potom postupne spomaľovať.


Program: Explenation:

V druhom a štvrtom riadku programu sú príkazy určené pre programovacie prostredie, ktoré povedia, že budeme používať zjednodušené príkazy pre Attiny85 (implementujú knižnicu <Attiny85_IO_basic.h>). Príkazy vo void loop(){} v svorkových zátvorkách:{} bežia v nekonečnom procese a opakujú sa.Príkazy vo void setup(){} v svorkových zátvorkách:{} zbehnú iba raz a používajú sa nastavenie elektroniky. Kedže používame knižnice, nemusíme nastavovať elektroniku a preto ostane void setup(){} prázdny. V deviatom riadku programu vytvárame cyklus for, ktorý sa chová ako počítadlo, pre ktoré platí, že hodnota x=0, a kým je x<101, tak po každom dokončení cyklu for ku x pripočíta 1. Znamená to teda, že robot bude postupne zrýchľovať z 0% na 100% na parametri “analog” a následne spomaľovať zo 100% na 0% na parametri “analog”. Pokiaľ chceme dosiahnuť, aby nám cyklus for vrátil hodnoty 0100 a nemuseli sme písať 0101 stačí pri porovnaní použiť znamienko <=. Tým istým spôsobom vieme docieliť aj znižovanie rýchlosti, no vtedy musíme použiť znamienko >=.

Line following using 1 sensor

V tejto kapitole si ukážeme, ako naprogramovať robota Cing, aby sa pohyboval po čiare.

Strategy:

Robot Cing bude sledovať čiaru senzorom tak, že ak svetelný senzor nasníma čiaru na plátne, pohne pravým motorom dopredu. Ak čiaru nenasníma, pohne ľavým motorom.


Program: Explenation:

V druhom a štvrtom riadku programu sú príkazy určené pre programovacie prostredie, ktoré povedia, že budeme používať zjednodušené príkazy pre Attiny85 (implementujú knižnicu <Attiny85_IO_basic.h>). Príkazy vo void loop(){} v svorkových zátvorkách:{} bežia v nekonečnom procese a opakujú sa.Príkazy vo void setup(){} v svorkových zátvorkách:{} zbehnú iba raz a používajú sa nastavenie elektroniky. Kedže používame knižnice, nemusíme nastavovať elektroniku a preto ostane void setup(){} prázdny. V siedmom riadku sa overuje hodnota svetelného senzora číslo 1 – ak je jeho analogová hodnota >50, vypne motor B a zapne motor A. Ak je jeho hodnota <=50, vykonajú sa príkazy v else. Príkazy v else vypnú motor B a zapnú motor A.

Line following using 2 sensors

V tejto kapitole si ukážeme, ako naprogramovať robota Cing, aby sa pohyboval po čiare pomocou 2 senzorov.

Strategy:

Robot Cing bude sledovať čiaru pomocou dvoch svetelných senzorov. Oba motory idú dopredu, pokiaľ jeden zo svetelných senzorov nenasníma čiaru. Ak ju nasníma, motor na tej strane sa zastaví.


Program: Explenation:

V druhom a štvrtom riadku programu sú príkazy určené pre programovacie prostredie, ktoré povedia, že budeme používať zjednodušené príkazy pre Attiny85 (implementujú knižnicu <Attiny85_IO_basic.h>). Príkazy vo void loop(){} v svorkových zátvorkách:{} bežia v nekonečnom procese a opakujú sa.Príkazy vo void setup(){} v svorkových zátvorkách:{} zbehnú iba raz a používajú sa nastavenie elektroniky. Kedže používame knižnice, nemusíme nastavovať elektroniku a preto ostane void setup(){} prázdny. V siedmom riadku sa overuje podmienka pre svetelný senzor číslo 1, teda či je jeho hodnota <50. Ak je jeho hodnota <50, zastaví motor A. Ak je hodnota väčšia, motor A zapne. V desiatom riadku sa overuje podmienka pre svetelný senzor číslo 2. Ak je jeho hodnota <50, zastaví motor B. Ak je hodnota väčšia, motor B sa zapne. V prípade, že ani jedna z týchto podmienok nieje vykonaná spustí sa else na jedenástom riadku, ktorý zapne motory AB.

Comparing temperature

V tejto kapitole si ukážeme, ako naprogramovať robota Cing tak, aby reagoval na zmenu teploty s využitím tepelného senzora. Robot sa po zohriatí senzora začne hýbať.

Strategy:

Robot Cing bude stáť pokiaľ sa okolitá teplota nezvýši nad 30 °C. Potom sa začne pohybovať dopredu.


Program: Explenation:

V prvom a druhom riadku programu sú príkazy určené pre programovacie prostredie, ktoré povedia, že budeme používať zjednodušené príkazy pre Attiny85 (implementujú knižnicu <Attiny85_IO.h>). Príkazy vo void loop(){} v svorkových zátvorkách:{} bežia v nekonečnom procese a opakujú sa.Príkazy vo void setup(){} v svorkových zátvorkách:{} zbehnú iba raz a používajú sa nastavenie elektroniky. Kedže používame knižnice, nemusíme nastavovať elektroniku a preto ostane void setup(){} prázdny. V prvom riadku procedúry sa overuje hodnota tepelného senzora. Ak je jeho hodnota >30 stupňov, zapne motor A a motor B. Ak je jeho hodnota <30 stupňov, vypne motory AB.

Comparing shine

V tejto kapitole si vytvoríme program, ktorým rozhýbeme robota Cing pomocou senzora osvetlenia.

Strategy:

Robot Cing bude stáť. Ak osvetlíme senzor osvetlenia na viac ako 50%, Cing sa začne hýbať dopredu.


Program: Explenation:

V prvom a druhom riadku programu sú príkazy určené pre programovacie prostredie, ktoré povedia, že budeme používať zjednodušené príkazy pre Attiny85 (implementujú knižnicu <Attiny85_IO.h>). Príkazy vo void loop(){} v svorkových zátvorkách:{} bežia v nekonečnom procese a opakujú sa.Príkazy vo void setup(){} v svorkových zátvorkách:{} zbehnú iba raz a používajú sa nastavenie elektroniky. Kedže používame knižnice, nemusíme nastavovať elektroniku a preto ostane void setup(){} prázdny. V deviatom riadku procedúry sa overuje podmienka pre senzor osvetlenia. Ak je osvetlený na viac ako 20%, robot Cing pôjde dopredu na oboch motoroch. Ak podmienka splnená nie je, robot Cing bude stáť.

Setting variable value

V tejto kapitole budeme vytvárať programy, pomocou ktorých bude Cing počítať čiary a na základe toho vykonávať ďalšie procesy.

Strategy:

Robot Cing pôjde dopredu, ak mu hodnotu na potenciometri nastavíme na viac ako 50%. Ak bude hodnota nižšia ako 50%, Cing bude stáť.


Program: Explenation:

V prvom a druhom riadku programu sú príkazy určené pre programovacie prostredie, ktoré povedia, že budeme používať zjednodušené príkazy pre Attiny85 (implementujú knižnicu <Attiny85_IO.h>). Príkazy vo void loop(){} v svorkových zátvorkách:{} bežia v nekonečnom procese a opakujú sa.Príkazy vo void setup(){} v svorkových zátvorkách:{} zbehnú iba raz a používajú sa nastavenie elektroniky. Kedže používame knižnice, nemusíme nastavovať elektroniku a preto ostane void setup(){} prázdny. V deviatom riadku procedúry overujeme, či je na potenciometri nastavená hodnota vyššia ako 50%. Ak je podmienka splnená, Cing pôjde dopredu. Ak podmienka splnená nie je, robot ostane stáť.

Counting lines

V tejto kapitole budeme vytvoríme program, pomocou ktorého bude Cing počítať čiary a na základe toho vykonávať ďalšie procesy.

Strategy:

Robot Cing bude chodiť po plátne, na ktorom bude mať niekoľko čiar. Pomocou svetelného senzora spočíta všetky čiary. Pokial nenapočíta 10 čiar pojde dopredu. Po napočítaní 10-tich čiar sa otoči a zastane.


Program: Explenation:

V prvom a druhom riadku programu sú príkazy určené pre programovacie prostredie, ktoré povedia, že budeme používať zjednodušené príkazy pre Attiny85 (implementujú knižnicu <Attiny85_IO.h>). Príkazy vo void loop(){} v svorkových zátvorkách:{} bežia v nekonečnom procese a opakujú sa.Príkazy vo void setup(){} v svorkových zátvorkách:{} zbehnú iba raz a používajú sa nastavenie elektroniky. Kedže používame knižnice, nemusíme nastavovať elektroniku a preto ostane void setup(){} prázdny. V treťom riadku procedúry vytvárame premennú x s hodnotou 0. V desiatom riadku zadávame podmienku, ktorá hovorí, že program v zátvorkách sa bude opakovať, pokiaľ x <=10. Kým podmienka nebude splnená, robot pôjde dopredu, pričom bude overovať či svetelný senzor nenasnímal čiaru. Ak ju nasnímal x++ pridá premennej hodnotu 1. Ak x nadobudne hodnotu 10, vykoná sa proces v zátvorkách else.

Attiny84

V prvej časti zo série robota Cing sme si ukázali najzákladnejšie pohyby robota, pohyby vpred a do strán a tiež sme si vyskúšali prácu z rôznymi senzormi a funkciami s parametrami. V tejto príručke si ukážeme, ako vylepšiť pohyby, vytvárať zložitejšie príkazy, vyskúšame si prácu s novými senzormi či komponentmi a naučíme sa, ako správne používať príkazy. Navyše ku kapitolám pribudnú úlohy, takže sa nemusíte obávať, že by toho bolo málo. Opäť sa budeme vzdelávať hravou a zábavnou formu. Nemusíte sa báť, že to bude ťažké – práve naopak! Vďaka poznatkom a vedomostiam z predchádzajúcej časti to bude ešte jednoduchšie!

Pokračujeme v pohybe

V predchádzajúcej časti sme sa zoznámili s programovacím prostredím robota Cing a naučili robota Cing pohnúť sa z miesta. S týmto procesorom však pribudla aj funkcia cúvania. V tejto kapitole si ukážeme, ako naprogramovať Cinga tak, aby sa hýbal nielen dopredu, ale aj dozadu.

Going backward and forward

Strategy: Robot Cing sa bude pohybovať na oboch motoroch dopredu nejakú dobu, a potom cúvne naspäť dozadu.


Program: Explenation:

V druhom a štvrtom riadku programu sú príkazy určené pre programovacie prostredie, ktoré povedia, že budeme používať zjednodušené príkazy pre Attiny84 (implementujú knižnicu <Attiny84_IO_basic.h>). Príkazy vo void loop(){} v svorkových zátvorkách:{} bežia v nekonečnom procese a opakujú sa.Príkazy vo void setup(){} v svorkových zátvorkách:{} zbehnú iba raz a používajú sa nastavenie elektroniky. Kedže používame knižnice, nemusíme nastavovať elektroniku a preto ostane void setup(){} prázdny. V deviatom riadku programu zapíname motory “AB“ na 1000 milisekúnd (1 sekundu). Potom tieto motory zapneme na parameter -1, čo znamená, že motory “AB“ pôjdu aj naďalej, avšak nie dopredu, ale dozadu. Teda na rozlíšenie smeru pohybu kolies používame znamienko -. Ak ku parametru nedáme znamienko, znamená to, že sa robot bude hýbať dopredu.

Github Facebook Instagram