Roboți controlați de la distanță. Control de la distanță al robotului de pe o tabletă. Schema de conectare a telecomenzii

Pentru a câștiga experiență în lucrul cu placa Arduino, ca să spunem așa, ca experiență de învățare și doar pentru distracție, acest proiect a fost creat. Scopul proiectului a fost de a crea o mașină care să se poată deplasa autonom, evitând diverse obstacole fără a se ciocni de ele.

Pasul 1: Lista componentelor și costul proiectului

1. Mașină de jucărie cu radiocomandă (comandată radio).

Chestia asta costă vreo 20 de dolari, dacă ai ocazia să cheltuiești mai mult, o poți folosi mai bine.

2. Microcontroler Arduino Uno - 25 USD

3. Scut motor pentru controlul motoarelor electrice - 20 USD

4. GPS pentru navigare. Adafruit Ultimate GPS Shield - 50 USD

5. Magnetometru ca busolă pentru navigație. Magnetometru Adafruit HMC5883 - 10 USD

6. Senzor de distanta cu ultrasunete pentru a evita obstacolele. HC-SR04 - 6 USD

7. Afișaj LCD pentru a afișa starea și informațiile vehiculului. Display LCD Blue 1602 IIC, I2C TWI - 6 USD (puteți folosi altul)

8. Senzor infrarosu si telecomanda.

9. Schiță Arduino (program C++).

10. Scândură subțire de lemn ca platformă de montare.

11. Plăci de dezvoltare. Unul este lung și îngust, iar celălalt este mic, pentru a instala separat magnetometrul pe el departe de alte elemente.

12. Saritori.

13. Kit de montare senzor cu ultrasunete - 12 USD

14. Fier de lipit și lipit.

Deci, în total, totul costă aproximativ 150 USD, presupunând că cumpărați toate aceste componente, deoarece este posibil să aveți deja unele dintre acestea.

Pasul 2: Instalarea șasiului și platformei

Radiocomanda a fost scoasă dintr-o jucărie nedorită care a costat 15 dolari.

Mașina de aici are două motoare. Folosind un motor, telecomanda controlează viteza robotului, iar folosind celălalt, direcția este controlată.

O placă subțire a fost folosită ca suprafață de montare pe care au fost atașate panouri, Arduino, LCD etc. Bateriile sunt plasate sub placă și firele sunt trecute prin găurile găurite.

Pasul 3: Programează

Arduino este controlat prin programul C++.

Sursă

RC_Car_Test_2014_07_20_001.ino

Pasul 4: Afișaj LCD

În timpul funcționării, ecranul afișează următoarele informații:

Rândul 1:

1. TH - Sarcină, îndreptându-se către punctul de referință curent

2. CH - Direcția curentă a robotului

Rândul 2:

3. Err - Direcția busolei, arată în ce direcție se mișcă robotul (stânga sau dreapta)

4. Dist - Distanța focală (în metri) până la punctul de referință curent

Rândul 3:

5. SNR - Distanța sonarului, adică distanța până la orice obiecte din fața robotului

6. Spd - Viteza robotului

Rândul 4:

7. Mem - Memorie (în octeți). Memoria Arduino are 2 KB

8. WPT n OF x - Arată unde se află robotul în lista de puncte de referință

Pasul 5: Evitați ciocnirea cu obiecte

Pentru a ajuta robotul să evite obstacolele, aici a fost folosit un senzor ultrasonic „Ping”. S-a decis să-l combine cu biblioteca Arduino NewPing, deoarece este mai bună decât biblioteca simplă Ping.

Biblioteca a fost preluată de aici: https://github.com/fmbfla/Arduino/tree/master/NewPing

Senzorul a fost instalat pe bara de protecție a robotului.

Bună, Habrakhabr! Am stat în seara zilei de 11 iunie, urmărind un film. În mod neașteptat pentru mine, am descoperit că o femeie pe care nu o cunoscusem până acum îmi scrisese cu o ofertă de a face un robot pentru noua lor căutare. Concluzia este că trebuie să rezolvi puzzle-uri, să explorezi ascunzători, să aplici corect indicii, să folosești lucrurile disponibile și, în cele din urmă, să obții chei și să deschizi uși... Mi s-a cerut să fac un robot controlat de la un computer folosind un program separat. Aveam îndoieli cu privire la unele probleme, de exemplu: voi avea timp și cum exact să fac transfer de date wireless (făcusem anterior doar transfer de date wireless pe NXT)? După ce am cântărit argumentele pro și contra, am fost de acord. După aceea, am început să mă gândesc la transferul de date. Deoarece era necesar să se realizeze rapid un robot, nu a fost timp să ne amintim și să stăpânească în continuare, de exemplu, Delphi, așa că a apărut ideea de a realiza un modul care să trimită comenzi. Computerul trebuie pur și simplu să trimită date la portul COM. Această metodă este ciudată, dar cea mai rapidă. Asta vreau să descriu aici. Am sa atasez si 3 programe care te vor ajuta sa faci o masina radiocomandata.
Ansamblul emițătorului și programul acestuia.
Am realizat un modul pentru un computer de la FTDI Basic Breakout 5/3.3V de la DFrobot, un microcontroler ATMEGA 328P-PU destul de comun cu un bootloader Arduino și un modul radio bazat pe cipul nRF24L01. În esență, este doar un Arduino Uno cu un modul radio. Este ceea ce este. Modulul radio are o caracteristică pe care nu am observat-o imediat: tensiunea de intrare ar trebui să fie în intervalul de la 3 la 3,6 volți (deși aplicarea a 5 volți nu o va ucide, dar nu va funcționa), limita superioară a logicii. unitatea este de 5V. Asta înseamnă că pentru a conecta modulul radio la mega nu ai nevoie de un convertor de nivel între 3,3V și 5V, ci trebuie să instalezi un stabilizator de 3,3V. FTDI are un stabilizator încorporat și am alimentat modulul radio din acesta.

