Vienkārša robota tālvadības pults no datora. Autonoms robots, kura pamatā ir Arduino ar tālvadības iespēju. Tālvadības roboti

Robota vadīšana ir sarežģīts uzdevums. Mūsu izvēlētā definīcija nosaka, ka ierīcei ir jāapzinās tās vide. Pēc tam pieņemiet lēmumu un rīkojieties atbilstoši. Roboti var būt autonomi vai daļēji autonomi.

  1. Autonoms robots darbojas saskaņā ar noteiktu algoritmu, pamatojoties uz datiem, kas saņemti no sensoriem.
  2. Daļēji autonomam robotam ir uzdevumi, kurus kontrolē cilvēks. Un papildus ir arī citi uzdevumi, kurus tas veic pats...

Daļēji autonomi roboti

Labs daļēji autonoma robota piemērs ir sarežģīts zemūdens robots. Cilvēks kontrolē robota pamatkustības. Un šajā laikā iebūvētais procesors mēra un reaģē uz zemūdens straumēm. Tas ļauj noturēt robotu tajā pašā pozīcijā bez dreifēšanas. Kamera, kas atrodas uz robota, nosūta video atpakaļ cilvēkam. Turklāt iebūvētie sensori var kontrolēt ūdens temperatūru, spiedienu un daudz ko citu.

Ja robots zaudē kontaktu ar virsmu, tad ieslēdzas autonomā programma un paceļ zemūdens robotu uz virsmas. Lai varētu vadīt savu robotu, jums būs jānosaka tā autonomijas līmenis. Varbūt vēlaties, lai robots tiktu vadīts ar kabeli, būtu bezvadu vai pilnīgi autonoms.

Kabeļu vadība

Vienkāršākais veids, kā vadīt robotu, ir ar rokas kontrolieri, kas tam fiziski savienots ar kabeli. Šī kontrollera slēdži, pogas, sviras, kursorsviras un pogas ļauj lietotājam vadīt robotu, neieslēdzot sarežģītu elektroniku.

Šādā situācijā motorus un barošanas avotu var pieslēgt tieši pie slēdža. Tāpēc tā griešanos uz priekšu/atpakaļ var kontrolēt. To parasti izmanto transportlīdzekļos.

Viņiem nav intelekta un tiek uzskatīti par "tālvadības mašīnām", nevis "robotiem".


  • Galvenās šī savienojuma priekšrocības ir tādas, ka robotu neierobežo darbības laiks. Tā kā to var tieši savienot ar tīklu. Nav jāuztraucas par signāla zudumu. Robotam, kā likums, ir minimāla elektronika, un tas nav īpaši sarežģīts. Pats robots var būt viegls vai ar papildu kravnesību. Ja kaut kas noiet greizi, robotu var fiziski izgūt ar piesaiti, kas piestiprināta pie kabeļa. Tas jo īpaši attiecas uz zemūdens robotiem.
  • Galvenie trūkumi ir tādi, ka kabelis var sapīties, kaut kam aizķerties vai noraut. Attālumu, kādā robots var nosūtīt, ierobežo virves garums. Garās saites vilkšana palielina berzi un var palēnināt vai pat apturēt robota kustību.

Robota vadība caur kabeli un iebūvētu mikrokontrolleri

Nākamais solis ir instalēt mikrokontrolleri robotā, bet turpiniet izmantot kabeli. Mikrokontrolleri pievienojot kādam no datora I/O portiem (piemēram, USB portam), varat kontrolēt savas darbības. Vadība tiek veikta, izmantojot tastatūru, kursorsviru vai citu perifērijas ierīci. Lai projektam pievienotu mikrokontrolleru, var būt nepieciešams arī ieprogrammēt robotu ar ievades signāliem.


  • Galvenās priekšrocības ir tādas pašas kā tiešā kabeļa vadībai. Var ieprogrammēt sarežģītāku robota uzvedību un reakcijas uz atsevišķām pogām vai komandām. Ir liela kontroliera vadības ierīču izvēle (pele, tastatūra, kursorsvira utt.). Pievienotajam mikrokontrolleram ir iebūvēti algoritmi. Tas nozīmē, ka tas var mijiedarboties ar sensoriem un patstāvīgi pieņemt noteiktus lēmumus.
  • Trūkumi ietver augstākas izmaksas papildu elektronikas klātbūtnes dēļ. Citi trūkumi ir tādi paši kā robota tiešai vadībai, izmantojot kabeli.

