Self Balancing Robot: Rozdiel medzi revíziami
Zo stránky SensorWiki
Pridané došasné texty namiesto obrázkov v zozname komponentov. Pridaný Pushbutton modul a modul RGB LED diódy do zoznamu komponentov. Odstránený zoznam komponentov zo sekcie elektroniky. |
Upravený študijný odbor |
||
(96 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 9: | Riadok 11: | ||
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. | ||
[[Súbor:SelfBalanceOutput.gif]] | |||
Riadok 14: | Riadok 19: | ||
===Zoznam komponenotv=== | ===Zoznam komponenotv=== | ||
* Arduino UNO | * Arduino UNO dostupné na stránke [https://store.arduino.cc/arduino-uno-rev3/ https://store.arduino.cc/arduino-uno-rev3] | ||
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. | |||
[[Súbor:ArduinoUno.jpg|x250px]] | |||
* 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] | |||
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é. | |||
[[Súbor:BluetoothModul.jpg|x250px]] | |||
* 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] | |||
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:L298N.jpg|x250px]] | |||
* 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] | |||
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. | |||
[[Súbor:ShieldSvorka.jpg|x250px]] | |||
* 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] | |||
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. | |||
[[Súbor:MPU6050.jpg|x250px]] | |||
* 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] | |||
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. | |||
[[Súbor:LiPO.jpg|x250px]] | |||
* 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] | |||
* Modul Pushbutton | 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úbor:6Vmotorencoder.jpg|x250px]] | |||
* 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] | |||
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. | |||
[[Súbor:RGBmodul.jpg|x250px]] | |||
* 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] | |||
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:Button.jpg|x250px]] | |||
* Prepojovacie káble (Počet viď. schéma zapojenia) | * Prepojovacie káble (Počet viď. schéma zapojenia) | ||
* Dištančné stĺpiky | * 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 | * Skrutky 3x10 ~30ks 3x5 4ks (na pripevnie motorv na rámiky) | ||
* Matice 3mm ~25ks | |||
* Lepiaca páska (izolačná a obojstranná) | * Lepiaca páska (izolačná a obojstranná) | ||
* Náradie (šrobováky, imbusové klúče) | * 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. | |||
[[Súbor:Eleschema.png|x550px|Elektrická schéma ]] | |||
===Použité zdroje a software=== | ===Použité zdroje a software=== | ||
Riadok 64: | Riadok 99: | ||
* [https://www.arduino.cc/en/Main/Software Arduino IDE] | * [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://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/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/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://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] | |||
== Analýza == | == Analýza == | ||
Riadok 75: | Riadok 111: | ||
* Vykonať montáž súčiastok a zapojiť elektronické časti. | * Vykonať montáž súčiastok a zapojiť elektronické časti. | ||
* Kalibrácia MPU6050 gyroskopu a akcelerometra a čítanie dát zo senzoru. | * 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- | * 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. | * Definovať komunikačný protokol medzi android aplikáciou a vývojovou doskou Arduino UNO. | ||
* Vývoj android aplikácie. | * Vývoj android aplikácie. | ||
Riadok 92: | Riadok 128: | ||
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. | 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. | ||
[[Súbor:Dtv2019_sbr_podvozok_spodny_sopisom.png|x250px|Návrh spodnej časti podvozku v programe qcad]] | [[Súbor:Dtv2019_sbr_podvozok_spodny_sopisom.png|x250px|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_na_rezanie.pdf]] | ||
Riadok 102: | Riadok 138: | ||
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á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|x250px|Návrh vrchnej časti podvozku v programe qcad]] | [[Súbor:Dtv2019_sbr_podvozok_vrchny_sopisom.png|x250px|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_na_rezanie.pdf]] | ||
Riadok 110: | Riadok 146: | ||
'''Senzorová lišta''' | '''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- | 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úbor:Dtv2019_sbr_senzorova_lista_sopisom.png|400px|Návrh senzorovej lišty v programe qcad]] | [[Súbor:Dtv2019_sbr_senzorova_lista_sopisom.png|400px|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_na_rezanie.pdf]] | ||
Riadok 122: | Riadok 158: | ||
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. | ||
[[Súbor:Dtv2019_sbr_narazniky_sopisom.png|x250px|Návrh nárazníkov programe qcad]] | |||
[[Súbor:Dtv2019_sbr_narazniky_sopisom.png|x250px|Návrh nárazníkov programe qcad]] | |||
[[Médiá:dtv2019_sbr_narazniky_subor_na_rezanie.pdf]] | [[Médiá:dtv2019_sbr_narazniky_subor_na_rezanie.pdf]] | ||
Riadok 128: | Riadok 166: | ||
[[Médiá:dtv2019_sbr_narazniky_subor_cad.dxf]] | [[Médiá:dtv2019_sbr_narazniky_subor_cad.dxf]] | ||
'''Vyrezané časti''' | |||
[[Súbor:Vyrezane_casti3.png|x350px|Vyrezané časti]] | |||
Vyrezaný vrchný a spodný podvozok a 4ks nárazníkov. | |||
[[Súbor:Ram.jpg|x150px|Nárazník ]] | |||
Nárazník | |||
[[Súbor:lista.png|x250px|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. | |||
[[Súbor:3Dedit.png|x350px|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. | |||
[[Súbor:Dtv2019_sbr_paskacezoko.png|x250px|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. | |||
[[Súbor:3D_ploter.png|x250px|Hlava s páskou na oko]] | |||
===Postup montáže súčiastok=== | |||
* Pripevníme kolesá k spodnej časti spodného podvozku. | |||
[[Súbor:stepone.jpg|center|x250px]] | |||
* 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]] | |||
* 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]] | |||
* 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]] | |||
* Na finálne dokončenie pripevníme hlavu s podstavcom k vrchnému podvozku. | |||
[[Súbor:final.png|center|x250px]] | |||
===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 [ | 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|x400px]] | [[Súbor:Dtv2019_sbr_MPU6050_setup.png|x400px]] | ||
Riadok 224: | Riadok 237: | ||
[[Súbor:Dtv2019_sbr_MPU6050_citanie_dat.png|x400px]] | [[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. Offsety sa potom použijú pri nastavení mpu objektu vo funkcii setup. | 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- | ===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 | 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|x400px]] | [[Súbor:Dtv2019_sbr_HC05_citanie_dat.png|x400px]] | ||
Riadok 234: | Riadok 247: | ||
===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á | 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|x400px]] | [[Súbor:Dtv2019_sbr_HC05_protokol.png|x400px]] | ||
===Vývoj vyvažovacieho algoritmu=== | ===Vývoj vyvažovacieho algoritmu=== | ||
Riadok 251: | Riadok 258: | ||
[[Súbor:Dtv2019_sbr_PID_vypocet_zasahu.png|x400px]] | [[Súbor:Dtv2019_sbr_PID_vypocet_zasahu.png|x400px]] | ||
===Vývoj android aplikácie=== | |||
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:activity1.png|x450px]] [[Súbor:activity2.png|x450px]] [[Súbor:activity3.png|x450px]] | |||
===Zdrojové súbory=== | ===Zdrojové súbory=== | ||
Riadok 258: | Riadok 273: | ||
Projekt aplikácie v Android Studio: | Projekt aplikácie v Android Studio: | ||
[[Médiá: | [[Médiá:Dtv2019_sbr_android_projekt.zip ]] | ||
== Výsledok == | == 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. | |||
a | |||
[[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 dostupné na stránke https://store.arduino.cc/arduino-uno-rev3
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.
- Bluetooth modul HC-06 dostupné na stránke https://www.ebay.com
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 Motor Driver modul dostupné na stránke https://www.ebay.com
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
- Arduino UNO Screw Shield V3 dostupné na stránke https://www.gme.sk/svorkovnicovy-shield-pro-arduino-uno-atd
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.
- MPU6050 6 osí MEMS gyroskop + akcelerometer dostupné na stránke https://www.ebay.com
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.
- LiPo batéria dostupná na stránke https://www.ebay.com
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.
- Motory, kolesá a šróby dostupné na stránke https://www.ebay.com
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.
- Modul RGB LED diódy dostupné na stránke https://www.ebay.com
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.
- Modul Pushbutton dostupné na stránke https://www.ebay.com
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.
Použité zdroje a software
- Vim
- qcad
- Android Studio
- Inkscape
- Arduino IDE
- Nastavenie rýchlosti prenosu bluetooth modulu HC-05
- Knižnica i2cdev
- Knižnica na čítanie dát z gyroskopu a akcelerometra MPU6050
- Kalibrácia MPU6050
- Online editor Tinkercad na vytváranie 3D modelov
- Pripojenie Android zariadenia s Arduinom
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.
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.
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.
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.
Médiá:dtv2019_sbr_narazniky_subor_na_rezanie.pdf
Médiá:dtv2019_sbr_narazniky_subor_cad.dxf
Vyrezané časti
Vyrezaný vrchný a spodný podvozok a 4ks nárazníkov.
Nárazník
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.
Stl súbor pre 3D tlač
Rezanie na plotry
Páska cez oko
Páska robota je prilepená na hlavu robota.
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.
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.