Programovateľný dron Elecfreaks micro:bit dron:bit kit ovládaný na diaľku
Milí priatelia robotiky zaujímajúci sa o programovateľný dron Dron:bit, riadený jedinečným mikropočítačom micro:bit! Neoddeliteľnou súčasťou spomenutého dronu je jeho rádiové diaľkové ovládanie, vyvinuté výrobcom Elecfreaks, nachádzajúce sa na voľnodostupnej edukačnej podstránke nazvanej Welcome to micro:bit WIKI.
Zmienené ovládanie vychádza z potreby zaobstarať si ďalší mikropočítač a špeciálny ovládač Joystick:bit. Rozhodol som sa eliminovať túto potrebu využitím ‚smart‘ mobilného telefónu s technológiou Bluetooth. Ak ste zvedaví, či sa mi podarilo uspieť, stačí len pokračovať v čítaní môjho článku.
Použitie mobilného telefónu na ovládanie dronu
Použitie mobilného telefónu na ovládanie dronu Dron:bit si vyžaduje inštaláciu bezplatnej Android aplikácie micro:bit Blue a spárovanie mobilu s mikropočítačom micro:bit. Pre uvedenú aplikáciu odporúčam zakázať aktualizácie a pri jej používaní mať vždy zapnuté Bluetooth a GPS mobilu, inak sa nepodarí nadviazať spojenie.
Samotný dron je nutné ešte naprogramovať pomocou voľne dostupnej platformy Microsoft MakeCode. Najskôr je potrebné rozšíriť túto platformu o Blok Bluetooth a modifikovaný Blok Dronbit, lebo štandardný Blok Dronbit je nekompatibilný s Blokom Bluetooth.
Modifikáciu spomenutého bloku som po pár hodinách snahy úspešne zvládol a vo vytvorení programu dronu mi už nič nestálo v ceste.
Program JavaScript
led.setBrightness(15)
Drones.initModule()
Drones.UAV_speed(80)
basic.showLeds(`
# # . # #
# # . # #
. . # . .
# # . # #
# # . # #
`)
bluetooth.onBluetoothConnected(function () {
basic.clearScreen()
basic.showLeds(`
. . # # .
# . # . #
. # # # .
# . # . #
. . # # .
`)
Drones.Basic_action(Drones.Basicoptions.Take_off)
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . . . .
# # # # #
`)
})
bluetooth.onBluetoothDisconnected(function () {
basic.clearScreen()
basic.showLeds(`
. . # # .
# . # . #
. # # # .
# . # . #
. . # # .
`)
Drones.Basic_action(Drones.Basicoptions.Landing)
basic.showLeds(`
# # # # #
. # # # .
. . # . .
. . . . .
# # # # #
`)
basic.clearScreen()
basic.showLeds(`
# # . # #
# # . # #
. . # . .
# # . # #
# # . # #
`)
})
control.onEvent(EventBusSource.MES_DPAD_CONTROLLER_ID, EventBusValue.MICROBIT_EVT_ANY, function () {
if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_A_DOWN) {
basic.showArrow(ArrowNames.North)
Drones.Move_action(Drones.Directionoptions.Forward, 50)
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_A_UP) {
basic.clearScreen()
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_B_DOWN) {
basic.showArrow(ArrowNames.South)
Drones.Move_action(Drones.Directionoptions.Backward, 50)
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_B_UP) {
basic.clearScreen()
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_C_DOWN) {
basic.showArrow(ArrowNames.West)
Drones.Move_action(Drones.Directionoptions.Left, 50)
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_C_UP) {
basic.clearScreen()
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_D_DOWN) {
basic.showArrow(ArrowNames.East)
Drones.Move_action(Drones.Directionoptions.Right, 50)
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_D_UP) {
basic.clearScreen()
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_1_DOWN) {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . . . .
# # # # #
`)
Drones.Move_action(Drones.Directionoptions.Up, 30)
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_1_UP) {
basic.clearScreen()
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_2_DOWN) {
basic.showLeds(`
# # # # #
. # # # .
. . # . .
. . . . .
# # # # #
`)
Drones.Move_action(Drones.Directionoptions.Down, 30)
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_2_UP) {
basic.clearScreen()
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_3_DOWN) {
basic.showLeds(`
. . # . .
. # . . .
# # # # #
. # . . #
. . # . #
`)
Drones.Rotation_action(Drones.Angleoptions.Take_off, 45)
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_3_UP) {
basic.clearScreen()
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_4_DOWN) {
basic.showLeds(`
. . # . .
. . . # .
# # # # #
# . . # .
# . # . .
`)
Drones.Rotation_action(Drones.Angleoptions.Landing, 45)
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_4_UP) {
basic.clearScreen()
}
})
Program MakeCode
Video
Pri úspešnej Bluetooth konektivite dron vzlietne a po prerušení spojenia automaticky pristane, čím sa minimalizuje riziko straty kontroly nad ním.
Ovládanie letu dronu si vyžaduje koordinovať pohyb v troch dimenziách načo je treba minimálne šesť tlačidiel. Dron Dron:bit dokáže ešte rotovať v dvoch smeroch, čiže na komplexné zabezpečenie ovládania opísaného dronu je vhodná mobilná aplikácia aspoň s ôsmimi tlačidlami, ktorou je aj Android aplikácia s názvom Kitronik Move alternujúca horeuvedenú aplikáciu.
Záver
Na záver sa chcem poďakovať nielen za prečítanie tohto článku, ale aj za vyskúšanie môjho diaľkového ovládania dronu Dron:bit s použitím technológie Bluetooth, výučbového mikropočítača micro:bit a mobilného telefónu. Predviedol som vám v praxi alternatívny ovládač, z ktorého bol milo prekvapený aj sám výrobca dronu. Možnosti vo svete robotiky sú väčšinou limitované len predstavivosťou, preto sa netreba báť robiť veci po svojom a veľakrát aj lepšie.
S touto pozitívnou myšlienkou sa s Vami nateraz lúčim a v prípade objavenia ďalšieho výnimočného robota sa opäť ozvem.
E-shop
Elecfreaks micro:bit dron:bit kit (bez micro:bitu)
Dron:bit je úspěšné spojení micro:bitu s dronem, což studentům poskytuje další možnost tvoření a zkoumání ve vzduchu.
BBC micro:bit V2
Nekonečně programovatelný a rozšiřitelný vzdělávací počítač do kapsy.