Ethernet vadība

lietots savienotājs Ethernet RJ45. Vadībai ir nepieciešams Ethernet savienojums. Robots ir fiziski savienots ar maršrutētāju. Tāpēc to var kontrolēt, izmantojot internetu. Tas ir iespējams (lai gan ne pārāk praktiski) arī mobilajiem robotiem.

Robota iestatīšana, kas var sazināties internetā, var būt diezgan sarežģīta. Pirmkārt, priekšroka tiek dota WiFi (bezvadu interneta) savienojumam. Vadu un bezvadu kombinācija ir arī iespēja, kur ir raiduztvērējs (raidīšana un saņemšana). Raiduztvērējs ir fiziski savienots ar internetu, un internetā saņemtie dati pēc tam bezvadu režīmā tiek pārsūtīti uz robotu.


  • Priekšrocība ir tāda, ka robotu var vadīt caur internetu no jebkuras vietas pasaulē. Robotam nav laika ierobežojumu, jo tas var izmantot Power over Ethernet. PoE. Šī ir tehnoloģija, kas ļauj pārsūtīt elektrisko enerģiju kopā ar datiem uz attālo ierīci, izmantojot standarta vītā pāra kabeli Ethernet tīklā. Interneta protokola (IP) izmantošana var vienkāršot un uzlabot sakaru shēmu. Priekšrocības ir tādas pašas kā tiešai datora vadībai ar vadu.
  • Trūkums ir sarežģītāka programmēšana un tie paši trūkumi kā ar kabeļa vadību.

IR tālvadības pults

Infrasarkanie raidītāji un uztvērēji novērš kabeli, kas savieno robotu ar operatoru. To parasti izmanto iesācēji. Infrasarkanās kontroles darbībai ir nepieciešama "redzes līnija". Uztvērējam ir jāspēj "redzēt" raidītāju jebkurā laikā, lai varētu saņemt datus.

Infrasarkanās tālvadības pultis (piemēram, universālās televizoru tālvadības pultis) tiek izmantotas, lai nosūtītu komandas uz infrasarkano staru uztvērēju, kas savienots ar mikrokontrolleru. Pēc tam tas interpretē šos signālus un kontrolē robota darbības.


  • Priekšrocība ir zemās izmaksas. Robota vadīšanai var izmantot vienkāršas TV tālvadības pultis.
  • Trūkumi ir tādi, ka tā kontrolei ir nepieciešama redzamības līnija.

radio vadība

Radiofrekvenču kontrolei nepieciešams raidītājs un uztvērējs ar maziem mikrokontrolleriem, lai nosūtītu, saņemtu un interpretētu radiofrekvences (RF) datus. Uztvērēja kastē ir iespiedshēmas plate (PCB), kurā atrodas uztvērēja bloks un neliels servomotora kontrolleris. Radiosakariem nepieciešams raidītājs, kas ir saskaņots/sapārots ar uztvērēju. Ir iespējams izmantot raiduztvērēju, kas var nosūtīt un saņemt datus starp divām fiziski atšķirīgām sakaru sistēmu vidēm.

Radio vadībai nav nepieciešama tieša redzamības līnija, un to var veikt lielos attālumos. Standarta RF ierīces var pārraidīt datus starp ierīcēm vairāku kilometru attālumā. Lai gan profesionālākas RF ierīces var nodrošināt robota vadību gandrīz jebkurā attālumā.


Daudzi robotu dizaineri dod priekšroku daļēji autonomu radiovadāmu robotu būvēšanai. Tas ļauj robotam būt pēc iespējas autonomākam un sniegt lietotājam atgriezenisko saiti. Un tas var dot lietotājam zināmu kontroli pār dažām tā funkcijām, ja nepieciešams.

  • Priekšrocības ir iespēja vadīt robotu ievērojamos attālumos, to var viegli konfigurēt. Saziņa ir daudzvirziena, taču tā var nebūt pilnībā bloķēta ar sienām vai šķēršļiem.
  • Trūkumi ir ļoti zemais datu pārraides ātrums (tikai vienkāršas komandas). Turklāt jums jāpievērš uzmanība frekvencēm.

Bluetooth vadība