Iată cum arată modulul în sine (în interior și în ansamblu):

Programul constă în inițializare, mesaj de pornire și procesarea comenzilor din programul de control. Acesta a fost cazul în cazul meu. Comenzi de bază ale bibliotecii Mirf:

#include
#include
#include
#include
#include
Aceste biblioteci sunt necesare pentru ca modulul radio să funcționeze

Mirf.csnPin = 4 - setează numărul PIN responsabil pentru „permisiunea de a comunica” între modulul radio și MK
Mirf.cePin = 6 - setează numărul pin responsabil pentru modul de funcționare al modulului radio (receptor/emițător)
Mirf.spi = &MirfHardwareSpi - configurează linia SPI
Mirf.init() - inițializează modulul radio
Mirf.payload = 1 - dimensiunea în octeți a unui mesaj (implicit 16, maxim 32)
Mirf.channel = 19 - setează canalul (0 - 127, implicit 0)
Mirf.config() - setează parametrii de transfer


Mirf.setTADDR((byte *)"serv1") - comută modulul radio în modul transmițător
Mirf.setRADDR((byte *)“serv1”) - comută modulul radio în modul receptor

Mirf.send(data) - trimite o matrice de octeți
Mirf.dataReady() - raportează finalizarea procesării datelor primite
Mirf.getData(data) - scrieți datele primite în matricea de date

Atașez codul pentru programul emițătorului.

Programul emițătorului

#include
#include
#include
#include
#include

Char activ;
date de octeți;

Void setup()
{
Serial.begin(19200);

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

Mirf.init();
Mirf.payload = 1;
Mirf.canal = 19;
Mirf.config();

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

//Mesaj de semnalare despre începerea lucrărilor
date=7;
Mirf.send(date);
întârziere (200);
}

buclă goală ()
{
if (Serial.available()) //Dacă datele sunt gata pentru a fi citite
{
activ=Serial.read(); // Scrieți date într-o variabilă
}

Dacă (activ=="2")
{
date=2;
}

Dacă (activ=="3")
{
date=3;
}

Dacă (activ=="4")
{
date=4;
}

Dacă (activ=="5")
{
date=5;
}

Dacă (activ=="6")
{
date=6;
}

Mirf.send(date); //Trimite date
while(Mirf.isSending()); // Așteptați până când datele sunt trimise
}

Program de management.

Există un lucru interesant - Procesarea. Sintaxa este aceeași ca și în Arduino, doar că în loc de void loop() există void draw(). Dar a devenit și mai interesant în situația mea cu biblioteca de procesare Serial, care vă permite să lucrați cu un port serial. După ce am citit tutorialele de pe site-ul Spurkfun, m-am jucat cu clipirea LED-ului de pe Arduino conectat la computer cu un clic de mouse. După aceea, am scris un program pentru a controla robotul de la tastatură. Atașez codul de control al săgeții. În principiu, nu este nimic neobișnuit în ea.

Program de control al mașinii

procesare import.serial.*;
import cc.arduino.*;

MyPort serial;
PFont f=createFont("LetterGothicStd-32.vlw", 24);

Void setup()
{
dimensiune (360, 160);
accident vascular cerebral (255);
fundal(0);
textFont(f);

String portName = "XXXX"; // Aici trebuie să scrieți numele portului dvs
myPort = nou Serial(this, portName, 19200);
}

Void draw() (
dacă (keyPressed == fals)
{
clar();
myPort.write("6");
println("6");
}
}

Tasta anulată apăsată()
{
// 10 - intra
// 32 - spațiu
// 37/38/39/40 - chei
clar();

Umplere(255);
textAlign(CENTER);
//text(keyCode, 180, 80);

Comutator (keyCode)
{
cazul 37:
text("Edem vlevo", 180, 80);
myPort.write("1");
pauză;

Cazul 38:
text("Edem pryamo", 180, 80);
myPort.write("2");
pauză;

Cazul 39:
text("Edem vpravo", 180, 80);
myPort.write("3");
pauză;

Cazul 40:
text("Edem nazad", 180, 80);
myPort.write("4");
pauză;

Mod implicit:
text("Takoy komandi net", 180, 80);
myPort.write("6");
pauză;
}
}

Programul receptorului.

Inițializarea acestui program diferă de inițializarea programului emițătorului într-o singură linie. Comanda cheie în bucla fără sfârșit este Mirf.getData(data). Apoi, comanda primită este comparată cu numerele care corespund oricăreia dintre acțiunile robotului. Ei bine, atunci robotul acționează exact conform comenzilor. Atașez codul de program pentru receptorul aparatului.

Programe de mașină

#include
#include
#include
#include
#include

Void setup()
{
Serial.begin(9600);

PinMode(13, IEȘIRE); //LED

Mirf.csnPin = 10;
Mirf.cePin = 9;
Mirf.spi =
Mirf.init();
Mirf.payload = 1;
Mirf.canal = 19;
Mirf.config();
Mirf.setRADDR((octet *)"serv1");
}

buclă goală ()
{
date de octeți;

Dacă(!Mirf.isSending() && Mirf.dataReady())
{
Mirf.getData(date);
Serial.println(date);
}

Comutator (date)
{
cazul 1:
motoare(-100, 100); // Viraj la stânga
pauză;

Cazul 2:
motoare (100, 100); // mergeţi înainte
pauză;

Cazul 3:
motoare (100, -100); // Obligatoriu Dreapta
pauză;

Cazul 4:
motoare (-100, -100); // mergand inapoi
pauză;

Mod implicit:
motoare(0, 0); // stăm în picioare
pauză;
}

Întârziere (50);
}

Concluzie.

Ce a ieșit din toate astea:

Am făcut acest robot pentru Claustrofobie. Ei desfășoară misiuni în realitate în diferite orașe și doar pentru una dintre aceste căutări, organizatorii aveau nevoie de un robot de sapătură controlat prin radio. Imi place. Acest lucru, desigur, este defectuos, pentru că... pe fondul controlului folosind instrumentele de comunicare încorporate în laptop, dar s-a făcut în felul său, foarte rapid și fără probleme. Sper că acest articol vă va ajuta să faceți ceva similar și poate chiar mai dificil. Aici, cine vrea ce.

Etichete: Adăugați etichete

Modulul principal al setului de construcție Lego Mindstorms EV3 poate funcționa cu firmware-ul leJOS, care vă permite să rulați aplicații Java. În special pentru aceasta, Oracle a lansat și acceptă o versiune separată a Java SE cu drepturi depline.

JVM-ul normal mi-a permis să folosesc protocolul Java Management Extensions (JMX) încorporat în el pentru a implementa controlul de la distanță al brațului robotic. Pentru a combina elementele de control, citirile senzorilor și imaginile de la camerele IP instalate pe robot, se folosește o diagramă mnemonică realizată pe platforma AggreGate.


Robotul în sine este format din două părți principale: un șasiu și un braț manipulator. Acestea sunt controlate de două computere EV3 complet independente, toate coordonate prin serverul de control. Nu există nicio legătură directă între computere.

Ambele computere sunt conectate la rețeaua IP a camerei prin adaptoare Wi-Fi NETGEAR WNA1100. Robotul este controlat de opt motoare Mindstorms - 4 dintre ele sunt „mari” și 4 sunt „mici”. De asemenea, sunt instalați senzori cu infraroșu și cu ultrasunete pentru a opri automat la un obstacol la mers înapoi, doi senzori tactili pentru a opri rotația manipulatorului din cauza unui obstacol și un senzor giroscopic pentru a facilita orientarea operatorului prin vizualizarea poziției umărului.

Șasiul are două motoare, fiecare transmite putere către o pereche de unități pe șenile. Un alt motor rotește întregul braț robotizat la 360 de grade.

În manipulatorul în sine, două motoare sunt responsabile pentru ridicarea și coborârea „umărului” și „antebrațului”. Încă trei motoare sunt responsabile pentru ridicarea/coborârea mâinii, rotirea ei la 360 de grade și strângerea/deschiderea „degetelor”.

Cea mai complexă unitate mecanică este „peria”. Datorită necesității de a muta trei motoare grele în zona „cotului”, designul s-a dovedit a fi destul de complicat.

În general, totul arată așa (o cutie de chibrituri a fost greu de găsit pentru scară):

Pentru transmiterea imaginii sunt instalate două camere:

  • Un smartphone Android obișnuit cu aplicația IP Webcam instalată pentru o prezentare generală (HTC One în imagine)
  • Microcamera autonomă Wi-Fi AI-Ball, instalată direct pe „mâna” manipulatorului și ajută la prinderea obiectelor de forme complexe

Programare EV3

Software-ul robotului în sine s-a dovedit a fi cât se poate de simplu. Programele de pe cele două computere sunt foarte asemănătoare, pornesc un server JMX, înregistrează MBean-uri corespunzătoare motoarelor și senzorilor și intră în somn în așteptarea operațiunilor JMX.

Codul principalelor clase ale software-ului brațului robotizat

