Operácie

Self Balancing Robot: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentDTV (diskusia | príspevky)
Pridané obrázky a opis častí zdrojového kódu vývojovej dosky Arduino UNO, presunutá kapitola návrh súčiastok za TOC.
StudentDTV (diskusia | príspevky)
Upravený študijný odbor
 
(98 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
{|
{|
----
|Autor:      || '''Eva Štalmachová a Denis Vasko'''  
|Autor:      || '''Eva Štalmachová a Denis Vasko'''  
|-
|-
|Študijný odbor:  || Robotika || 3. Bc.  ('''2019''')  
|Študijný odbor:  || Robotika a kybernetika || 3. Bc.  ('''2019''')  
|}
|}


Riadok 10: Riadok 12:
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'''
* ..
* ..
* ..


'''Použité zdroje a software'''
[[Súbor:SelfBalanceOutput.gif]]


* [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]


__TOC__
__TOC__


== Analýza ==
===Zoznam komponenotv===
* Arduino UNO dostupné na stránke [https://store.arduino.cc/arduino-uno-rev3/ https://store.arduino.cc/arduino-uno-rev3]


'''Definované časti úlohy'''
Arduino Uno je riadiaca doska s 8-bitovým CMOS mikroprocesorom ATmega328P. Rozmery dosky sú 68.6 x 53.4 mm a hmotnosť je 25 g. Veľkosť pamäte mikropočítača je 32 KB. Na doske sa nachádza 20 pinov, z ktorých 14 tvoria digitálne vstupno/výstupné piny a 6 analógových vstupov. Niektoré z pinov môžu byť využité na špeciálne účely. Digitálny pin 0 (RX) a digitálny pin 1 (TX), sa využívajú pri sériovej komunikácii s iným zariadením. Digitálne piny 2 a 3 môžu byť využité na externé prerušenie. Digitálne piny 3, 5, 6, 9, 10, 11 môžu byť použité ako PWM výstupy. Na komunikáciu medzi Arduino doskou a iným zariadením je na doske USB port. Na externé napájanie môžeme využiť 3,5 mm napájací konektor. Na nahrávanie zdrojového kódu do mikropočítača sa najčastejšie používa nástroj Arduino IDE.


* Vykonať montáž súčiastok a zapojiť elektronické časti.
[[Súbor:ArduinoUno.jpg|x250px]]
* 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 ==
* Bluetooth modul HC-06 dostupné na stránke [https://www.ebay.com/itm/1PCS-Slave-HC-06-Wireless-Bluetooth-Transeiver-RF-Master-Module-for-Arduino/201415076859?epid=14023016079&hash=item2ee5462bfb:g:6GgAAOxyCQ5TlsHx/ https://www.ebay.com]


=== Návrh súčiastok ===
HC-06 Bluetooth modul použijeme na bezdrôtovú komunikáciu Arduina s počítačom pomocou sériovej linky. Bluetooth modul využijeme na získanie hodnôt meraní, ktoré by mohli byť pri jazde robota s pripojeným káblom negatívne ovplynené.


====Podvozok (spodný)====
[[Súbor:BluetoothModul.jpg|x250px]]


'''Návrh'''
* L298N Motor Driver modul dostupné na stránke [https://www.ebay.com/itm/New-L298N-DC-Stepper-Motor-Driver-Module-Dual-H-Bridge-Control-Board-for-Arduino/191674305541?epid=21024969493&hash=item2ca0adcc05:g:Jb0AAOSwESNZ7v2s/ https://www.ebay.com]


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.
L298N riadiaci H-mostíkový modul umožňuje riadiť rýchlosť 5 V - 35 V jednosmerných motorov. Na module sa nachádzajú štyri piny pre napájanie dvoch motorov, napájací a uzemňovací pin pre riadiaci modul. Na prepojenie s Arduinom má 6 vstupných pinov. Keďže riadenie motorov je založené na technike pulzno-šírkovej modulácie (PWM), vstupné piny ENA, ENB modulu musia byť prepojené na PWM piny Arduina


[[Súbor:Dtv2019_sbr_podvozok_spodny_sopisom.png|400px]]
[[Súbor:L298N.jpg|x250px]]  


'''Materiál'''


Akryl
* Arduino UNO Screw Shield V3 dostupné na stránke [https://www.gme.sk/svorkovnicovy-shield-pro-arduino-uno-atd/ https://www.gme.sk/svorkovnicovy-shield-pro-arduino-uno-atd]


'''Realizácia'''
Svorkovnicový shield kompatibilný s Arduino Uno. Všetky výstupné piny Arduina sú priradené k svorkám pre jednoduchšie zapojenie. Nie je potrebné externé napájanie.


Tu bude obrázok podvozku (spodnej časti)
[[Súbor:ShieldSvorka.jpg|x250px]]


'''Súbory'''


[[Médiá:dtv2019_sbr_podvozok_spodny_subor_na_rezanie.pdf]]
* MPU6050 6 osí MEMS gyroskop + akcelerometer dostupné na stránke [https://www.ebay.com/itm/GY-521-MPU-6050-3-Axis-6DOF-Gyro-Accelerometer-Raspberry-Pi-Arduino-Module-4H/223542814537?epid=16022287326&hash=item340c30a749:g:638AAOSwdAJc-QFW/ https://www.ebay.com]


[[Médiá:dtv2019_sbr_podvozok_spodny_subor_cad.dxf]]
Senzor MPU-6050 obsahuje gyroskop aj akcelerometer snímajúce v troch osiach v jednom čipe. Vďaka 16-bitovému analógovému prevodníku dosahuje vysokej presnosti a spoľahlivosti. Modul sníma všetky 3 osi naraz, v rovnaký okamih a používa I2C rozhranie na komunikáciu s mikropočítačom.Na module je zabudovaná aj DMP jednotka (Digtal Motion Processor), ktorá môže byť samostatne naprogramovaná pre počítanie zložitých operácií s nameranými hodnotami. Vďaka DMP nie je nutné zaťažiť čip Arduino a výpočty robiť priamo na doske, vďaka I2C rohraniu dokáže dokonca počítať aj s hodnotami z iného čipu (napríklad iného magnetometra a podobne). Pracovné napätie je 3V-5V.


====Podvozok (vrchný)====
[[Súbor:MPU6050.jpg|x250px]]


'''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.
* LiPo batéria dostupná na stránke [https://www.ebay.com/itm/Airtonk-POWER-2200mAh-7-4V-30C-LiPo-Battery-T-Plug-for-RC-Model-Car-Drone-Boat/163554459458?_trkparms=aid%3D111001%26algo%3DREC.SEED%26ao%3D1%26asc%3D20160908105057%26meid%3D5e33ae96014d47aeb5f38855ca95a18c%26pid%3D100675%26rk%3D1%26rkt%3D15%26sd%3D163554459458%26itm%3D163554459458&_trksid=p2481888.c100675.m4236&_trkparms=pageci%3A360cb67f-8ae4-11e9-b985-74dbd180e037%7Cparentrq%3A3d7ea16616b0ac1c621af770ffec98a3%7Ciid%3A1/ https://www.ebay.com]


[[Súbor:Dtv2019_sbr_podvozok_vrchny_sopisom.png|400px]]
Ako napájací zdroj pre robota použijeme dve 7,4 V batériu. Napájací zdroj bude slúžiť na napájanie mikropočítača a ovládacieho modulu pre 6 V motory. Mikropočítač potrebuje odporúčaný zdroj napätia o veľkosti 7 V - 12 V, pričom prúd musí byť jednosmerný. Z mikropočítača sú ďalej napájané všetky potrebné senzory.


'''Materiál'''
[[Súbor:LiPO.jpg|x250px]]


Akryl


'''Realizácia'''
* Motory, kolesá a šróby dostupné na stránke [https://www.ebay.com/itm/2X-DC-6V-210RPM-Encoder-Motor-Set-DC-Gear-Motor-with-Mounting-Bracket-and-Wheel/192432619100?_trkparms=aid%3D111001%26algo%3DREC.SEED%26ao%3D1%26asc%3D20160908105057%26meid%3D5e33ae96014d47aeb5f38855ca95a18c%26pid%3D100675%26rk%3D4%26rkt%3D15%26sd%3D163554459458%26itm%3D192432619100&_trksid=p2481888.c100675.m4236&_trkparms=pageci%3A360cb67f-8ae4-11e9-b985-74dbd180e037%7Cparentrq%3A3d7ea16616b0ac1c621af770ffec98a3%7Ciid%3A1/ https://www.ebay.com]


Tu bude obrázok podvozku (vrchnej časti).
Na poháňanie robota využijeme jednosmerné 6 V motory s prevodovým číslom 30:1, rýchlosťou 210 otáčok za minútu a Hallovým enkóderom. Enkóder je zariadenie, pomocou ktorého získame informáciu o rýchlosti motora. Okrem napájacieho a uzemňovacieho pinu má 2 výstupné piny, z ktorých získame 2 obdĺžnikové signály, ktoré sú medzi sebou posunuté. Podľa posunutia signálu vieme určiť smer motora. Jeden zo signálov musí byť pripojený na pine, ktorý obsluhuje externé prerušenia. Takto zabezpečíme neustále získavanie potrebných informácií na kontrolu rýchlostí motora.


'''Súbory'''
[[Súbor:6Vmotorencoder.jpg|x250px]]


[[Médiá:dtv2019_sbr_podvozok_vrchny_subor_na_rezanie.pdf]]
* Modul RGB LED diódy dostupné na stránke [https://www.ebay.com/itm/5-Stucke-Led-Modul-KY-016-Rgb-3-Farbe-Vollfarbe-Avr-Pic-Fur-Arduino-Ic-Neu-vh/332193734505?hash=item4d584a1f69:g:8vAAAOSwFdpbQGXF/ https://www.ebay.com]


[[Médiá:dtv2019_sbr_podvozok_vrchny_subor_cad.dxf]]
Led modul, ktorý  mení v závislosti od napätia na pinoch R,G,B farbu led diódy. Pracovné napätie 3V-5V. Nie je potrebný ďalší resitor.


====Senzorová lišta====
[[Súbor:RGBmodul.jpg|x250px]]


'''Návrh'''
* Modul Pushbutton dostupné na stránke [https://www.ebay.com/itm/5pcs-KY-004-Electronic-Switch-Key-Module-For-Arduino-AVR-PIC-MEGA2560-Breadboard/382910037052?epid=876814775&hash=item5927377c3c:g:f4cAAOSwUUhcufPn/ https://www.ebay.com]


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.
Prepínací modul, ktorý má na výstupe pri zopnutí logickú 0 inak logickú 1. Pracovné napätie 3V-5V. Nie je potrebný ďalší resitor.


[[Súbor:Dtv2019_sbr_senzorova_lista_sopisom.png|400px]]
[[Súbor:Button.jpg|x250px]]  


'''Materiál'''


Akryl
* Prepojovacie káble (Počet viď. schéma zapojenia)
* Dištančné stĺpiky na oddelenie prvého poschodia robota od druhého 4ks [2,5 cm] a na oddelenie druhého poschodia od zvyšku 4ks[4,5 cm] so skrutkami 4ks ~30mm dlhými a maticami, alebo 4ks 60mm dlhých dištančných stĺpikov.
* Skrutky 3x10 ~30ks 3x5 4ks (na pripevnie motorv na rámiky)
* Matice 3mm ~25ks
* Lepiaca páska (izolačná a obojstranná)
* Náradie (šrobováky, imbusové klúče)


'''Realizácia'''
===Zapojenie elektronických častí===


Tu bude obrázok senzorovej lišty.
Všetky elektronické časti robota zapojíme podľa nasledujúcej elektrickej schémy.


'''Súbory'''
[[Súbor:Eleschema.png|x550px|Elektrická schéma ]]


[[Médiá:dtv2019_sbr_senzorova_lista_subor_na_rezanie.pdf]]
===Použité zdroje a software===


[[Médiá:dtv2019_sbr_senzorova_lista_subor_cad.dxf]]
* [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]
* [https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/I2Cdev/ 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]
* [https://www.tinkercad.com/ Online editor Tinkercad na vytváranie 3D modelov]
* [http://androidsmile.com/index.php/android/connect-android-to-arduino/ Pripojenie Android zariadenia s Arduinom]


====Nárazníky====
== Analýza ==


'''Návrh'''
'''Definované časti úlohy'''


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.  
* 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-06.
* 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.


[[Súbor:Dtv2019_sbr_narazniky_sopisom.png|400px]]
== Popis riešenia ==


'''Materiál'''
=== Návrh častí robota ===


Akryl
==== Rezanie lasérom ====


'''Realizácia'''
Nasledujúce časti robota boli vyrezané lasérom. Použitý materiál bol akryl.


Tu bude obrázok nárazníkov.
'''Podvozok (spodný)'''


'''Súbory'''
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 vyrezaný lasérom z platne akrylu.


[[Médiá:dtv2019_sbr_narazniky_subor_na_rezanie.pdf]]
[[Súbor:Dtv2019_sbr_podvozok_spodny_sopisom.png|x250px|Návrh spodnej časti podvozku v programe qcad]]


[[Médiá:dtv2019_sbr_narazniky_subor_cad.dxf]]
[[Médiá:dtv2019_sbr_podvozok_spodny_subor_na_rezanie.pdf]]


====Hlava s podstavou====
[[Médiá:dtv2019_sbr_podvozok_spodny_subor_cad.dxf]]


'''Návrh'''
'''Podvozok (vrchný)'''


3D model bol navruhný v programe tinkercad. Po dokončení bol 3D model vytlačený na 3D tlačiarni Prusa.
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.


Tu bude obrázok návrhu v tinkercad-e. 
[[Súbor:Dtv2019_sbr_podvozok_vrchny_sopisom.png|x250px|Návrh vrchnej časti podvozku v programe qcad]]


'''Materiál'''
[[Médiá:dtv2019_sbr_podvozok_vrchny_subor_na_rezanie.pdf]]


PLA filament
[[Médiá:dtv2019_sbr_podvozok_vrchny_subor_cad.dxf]]


'''Realizácia'''
'''Senzorová lišta'''


Tu bude obrázok Hlavy s podstavou.
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-06 a ako miesto priskrutkovania MPU6050 gyroskopu.


'''Súbory'''
[[Súbor:Dtv2019_sbr_senzorova_lista_sopisom.png|400px|Návrh senzorovej lišty v programe qcad]]


====Páska cez oko====
[[Médiá:dtv2019_sbr_senzorova_lista_subor_na_rezanie.pdf]]


'''Návrh'''
[[Médiá:dtv2019_sbr_senzorova_lista_subor_cad.dxf]]


Páska robota je prilepená na hlavu robota.
'''Nárazníky'''


[[Súbor:Dtv2019_sbr_paskacezoko.png|400px]]
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.  


'''Materiál'''


Vinyl.


'''Realizácia'''
[[Súbor:Dtv2019_sbr_narazniky_sopisom.png|x250px|Návrh nárazníkov programe qcad]]


Tu bude obrázok pásky cez oko.
[[Médiá:dtv2019_sbr_narazniky_subor_na_rezanie.pdf]]


'''Súbory'''
[[Médiá:dtv2019_sbr_narazniky_subor_cad.dxf]]
 
[[Médiá:dtv2019_sbr_paskacezoko_inkscape.svg]]


'''Vyrezané časti'''


===Postup montáže súčiastok===
[[Súbor:Vyrezane_casti3.png|x350px|Vyrezané časti]]


Priskrutkovanie rámov motorov k spodnej časti podvozku.
Vyrezaný vrchný a spodný podvozok a 4ks nárazníkov.


Obrázok priskrutkovaných rámov motorov.
[[Súbor:Ram.jpg|x150px|Nárazník ]]


Priskrutkovanie motorov do rámov pre motory.
Nárazník


Obrázok priskrutkovaných motorov.
[[Súbor:lista.png|x250px|LISTA ]]


Priskrutkovanie kolies k hriadelom motorov.
Senzorová lišta


Obrázok priskrutkovaných kolies.
==== 3D tlač ====


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.
Materiál použitý pri 3D tlači bol PLA filament.


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


Uloženie batárie na spodný podvozok a jej pripevnenie.
3D model bol navruhný v online editore Tinkercad. Po dokončení bol 3D model vytlačený na 3D tlačiarni Prusa.


Obrázok uloženia batérie.
[[Súbor:3Dedit.png|x350px|3dmodel ]]


Priskrutkovanie vývojovej dosky Arduino UNO a ovládača motorov L298n k vrchnému podvozku.
Stl súbor pre 3D tlač


Obrázok priskrutkovanej vývojovej dosky a ovládača motorov.
[[Médiá:DTVHLAVA.stl]]


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


Obrázok priskrutkovanej vrchnej časti podvozku.
'''Páska cez oko'''


Pripevnenie senzorovej lišty na Screw shield.  
Páska robota je prilepená na hlavu robota.


Obrázok pripevnenia Screw shield-u.
[[Súbor:Dtv2019_sbr_paskacezoko.png|x250px|Návrh pásky cez oko v programe Inkscape]]


Zapojenie elektroniky na základe schémy zapojeina. (Okrem RGB LED diódy umiestnenej v hlave robota)
[[Médiá:dtv2019_sbr_paskacezoko_inkscape.svg]]


Obrázok zapojenia elektroniky.


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


Obrázok priskrutkovania MPU6050 na senzorovú lištu.
Výsledná hlava s podstavcom vytlačená na 3D tlačiarni, na ktorej je nalepená nálepka pirátskej pásky na oko.


Prilepenie bluetooth modulu na senzorovú lištu.
[[Súbor:3D_ploter.png|x250px|Hlava s páskou na oko]]


Obrázok prilepenia bluetooth modulu na senzorovú lištu.
===Postup montáže súčiastok===
 
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.
* Pripevníme kolesá k spodnej časti spodného podvozku.
[[Súbor:stepone.jpg|center|x250px]]


Obrázok zapojenia rgb ledky.  
* Pripevníme batériu k vrchnej časti spodného podvozku a pripevníme 2,5cm dištančné stĺpiky.  
[[Súbor:steptwo.png|center|x250px]]


Prilepenie tlačidla na vyp./zap. PWM motorv na podstavu hlavy.
* Pripevníme senzorovú lištu a elektrické šúčiastky na vrchnú časť vrchného podvozku a zapojíme súčiastky podľa elektrickej schémy.
[[Súbor:stepthree.jpg|center|x250px]]


Obrázok tlačidla.
* Do vytlačenej hlavy umiestníme RGB modul tak aby ledka bola umiestnená v oku hlavy a na podstavec hlavy pripevníme 4,5cm dištačné stĺpiky. V našom prípade ich ešte zvýšimi o 2,5cm pomocou šróbov (dokopy 6cm). Alternatívou je použiť 60mm dlhé dištančné stĺpiky.
[[Súbor:stepfour.png|center|x250px]]


===Zapojenie elektronických častí===
* Na finálne dokončenie pripevníme hlavu s podstavcom k vrchnému podvozku.
 
[[Súbor:final.png|center|x250px]]
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===
===Kalibrácia MPU6050 gyroskopu a akcelerometra a čítanie dát zo senzoru===


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.
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 [https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/I2Cdev/ 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.


[[Súbor:Dtv2019_sbr_MPU6050_setup.png|400px]]
[[Súbor:Dtv2019_sbr_MPU6050_setup.png|x400px]]


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


[[Súbor:Dtv2019_sbr_MPU6050_citanie_dat.png|400px]]
[[Súbor:Dtv2019_sbr_MPU6050_citanie_dat.png|x400px]]


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.
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. Offsety sa potom použijú pri nastavení mpu objektu vo funkcii setup.


===Komunikácia Arduino UNO cez bluetooth modul HC-05===
===Komunikácia Arduino UNO cez bluetooth modul HC-06===


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


[[Súbor:Dtv2019_sbr_HC05_citanie_dat.png|400px]]
[[Súbor:Dtv2019_sbr_HC05_citanie_dat.png|x400px]]


===Definícia kominukačného prtokolu medzi android aplikáciou a vývojovou doskou Arduino UNO===
===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ť.
K akciám, ktoré môžu byť vykonávané cez aplikáciu, sme priradili číselné znaky a znaky z abecedy (bajty). Každá operácia 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:Dtv2019_sbr_HC05_protokol.png|400px]]
[[Súbor:Dtv2019_sbr_HC05_protokol.png|x400px]]


===Vývoj android aplikácie===
===Vývoj vyvažovacieho algoritmu===


Aplikácia bola vyvynutá pomocou softwéru [https://developer.android.com/studio Android Studio].  
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].


Sem pridať postup vytvorenia aplikácie.
Na vyvažovanie robota boli použité PID regulátory. Prvý regulátor určuje akčné zásahy 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ývoj vyvažovacieho algoritmu===
[[Súbor:Dtv2019_sbr_PID_vypocet_zasahu.png|x400px]]


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].
===Vývoj android aplikácie===


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.  
Aplikácia bola vyvynutá pomocou softwéru [https://developer.android.com/studio Android Studio].
Aplikácia má 3 aktivity. Prvá slúži na pripojene bluetooth modulu k mobilu, na zapnutie/vypnutie robota a nachádza sa tu riadenie robota dopredu/dozadu a doľava/doprava.
Druhá aktivita slúži na ladenie PID regulátorov a žiadanej hodnoty náklonu robota. Tretia aktivita zapína/prepína/vypína led diódu.


[[Súbor:Dtv2019_sbr_PID_vypocet_zasahu.png|400px]]
[[Súbor:activity1.png|x450px]] [[Súbor:activity2.png|x450px]] [[Súbor:activity3.png|x450px]]


===Zdrojové súbory===
===Zdrojové súbory===
Riadok 277: Riadok 273:


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


== Výsledok ==
== Výsledok ==


Gifko fungujúceho robota so svietiacou hlavou.
Podarilo sa nám zostrojiť robota, ktorý dokáže balansovať na mieste. Možnosť na zlepšenie vidíme v implementovaní riadenia robota, tak aby dokázal chodiť dopredu/dozadu a doľava/doprava. S konečným výsledkom sme spokojní. Tento projekt, bol pre nás prínos nakoľko sme mohli využiť znalosti z riadenia, z technológií výroby a mohli sme prepojiť softvérovú časť s hardvérovou.  
 
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.
 


[[Category:DTV2019]]
[[Category:DTV2019]]

Aktuálna revízia z 08:26, 12. jún 2019


Autor: Eva Štalmachová a Denis Vasko
Študijný odbor: Robotika a kybernetika 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

Arduino Uno je riadiaca doska s 8-bitovým CMOS mikroprocesorom ATmega328P. Rozmery dosky sú 68.6 x 53.4 mm a hmotnosť je 25 g. Veľkosť pamäte mikropočítača je 32 KB. Na doske sa nachádza 20 pinov, z ktorých 14 tvoria digitálne vstupno/výstupné piny a 6 analógových vstupov. Niektoré z pinov môžu byť využité na špeciálne účely. Digitálny pin 0 (RX) a digitálny pin 1 (TX), sa využívajú pri sériovej komunikácii s iným zariadením. Digitálne piny 2 a 3 môžu byť využité na externé prerušenie. Digitálne piny 3, 5, 6, 9, 10, 11 môžu byť použité ako PWM výstupy. Na komunikáciu medzi Arduino doskou a iným zariadením je na doske USB port. Na externé napájanie môžeme využiť 3,5 mm napájací konektor. Na nahrávanie zdrojového kódu do mikropočítača sa najčastejšie používa nástroj Arduino IDE.

HC-06 Bluetooth modul použijeme na bezdrôtovú komunikáciu Arduina s počítačom pomocou sériovej linky. Bluetooth modul využijeme na získanie hodnôt meraní, ktoré by mohli byť pri jazde robota s pripojeným káblom negatívne ovplynené.

L298N riadiaci H-mostíkový modul umožňuje riadiť rýchlosť 5 V - 35 V jednosmerných motorov. Na module sa nachádzajú štyri piny pre napájanie dvoch motorov, napájací a uzemňovací pin pre riadiaci modul. Na prepojenie s Arduinom má 6 vstupných pinov. Keďže riadenie motorov je založené na technike pulzno-šírkovej modulácie (PWM), vstupné piny ENA, ENB modulu musia byť prepojené na PWM piny Arduina


Svorkovnicový shield kompatibilný s Arduino Uno. Všetky výstupné piny Arduina sú priradené k svorkám pre jednoduchšie zapojenie. Nie je potrebné externé napájanie.


Senzor MPU-6050 obsahuje gyroskop aj akcelerometer snímajúce v troch osiach v jednom čipe. Vďaka 16-bitovému analógovému prevodníku dosahuje vysokej presnosti a spoľahlivosti. Modul sníma všetky 3 osi naraz, v rovnaký okamih a používa I2C rozhranie na komunikáciu s mikropočítačom.Na module je zabudovaná aj DMP jednotka (Digtal Motion Processor), ktorá môže byť samostatne naprogramovaná pre počítanie zložitých operácií s nameranými hodnotami. Vďaka DMP nie je nutné zaťažiť čip Arduino a výpočty robiť priamo na doske, vďaka I2C rohraniu dokáže dokonca počítať aj s hodnotami z iného čipu (napríklad iného magnetometra a podobne). Pracovné napätie je 3V-5V.


Ako napájací zdroj pre robota použijeme dve 7,4 V batériu. Napájací zdroj bude slúžiť na napájanie mikropočítača a ovládacieho modulu pre 6 V motory. Mikropočítač potrebuje odporúčaný zdroj napätia o veľkosti 7 V - 12 V, pričom prúd musí byť jednosmerný. Z mikropočítača sú ďalej napájané všetky potrebné senzory.


Na poháňanie robota využijeme jednosmerné 6 V motory s prevodovým číslom 30:1, rýchlosťou 210 otáčok za minútu a Hallovým enkóderom. Enkóder je zariadenie, pomocou ktorého získame informáciu o rýchlosti motora. Okrem napájacieho a uzemňovacieho pinu má 2 výstupné piny, z ktorých získame 2 obdĺžnikové signály, ktoré sú medzi sebou posunuté. Podľa posunutia signálu vieme určiť smer motora. Jeden zo signálov musí byť pripojený na pine, ktorý obsluhuje externé prerušenia. Takto zabezpečíme neustále získavanie potrebných informácií na kontrolu rýchlostí motora.

Led modul, ktorý mení v závislosti od napätia na pinoch R,G,B farbu led diódy. Pracovné napätie 3V-5V. Nie je potrebný ďalší resitor.

Prepínací modul, ktorý má na výstupe pri zopnutí logickú 0 inak logickú 1. Pracovné napätie 3V-5V. Nie je potrebný ďalší resitor.


  • Prepojovacie káble (Počet viď. schéma zapojenia)
  • Dištančné stĺpiky na oddelenie prvého poschodia robota od druhého 4ks [2,5 cm] a na oddelenie druhého poschodia od zvyšku 4ks[4,5 cm] so skrutkami 4ks ~30mm dlhými a maticami, alebo 4ks 60mm dlhých dištančných stĺpikov.
  • Skrutky 3x10 ~30ks 3x5 4ks (na pripevnie motorv na rámiky)
  • Matice 3mm ~25ks
  • Lepiaca páska (izolačná a obojstranná)
  • Náradie (šrobováky, imbusové klúče)

Zapojenie elektronických častí

Všetky elektronické časti robota zapojíme podľa nasledujúcej elektrickej schémy.

Elektrická schéma

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-06.
  • 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 častí robota

Rezanie lasérom

Nasledujúce časti robota boli vyrezané lasérom. Použitý materiál bol akryl.

Podvozok (spodný)

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. Podvozok bol vyrezaný lasérom z platne akrylu.

Návrh spodnej časti podvozku v programe qcad

Médiá:dtv2019_sbr_podvozok_spodny_subor_na_rezanie.pdf

Médiá:dtv2019_sbr_podvozok_spodny_subor_cad.dxf

Podvozok (vrchný)

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.

Návrh vrchnej časti podvozku v programe qcad

Médiá:dtv2019_sbr_podvozok_vrchny_subor_na_rezanie.pdf

Médiá:dtv2019_sbr_podvozok_vrchny_subor_cad.dxf

Senzorová lišta

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-06 a ako miesto priskrutkovania MPU6050 gyroskopu.

Návrh senzorovej lišty v programe qcad

Médiá:dtv2019_sbr_senzorova_lista_subor_na_rezanie.pdf

Médiá:dtv2019_sbr_senzorova_lista_subor_cad.dxf

Nárazníky

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ávrh nárazníkov programe qcad

Médiá:dtv2019_sbr_narazniky_subor_na_rezanie.pdf

Médiá:dtv2019_sbr_narazniky_subor_cad.dxf

Vyrezané časti

Vyrezané časti

Vyrezaný vrchný a spodný podvozok a 4ks nárazníkov.

Nárazník

Nárazník

LISTA

Senzorová lišta

3D tlač

Materiál použitý pri 3D tlači bol PLA filament.

Hlava s podstavou

3D model bol navruhný v online editore Tinkercad. Po dokončení bol 3D model vytlačený na 3D tlačiarni Prusa.

3dmodel

Stl súbor pre 3D tlač

Médiá:DTVHLAVA.stl

Rezanie na plotry

Páska cez oko

Páska robota je prilepená na hlavu robota.

Návrh pásky cez oko v programe Inkscape

Médiá:dtv2019_sbr_paskacezoko_inkscape.svg


Výsledná hlava s podstavcom vytlačená na 3D tlačiarni, na ktorej je nalepená nálepka pirátskej pásky na oko.

Hlava s páskou na oko

Postup montáže súčiastok

  • Pripevníme kolesá k spodnej časti spodného podvozku.
  • Pripevníme batériu k vrchnej časti spodného podvozku a pripevníme 2,5cm dištančné stĺpiky.
  • Pripevníme senzorovú lištu a elektrické šúčiastky na vrchnú časť vrchného podvozku a zapojíme súčiastky podľa elektrickej schémy.
  • Do vytlačenej hlavy umiestníme RGB modul tak aby ledka bola umiestnená v oku hlavy a na podstavec hlavy pripevníme 4,5cm dištačné stĺpiky. V našom prípade ich ešte zvýšimi o 2,5cm pomocou šróbov (dokopy 6cm). Alternatívou je použiť 60mm dlhé dištančné stĺpiky.
  • Na finálne dokončenie pripevníme hlavu s podstavcom k vrchnému podvozku.

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 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.

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

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. Offsety sa potom použijú pri nastavení mpu objektu vo funkcii setup.

Komunikácia Arduino UNO cez bluetooth modul HC-06

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

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ácia 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ť.

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. Prvý regulátor určuje akčné zásahy 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ývoj android aplikácie

Aplikácia bola vyvynutá pomocou softwéru Android Studio. Aplikácia má 3 aktivity. Prvá slúži na pripojene bluetooth modulu k mobilu, na zapnutie/vypnutie robota a nachádza sa tu riadenie robota dopredu/dozadu a doľava/doprava. Druhá aktivita slúži na ladenie PID regulátorov a žiadanej hodnoty náklonu robota. Tretia aktivita zapína/prepína/vypína led diódu.

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

Podarilo sa nám zostrojiť robota, ktorý dokáže balansovať na mieste. Možnosť na zlepšenie vidíme v implementovaní riadenia robota, tak aby dokázal chodiť dopredu/dozadu a doľava/doprava. S konečným výsledkom sme spokojní. Tento projekt, bol pre nás prínos nakoľko sme mohli využiť znalosti z riadenia, z technológií výroby a mohli sme prepojiť softvérovú časť s hardvérovou.