Bluetooth ir radiosignāls (RF), un tas tiek pārraidīts, izmantojot noteiktus protokolus, lai nosūtītu un saņemtu datus. Parastais Bluetooth diapazons bieži vien ir ierobežots līdz aptuveni 10 m. Lai gan tā priekšrocība ir tāda, ka lietotāji var vadīt savu robotu, izmantojot Bluetooth iespējotas ierīces. Tie galvenokārt ir mobilie tālruņi, plaukstdatori un klēpjdatori (lai gan, lai izveidotu saskarni, var būt nepieciešama pielāgota programmēšana). Tāpat kā radio vadība, Bluetooth piedāvā divvirzienu saziņu.


  • Priekšrocības: tiek pārvaldīta no jebkuras Bluetooth iespējotas ierīces. Bet, kā likums, ir nepieciešama papildu programmēšana. Tie ir viedtālruņi, klēpjdatori utt. Lielāki datu pārraides ātrumi var būt daudzvirzienu. Tāpēc redzamības līnija nav nepieciešama, un signāls var nedaudz iziet cauri sienām.
  • Trūkumi. Jāstrādā pa pāriem. Distance parasti ir ap 10m (bez šķēršļiem).

WiFi kontrole

Wi-Fi vadība bieži vien ir papildaprīkojums robotiem. Spēja vadīt robotu bezvadu režīmā, izmantojot internetu, rada dažas būtiskas priekšrocības (un dažus trūkumus) bezvadu vadībai. Lai iestatītu robota Wi-Fi vadību, ir nepieciešams bezvadu maršrutētājs, kas savienots ar internetu, un paša robota WiFi vienība. Robotam varat izmantot ierīci, kas atbalsta TCP / IP protokolu.


  • Priekšrocība ir iespēja vadīt robotu no jebkuras vietas pasaulē. Lai to izdarītu, tam jāatrodas bezvadu maršrutētāja darbības zonā. Iespējami lieli datu pārraides ātrumi.
  • Trūkumi ir tādi, ka ir nepieciešama programmēšana. Maksimālo attālumu parasti nosaka bezvadu maršrutētāja izvēle.

Mobilā tālruņa vadība

Robotu vadīšanai tagad tiek izmantota cita bezvadu tehnoloģija, kas sākotnēji tika izstrādāta cilvēku savstarpējai saziņai, mobilais tālrunis. Tā kā mobilo tālruņu frekvences ir regulējamas, mobilā moduļa iespējošana robotam parasti prasa papildu programmēšanu. Tas arī neprasa izpratni par mobilā tīkla sistēmu un noteikumiem.


  • Priekšrocības: robotu var vadīt jebkurā vietā, kur ir mobilais signāls. Ir iespējama satelīta saziņa.
  • Trūkumi; Šūnu kontroles iestatīšana var būt sarežģīta — ne iesācējiem. Katram mobilajam tīklam ir savas prasības un ierobežojumi. Tiešsaistes pakalpojums nav bezmaksas. Parasti, jo vairāk datu pārsūtāt, jo vairāk naudas jums ir jāmaksā. Sistēma vēl nav konfigurēta lietošanai robotikā.

Nākamais solis ir pilnībā izmantot mikrokontrolleri savā robotā. Un, pirmkārt, tā algoritma programmēšana datu ievadīšanai no sensoriem. Autonomo kontroli var īstenot dažādos veidos:

  1. jābūt iepriekš ieprogrammētam bez atgriezeniskās saites no vides
  2. ar ierobežotu atgriezenisko saiti no sensoriem
  3. ar sarežģītu sensoru atgriezenisko saiti

Patiesa autonoma vadība ietver daudzus sensorus un algoritmus. Tie ļauj robotam patstāvīgi noteikt labāko darbību jebkurā konkrētā situācijā. Sarežģītākās vadības metodes, kas pašlaik tiek ieviestas autonomos robotos, ir vizuālās un dzirdes komandas. Vizuālai kontrolei robots skatās uz cilvēku vai objektu, lai saņemtu tās komandas.


Kontrolēt, lai robots pagrieztos pa kreisi, no papīra lapas nolasot pa kreisi vērstu bultiņu, ir daudz grūtāk, nekā varētu iedomāties. Pakalpojuma komandai, piemēram, "pagriezieties pa kreisi", arī ir nepieciešams diezgan daudz programmēšanas. Daudzu sarežģītu komandu programmēšana, piemēram, "Atnesiet man čības", vairs nav fantāzija. Lai gan tas prasa ļoti augstu programmēšanas līmeni un daudz laika.

  • Priekšrocības ir “īstā” robotika. Uzdevumi var būt tikpat vienkārši kā gaismas mirgošana, pamatojoties uz viena sensora rādījumiem, līdz kosmosa kuģa nolaišanās uz attālas planētas.
  • Trūkumi ir atkarīgi tikai no programmētāja. Ja robots dara kaut ko, ko jūs nevēlaties, lai tas darītu, jums ir tikai viena iespēja. Tas ir paredzēts, lai pārbaudītu jūsu kodu, mainītu to un augšupielādētu izmaiņas robotā.

