Operácie

Self Balancing Robot: Rozdiel medzi revíziami

Z SensorWiki

(Pridané obrázky návrhu vyrobených komponentov, pridané body do častí Analýza a Popis Riešenia.)
(Pridané obrázky a opis častí zdrojového kódu vývojovej dosky Arduino UNO, presunutá kapitola návrh súčiastok za TOC.)
Riadok 6: Riadok 6:
  
 
== Opis projektu ==
 
== Opis projektu ==
 +
Cieľom projektu je zostrojenie dvojkolesového robota typu Segway, ktorý udržuje rovnováhu.
  
'''Cieľom projektu je zostrojenie dvojkolesového robota typu Segway, ktorý udržuje rovnováhu.  
+
Projekt sme si zvolili preto, pretože jeho náročnosť bola vhodná pre naše schopnosti, z čoho sme predpokladali, že nadobudneme cenné praktické vedomosti.
'''
 
  
'''Projekt sme si zvolili preto, pretože jeho náročnosť bola vhodná pre naše schopnosti, z čoho sme predpokladali, že nadobudneme cenné praktické vedomosti.'''
+
'''Zoznam komponenotv'''
 +
* ..
 +
* ..
 +
* ..
  
# Prečo práve tento projekt, aký má zmysel, komu bude osožný...
+
'''Použité zdroje a software'''  
# Druhy '''riadok'''
 
  
'''Ako ?'''
+
* [https://www.vim.org/ Vim]
 +
* [https://www.qcad.org/en/ qcad]
 +
* [https://developer.android.com/studio/ Android Studio]
 +
* [https://inkscape.org/ Inkscape]
 +
* [https://www.arduino.cc/en/Main/Software Arduino IDE]
 +
* [https://www.instructables.com/id/Modify-The-HC-05-Bluetooth-Module-Defaults-Using-A/ Nastavenie rýchlosti prenosu bluetooth modulu HC-05]
 +
* [ Knižnica i2cdev]
 +
* [https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050 Knižnica na čítanie dát z gyroskopu a akcelerometra MPU6050]
 +
* [https://github.com/piliwilliam0306/MPU6050_calibration/blob/master/MPU6050_calibration.ino Kalibrácia MPU6050]
  
'''Návod na výrobu'''
+
__TOC__
  
V projekte boli použité súčiastky, ktoré boli kúpené ako hotové celky (moduly), tieto súčiastky boli najmä elektronické.
+
== Analýza ==
  
'''Zoznam komponenotv, ktoré neboli vyrábané:'''
+
'''Definované časti úlohy'''
* ..
+
 
* ..
+
* Vykonať montáž súčiastok a zapojiť elektronické časti.
* ..
+
* Kalibrácia MPU6050 gyroskopu a akcelerometra a čítanie dát zo senzoru.
 +
* Zabezpečiť komunikáciu vývojovej dosky Arduino UNO cez bluetooth modul HC-05.
 +
* Definovať komunikačný protokol medzi android aplikáciou a vývojovou doskou Arduino UNO.
 +
* Vývoj android aplikácie.
 +
* Vývoj algoritmu, ktorý zabezpečí taký akčný zasah pre motory, že robot zostatne vo vyváženej polohe.
  
V prjekte sme využili aj vlastné vyrobené súčiastky.
+
== Popis riešenia ==
  
''' Zoznam vyrobených súčiastok:'''
+
=== Návrh súčiastok ===
  
* Podvozok (spodný)
+
====Podvozok (spodný)====
  
Návrh:
+
'''Návrh'''
  
 
Podvozok bol navrhnutý v programe [https://www.qcad.org/en/ qcad]. Na tomto podvozku sa nachádzajú dierky na priskrutkovanie držiakov motorov. K tejto časti podvozku je tiež prichytená batéria. Taktiež sa na tomto podvozku nachádajú dierky na priskrutkovanie dištančných stĺikov a rovanké dierky slúžia aj na priskrutkovanie nárazníkov.
 
Podvozok bol navrhnutý v programe [https://www.qcad.org/en/ qcad]. Na tomto podvozku sa nachádzajú dierky na priskrutkovanie držiakov motorov. K tejto časti podvozku je tiež prichytená batéria. Taktiež sa na tomto podvozku nachádajú dierky na priskrutkovanie dištančných stĺikov a rovanké dierky slúžia aj na priskrutkovanie nárazníkov.
Riadok 38: Riadok 52:
 
[[Súbor:Dtv2019_sbr_podvozok_spodny_sopisom.png|400px]]
 
[[Súbor:Dtv2019_sbr_podvozok_spodny_sopisom.png|400px]]
  
Materál:
+
'''Materiál'''
  
 
Akryl
 
Akryl
  
Realizácia:
+
'''Realizácia'''
  
 
Tu bude obrázok podvozku (spodnej časti)  
 
Tu bude obrázok podvozku (spodnej časti)  
 +
 +
'''Súbory'''
  
 
[[Médiá:dtv2019_sbr_podvozok_spodny_subor_na_rezanie.pdf]]
 
[[Médiá:dtv2019_sbr_podvozok_spodny_subor_na_rezanie.pdf]]
Riadok 50: Riadok 66:
 
[[Médiá:dtv2019_sbr_podvozok_spodny_subor_cad.dxf]]
 
[[Médiá:dtv2019_sbr_podvozok_spodny_subor_cad.dxf]]
  
* Podvozok (vrchný)
+
====Podvozok (vrchný)====
  
Návrh:
+
'''Návrh'''
  
Nákres bol vyhotovený v programe [https://www.qcad.org/en/ qcad]. Na podvozku sa nachádzajú dierky pre priskrutkovanie modulu na ovládanie motorov L298n a dierky pre priskrutkovanie vývojovej dosky Arduino UNO. Taktiež sa tu nachádzajú dierky pre dištančné stĺpiky, spájajúce tento podvozok so spodným podvozkom a hlavou robota.
+
Nákres bol vyhotovený v programe qcad. Na podvozku sa nachádzajú dierky pre priskrutkovanie modulu na ovládanie motorov L298n a dierky pre priskrutkovanie vývojovej dosky Arduino UNO. Taktiež sa tu nachádzajú dierky pre dištančné stĺpiky, spájajúce tento podvozok so spodným podvozkom a hlavou robota.
  
 
[[Súbor:Dtv2019_sbr_podvozok_vrchny_sopisom.png|400px]]
 
[[Súbor:Dtv2019_sbr_podvozok_vrchny_sopisom.png|400px]]
  
Materál:
+
'''Materiál'''
  
 
Akryl
 
Akryl
  
Realizácia:
+
'''Realizácia'''
  
 
Tu bude obrázok podvozku (vrchnej časti).
 
Tu bude obrázok podvozku (vrchnej časti).
 +
 +
'''Súbory'''
  
 
[[Médiá:dtv2019_sbr_podvozok_vrchny_subor_na_rezanie.pdf]]
 
[[Médiá:dtv2019_sbr_podvozok_vrchny_subor_na_rezanie.pdf]]
Riadok 70: Riadok 88:
 
[[Médiá:dtv2019_sbr_podvozok_vrchny_subor_cad.dxf]]
 
[[Médiá:dtv2019_sbr_podvozok_vrchny_subor_cad.dxf]]
  
* Senzorová lišta
+
====Senzorová lišta====
  
Návrh:
+
'''Návrh'''
  
Návrh bol vyhotovený v programe [https://www.qcad.org/en/ qcad]. Táto lišta bude pripevnená na Screw Shield v.3 a slúži ako miesto prilepenia bluetooth modulu HC-05 a ako miesto priskrutkovania MPU6050 gyroskopu.
+
Návrh bol vyhotovený v programe qcad. Táto lišta bude pripevnená na Screw Shield v.3 a slúži ako miesto prilepenia bluetooth modulu HC-05 a ako miesto priskrutkovania MPU6050 gyroskopu.
  
 
[[Súbor:Dtv2019_sbr_senzorova_lista_sopisom.png|400px]]
 
[[Súbor:Dtv2019_sbr_senzorova_lista_sopisom.png|400px]]
  
Materál:
+
'''Materiál'''
  
 
Akryl
 
Akryl
  
Realizácia:
+
'''Realizácia'''
  
 
Tu bude obrázok senzorovej lišty.
 
Tu bude obrázok senzorovej lišty.
 +
 +
'''Súbory'''
  
 
[[Médiá:dtv2019_sbr_senzorova_lista_subor_na_rezanie.pdf]]
 
[[Médiá:dtv2019_sbr_senzorova_lista_subor_na_rezanie.pdf]]
Riadok 90: Riadok 110:
 
[[Médiá:dtv2019_sbr_senzorova_lista_subor_cad.dxf]]
 
[[Médiá:dtv2019_sbr_senzorova_lista_subor_cad.dxf]]
  
* Nárazníky
+
====Nárazníky====
  
Návrh:
+
'''Návrh'''
  
 
Nárazníky sú taktiež navrhnuté v programe qcad. Nárazníky sú priskrutkované k spodnému podvozku a slúžia na zastavenia pádu robota. Zabezpečujú, že sa pri páde robota nepoškodia časti elektorniky.  
 
Nárazníky sú taktiež navrhnuté v programe qcad. Nárazníky sú priskrutkované k spodnému podvozku a slúžia na zastavenia pádu robota. Zabezpečujú, že sa pri páde robota nepoškodia časti elektorniky.  
Riadok 98: Riadok 118:
 
[[Súbor:Dtv2019_sbr_narazniky_sopisom.png|400px]]
 
[[Súbor:Dtv2019_sbr_narazniky_sopisom.png|400px]]
  
Materál:
+
'''Materiál'''
  
 
Akryl
 
Akryl
  
Realizácia:
+
'''Realizácia'''
  
 
Tu bude obrázok nárazníkov.
 
Tu bude obrázok nárazníkov.
 +
 +
'''Súbory'''
  
 
[[Médiá:dtv2019_sbr_narazniky_subor_na_rezanie.pdf]]
 
[[Médiá:dtv2019_sbr_narazniky_subor_na_rezanie.pdf]]
Riadok 110: Riadok 132:
 
[[Médiá:dtv2019_sbr_narazniky_subor_cad.dxf]]
 
[[Médiá:dtv2019_sbr_narazniky_subor_cad.dxf]]
  
* Hlava s podstavou
+
====Hlava s podstavou====
  
Návrh:
+
'''Návrh'''
  
 
3D model bol navruhný v programe tinkercad. Po dokončení bol 3D model vytlačený na 3D tlačiarni Prusa.
 
3D model bol navruhný v programe tinkercad. Po dokončení bol 3D model vytlačený na 3D tlačiarni Prusa.
Riadok 118: Riadok 140:
 
Tu bude obrázok návrhu v tinkercad-e.   
 
Tu bude obrázok návrhu v tinkercad-e.   
  
Materál:
+
'''Materiál'''
  
 
PLA filament
 
PLA filament
  
Realizácia:
+
'''Realizácia'''
  
 
Tu bude obrázok Hlavy s podstavou.
 
Tu bude obrázok Hlavy s podstavou.
  
* Páska cez oko
+
'''Súbory'''
 +
 
 +
====Páska cez oko====
  
Návrh:
+
'''Návrh'''
  
 
Páska robota je prilepená na hlavu robota.
 
Páska robota je prilepená na hlavu robota.
Riadok 134: Riadok 158:
 
[[Súbor:Dtv2019_sbr_paskacezoko.png|400px]]
 
[[Súbor:Dtv2019_sbr_paskacezoko.png|400px]]
  
Materál:
+
'''Materiál'''
  
 
Vinyl.
 
Vinyl.
  
Realizácia:
+
'''Realizácia'''
  
 
Tu bude obrázok pásky cez oko.
 
Tu bude obrázok pásky cez oko.
 +
 +
'''Súbory'''
  
 
[[Médiá:dtv2019_sbr_paskacezoko_inkscape.svg]]
 
[[Médiá:dtv2019_sbr_paskacezoko_inkscape.svg]]
  
  
'''Použité zdroje:'''
+
===Postup montáže súčiastok===
 +
 
 +
Priskrutkovanie rámov motorov k spodnej časti podvozku.
 +
 
 +
Obrázok priskrutkovaných rámov motorov.
 +
 
 +
Priskrutkovanie motorov do rámov pre motory.
 +
 
 +
Obrázok priskrutkovaných motorov.
 +
 
 +
Priskrutkovanie kolies k hriadelom motorov.
 +
 
 +
Obrázok priskrutkovaných kolies.
 +
 
 +
Priskrutkovanie malých dištančných stĺpikov k spodnej časti podvozku zhora a zároven aj pripenenie nárazníkov z dolnej časti podvozku.
  
* Zoznam použitej literatúry, vrátane katalógových údajov (datasheet), internetových odkazov a pod.
+
Obrázok priskrutkovaných dištančncýh stĺpikov.
  
__TOC__
+
Uloženie batárie na spodný podvozok a jej pripevnenie.
 +
 
 +
Obrázok uloženia batérie.
 +
 
 +
Priskrutkovanie vývojovej dosky Arduino UNO a ovládača motorov L298n k vrchnému podvozku.
 +
 
 +
Obrázok priskrutkovanej vývojovej dosky a ovládača motorov.
 +
 
 +
Priskruktovanie vrchnej časti podvozku na krátke dištančné stĺpiky dlými stĺpikmi.
 +
 
 +
Obrázok priskrutkovanej vrchnej časti podvozku.
 +
 
 +
Pripevnenie senzorovej lišty na Screw shield.
 +
 
 +
Obrázok pripevnenia Screw shield-u.
 +
 
 +
Zapojenie elektroniky na základe schémy zapojeina. (Okrem RGB LED diódy umiestnenej v hlave robota)
  
== Analýza ==
+
Obrázok zapojenia elektroniky.
  
'''Po výrobe súčiastok sú definované nasledujúce úlohy:'''
+
Priskrutkovanie MPU6050 6 osého gyroskou a akcelerometra na senzorovú lištu.
  
* Vykonať montáž súčiastok a zapojiť elektronické časti.
+
Obrázok priskrutkovania MPU6050 na senzorovú lištu.
* Zabezpečiť čítanie senzorových dát z MPU6050 gyroskopu a akcelerometra.
 
* Zabezpečiť komunikáciu vývojovej dosky Arduino UNO cez bluetooth modul HC-05.
 
* Definovať komunikačný protokol medzi android aplikáciou a vývojovou doskou Arduino UNO.
 
* Vývoj android aplikácie.
 
* Vývoj algoritmu, ktorý zabezpečí taký akčný zasah pre motory, že robot zostatne vo vyváženej polohe.
 
  
V tejto časti popíšete ako idete daný problém riešiť. Uvediete sem aj všetky potrebné technické údaje,
+
Prilepenie bluetooth modulu na senzorovú lištu.
ktoré sú potrebné na úspešné vyriešenie projektu. Napríklad:
 
  
* popis komunikačnej zbernice (i2c, 1-wire, RS-232 a pod.)
+
Obrázok prilepenia bluetooth modulu na senzorovú lištu.
* obrázok zapojenia vývodov použitej súčiastky
 
* odkaz na katalógový list
 
* priebehy dôležitých signálov
 
* este jedna polozka
 
  
 +
Prilepenie modulu RGB LED diódy do vnútra hlavy robota.
  
== Popis riešenia ==
+
Obrázok rgb ledky v hlave robota.
  
'''Montáž súčiastok prebieha na základe nasledujúceho postupu:'''
+
Zapojenie RGB LED diódy na základe schémy zapojenia a priskrutkovanie hlavy s podstavou na vrchné dištančné stĺpiky pomocou skrutiek a matíc.
  
# Priskrutkovanie rámov motorov k spodnej časti podvozku.
+
Obrázok zapojenia rgb ledky.  
# Priskrutkovanie motorov do rámov pre motory.
 
# Priskrutkovanie kolies k hriadelom motorov.
 
# Priskrutkovanie malých dištančných stĺpikov k spodnej časti podvozku zhora a zároven aj pripenenie nárazníkov z dolnej časti podvozku.
 
# Uloženie batárie na spodný podvozok a jej pripevnenie.
 
# Priskrutkovanie vývojovej dosky Arduino UNO a ovládača motorov L298n k vrchnému podvozku.
 
# Priskruktovanie vrchnej časti podvozku na krátke dištančné stĺpiky dlými stĺpikmi.
 
# Pripevnenie senzorovej lišty na Screw shield.
 
# Zapojenie elektroniky na základe schémy zapojeina. (Okrem RGB LED diódy umiestnenej v hlave robota)
 
# Priskrutkovanie MPU6050 6 osého gyroskou a akcelerometra na senzorovú lištu.
 
# Prilepenie bluetooth modulu na senzorovú lištu.
 
# Prilepenie modulu RGB LED diódy do vnútra hlavy robota.
 
# Zapojenie RGB LED diódy na základe schémy zapojenia a priskrutkovanie hlavy s podstavou na vrchné dištančné stĺpiky pomocou skrutiek a matíc.
 
# Prilepenie tlačidla na vyp./zap. PWM motorv na podstavu hlavy.
 
  
'''Zapojenie elektronických častí:'''
+
Prilepenie tlačidla na vyp./zap. PWM motorv na podstavu hlavy.
  
Sem príde obrázok schémy zapojenia.
+
Obrázok tlačidla.
  
'''Komunikácia Arduino UNO cez bluetooth modul HC-05'''
+
===Zapojenie elektronických častí===
  
V našom prípade ide len o jednosmernú komunikáciu z Android aplikácie cez bluetooth modol do vývojovej dosky Arduino UNO. Pri danom zapojení je monžné dáta z modulu HC-05 čítať ako sériovú linku pomocou metód Serial.read(). Zisťovať prítomnosť neprečítaťných  dát je možné pomocou metódy Serial.availible().  
+
Sem príde obrázok schémy zapojenia. A stručný opis častí.
  
'''Definícia kominukačného prtokolu medzi android aplikáciou a vývojovou doskou Arduino UNO'''
+
===Kalibrácia MPU6050 gyroskopu a akcelerometra a čítanie dát zo senzoru===
  
Jednolivým akciám, ktoré môžu byť vykonávané cez aplikáciu sme priradili číselné znaky a znaky z abecedy. Každá operáciu má priradený iný znak, ktorý sa pri stlačení  tlačidla pošle cez bluetooth pripojenie do vývojovej dosky. Vývojová doska následne túto hodnotu prečíta a rozhodnote akú operáciu vykonať.
+
Na čítanie dát zo senzoru bola použitá knižnica [https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050 MPU6050], ktorá vyžaduje inštaláciu knižnice [link na knižnicu i2cdev]. Konkrétne sme ako šablónu využili súbor [https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/examples/MPU6050_DMP6/MPU6050_DMP6.ino MPU6050_DMP6.ino]. Pred čítaním dát sa vytvorí globálny objekt mpu, ktorý sa vo funckií setup inicializuje.
  
'''Vývoj android aplikácie'''
+
[[Súbor:Dtv2019_sbr_MPU6050_setup.png|400px]]
  
Aplikácia bola vyvynutá pomocou softwéru [https://developer.android.com/studio Android Studio].  
+
Čítanie dát zo senzoru prebieha vo funkcií loop.
  
Sem pridať postup vytvorenia aplikácie.
+
[[Súbor:Dtv2019_sbr_MPU6050_citanie_dat.png|400px]]
  
 +
Kalibrácia (určenie offestov) bola vykonaná pomocou skriptu, ktorý je možné nájsť [https://github.com/piliwilliam0306/MPU6050_calibration/blob/master/MPU6050_calibration.ino tu]. Tento kalibračný skript si vyžaduje inštaláciu predchádzajúcej knižnice na čítanie dát. Pred spustením kalibrácie je robot umiestnený tak, aby boli podvozky vo vodorovnej polohe. Po ukončení skriptu sa cez sériový port vypíšu offesty. Ďalšie detaily sú opísané na Github stránke.
  
'''Vývoj vyvažovacieho algoritmu'''
+
===Komunikácia Arduino UNO cez bluetooth modul HC-05===
  
Na vyvažovanie robota boli použité PID regulátory. Jeden regulátor určuje akčné zásahy pripojené do motorov pri náklone robota dopredu a druhý pri náklone robota dozadu. Parametre regulátorov sú nastavované vyvynutou aplikáciu, keďže tento spôsob natavovania umožňuje zmenu parametrov bez potreby kompilácie a nahratia kódu do vývojovej dosky.  
+
V našom prípade ide len o jednosmernú komunikáciu z Android aplikácie cez bluetooth modol do vývojovej dosky Arduino UNO. Pri danom zapojení je monžné dáta z modulu HC-05 čítať ako sériovú linku pomocou metód Serial.read(). Zisťovať prítomnosť neprečítaťných  dát je možné pomocou metódy Serial.available().  
  
Tu pridať obrázok, znázorňujúci regulátory v oboch smeroch.
+
[[Súbor:Dtv2019_sbr_HC05_citanie_dat.png|400px]]
  
Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru
+
===Definícia kominukačného prtokolu medzi android aplikáciou a vývojovou doskou Arduino UNO===
(nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.
 
  
'''Schéma zapojenia snímača'''
+
K akciám, ktoré môžu byť vykonávané cez aplikáciu, sme priradili číselné znaky a znaky z abecedy (bajty). Každá operáciu má priradený iný znak, ktorý sa pri stlačení tlačidla pošle cez bluetooth pripojenie do vývojovej dosky. Vývojová doska následne túto hodnotu prečíta a rozhodnote akú operáciu vykonať.
[[Súbor:Zapojenie.png]]
 
  
[[Súbor:Example.jpg]]
+
[[Súbor:Dtv2019_sbr_HC05_protokol.png|400px]]
  
Pozn.: Názov obrázku musí byť jedinečný, uvedomte si, že Obr1.jpg už pred vami skúsilo
+
===Vývoj android aplikácie===
nahrať už aspoň 10 študentov.
 
  
[[Súbor:MojObrazok.jpg|center|250px]]
+
Aplikácia bola vyvynutá pomocou softwéru [https://developer.android.com/studio Android Studio].
  
=== Algoritmus a program ===
+
Sem pridať postup vytvorenia aplikácie.
  
Uveďte stručný popis algoritmu, v akom jazyku a verzii vývojového prostredia ste ho vytvorili.
+
===Vývoj vyvažovacieho algoritmu===
Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu.
 
Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.
 
  
Vyberte podstatné časti zdrojového kódu, použite na to prostredie ''source'':
+
Prevažná časť projektu bola napísaná v editore [https://www.vim.org/ Vim]. Kompilácia a nahrávanie programu do vývojovej dosky prebiehaly pomocou [https://www.arduino.cc/en/Main/Software Arduino IDE].
  
<source lang="c">
+
Na vyvažovanie robota boli použité PID regulátory. Jeden regulátor určuje akčné zásahy pripojené do motorov pri náklone robota dopredu a druhý pri náklone robota dozadu. Parametre regulátorov sú nastavované vyvynutou aplikáciu, keďže tento spôsob natavovania umožňuje zmenu parametrov bez potreby kompilácie a nahratia kódu do vývojovej dosky.
/* A nezabudnite zdroják hojne komentovať  */
 
  
int main(void) {
+
[[Súbor:Dtv2019_sbr_PID_vypocet_zasahu.png|400px]]
   
 
    printf("Hello, World!\n"); 
 
    return(0); 
 
}
 
</source>
 
  
Nezabudnite však nahrať aj kompletné zdrojové kódy vášho programu!
+
===Zdrojové súbory===
  
Zdrojový kód: [[Médiá:Serial.h|serial.h]] a [[Médiá:Pip.c|main.c]]
+
Projekt Arduino IDE:
 +
[[Médiá:dtv2019_sbr_arduino_projekt.zip]]
  
[[Médiá:MojProgram.c|program.c]]
+
Projekt aplikácie v Android Studio:
 +
[[Médiá:dtv2019_sbr_android_projekt.zip]]
  
 +
== Výsledok ==
  
=== Výsledok ===
+
Gifko fungujúceho robota so svietiacou hlavou.
  
 
Nezabudnite zdokumentovať výsledok vašej práce. Určite sem patria fotografie, video  
 
Nezabudnite zdokumentovať výsledok vašej práce. Určite sem patria fotografie, video  

Verzia zo dňa a času 15:08, 8. jún 2019

Autor: Eva Štalmachová a Denis Vasko
Študijný odbor: Robotika 3. Bc. (2019)

Opis projektu

Cieľom projektu je zostrojenie dvojkolesového robota typu Segway, ktorý udržuje rovnováhu.

Projekt sme si zvolili preto, pretože jeho náročnosť bola vhodná pre naše schopnosti, z čoho sme predpokladali, že nadobudneme cenné praktické vedomosti.

Zoznam komponenotv

  • ..
  • ..
  • ..

Použité zdroje a software

Analýza

Definované časti úlohy

  • Vykonať montáž súčiastok a zapojiť elektronické časti.
  • Kalibrácia MPU6050 gyroskopu a akcelerometra a čítanie dát zo senzoru.
  • Zabezpečiť komunikáciu vývojovej dosky Arduino UNO cez bluetooth modul HC-05.
  • Definovať komunikačný protokol medzi android aplikáciou a vývojovou doskou Arduino UNO.
  • Vývoj android aplikácie.
  • Vývoj algoritmu, ktorý zabezpečí taký akčný zasah pre motory, že robot zostatne vo vyváženej polohe.

Popis riešenia

Návrh súčiastok

Podvozok (spodný)

Návrh

Podvozok bol navrhnutý v programe qcad. Na tomto podvozku sa nachádzajú dierky na priskrutkovanie držiakov motorov. K tejto časti podvozku je tiež prichytená batéria. Taktiež sa na tomto podvozku nachádajú dierky na priskrutkovanie dištančných stĺikov a rovanké dierky slúžia aj na priskrutkovanie nárazníkov.

Dtv2019 sbr podvozok spodny sopisom.png

Materiál

Akryl

Realizácia

Tu bude obrázok podvozku (spodnej časti)

Súbory

Médiá:dtv2019_sbr_podvozok_spodny_subor_na_rezanie.pdf

Médiá:dtv2019_sbr_podvozok_spodny_subor_cad.dxf

Podvozok (vrchný)

Návrh

Nákres bol vyhotovený v programe qcad. Na podvozku sa nachádzajú dierky pre priskrutkovanie modulu na ovládanie motorov L298n a dierky pre priskrutkovanie vývojovej dosky Arduino UNO. Taktiež sa tu nachádzajú dierky pre dištančné stĺpiky, spájajúce tento podvozok so spodným podvozkom a hlavou robota.

Dtv2019 sbr podvozok vrchny sopisom.png

Materiál

Akryl

Realizácia

Tu bude obrázok podvozku (vrchnej časti).

Súbory

Médiá:dtv2019_sbr_podvozok_vrchny_subor_na_rezanie.pdf

Médiá:dtv2019_sbr_podvozok_vrchny_subor_cad.dxf

Senzorová lišta

Návrh

Návrh bol vyhotovený v programe qcad. Táto lišta bude pripevnená na Screw Shield v.3 a slúži ako miesto prilepenia bluetooth modulu HC-05 a ako miesto priskrutkovania MPU6050 gyroskopu.

Dtv2019 sbr senzorova lista sopisom.png

Materiál

Akryl

Realizácia

Tu bude obrázok senzorovej lišty.

Súbory

Médiá:dtv2019_sbr_senzorova_lista_subor_na_rezanie.pdf

Médiá:dtv2019_sbr_senzorova_lista_subor_cad.dxf

Nárazníky

Návrh

Nárazníky sú taktiež navrhnuté v programe qcad. Nárazníky sú priskrutkované k spodnému podvozku a slúžia na zastavenia pádu robota. Zabezpečujú, že sa pri páde robota nepoškodia časti elektorniky.

Dtv2019 sbr narazniky sopisom.png

Materiál

Akryl

Realizácia

Tu bude obrázok nárazníkov.

Súbory

Médiá:dtv2019_sbr_narazniky_subor_na_rezanie.pdf

Médiá:dtv2019_sbr_narazniky_subor_cad.dxf

Hlava s podstavou

Návrh

3D model bol navruhný v programe tinkercad. Po dokončení bol 3D model vytlačený na 3D tlačiarni Prusa.

Tu bude obrázok návrhu v tinkercad-e.

Materiál

PLA filament

Realizácia

Tu bude obrázok Hlavy s podstavou.

Súbory

Páska cez oko

Návrh

Páska robota je prilepená na hlavu robota.

Dtv2019 sbr paskacezoko.png

Materiál

Vinyl.

Realizácia

Tu bude obrázok pásky cez oko.

Súbory

Médiá:dtv2019_sbr_paskacezoko_inkscape.svg


Postup montáže súčiastok

Priskrutkovanie rámov motorov k spodnej časti podvozku.

Obrázok priskrutkovaných rámov motorov.

Priskrutkovanie motorov do rámov pre motory.

Obrázok priskrutkovaných motorov.

Priskrutkovanie kolies k hriadelom motorov.

Obrázok priskrutkovaných kolies.

Priskrutkovanie malých dištančných stĺpikov k spodnej časti podvozku zhora a zároven aj pripenenie nárazníkov z dolnej časti podvozku.

Obrázok priskrutkovaných dištančncýh stĺpikov.

Uloženie batárie na spodný podvozok a jej pripevnenie.

Obrázok uloženia batérie.

Priskrutkovanie vývojovej dosky Arduino UNO a ovládača motorov L298n k vrchnému podvozku.

Obrázok priskrutkovanej vývojovej dosky a ovládača motorov.

Priskruktovanie vrchnej časti podvozku na krátke dištančné stĺpiky dlými stĺpikmi.

Obrázok priskrutkovanej vrchnej časti podvozku.

Pripevnenie senzorovej lišty na Screw shield.

Obrázok pripevnenia Screw shield-u.

Zapojenie elektroniky na základe schémy zapojeina. (Okrem RGB LED diódy umiestnenej v hlave robota)

Obrázok zapojenia elektroniky.

Priskrutkovanie MPU6050 6 osého gyroskou a akcelerometra na senzorovú lištu.

Obrázok priskrutkovania MPU6050 na senzorovú lištu.

Prilepenie bluetooth modulu na senzorovú lištu.

Obrázok prilepenia bluetooth modulu na senzorovú lištu.

Prilepenie modulu RGB LED diódy do vnútra hlavy robota.

Obrázok rgb ledky v hlave robota.

Zapojenie RGB LED diódy na základe schémy zapojenia a priskrutkovanie hlavy s podstavou na vrchné dištančné stĺpiky pomocou skrutiek a matíc.

Obrázok zapojenia rgb ledky.

Prilepenie tlačidla na vyp./zap. PWM motorv na podstavu hlavy.

Obrázok tlačidla.

Zapojenie elektronických častí

Sem príde obrázok schémy zapojenia. A stručný opis častí.

Kalibrácia MPU6050 gyroskopu a akcelerometra a čítanie dát zo senzoru

Na čítanie dát zo senzoru bola použitá knižnica MPU6050, ktorá vyžaduje inštaláciu knižnice [link na knižnicu i2cdev]. Konkrétne sme ako šablónu využili súbor MPU6050_DMP6.ino. Pred čítaním dát sa vytvorí globálny objekt mpu, ktorý sa vo funckií setup inicializuje.

Dtv2019 sbr MPU6050 setup.png

Čítanie dát zo senzoru prebieha vo funkcií loop.

Dtv2019 sbr MPU6050 citanie dat.png

Kalibrácia (určenie offestov) bola vykonaná pomocou skriptu, ktorý je možné nájsť tu. Tento kalibračný skript si vyžaduje inštaláciu predchádzajúcej knižnice na čítanie dát. Pred spustením kalibrácie je robot umiestnený tak, aby boli podvozky vo vodorovnej polohe. Po ukončení skriptu sa cez sériový port vypíšu offesty. Ďalšie detaily sú opísané na Github stránke.

Komunikácia Arduino UNO cez bluetooth modul HC-05

V našom prípade ide len o jednosmernú komunikáciu z Android aplikácie cez bluetooth modol do vývojovej dosky Arduino UNO. Pri danom zapojení je monžné dáta z modulu HC-05 čítať ako sériovú linku pomocou metód Serial.read(). Zisťovať prítomnosť neprečítaťných dát je možné pomocou metódy Serial.available().

Dtv2019 sbr HC05 citanie dat.png

Definícia kominukačného prtokolu medzi android aplikáciou a vývojovou doskou Arduino UNO

K akciám, ktoré môžu byť vykonávané cez aplikáciu, sme priradili číselné znaky a znaky z abecedy (bajty). Každá operáciu má priradený iný znak, ktorý sa pri stlačení tlačidla pošle cez bluetooth pripojenie do vývojovej dosky. Vývojová doska následne túto hodnotu prečíta a rozhodnote akú operáciu vykonať.

Dtv2019 sbr HC05 protokol.png

Vývoj android aplikácie

Aplikácia bola vyvynutá pomocou softwéru Android Studio.

Sem pridať postup vytvorenia aplikácie.

Vývoj vyvažovacieho algoritmu

Prevažná časť projektu bola napísaná v editore Vim. Kompilácia a nahrávanie programu do vývojovej dosky prebiehaly pomocou Arduino IDE.

Na vyvažovanie robota boli použité PID regulátory. Jeden regulátor určuje akčné zásahy pripojené do motorov pri náklone robota dopredu a druhý pri náklone robota dozadu. Parametre regulátorov sú nastavované vyvynutou aplikáciu, keďže tento spôsob natavovania umožňuje zmenu parametrov bez potreby kompilácie a nahratia kódu do vývojovej dosky.

Dtv2019 sbr PID vypocet zasahu.png

Zdrojové súbory

Projekt Arduino IDE: Médiá:dtv2019_sbr_arduino_projekt.zip

Projekt aplikácie v Android Studio: Médiá:dtv2019_sbr_android_projekt.zip

Výsledok

Gifko fungujúceho robota so svietiacou hlavou.

Nezabudnite zdokumentovať výsledok vašej práce. Určite sem patria fotografie, video a zhodnotenie ako ste spokojní s výsledkom,

Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.