clasă publică Arm ( public static void main(String args) ( încercați ( EV3Helper.printOnLCD("Încep..."); EV3Helper.startJMXServer("192.168.1.8", 9000); MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(ge); motor = nou EV3LargeRegulatedMotor(BrickFinder.getDefault().getPort("A")); LargeMotorMXBean m = nou LargeMotorController(motor); ObjectName n = nou ObjectName("robot:name=MotorA"); mbs.registerMBean(m, n ); // Înregistrarea altor motoare aici EV3TouchSensor touchSensor = nou EV3TouchSensor(SensorPort.S1); TouchSensorMXBean tos = nou TouchSensorController(touchSensor); n = nou ObjectName("robot:name=Sensor1"); mbs.register, n)MBean(tos, n) ; // Înregistrarea altor senzori aici EV3Helper.printOnLCD("Running"); Sound.beepSequenceUp(); Thread.sleep(Integer.MAX_VALUE); ) catch (Throwable e) ( e.printStackTrace(); ) ) clasă publică EV3Helper ( static void startJMXServer(String address, int port) ( server MBeanServer = ManagementFactory.getPlatformMBeanServer(); încercați ( java.rmi.registry.LocateRegistry.createRegistry(port); JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + adresa + ":" + String.valueOf(port ) + „/server”); Hartă props = nou HashMap (); props.put("com.sun.management.jmxremote.authenticate", "false"); props.put("com.sun.management.jmxremote.ssl", "false"); JMXConnectorServer connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, props, server); connectorServer.start(); ) catch (Excepția e) ( e.printStackTrace(); ) ) static void printOnLCD(String s) ( LCD.clear(); LCD.drawString(s, 0, 4); ) )

Pentru fiecare tip de senzor și motor a fost creată o interfață MBean și o clasă care o implementează, care deleagă direct toate apelurile către clasa inclusă în API-ul leJOS.

Exemplu de cod de interfață

interfață publică LargeMotorMXBean ( public abstract void forward(); public abstract boolean suspendRegulation(); public abstract int getTachoCount(); public abstract float getPosition(); public abstract void flt(); public abstract void flt(boolean immediateReturn); public abstract void stop(boolean immediateReturn); public abstract boolean isMoving(); public abstract void waitComplete(); public abstract void rotateTo(int limitAngle, boolean immediateReturn); public abstract void setAcceleration(int acceleration); public abstract int getAcceleration(); public abstract int getLimitAngle(); public abstract void resetTachoCount(); public abstract void rotire(int angle, boolean immediateReturn); public abstract void rotire(int angle); public abstract void rotireTo(int limitAngle); public abstract boolean isStalled(); public abstract void setStallThreshold(int error, int time); public abstract int getRotationSpeed(); public abstract float getMaxSpeed(); public abstract void înapoi(); public abstract void stop(); public abstract int getSpeed(); public abstract void setSpeed(viteza int); )

Exemplu de cod de implementare MBean

clasa publică LargeMotorController implementează LargeMotorMXBean ( motor final EV3LargeRegulatedMotor; public LargeMotorController(EV3LargeRegulatedMotor motor) ( this.motor = motor; ) @Override public void forward() ( motor.forward(); ) @Override public boolean suspendRegulation() ( return motor. suspendRegulation(); ) @Override public int getTachoCount() ( return motor.getTachoCount(); ) @Override public float getPosition() ( return motor.getPosition(); ) @Override public void flt() ( motor.flt() ; ) @Override public void flt(boolean immediateReturn) ( motor.flt(immediateReturn); ) // Metode similare de delegare au fost omise )

Destul de ciudat, programarea s-a încheiat acolo. Nici o singură linie de cod nu a fost scrisă pe partea serverului sau pe stația de lucru a operatorului.

Conectarea la server

Robotul este controlat direct de serverul platformei AggreGate IoT. Versiunea gratuită instalată de AggreGate Network Manager include un driver de protocol JMX și vă permite să conectați până la zece gazde JMX. Va trebui să conectăm două - una pentru fiecare cărămidă EV3.

În primul rând, trebuie să creați un cont de dispozitiv JMX specificând adresa URL specificată la pornirea serverului JMX în setări:

Proprietățile conexiunii dispozitivului JMX


După aceea, selectați activele (adică MBeans în acest caz) care vor fi adăugate la profilul dispozitivului:

Selectarea MBeans


Și după câteva secunde ne uităm și modificăm valorile curente ale tuturor proprietăților interogate ale MBeans:

Instantaneu dispozitiv


De asemenea, puteți testa diverse operațiuni apelând manual metodele MBean, cum ar fi forward() și stop().

Lista operațiunilor


Apoi, am configurat perioade de sondare pentru senzori. Se folosește o frecvență mare de interogare (de 100 de ori pe secundă), deoarece serverul de control este situat în rețeaua locală împreună cu robotul, iar serverul este cel care ia decizii privind oprirea rotației atunci când lovește un obstacol etc. Soluția cu siguranță nu este industrială, dar într-o rețea Wi-Fi care funcționează bine dintr-un apartament s-a dovedit a fi destul de adecvată.

Perioadele de sondaj


Interfața operatorului

Acum să trecem la crearea interfeței operatorului. Pentru a face acest lucru, mai întâi creăm un nou widget și îi adăugăm componentele necesare. Versiunea finală de lucru arată astfel:

De fapt, întreaga interfață este formată din mai multe panouri cu butoane, glisoare și indicatori, grupate în diverse aranjamente de grilă și două playere video mari care difuzează imagini de la camere.

Vedeți din interiorul editorului de interfață

Întreaga formă:

Vedere cu panourile containerului afișate:


Acum, așa cum spun specialiștii sistemelor de control automatizat, tot ce rămâne este să „reînvie diagrama mnemonică”. În acest scop, așa-zis legături conectarea proprietăților și metodelor componentelor interfeței grafice cu proprietățile și metodele obiectelor server. Deoarece computerele EV3 sunt deja conectate la server, MBean-urile robotului nostru pot fi, de asemenea, obiecte server.

Întreaga interfață operator conține aproximativ 120 de legături, dintre care majoritatea sunt de același tip:

Jumătate din același tip de legături implementează controlul făcând clic pe butoanele situate pe diagrama mnemonică. Acesta este frumos, convenabil pentru testare, dar complet nepotrivit pentru mișcarea reală a robotului și deplasarea sarcinilor. Activatorii legăturilor din acest grup sunt evenimente mouse-ul apăsatȘi mouse-ul eliberat diverse butoane.

A doua jumătate a legăturilor vă permite să controlați robotul de la tastatură apăsând mai întâi butonul de control al tastaturii. Aceste legături răspund la evenimente tasta apăsatăȘi cheie eliberată, iar în starea fiecărei legături este scris la ce cod de buton trebuie reacţionat.

Toate legăturile de control apelează metode redirecţiona(), înapoi()Și Stop() diferiți MBeans. Deoarece livrarea evenimentelor are loc asincron, este important ca funcțiile să fie apelate redirecţiona()/înapoi()și apelurile ulterioare Stop() nu amestecate. Pentru a face acest lucru, legăturile care apelează metode ale unui MBean sunt adăugate la o coadă.

Două grupuri separate de legături stabilesc vitezele și accelerațiile inițiale ale motoarelor (în prezent, acest lucru este implementat pe partea serverului folosind un model, astfel încât aceste legături sunt dezactivate) și modifică vitezele/accelerațiile la mutarea glisoarelor Viteză și Accelerație.

Trimiteți-vă munca bună în baza de cunoștințe este simplu. Utilizați formularul de mai jos

Studenții, studenții absolvenți, tinerii oameni de știință care folosesc baza de cunoștințe în studiile și munca lor vă vor fi foarte recunoscători.

Postat pe http://www.allbest.ru/

Dezvoltarea unui sistem de control de la distanță pentru un robot educațional

Introducere

microprocesor program utilizator robotică

Robotica este una dintre domeniile cu cea mai dinamică dezvoltare în prezent. Vedem cum roboții cuceresc treptat toate sferele vieții - producție, medicină, agricultură etc. În viitorul apropiat, roboții vor deveni o parte integrantă a vieții de zi cu zi. Prin urmare, este nevoie de specialiști cu competențe în domeniul roboticii și mecatronicii. La rândul lor, pentru a pregăti viitorii specialiști, sunt necesari roboți educaționali, asupra cărora se va putea îmbunătăți cunoștințele acestora.

Este uimitor cât de repede se dezvoltă tehnologia în timpul nostru; se pare că ritmul dezvoltării lor este deja dificil de urmărit. Telefoanele mobile sunt unul dintre exemplele izbitoare; astăzi fiecare persoană le are. Mai mult, ei au devenit o parte integrantă a societății noastre. Există telefoane cu un set minim de funcții și există unele „avansate” cu funcții comparabile cu un computer personal.

Telefoanele mobile înlocuiesc parțial multe dispozitive, cum ar fi o cameră, un computer, un e-reader etc. Merită să vă gândiți „de ce să nu controlați unele dispozitive simple folosind telefonul?” Nu se recomandă înlocuirea întregului dispozitiv, ci doar a unora dintre telecomenzi. Acest lucru va simplifica controlul diferitelor dispozitive din viața de zi cu zi a unei persoane. De exemplu, un telefon cu funcție Bluetooth poate înlocui toate telecomenzile pentru aparatele electrocasnice, care sunt atât de des pierdute.

Această problemă actuală va fi rezolvată datorită unui dispozitiv similar dezvoltat în acest proiect, a cărui idee principală și scopul este de a crea un sistem de control de la distanță pentru un robot educațional printr-un canal de comunicare Bluetooth.

Bluetooth este cel mai comun canal de comunicare în acest moment. Este disponibil pe aproape toate telefoanele și este foarte ușor de utilizat. Bluetooth sau bluetooth este o specificație de producție pentru rețelele personale fără fir. Bluetooth asigură schimbul de informații între dispozitive precum computere personale, telefoane mobile, imprimante, camere digitale, șoareci, tastaturi, joystick-uri, căști, căști. Bluetooth permite acestor dispozitive să comunice atunci când se află pe o rază de până la 200 de metri unul de celălalt (raza variază foarte mult în funcție de obstacole și interferențe), chiar și în camere diferite.

Cuvântul Bluetooth este tradus din daneză prin „dinți albaștri”. Această poreclă a fost purtată de regele Harald I, care a condus Danemarca și o parte a Norvegiei în secolul al X-lea și a unit triburile daneze în război într-un singur regat. Implicația este că Bluetooth face același lucru cu protocoalele de comunicație, combinându-le într-un singur standard universal.

În această lucrare, este dezvoltat un sistem de control de la distanță pentru un robot educațional. Robotul mobil educațional este construit pe baza unei mașini controlate radio. Și controlul de la distanță se realizează prin canalul de comunicare Bluetooth. Dispozitivul de transmisie a semnalului era un telefon cu capacitatea de a transmite informații prin Bluetooth, iar dispozitivul receptor era un modul Bluetooth instalat pe o placă în mașină.

Să definim ce este un robot. Robotul este un dispozitiv electromecanic, pneumatic, hidraulic sau o combinație a acestora, conceput pentru a efectua producția și alte operațiuni efectuate de obicei de oameni (uneori animale). Utilizarea roboților face posibilă facilitarea sau chiar înlocuirea muncii umane.

Odată cu dezvoltarea roboticii, au apărut 3 tipuri de roboți:

Cu un program strict de acțiune;

Controlat de un operator uman;

Cu inteligență artificială, acționând intenționat fără intervenția umană.

Între timp, un robot nu este atât un hibrid între o mașină și o creatură vie, cât un mecanism automat care efectuează o activitate specifică, neobișnuită pentru alte tipuri de mașini. De exemplu, o macara este o mașină pentru ridicarea sarcinilor la o înălțime, un computer este o mașină electronică de calcul. O macara controlată de computer poate fi deja numită robot.

Când vorbim despre roboți, adesea ne întrebăm cât de inteligenți sunt aceștia și dacă, prin urmare, pot reprezenta un pericol sau un beneficiu pentru oameni. Un subiect interesant, deși ar trebui să vorbim aici nu despre roboți, ci despre computerele care le controlează acțiunile. Robotul în sine este doar un set de actuatoare. Comenzile de mișcare sunt date actuatoarelor de către un computer, în acest caz un telefon.

Pentru atingerea scopului proiectului, au fost stabilite și rezolvate următoarele sarcini:

1) Elaborarea unei scheme bloc a unui dispozitiv de control. Este în curs de dezvoltare o diagramă bloc a funcționării unui robot educațional mobil cu un sistem de control de la distanță.

2) Dezvoltarea unui dispozitiv de control cu ​​microprocesor pentru motoarele de curent continuu. Se elaborează o schemă de circuit electric - selecție de motoare, microcontroler, interfață de comunicare. Se calculează schema circuitului electric și se dezvoltă o placă de circuit imprimat și un desen de ansamblu.

3) Dezvoltarea unui algoritm și program pentru dispozitivul de control;

1 . Elaborarea unei scheme bloc a unui dispozitiv de control

Diagrama bloc a sistemului

Cu ajutorul software-ului instalat pe telefon, semnalele sunt generate și transmise către dispozitivul receptor, în acest caz este vorba de un modul Bluetooth.

Modulul Bluetooth, la rândul său, primește semnale și, fără procesare, le transmite elementului principal de control - microcontrolerul.

Primind informații, microcontrolerul le procesează și generează semnale de control pentru driverul de control. Și prin driverul de control, motoarele de curent continuu sunt furnizate cu tensiune pentru funcționarea acestora.

2 . Dezvoltarea unui dispozitiv de control cu ​​microprocesor pentru motoarele de curent continuu

În această secțiune, se realizează dezvoltarea unei scheme de circuit electric - alegerea motoarelor, microcontrolerului, interfeței de comunicare. Se calculează schema circuitului electric și se dezvoltă o placă de circuit imprimat și un desen de ansamblu.

Elaborarea unei scheme de circuit electric

Alegerea motorului

Ca obiect de control în această lucrare, am selectat motoare instalate într-o mașină radiocontrolată achiziționată special pentru această lucrare.

Alegerea unui microcontroler

Microcontrolerul Atmega8 de la Atmel a fost ales ca element principal pentru recepția și procesarea semnalelor (vezi Anexa B). Microcontrolerul are porturi UART și 3 cronometre, ceea ce este necesar pentru această lucrare.

Procesoarele digitale de semnal Atmel sunt utilizate pe scară largă deoarece au un preț accesibil și un set suficient de periferice.

Selectarea unui microcircuit și a unei interfețe de comunicare

Pentru a controla motoarele, a existat o alegere între driverele L298N și L293D. Dar alegerea s-a stabilit pe driverul L298N. Funcționează pe o gamă mai largă de tensiune și, prin urmare, nu există riscul supraîncălzirii cipulului. De asemenea, este ușor accesibil și are o gamă completă de funcții necesare pentru a face treaba.

Interfața UART este selectată ca interfață de comunicare cu computerul în acest proiect. Această interfață nu a fost aleasă întâmplător, deoarece pentru transferul de date este folosit un modul Bluetooth, care la rândul său folosește interfața UART. Un alt avantaj este viteza sa bună de transfer de date - 9600 Kbps.

Calculul puterii mecanice.

Greutatea modelului este de 0,7 kg, viteza maximă este de 1 m/s cu diametrul roții de 30 mm.

Să calculăm accelerația:

Cuplul se calculează după cum urmează:

În momentul de inerție și accelerație unghiulară b =

Pentru a calcula puterea maximă a motorului, se utilizează turația motorului, exprimată în rotații pe minut:

Puterea motorului este proporțională cu cuplul și viteza:

Calculul schemei circuitului electric

Selectarea unui driver de control al puterii.

În această lucrare folosim driverul L298N cu următoarele caracteristici:

Tensiune maximă de funcționare: Upit< Uдрайвера=46 В;

Tensiune de alimentare U alimentare =+5 V, +3,3 V;

Curent maxim de ieșire (pe canal): Ipit< Iдрайвера=2 А:

Calculul rezistențelor.

Pinul Reset al microcontrolerului, conform documentației tehnice, este recomandat să fie conectat la sursa de alimentare printr-un rezistor pull-up cu o valoare nominală de 10 kOhm.

Rezistoarele pentru conectarea microcontrolerului și a modulului Bluetooth sunt instalate pe baza documentației tehnice a modulului: tensiune de funcționare 3,3 V; atunci când lucrați cu o tensiune de 5 V, instalați rezistențe cu o valoare nominală de 4,7 kOhm.

Pentru o funcționare stabilă și pentru a evita arderea LED-ului, este necesar ca curentul care curge în circuit să corespundă nominalului (10 sau 20 miliamperi), pentru aceasta instalăm un rezistor cu o rezistență de 1 kOhm.

Calculul condensatorilor.

Pentru a stabiliza tensiunea provenită de la sursa de alimentare, condensatoare cu o capacitate de 30 μF și 100 μF au fost conectate în paralel.

Se știe deja că modulul Bluetooth funcționează la o tensiune de 3,3 V; se dovedește că tensiunea de funcționare în cipul de 5 V va fi excesivă, ceea ce poate duce la arderea modulului. Prin urmare, pentru a reduce tensiunea este necesar să conectați stabilizatorul L78L33. Pe baza documentației sale tehnice, vor fi necesari 2 condensatoare cu o capacitate de 0,33 μF și 0,1 μF. Schema de conectare este prezentată în figură.

Schema de conectare a stabilizatorului L78L33

Design PCB

Dezvoltarea designului dispozitivului se realizează pe baza schemei de circuit electric dezvoltate, ținând cont de cerințele de întreținere, de cerințele estetice tehnice, luând în considerare condițiile de funcționare și alte cerințe.

Când proiectați un PCB, trebuie luate în considerare următoarele.

Dacă nu există restricții, placa de circuit imprimat (PCB) trebuie să fie pătrată sau dreptunghiulară. Dimensiunea maximă a oricărei laturi nu trebuie să depășească 520 mm. Grosimea PP trebuie să corespundă unuia dintre numerele din serie: 0,8; 1,0; 1,5; 2.0 în funcție de zona PP.

Centrele găurilor ar trebui să fie situate la nodurile grilei de coordonate. Fiecare orificiu de montaj și orificiu de trecere trebuie acoperit cu un suport de contact.

Diametrul orificiilor de montare și diametrele cablurilor de microcircuit variază de la 0,8...1,2 mm, iar diametrele cablurilor de rezistență variază de la aproximativ 0,66 mm. Pentru a simplifica procesul de fabricație, orificiile de montare de pe placă au un diametru de 0,8 și 1,2 mm. Pasul grilei este de 1,27 mm.

Lipiți elementele cu lipire POS-61. Materialul plăcii este folie din fibră de sticlă STEF 2-1,5-50 conform GOST 10316-86.

Elaborarea unui desen de ansamblu

La elaborarea unui desen de ansamblu, trebuie acordată atenție următoarelor cerințe:

1) elaborarea unui desen de ansamblu al unui dispozitiv de control al motorului de curent continuu se realizează pe baza schemei de circuit dezvoltate, ținând cont de cerințele pentru documentele de desen;