Praktiskā daļa

Mūsu projekta mērķis ir izveidot autonomu platformu, kas spēj pieņemt lēmumus, pamatojoties uz ārējiem sensoru signāliem. Mēs izmantosim Lego EV3 mikrokontrolleri. Tas ļauj mums izveidot to kā pilnīgi autonomu platformu. Tātad pusautonoms, vadāms caur Bluetooth vai izmantojot infrasarkano tālvadības pulti.


LEGO EV3 programmējams klucis

Šodien nevienu nepārsteigsi ar radiovadāmo paštaisīts. Bet jāatzīst, ka kaut kā “vecmodīgā veidā” nospiest vadības taustiņus... Ir daudz interesantāk pārvaldīt amatniecība ar otas triepieniem, vai ne? Šajā rakstā ir parādīts piemērs tam, kā varat iestatīt tālvadības pulti, izmantojot Arduino plati un vairākus lieces sensorus. PHIRO Pro darbosies kā testa subjekts

1. darbība. Kas jums nepieciešams

  • Liekšanas sensori;
  • Arduino UNO;

  • Bluetooth modulis HC-05;

  • Cimds;

  • Džemperi;

  • 9B akumulators;

  • Lietotne Pocket Code.

2. darbība: Firmata standarta ielāde Arduino

Arduino platē ir jāielādē firmata standarts, lai to savienotu ar Pocket Code. Šajā projektā mēs izmantojam Arduino UNO, taču var izmantot jebkuru Arduino plati.

  • Mēs savienojam Arduino plati ar datoru / klēpjdatoru.
  • Programmā Arduino ID atlasiet COM portu. Rīki -> Seriālais ports -> Atbilstošais COM ports
  • Pēc tam atlasiet dēļa veidu. Rīki -> tāfele -> jūsu Arduino tāfele
  • Tad izvēlamies Firmatas standartu. Piemēri -> Firmata -> Standarta Firmata
  • Noklikšķiniet uz "Augšupielādēt" un augšupielādējiet kodu uz tāfeles.

3. solis: pievienojiet sensorus pie tāfeles un piestipriniet tos pie cimda

Flex sensori ir pretestības ierīces, ko var izmantot, lai noteiktu izliekumu vai slīpumu. Zemāk ir Arduino sensoru elektroinstalācijas shēma. Es izmantoju saliektus skavotāju kronšteinus, lai droši piestiprinātu sensorus cimdam, taču, ja vēlaties, varat izmantot plastmasas rāvējslēdzējus.

4. darbība: savienojiet HC-05 Bluetooth moduli ar Arduino

Mēs savienojam Bluetooth moduļa un Arduino plates izejas šādi:

  • HC05 Tx — Arduino Rx
  • HC05 Rx — Arduino Tx
  • Vcc - 5V
  • GND-GND

5. darbība: Arduino pievienošana akumulatoram

Mēs izmantojam 9 V akumulatoru, lai barotu Arduino plati ar Bluetooth moduli. Šāda veida izkārtojums ir izskaidrojams ar iespēju viegli piestiprināt pie plaukstas/aproces. Jo kompaktāks, jo labāk.

6. darbība: Pocket Code programma

Tālāk ir sniegti programmas lietošanas piemēri. Vispirms pārliecinieties, vai PHIRO Pro ir 3. režīmā (Bluetooth režīms). Nospiediet režīmu pogu uz PHIRO, pirms iedegas zilā gaismas diode blakus displejam augšpusē.