2) în conformitate cu schema de împărțire a produsului în părți componente, atribuiți o denumire unității de asamblare și elementelor acesteia în conformitate cu GOST 2.201-68;

3) introduceți dimensiunile necesare în conformitate cu cerințele GOST 2.109-73;

4) completați specificația, îndeplinind toate cerințele GOST 2.108-68;

5) completați inscripția principală și completați celelalte inscripții necesare (cerințe tehnice etc.).

3 . Dezvoltarea unui algoritm și program pentru un dispozitiv de control

În această secțiune, dezvoltăm un algoritm pentru un dispozitiv de control cu ​​microprocesor pentru motoarele de curent continuu, precum și dezvoltăm un program de control pentru un telefon.

Dezvoltarea unui algoritm pentru un dispozitiv de control cu ​​microprocesor pentru motoarele de curent continuu.

Figura 3 prezintă o diagramă a algoritmului de operare al dispozitivului de control cu ​​microprocesor.

Valori ale octetilor transmisi:

10:00 - Oprire; 01 - Atacant; 10 - Spate; 11 - Opriți.

23:00 - Oprire; 01 - Dreapta; 10 - Stânga; 11 - Opriți.

Dezvoltarea programelor.

Dezvoltarea unui program de control pentru motoarele de curent continuu.

Acest program este necesar pentru a controla motoarele de curent continuu. Microcontrolerul este controlat de un program de pe telefon.

Program de control al motorului de curent continuu folosind microcontrolerul ATmega8 (vezi Anexa A).

Dezvoltarea unui program pentru telefon.

Pentru a rula acest program, trebuie să aveți instalat pe computer Windows 98/2000/ME/XP. Acest program a fost dezvoltat în mediul Android SDK.

Următoarele spații de nume sunt folosite pentru lucru:

import java.io.IOException;

import java.io. OutputStream;

import java.util. Listă;

import java.util.UUID;

import android.app. Activitate;

import android.app. AlertDialog;

import android.app. ProgressDialog;

import android.bluetooth. adaptor Bluetooth;

import android.bluetooth. Dispozitiv Bluetooth;

import android.bluetooth. Priză Bluetooth;

import android.content. Context;

import android.content. DialogInterface;

import android.content. Intenție;

import android.content. DialogInterface. OnClickListener;

import android.hardware. Senzor;

import android.hardware. SensorEvent;

import android.hardware. SensorEventListener;

import android.hardware. SensorManager;

import android.net. Uri;

import android.os. Pachet;

import android.os. Manipulator;

import android.os. Mesaj;

import android.view. LayoutInflater;