Programmai kopumā ir 7 režīmi.

  • Rādītājpirksts ir izstiepts. Priekšējie lukturi spīd sarkanā krāsā. Programma parāda STOP.
  • Rādītājpirksts un vidējais pirksts ir izstiepts. Priekšējie lukturi spīd zaļā krāsā. Programma parāda STOP.
  • Rādītājpirksts, vidējais un zeltnesis ir iztaisnots. Priekšējie lukturi spīd zilā krāsā. Programma parāda STOP.
  • Plauksta ir atvērta. PHIRO virzās uz priekšu. Priekšējie lukturi spīd balti. Programma parāda FORWARD (uz priekšu).
  • Plauksta ir savilkta dūrē. PHIRO apstājas. Priekšējie lukturi ir izslēgti. Programma parāda STOP.
  • Plauksta ir savilkta dūrē un noliekta pa kreisi (telefons ir noliekts pa kreisi). PHIRO pagriežas pa kreisi. Kreisais lukturis deg dzeltenā krāsā. Programma rāda LEFT (pa kreisi).
  • Plauksta ir savilkta dūrē un noliekta pa labi (telefons ir noliekts pa labi). PHIRO pagriežas pa labi. Labais lukturis deg dzeltenā krāsā. Programma rāda RIGHT (pa labi).

7. solis: veicam galīgo uzstādīšanu

Lai piestiprinātu tālruni uz rokas, varat izmantot aproci vai rīkoties tāpat kā es.

Nopirku mobilajam telefonam lētu vāciņu, izgriezu caurumus un izstiepju Velcro lenti. Aproce ar telefonu ir gatava.

Tas arī viss!) Paldies par uzmanību)

Lai iegūtu pieredzi darbā ar Arduino plati, tā teikt, kā mācību pieredzi un tikai prieka pēc, šis projekts tika izveidots. Projekta mērķis bija izveidot automašīnu, kas spēj autonomi pārvietoties ap dažādiem šķēršļiem, nesaskaroties ar tiem.

1. solis: projekta sastāvdaļu saraksts un izmaksas

1. Rotaļu auto ar radio vadību (radio vadāms).

Šī lieta maksā apmēram 20 dolārus, ja jums ir iespēja tērēt vairāk, varat izmantot labāk.

2. Arduino Uno mikrokontrolleris - 25 ASV dolāri

3. Motora vairogs elektromotoru vadīšanai - 20 USD

4. GPS navigācijai. Adafruit Ultimate GPS vairogs - 50 USD

5. Magnetometrs kā kompass navigācijai. Adafruit HMC5883 magnetometrs - 10 ASV dolāri

6. Ultraskaņas attāluma sensors, lai izvairītos no šķēršļiem. HC-SR04 - 6 ASV dolāri

7. LCD displejs, lai parādītu transportlīdzekļa statusu un informāciju. LCD displejs Blue 1602 IIC, I2C TWI - 6 USD (varat izmantot citu)

8. Infrasarkanais sensors un tālvadības pults.

9. Arduino skice (C++ programma).

10. Plāns koka dēlis kā montāžas platforma.

11. Maizes dēļi. Viens ir garš un šaurs, bet otrs ir mazs, lai atsevišķi uzstādītu magnetometru tālāk no citiem elementiem.

12. Džemperi.

13. Ultraskaņas sensora montāžas komplekts - 12 ASV dolāri

14. Lodāmurs un lodmetāls.

Tātad kopumā tas prasīja aptuveni 150 USD, un pieņemot, ka iegādājaties visas šīs sastāvdaļas, jo, iespējams, jums jau ir daļa no tiem.

2. darbība: šasijas un platformas montāža

Radio pults tika noņemta no nevēlamas rotaļlietas, kas maksāja 15 dolārus.

Šai automašīnai ir divi dzinēji. Ar viena dzinēja palīdzību tālvadības pults kontrolē robota ātrumu, bet ar otra palīdzību tiek kontrolēta stūrēšana.

Kā montāžas virsma tika izmantota plāna tāfele, uz kuras tika piestiprināti maizes dēļi, Arduino, LCD u.c. Baterijas tiek novietotas zem dēļa, un vadi tiek izvadīti caur urbumiem.

3. darbība: programma

Arduino tiek kontrolēts, izmantojot C++ programmu.

Avots

RC_Car_Test_2014_07_20_001.ino

4. darbība: LCD displejs

Darbības laikā ekrānā tiek parādīta šāda informācija:

1. rinda:

1. TH — mērķis, kurss uz pašreizējo pieturas punktu

2. CH – robota pašreizējais virziens

2. rinda:

3. Err — kompasa virziens, parāda, kādā virzienā robots pārvietojas (pa kreisi vai pa labi)

4. Dist — fokusa attālums (metros) līdz pašreizējam pieturas punktam

3. rinda:

5. SNR — Sonāra attālums, tas ir, attālums līdz jebkuram objektam robota priekšā

6. Spd – robota ātrums

4. rinda:

7. Mem - atmiņa (baitos). Arduino atmiņai ir 2 KB

8. WPT n OF x — parāda, kur maršruta punktu sarakstā atrodas robots

5. darbība: izvairieties no sadursmēm ar objektiem

Lai robots izvairītos no šķēršļiem, šeit tika izmantots ultraskaņas "Ping" sensors. Tika nolemts to apvienot ar Arduino NewPing bibliotēku, jo tā ir labāka par vienkāršo Ping bibliotēku.

Bibliotēka tika ņemta no šejienes: https://github.com/fmbfla/Arduino/tree/master/NewPing

Sensors tika uzstādīts uz robota bufera.

Tālvadības pults, ver. 0.1.1

(vadiet robotu attālināti, izmantojot Wi-Fi no planšetdatora manuālajā režīmā)

daudzfunkcionāla programma mod OpenComputers

Programma ļauj pilnībā kontrolēt robotu, veikt daudzas darbības attālināti, vienlaikus redzot pašu robotu un tā parametrus.

Piemēram, var dabūt robotu grūti aizsniedzamās vietās, izkraut urānu no reaktora bez apstarošanas, uzbūvēt vienkāršu konstrukciju, kur pats vēl nevari aizsniegt, vai otrādi, kaut ko atnest. Robots ir jūsu pilnīgā kontrolē.

Smieklīgs programmas pielietojums ir uzbrukt spēlētājiem. Saskaņā ar konfigurācijas iestatījumiem roboti var veikt darbības, kas saistītas ar objektu izmantošanu, ieslēgšanas un izslēgšanas pogas, sviras un mehānismus un rīkus svešā privātajā, lai gan tie neiznīcina privāto. Var uztaisīt uzbrukumu un nojaukt visus spēlētāja destilatorus, dīzeļdegvielu un vējdzirnavas, ja viņš nav spēlē un visu neslēpa no jumta, vai arī neuzstādīja aizsargus un nesensēja uzbrucējus.

Jūs varat pieskrūvēt reaktora kameru pie upura sienas, iestumt tur 4 urāna stieni, ieslēgt sarkano akmeni uz robota un uzspridzināt sienu vairākos blokos, ja neuzmanīgais spēlētājs-upuris ir aizslēdzis tyutelkas māju. tyutelkā gar sienas malu, kā spēlētāji parasti dara =).

IT reaktors iestatījumos iznīcina blokus 2-4 bloku rādiusā. Pastāv iespēja, ka jūs ielīdīsiet upura mājā, kamēr esat aizsegā un jūs nekādā veidā neredzēsit.

Programmas kods (jaunākais):

TABLETES:(pastebin get b8nz3PrH tabletRC.lua)

ROBOTS:(pastebin get 7V2fvm7L robotRC.lua)

Vecās versijas (vecās):

Prasības robota un planšetdatora konfigurācijai ( pamatojoties uz saistīto karti, tas ir nepieciešams, inventāra kontrolieris ir nepieciešams arī robotā, pārējais ir pēc izvēles. Jūs varat izmest zīmes un piebāzt kausa kontrolieri, pievienot nedaudz līnijas un berzes šķidrumus un tā tālāk. ChL programmā vēl netiek izmantots. Kaklam ļoti vēlams sarkans dēlis, magnēts, liels inventārs):

Planšetdators (tūlīt grūti uzņemt ar instalēto OS):

Robots (pagaidām var atteikties no CL un iebāzt dēļu kontrolieri-paplašinātāju. Pēc tam robotu var iebāzt lidojumā, ja nepieciešams WF karte vai INET karte):