import android.view. Meniul;

import android.view. MenuInflater;

import android.view. Articol din meniu;

import android.view. MotionEvent;

import android.view. Vedere;

import android.widget. Buton;

import android.widget. TextView;

import android.widget. Paine prajita;

Scopul și condițiile de utilizare ale programului.

Programul este conceput pentru a genera și transmite semnale către un dispozitiv cu microprocesor.

Pentru a rula acest program, trebuie să aveți un dispozitiv cu sistemul de operare Android de orice versiune. Acest program a fost dezvoltat în mediul Android SDK.

Acces la program

Înainte de a începe programul, trebuie să conectați alimentarea la dispozitivul cu microprocesor și să așteptați ca LED-ul să clipească, ceea ce înseamnă că este gata de lucru.

Pentru a porni programul, trebuie să activați Bluetooth pe dispozitiv și să lansați aplicația „BluCar”. Folosind butonul „Conectați-vă la un dispozitiv”, stabiliți o conexiune cu modulul Bluetooth („linvor”). După ce LED-ul nu mai clipește, puteți începe transferul de date.

4. Manualul utilizatorului

Pentru a verifica funcționalitatea robotului mobil educațional, aveți nevoie de următoarele:

Porniți alimentarea robotului mobil educațional folosind butonul prezentat în figură.

Butonul de pornire

Așteptați să clipească cele două LED-uri prezentate în Figura 5. Primul (alb) este instalat pe circuit, clipind la fiecare secundă, indicând faptul că circuitul are putere și este gata de funcționare. Al doilea LED este situat pe modulul Bluetooth și are 2 moduri de funcționare:

Clipește: se așteaptă conexiunea;

Lumină continuă: indică conexiunea.

Stare de funcționare LED

Apoi, porniți Bluetooth pe telefon și lansați programul „BluCar” prezentat în Figura 6. În program, faceți clic pe butonul „Conectați-vă de la dispozitiv”, iar din lista furnizată selectați linvor, care este modulul Bluetooth. Așteptăm până când LED-ul de pe modul începe să se aprindă constant, ceea ce înseamnă o conexiune reușită. Robotul mobil educațional cu sistem de control de la distanță este gata de lucru.

Program pe telefon „BluCar”

Metode de control:

Butonul „Înainte” - deplasare înainte;

Butonul „Reverse” - deplasați-vă înapoi;

Rotirea telefonului pe un plan orizontal cu marginea dreaptă în jos - rotirea roților din față spre dreapta;

Rotirea telefonului pe un plan orizontal cu marginea din stânga în jos - rotirea roților din față spre stânga;

Pentru a opri robotul mobil, trebuie să opriți alimentarea circuitului și să faceți clic pe butonul „Deconectare de la dispozitiv” din program.

Concluzie

În urma finalizării unei lucrări finale de licență de calificare pe tema: „Dezvoltarea unui sistem de control de la distanță pentru un robot educațional”, a fost produs și creat un sistem de control de la distanță pentru un robot educațional printr-un canal de comunicare Bluetooth. Un robot educațional este o mașină cu două motoare de curent continuu și o baterie. Dispozitivul de transmisie a semnalului era un telefon cu capacitatea de a transmite informații prin Bluetooth, iar dispozitivul receptor era un modul Bluetooth instalat pe o placă în mașină.

Problema practică luată în considerare în proiect oferă o idee clară a semnificației dispozitivului prezentat. Acest dispozitiv va putea rezolva probleme cotidiene foarte presante, cum ar fi controlul tuturor aparatelor electrocasnice de pe telefon și multe altele.

Sistemul de control de la distanță creat este realizat folosind un microcontroler. Microcontrolerele sunt mult mai bune decât predecesorii lor. Au dimensiuni mult mai mici și au o productivitate mai mare și, de asemenea, accelerează semnificativ sarcina care le este atribuită. În această lucrare, un microcontroler este utilizat pentru a procesa semnalele care vin de la telefon. De asemenea, este responsabil pentru generarea de semnale pentru conducătorul motorului, ceea ce face ca motoarele să se rotească direct. Microcontrolerul este instalat într-un circuit, care, la rândul său, este instalat în mașină și conectat la motoare.