Sveiki, Habrahabr! Sēdēju 11. jūnija vakarā un skatījos filmu. Negaidīti es atklāju, ka sieviete, kuru iepriekš nepazīstu, man rakstīja ar priekšlikumu izveidot robotu viņu jaunajam uzdevumam. Būtība ir tāda, ka jums ir jāatrisina mīklas, jāizpēta kešatmiņas, pareizi jāpiemēro mājieni, jāizmanto pieejamās lietas un rezultātā jāsaņem atslēgas un jāatver durvis... Man tika prasīts izveidot robotu, kuru vadītu no datora, izmantojot atsevišķu programmu. . Man bija šaubas par dažām problēmām, piemēram: vai man būs laiks un kā veikt bezvadu datu pārsūtīšanu (agrāk ar bezvadu datu pārraidi esmu nodarbojies tikai NXT)? Izsvērusi plusus un mīnusus, es piekritu. Pēc tam sāku domāt par datu pārsūtīšanu. Tā kā robotu vajadzēja izgatavot ātri, nebija laika atcerēties un apgūt, piemēram, Delphi, tad radās doma uztaisīt moduli, kas sūtītu komandas. Datoram vienkārši jānosūta dati uz COM portu. Šī metode ir dīvaina, bet ātrākā. Es gribu to aprakstīt šeit. Pievienošu arī 3 programmas, kas palīdzēs izgatavot radiovadāmu auto.
Raidītāja un tā programmas montāža.
Es izveidoju moduli datoram no FTDI Basic Breakout 5 / 3.3V no DFrobot, diezgan izplatīta ATMEGA 328P-PU mikrokontrolleri ar Arduino sāknēšanas programmu un radio moduli, kura pamatā ir nRF24L01 mikroshēma. Patiesībā tas ir tikai Arduino Uno ar radio moduli. Tas ir tas, kas ir. Radio modulim ir funkcija, kuru es uzreiz nepamanīju: ieejas spriegumam jābūt diapazonā no 3 līdz 3,6 voltiem (lai gan, pieliekot 5 voltus, tas to nenogalinās, bet tas nedarbosies), augšējā robeža loģiskā vienība ir 5V. Tas nozīmē, ka, lai savienotu radio moduli ar mega, nav nepieciešams līmeņa pārveidotājs starp 3,3 V un 5 V, bet gan jāuzstāda 3,3 V stabilizators. FTDI ir iebūvēts stabilizators, no kura baroju radio moduli.

Šādi izskatās pats modulis (iekšā un montāžā):

Programma sastāv no inicializācijas, starta ziņojuma un vadības programmas komandu apstrādes. Tā tas bija manā gadījumā. Galvenās Mirf bibliotēkas komandas:

#iekļauts
#iekļauts
#iekļauts
#iekļauts
#iekļauts
Šīs bibliotēkas ir nepieciešamas radio moduļa darbībai

Mirf.csnPin = 4 - iestata kontakta numuru, kas atbild par radio moduļa un MK "atļauju sazināties"
Mirf.cePin = 6 - iestata kontakta numuru, kas ir atbildīgs par radio moduļa (uztvērēja / raidītāja) darbības režīmu
Mirf.spi = &MirfHardwareSpi — iestata SPI līniju
Mirf.init() - inicializē radio moduli
Mirf.payload = 1 — viena ziņojuma lielums baitos (noklusējums 16, maksimums 32)
Mirf.channel = 19 — iestata kanālu (0–127, noklusējuma 0)
Mirf.config() - iestata pārsūtīšanas parametrus


Mirf.setTADDR((baits *)"serv1") - pārslēdz radio moduli raidītāja režīmā
Mirf.setRADDR((baits *)"serv1") - pārslēdz radio moduli uztvērēja režīmā

Mirf.send(data) - nosūta masīvu tipa baitu
Mirf.dataReady() - ziņo par saņemto datu apstrādes beigām
Mirf.getData(data) - ierakstiet saņemtos datus datu masīvā

Es pievienoju raidītāja kodu.

raidītāja programma

#iekļauts
#iekļauts
#iekļauts
#iekļauts
#iekļauts

Char aktīvs;
baitu dati;

Nederīgs iestatījums ()
{
Serial.begin(19200);

Mirf.csnPin = 4;
Mirf.cePin = 6;

Mirf.init();
Mirf.payload = 1;
Mirf.kanāls = 19;
Mirf.config();

Mirf.setTADDR((baits *)"serv1");

//signalziņa par darba sākšanu
dati=7;
Mirf.send(dati);
kavēšanās(200);
}

Nederīga cilpa ()
{
if (Serial.available()) //Ja dati ir gatavi nolasīšanai
{
active=Serial.lasīt(); // Datu ierakstīšana mainīgajā
}

Ja (aktīvs=="2")
{
dati=2;
}

Ja (aktīvs=="3")
{
dati=3;
}

Ja (aktīvs=="4")
{
dati=4;
}

Ja (aktīvs=="5")
{
dati=5;
}

Ja (aktīvs = = "6")
{
dati=6;
}

Mirf.send(dati); // Sūtīt datus
while(Mirf.isSending()); // Pagaidiet, līdz dati tiks nosūtīti
}

Kontroles programma.

Ir viena interesanta lieta - Apstrāde. Sintakse ir tāda pati kā Arduino, tikai tukšuma cilpas () vietā ir tukšuma vilkšana (). Bet vēl interesantāk kļuva manā situācijā ar apstrādes Serial bibliotēku, kas ļauj strādāt ar seriālo portu. Pēc nodarbību izlasīšanas Spurkfun vietnē es spēlējos ar gaismas diodes mirgošanu arduino, kas savienots ar datoru, noklikšķinot uz peles. Pēc tam es uzrakstīju programmu robota vadīšanai no tastatūras. Es pievienoju kontroles kodu, izmantojot bultiņas. Principā tajā nav nekā neparasta.

Mašīnas vadības programma

importa apstrāde.serial.*;
importēt cc.arduino.*;

Serial myPort;
PFonts f=createFont("LetterGothicStd-32.vlw", 24);

Nederīgs iestatījums ()
{
izmērs (360, 160);
insults(255);
fons(0);
teksta Fonts(f);

String portName = "XXXX"; // Šeit jums jāieraksta jūsu ostas nosaukums
myPort = new Serial (šis, porta nosaukums, 19200);
}

Anulēt izlozi() (
if(keyPressed==false)
{
skaidrs ();
myPort.write("6");
println("6");
}
}

Nederīgs taustiņš Nospiests()
{
// 10 - ievadiet
// 32 - atstarpe
// 37/38/39/40 - atslēgas
skaidrs ();

aizpildīt(255);
textAlign(CENTRS);
//teksts(atslēgas kods, 180, 80);

Slēdzis (atslēgas kods)
{
37. gadījums:
teksts("Edem vlevo", 180, 80);
myPort.write("1");
pārtraukums;

38. gadījums:
teksts("Edem pryamo", 180, 80);
myPort.write("2");
pārtraukums;

39. gadījums:
teksts("Edem vpravo", 180, 80);
myPort.write("3");
pārtraukums;

40. gadījums:
teksts("Edem nazad", 180, 80);
myPort.write("4");
pārtraukums;

noklusējuma:
teksts("Takoy kommandi net", 180, 80);
myPort.write("6");
pārtraukums;
}
}

uztvērēja programma.

Šīs programmas inicializācija atšķiras no raidītāja programmas inicializācijas tikai vienā rindā. Atslēgas komanda bezgalīgajā cilpā ir Mirf.getData(data). Turklāt saņemtā komanda tiek salīdzināta ar skaitļiem, kas atbilst jebkurai robota darbībai. Nu, tad robots darbojas tieši pēc komandām. Pievienoju mašīnas uztvērēja programmas kodu.

Mašīnu programmas

#iekļauts
#iekļauts
#iekļauts
#iekļauts
#iekļauts

Nederīgs iestatījums ()
{
Serial.begin(9600);

PinMode(13, OUTPUT); //LED

Mirf.csnPin = 10;
Mirf.cePin = 9;
Mirf.spi=
Mirf.init();
Mirf.payload = 1;
Mirf.kanāls = 19;
Mirf.config();
Mirf.setRADDR((baits *)"serv1");
}

Nederīga cilpa ()
{
baitu dati;

If(!Mirf.isSending() && Mirf.dataReady())
{
Mirf.getData(data);
Serial println(dati);
}

Slēdzis (dati)
{
1. gadījums:
motori (-100, 100); // pagriezies pa kreisi
pārtraukums;

2. gadījums:
motori (100, 100); // iet taisni
pārtraukums;

3. gadījums:
motori (100, -100); // nogriezieties pa labi
pārtraukums;

4. gadījums:
motori (-100, -100); // Atgriezties
pārtraukums;

noklusējuma:
motori(0, 0); // stāvus
pārtraukums;
}

kavēšanās(50);
}

Secinājums.

Kas no tā visa iznāca:

Es izgatavoju šo robotu klaustrofobijas dēļ. Viņi realitātē veic uzdevumus dažādās pilsētās, un tikai vienam no šiem uzdevumiem organizatoriem bija nepieciešams radio vadāms sapieris robots. Man tas patīk. Tas, protams, ir kaitīgi, jo uz kontroles fona, izmantojot portatīvajā datorā iebūvētos sakaru līdzekļus, bet no otras puses, tas tika izdarīts ļoti ātri un bez problēmām. Es ceru, ka šis raksts palīdzēs izdarīt kaut ko līdzīgu un varbūt pat grūtāku. Lūk, kurš grib.

Tagi: pievienojiet atzīmes