Concluziile de mai sus sunt extrase din prima parte (teoretică). A fost creată o diagramă bloc.

Al doilea capitol descrie modul în care a fost dezvoltat un dispozitiv bazat pe microprocesor pentru controlul de la distanță al motoarelor de curent continuu.

În al treilea capitol a fost creat un algoritm și un program telefonic pentru vizualizarea controlului motoarelor de curent continuu.

În urma acestei lucrări, toate scopurile și obiectivele stabilite au fost atinse cu succes. În procesul de realizare a lucrării, s-au consolidat abilitățile în dezvoltarea circuitelor electrice, calculele acestora și amenajarea acestora. De asemenea, în timpul lucrului, abilitățile de programare a microcontrolerelor au fost îmbunătățite și s-a acumulat experiență de programare în mediul Android.

Bibliografie

1. Semenov B.Yu. Electronică de putere pentru amatori și profesioniști - M.: Solon-R, 2001. -126 p.

2. Lauren Darcy, Shane Conder: Android în 24 de ore. Aplicații de programare pentru sistemul de operare Google. Ed. Reed Group, 2011

3. Kasatkin A.S. Inginerie electrică: manual. manual pentru universități. a 4-a ed. - M.: Energoatomizdat, 1983. -440 p., ill.

4. Evstifeev A.V.: microcontrolere AVR din familiile Tiny și Mega de la ATMEL. Editura „Dodeka-XXI”, 2008. - 558 p.

5. Romanycheva E.T. Elaborarea și execuția documentației de proiectare pentru echipamente radio-electronice. / Director. M.: Radio și comunicare, 1989. - 448 p.

6. Sivukhin D.V. Curs general de fizică: T.1. Mecanică: manual pentru specializările în fizică la universități. - M.: Nauka, 1974. - 520 p.

7. Horwitz P., Hill W. The Art of Circuit Design. În 3 volume. Pe. din engleza - M.: Mir, 1993.

8. Atmel, microcontroler pe 8 biți cu 16K octeți Flash programabil în sistem Atmega16 - Fișă de date.

9. L298 - Driver Dual Full-Bridge - Fișă de date.

10. SERIA L78L00 - Regulatoare de tensiune pozitive - Fișă tehnică.

11. Bluetooth Serial Converter UART Interface 9600bps Ghidul utilizatorului - Fișă de date

12. Wikipedia: Enciclopedia liberă. 2012. URL: http://ru.wikipedia.org. (Data accesului: 20.05.2012).

Postat pe Allbest.ru

...

Documente similare

    Dezvoltarea unei scheme bloc a unui dispozitiv de control pentru un robot educațional. Selectarea unui motor, microcontroler, microcircuit, interfață de comunicare și stabilizator. Calculul schemei circuitului electric. Elaborarea unui desen de ansamblu al dispozitivului și al algoritmului programului.

    lucrare curs, adaugat 24.06.2013

    Dezvoltarea unei scheme de circuit a unui dispozitiv de control al motoarelor de curent continuu bazat pe microprocesor bazat pe controlerul ATmega 128. Dezvoltarea unui pachet de subrutine in limbajul Asamblator in scopul reglarii si functionarii corecte a dispozitivului.

    lucrare de curs, adăugată 14.01.2011

    Caracteristicile dispozitivului și datele tehnologice ale robotului industrial SM40TS. Descrierea setului de microprocesoare din seria U83-K1883, sistemul său de comandă, microcircuitul K572PV4, funcțional, schemele de circuit și algoritmul de funcționare al programului de control.

    lucru curs, adăugat 06/02/2010

    Dezvoltarea unui dispozitiv cu microprocesor de control care implementează o interacțiune specificată cu obiectul de control, caracteristicile hardware și software. Software de sistem care asigură executarea unui anumit algoritm de control.

    lucrare de curs, adăugată 25.10.2009

    Scopul, clasificarea și componența sistemului de control acces. Principalele caracteristici ale mijloacelor biometrice de identificare personală. Identificarea utilizatorului prin iris. Dezvoltarea unui algoritm pentru funcționarea dispozitivului.

    teză, adăugată 25.11.2014

    Analiza sistemelor existente pentru crearea și administrarea site-urilor web, caracteristicile generale ale acestora și evaluarea funcționalității în stadiul actual. Cerințe pentru partea de server, mijloace de dezvoltare a acesteia. Testarea interfeței. Crearea unui manual de utilizare.

    teză, adăugată 04.11.2012

    Relevanța sarcinii. Elaborarea unei scheme funcționale a dispozitivului. Instalare radar (RLU). Partea cu microprocesor. Justificarea algoritmului de funcționare a dispozitivului. Dezvoltarea unui program de control al dispozitivelor. Diagrama algoritmului. Explicații pentru program.

    lucrare de curs, adaugat 18.10.2007

    Analiza specificațiilor tehnice. Dezvoltarea interfeței programului și a algoritmilor acesteia. Codarea și testarea software-ului dezvoltat, evaluând eficacitatea practică și funcționalitatea acestuia. Formarea și conținutul manualului de utilizare.

    lucrare de curs, adăugată 31.07.2012

    Tehnologii moderne de luptă. Robotic înseamnă în sfera militară. Proiectare de vehicule aeriene fără pilot, roboți de uscat și maritim. Dezvoltarea unui program în Prolog pentru a îndeplini sarcina de deminare a unui robot deminator militar.

    lucrare curs, adaugat 20.12.2015

    Proiectarea unui dispozitiv cu microprocesor care convertește interfața RS-232 (port COM) în IEEE 1284 (port LPT). Schema bloc a dispozitivului. Conversia unei interfețe seriale într-o interfață paralelă pe un microcontroler ATMega 8.