SPECIALIZAREA: SISTEME DE CONTROL ÎNCORPORATE LUCRARE DE DISERTAȚIE Navigarea autonom ă pentru o platform ă robotic ă mobil ă cu ro ți Mecanum… [610313]

UNIVERSITATEA TEHNICĂ “GHEORGHE ASACHI” DIN
IAȘI
FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE
DOMENIUL INGINERIA SISTEMELOR
SPECIALIZAREA: SISTEME DE CONTROL ÎNCORPORATE

LUCRARE DE DISERTAȚIE
Navigarea autonom ă pentru o platform ă robotic ă
mobil ă cu ro ți Mecanum

COORDONATOR,
Șef lucr. dr. ing. Cătălin Brăescu

AUTOR ,
Potjen Petru Adrian

Iași

2020

2

3
CUPRINS
Capitolul 1. Introducere ………………………….. ………………………….. …………………………. 4
Prezentare generală (Noțiuni, Aplicabilitate în diverse domenii) …………….. 4
Capitolul 2. Aplicații in timp real pentru sisteme încorporate ………………………….. ….. 7
Sistemele încorporate ………………………….. ………………………….. ……………….. 7
Sistemele încorporate în timp real ………………………….. ………………………….. . 9
Roboții autonomi ………………………….. ………………………….. ……………………. 10
Capitolul 3. Platformele de dezvoltare folosite in proiect ………………………….. ……… 12
Platforma de dezvoltare STM32F103RC ………………………….. ……………….. 12
3.1.1. Descrierea platformei ………………………….. ………………………….. …………… 12
3.1.2. Diagrama bloc a microcontrolerului STM32F103RC ( Figura 8 ) ………… 13
Platforma de dezvoltare STM32F3Discovery ………………………….. …………. 14
3.2.1. Descrierea platformei ………………………….. ………………………….. …………… 14
3.2.2. Diagrama bloc ( Figura 9: Diagrama Bloc STM32F3Discovery) ………… 15
Echipamente folosite in cadrul proiectului ………………………….. ……………… 16
3.3.1. Senzori de proximitate (Pololu – 2476 Figura 10 ) ………………………….. … 16
3.3.2. Bluetooth HC – 06 (Figura 12 ) ………………………….. ………………………….. 17
3.3.3. Platforma mobilă ( Figura 14: Platforma mobil ) ………………………….. …… 18
Capitolul 4. Structura Proiectului ………………………….. ………………………….. ………….. 20
Prezentarea aplicației ………………………….. ………………………….. ………………. 20
4.1.1. Mediul de dezvoltare Eclipse ………………………….. ………………………….. … 20
4.1.2. Mediul de de zvoltare CubeMx ………………………….. ………………………….. . 20
4.1.3. Comunicarea între cele 2 plăci de dezvoltare ………………………….. ………. 22
4.1.4. Realizarea unei aplicații android pentru controlul de la distanță …………. 26
4.1.5. Algoritm de detecție a obstacolelor și conducerea autonomă ……………… 30
Arhitectura sistem ………………………….. ………………………….. ………………….. 34
4.2.1. Diagrama bloc a proiectului ………………………….. ………………………….. ….. 34
Arhitectura software ………………………….. ………………………….. ……………….. 35
4.3.1. Descrierea modulelor software folosite în proiect ………………………….. … 35
4.3.2. Configurarea perifericelor ………………………….. ………………………….. …….. 36
Capitolul 5. Concluzii ………………………….. ………………………….. ………………………….. 40
Rezultate obținute în urma testelor ………………………….. ………………………… 40
Oportunități de îmbunătățire ………………………….. ………………………….. ……. 41
Concluzii în urm a realizării proiectului ………………………….. …………………. 41
Bibliografie ………………………….. ………………………….. ………………………….. ………………. 42

4 Capitolul 1. Introducere
Prezentare general ă (Noțiuni, Aplicabilitate în diverse domenii)

Robotica este o ramură a ingineriei care implică concepția, proiectarea, fabricarea și
operarea roboților. Acest domeniu se suprapune ingineriei computerelor, informaticii (în
special a inteligenței artificiale), electronică, mecatronică, mecanică, nanotehnologie și
bioinginerie. Denumirea de robot a fost introdus ă pentru prima oar ă de către Karel Čapek în
anul 1921 în lucrarea sa " Roboții universali ai lui Rossum", în 1921 plecând de la cuvântul
ROBOTA, munca, activitate de rutin ă, preluat de către Isaac Asimov, în povestirea științifico –
fantastică "Fuga în cerc" (1941).
Robotica implică proiectarea, construcția, op erarea și utiliza rea roboților. Scopul
roboticii este de a proiecta mașini int eligente care pot ajuta oamenii în viața lor de zi cu zi și
să-i păstreze pe toți în siguranță.
Robotica se bazează pe realizarea tehnicii informației, a ingineriei computerelor, a
ingineriei me canice, a ingineriei electronice și altele.
Roboții pot fi folosiți în multe situații și în multe scopuri, dar astăzi mulți sunt folosiți
în medii periculoase (inclusiv inspecția materialelor radioactive, detectarea și dezactivarea
bombelor), procese de fa bricație sau unde oamenii nu pot supraviețui (de exemplu, în spațiu,
sub apă, în mare căldură, curățare și reținere de materiale periculoase și radiații).
Cele mai importante clase d e roboți multifuncționali sunt manipulatorii și
roboții mobili . Un robot d e manipulare este o mașină automată (staționară sau mobilă) constând
dintr -un dispozitiv de acționare sub forma unui manipulator având mai multe grade de
mobilitate și un dispozitiv de comandă programat care servește la îndeplinirea funcțiilor de
motor și de control în procesul de producție. Un robot mobil este o mașină automată în care
există un șasiu în mișcare cu unități controlate automat.
Robotică are aplicabilitate în diferite domenii, cum ar fi:
a) Medicină
 Surgiscope este un robot paralel (tip DELTA) utilizat pentru poziționarea
de mare precizie a instrumentelor în timpul operațiilor ;
 Sistemul robotic da Vinci (Figura 1: Robot da Vinci );
 Brațul robotic AESOP folosit pentru ghidarea camerelor de luat vederi în
interiorul corpului .

5
Figura 1: Robot da Vinci

b) Agricultură
 RIPPA pentru udarea unu i loc (Figura 2: Rippa Robot );
 SwagBot pentru monitorizarea animalelor ;
 Digital Farmhand pentru udare și plantarea semințelor .

Figura 2: Rippa Robot
c) Armata
 PackBot au fost folosiți pentru căutarea persoanelor sau a echipamentelor
în dezastre (evenimentul World Trade Center) ;
 MQ-9 Reaper (Figura 3: MQ-9 Reaper Robot ) reprezintă o drone controlată
de la distanță folosită de armata Statelor unite ;
 DRDO Daksh este un robot folosit pentru recuperarea și dezamorsarea
bombelor .

6
Figura 3: MQ-9 Reaper Robot

Componentele folosite, de obicei în construc ția unui robot sunt:
 Sursa de tensiune (ex: Energie Solar ă (Figura 4), Gaz e comprimate, etc.);
 Actuat ori;
 Motare electrice;
 Senzori;
 Gripperi mecanici (Figura 5);
 Air muscle (Figura 6);
 Motoare piezo , etc.

Figura 4: Robot alimentat cu energie solara
Figura 6:
Un picior robotizat alimentat de Air
Muscle
Figura 5: Gripper Mecanic

7 Capitolul 2. Aplicații in timp real pentru sisteme
încorporate

Sistemele încorporate

Un sistem este un aranjament în care toate unitățile sale de asamblare lucrează împreună
conform unui set de reguli. Poate fi definit și ca un mod de lucru, de organizare sau de
îndeplinire a uneia sau a mai multor sarcini, conform unui plan fix. De exemplu, un ceas este
un sistem de afișare a timpului. Componentele sale respectă un set de reguli pentru a afișa
timpul. Dacă una dintre părțile sale eșuează, ceasul nu va mai funcționa. Deci, putem spune,
într-un sistem, toate subcomponentele sale depind unele de altele.

Un sistem încorporat poate fi gândit ca un sistem hardware computer cu software
încorporat în e l. Un sistem încorporat poate fi un sistem independent sau poate face parte dintr –
un sistem mare. Un sistem încorporat este un sistem bazat pe micro controler sau microprocesor
care este proiectat pentru a îndeplini o sarcină specifică. De exemplu, o alarmă de incendiu este
un sistem încorporat , nu va simți decât fum.

Un sistem încorporat are trei componente:
 Are hardware.
 Are software pentru aplicații.
 Are un sistem de operare în timp real (RTOS) care supraveghează software -ul
aplicației și furnizează un m ecanism care permite procesorului să ruleze un
proces conform planificării, urmând un plan de control al latențelor. RTOS
definește modul în care funcționează sistemul. Stabilește regulile în timpul
executării programului de aplicare. Este posibil ca un si stem încorporat la scară
mică să nu aibă RTOS.
Caracteristicile unui sistem încorporat:
 Funcționare unică – Un sistem încorporat efectuează de obicei o operație
specializată și face același lucru în mod repetat. De exemplu: un pager
funcționează întotdeaun a ca un pager.
 Strâns constrâns – Toate sistemele de calcul au restricții asupra valorilor de
proiectare, dar cele de pe un sistem încorporat pot fi deosebit de strânse. Metrica
de proiectare este o măsură a caracteristicilor unei implementări, cum ar fi

8 costul, dimensiunea, puterea și performanța acesteia. Trebuie să aibă o
dimensiune pentru a se potrivi pe un singur cip, trebuie să funcționeze suficient
de rapid pentru a prelucra datele în timp real și a consuma energie minimă pentru
a prelungi durata de viață a bateriei.
 Reactiv și în timp real – Multe sisteme încorporate trebuie să reacționeze
continuu la schimbările din mediul sistemului și trebuie să calculeze anumite
rezultate în timp real fără întârziere. Luați în considerare un exemplu de
regulator de croazieră auto; monitorizează continuu și reacționează la senzorii
de viteză și frână. Trebuie să calculeze în mod repetat accelerarea sau
decelerațiile într -un timp limitat; un calcul întârziat poate duce la eșecul
controlului mașinii.
 Bazat pe microprocesoare – Trebuie să fie bazat pe microprocesor sau
microcontroler.
 Memorie – Trebuie să aibă o memorie, deoarece software -ul său de obicei este
inclus în ROM. Nu are nevoie de memorii secundare în computer.
 Conectat – Acesta trebuie să aibă perife rice conectate pentru a conecta
dispozitive de intrare și ieșire.
 Sisteme HW -SW – Software -ul este utilizat pentru mai multe caracteristici și
flexibilitate. Hardware -ul este utilizat pentru performanță și securitate.

Avantaje
 Ușor de personalizat ;
 Consum redus de putere ;
 Cost scăzut ;
 Performanță îmbunătățită .
Dezavantaje
 Efort mare de dezvoltare ;
 Timp mai mare pentru comercializare .

9 Un exemplu de structur ă de baz ă a unui sistem încorporat (Figura 7) poate ar ăta astfel:

Figura 7: Sistem încorporat

Senzor – Măsoară cantitatea fizică și o transformă într -un semnal electric care poate fi
citit de un observator sau de orice instrument electronic precum un convertor ADC. Un senzor
stochează cantitatea măsurată în memorie.
ADC – Un convertor analog -digital conv ertește semnalul analog trimis de senzor într –
un semnal digital.
Microcontroler – Procesoarele procesează datele pentru a măsura ieșirea și a le stoca
în memorie.
DAC – Un convertor digital -analog convertește datele digitale furnizate de procesor în
date a nalogice.
Actuator – Un actuator compară ieșirea dată de convertorul DAC cu ieșirea reală
(așteptată) stocată în acesta și stochează ieșirea aprobată.

Sistemele încorporate în timp real

Sistemele încorporate în timp real sunt acele sisteme care funcționează în limitele de
timp stricte și oferă o estimare a timpului pentru situații critice. Sistemele încorporate oferă o
funcție specifică într -un sistem mult mai mare. Când există o componentă încorporată într -un
sistem de timp real, aceasta este cunoscută ca un sistem încorporat în timp real.

10 Tipuri de sisteme încorporate în timp real:
Există în principal două tipuri de sisteme încorporate în timp real, adică Hard și Soft.
Hard:
Acest tip de sistem asigură că toate procesele critice sunt finalizate în intervalul de timp
dat. Aceasta înseamnă că toate întârzierile în sistem sunt limitate strict în timp. De asemenea,
nu există memorie secundară mică și datele sunt stocate în memoria pe termen scurt sau numai
în citire. Sistemele în timp real sunt folosite în diferite domenii, cum ar fi rachete, avioane etc.
Soft:
Acestea sunt mult mai puțin restrictive decât sistemele în timp real, dar premisa de bază
este aceeași, adică procesele critice trebuie să fie finaliz ate în intervalul de timp dat. Cu toate
acestea, acest interval de timp poate fi puțin flexibil. Sistemele soft în timp real sunt utilizate în
diverse domenii precum multimedia, proiecte științifice etc.

Aplicații ale sistemelor încorporate în timp real:
Există diferite aplicații ale sistemelor încorporate în timp real. Unele dintre acestea sunt:
 Sisteme de control pentru vehicule, nave, căi ferate, avioane etc.
 Telefoane, radio și comunicații prin satelit.
 Sisteme medicale pentru radioterapie, tratamente cardiace, monitorizare a
pacientului etc.
 Operațiuni militare, cum ar fi tragerea de rachete, baze de control militar etc.
 Sisteme cu inteligență artificială și robotică.
 Sisteme multimedia care oferă interfețe grafice, video, audio și text.
 Sisteme de control a clădirilor care gestionează căldura, ușile, ascensoarele etc.
 Operațiunile spațiale, cum ar fi lansarea și monitorizarea navelor spațiale,
controlul stațiilor spațiale etc.
Robo ții autonomi

Un robot autonom, cunoscut și ca simplu autorobot sau a utobot, este un robot care
îndeplinește comportamente sau sarcini cu un grad ridicat de autonomie (fără influență externă).
Robotica autonomă este de obicei considerată a fi un subcâmp al inteligenței artificiale, roboticii
și ingineriei informației.

11 Roboț ii autonomi sunt de dorit în special în domenii precum transportul spațial,
întreținerea gospodăriei (cum ar fi curățarea), tratarea apelor uzate și furnizarea de bunuri și
servicii.
Unii roboți moderni din fabrică sunt „autonomi” în limitele stricte ale m ediului lor
direct. Poate că nu există orice grad de libertate în mediul înconjurător, dar locul de muncă al
robotului din fabrică este dificil și poate conține adesea variabile haotice, neprevăzute. Trebuie
să se determine orientarea și poziția exactă a u rmătorului obiect de muncă și (în fabricile mai
avansate) chiar și tipul obiectului și sarcina necesară. Aceasta poate varia imprevizibil (cel puțin
din punctul de vedere al robotului).
Un domeniu important al cercetării în domeniul roboticii este acela de a permite
robotului să facă față mediului său, indiferent dacă acesta se află pe uscat, sub apă, în aer,
subteran sau în spațiu.
Un robot complet autonom poate:
 Obține informații despre mediu ;
 Lucra o perioadă îndelungată fără intervenție umană ;
 Deplasa i ntegral sau parțial în sine în întregul său mediu de operare fără asistență
umană ;
 Evita situațiile care sunt dăunătoare pentru oameni, proprietăți sau în sine, cu
excepția cazului în care acestea fac parte din specificațiile de proiectare .

12 Capitolul 3. Platformele de dezvoltare folosite in proiect
Platforma de dezvoltare STM32F103 RC
3.1.1. Descrierea platformei

STM32F103xC încorporează nucleul cu arhitectura RISC de înaltă performanță ARM
Cortex -M3 pe 32 de biți care funcționează la o frecvență de 72 MHz, memorii încorporate de
mare viteză (memorie flash de până la 512 Kbytes și SRAM până la 64 Kbyte) și o gamă extinsă
de I/O și periferice îmbunătățite conectate la două bus -uri APB. Toate dispozitivele oferă trei
ADC -uri de 12 biți, patru timere de 16 biți de uz g eneral plus două PWM, precum și interfețe
de comunicare standard și avansate: două I2C, trei SPI, două I2S, un SDIO, cinci USART -uri,
un USB și un CAN.
Familia STM32F103xC funcționează în domeniul de temperatură –40 până la +105°C,
de la o alimentare de 2, 0 până la 3,6V. Un set complet de moduri de economisire a energiei
permite proiectarea aplicațiilor cu consum redus de energie.
Aceste caracteristici fac ca familia de microcontrolere a liniei de înaltă performanță
STM32F103xC să fie potrivită pentru o gam ă largă de aplicații, cum ar fi unități de motoare,
control de aplicații, echipamente medicale și de mână, periferice pentru PC și jocuri, platforme
GPS, aplicații industriale, automate automate, invertoare , imprimante, scanere, interfon video
cu sisteme de alarmă și HVAC.

13 3.1.2. Diagrama bloc a microcontrolerului STM32F103RC (Figura 8:
Diagrama Bloc STM32F103RC )

Figura 8: Diagrama Bloc STM32F103RC

14
Platforma de dezvoltare STM32F3Discovery
3.2.1. Descrierea platformei

Platforma STM32F3DISCOVERY încorporează un microcontroler bazat pe
STM32F303VCT ARM cu 256 Kbytes de memorie FLASH, 48 Kbytes de RAM. Platforma
mai conține un ST -LINK V2 pentru diferite versiu ne de PCB, cum ar fi versiunea A/B, iar
pentru ver siunea C sau mai noi cuprinde un ST -LINK V2 -B.
Funcțiile USB ST -LINK cuprinde un port de debug, un port de COM virtual doar cu
versiunea ST -LINK V2 -B și mass storage.
Sursele de alimentare pentru platform ă pot fi făcute prin magistrala USB sau de la o
alimentare externă de 3V sau 5V.
Platforma mai cuprinde și un senzor de mișcare L3GD20 cu giroscop de ieșire digitală
cu 3 axe, zece LED -uri de diferite culori dintre care unul este aprins la alimentare, unul este
activat când se realizează comunicarea prin USB, iar restul de 8 led -uri sunt folosite pentru
aplicațiile care urmează să fie dezvoltate. Platforma mai cuprinde două butoane, unul de
utilizator și unul de resetare, un USB de user cu conector MINI -B.

15 3.2.2. Diagrama bloc (Figura 9: Diagrama Bloc STM32F3Discovery )

Figura 9: Diagrama Bloc STM32F3Discovery

16
Echipamente folosite in cadrul proiectului
3.3.1. Senzori de proximitate (Polo lu – 2476 Figura 10)

Figura 10: Sensor Sharp Pololu – 2476

Senzorul de distanță Polulu – 2476 oferă o gamă largă de detectare de 10 cm până la 150
cm și o rată mare de actualizare de 60 Hz. Distanța este indicată printr -o tensiune analogică,
deci o singură intrare analogică este necesară pentru a interfața cu modu lul. Senzorul este
configurat și poate fi alimentat la 3,3V.

Diagrama senzorului (Figura 11: Diagrama Senzorului Pololu – 2576 ) este următoarea :

Figura 11: Diagrama Senzorului Pololu – 2576

17 3.3.2. Bluetooth HC – 06 (Figur a 12)

Figur a 12: Bluetooth HC -06

Modulul serial Bluetooth este utilizat pentru conversia portului serial în Bluetooth.
Acest modul are două moduri: dispozitivul master și slave.
Modulul de operare Bluetooth nu are nevoie de unitate și poate comunica cu celălalt
dispozitiv Bluetooth care are serial, dar comunicarea între cele două module Bluetooth necesită
cel puțin două condiții: (1) Comunicarea trebuie să fie între master și slave (2) Parola trebuie
să fie corectă. Comunicare a se face pe serial RX și TX fără fir la 2,4 GHz. Are ca si pini de
conexiune VCC de 5V, RXD, TXD, GND.

Diagrama modulului bluetooth (Figura 13) este următoarea :

Figura 13: Diagrama modulului Bluetooth HC -06

18 3.3.3. Platforma mobil ă (Figura 14: Platforma mobil)

Platforma mobilă este în general construită în jurul microcontrolerului STM32F103RC,
și are în compoziția să următoarele componente. Un display OLED, o baterie de 22,2V pentru
alimentarea pl atformei, 4 motoare (Figura 15), 4 drivere de motoare, 4 roți de tip mecanum
(Figura 16) pentru deplasarea în lateral.

Figura 14: Platforma mobilă

Figura 15: Motor platformă mobilă Figura 16: Roata mecanum

19 Platforma mobil ă a fost dezvoltat ă în jurul STM32F103RC, precum și componentele ei
și codul surs ă. Platform a mobilă vine cu un cod surs ă dezvoltat de producător, ea având a cces
la diferite funcționalități precum control prin CAN, USART, Serial PS2.

Platforma mobil ă are 2 moduri de funcționare și anume:
 Speed Control Mode – Modul de control al vitezei de comandă ;
 Position Control Mode – Modul de control al poziției .

Platforma mobil ă are dou ă circuite care sunt dezvoltate în jurul STM32F103RC, un
modul de control care cuprinde STM32F103RC și respectiv modulul care face legătur a între
partea de control și partea de elemente de execuție.
Programarea platformei mobile se face cu ajutorul unui ST -link V2 ( Figura 17) care se
conectează la următorii pini:
 3,3V – tensiune de alimentare ;
 GND – masă;
 PA14 – SWCLK (semnal de ceas) ;
 PA13 – SWDIO (linia de date) .

Figura 17: ST-Link V2

20 Capitolul 4. Structura Proiectului
Prezentarea aplicației
4.1.1. Mediul de de zvoltare Eclipse

Dezvoltarea acestui proiect a fost posibilă cu un toolchain dezvoltat în jurul software –
ului Eclipse, el fiind un mediu de dezvoltare utilizat în programare. Conține un spațiu de lucru
de bază și un sistem extensibil de plug -inuri pentru personalizarea mediului. Mediile de
dezvoltare includ instrumentele de dezvoltare Eclipse Java (JDT) pentru Java și Scala, Eclipse
CDT pentru C / C ++ și Eclipse PDT pentru PHP, printre altele.
Acest mediu de dezvoltare permite adăugare, configurarea și instalarea compilatoarelor,
mediului de dezvoltarea CubeMx și a software -ului cu care dorim să putem programa cele 2
microcontrollere și anume ST -Link Utility, pe care dorim să le folosim în dezvolta rea
proiectului.
Compilatoarele folosite in dezvoltarea proiectului sunt:
 AC6 STM32 MCU GNU Compiler Collection

4.1.2. Mediul de dezvoltare CubeMx

STM32CubeMX este un instrument grafic care permite o configurare foarte ușoară a
microcontrolerelor și microprocesoarelor STM32, precum și generarea codului sursă de
inițializare corespunzător pentru microcontrolerul Arm Cortex -M.
Primul pas constă în sele ctarea microcontrolerului sau microprocesorului
STMicroelectronics STM32 care se potrivește cu setul necesar de periferice.
Pentru microprocesoare, cel de -al doilea pas permite configurarea GPIO -urilor și
configurarea ceasului pentru întregul sistem și atr ibuirea interactivă a perifericelor fie Arm
Cortex -M.
Pentru microcontrolerele și microprocesoarele Arm® Cortex® -M, al doilea pas constă
în configurarea fiecărui software încorporat necesar, datorită unui rezolvator de conflicte
pinout, unui ajutor de seta re a arborelui ceasului, unui calculator de consum de energie și a unei
utilități care configurează perifericele (cum ar fi GPIO sau USART) și stivele de tip middleware
(cum ar fi USB sau TCP / IP).

21 Layout -ul micr ocontrolerului ( Figur a 18) din CubeMX ofer ă configurarea pinilor sau
perifericelor foarte u șoară.

Figur a 18: Layout microcontroller

Rolul CubeMx este foarte important deoarece el pe lângă generarea fișierelor de
configurare, configurarea regi ștrilor și perifericelor, se face într -un mod mai sigur, dar și mai
ușor de înțeles, bineînțeles dac ă nu se dorește acest lucru, funcțiile se pot face și la m ână, dar
acest lucru implic ă și mai mu lt efort. Configurarea modulelor sau a perifericelor prin
intermediul acestui plug -in necesit ă de asemenea citirea datasheet -ului fiecărui microcontroler
STM32.
CubeMx permite de asemen ea configurarea frecven țelor ( Figura 19) la care ruleaz ă
anumite periferice.

22
Figura 19: Configurare a frecvențelor

Pentru fiecare platform ă STM32, trebuie configurat într -un fișier *.h de configurare
tipul controler -ului, fișierul generat în urma configurării, trebuie modificat la mână în funcție
de acesta. Fișierul poart ă numele de „STM32Fxxx.h ”, pentru platforma mobil ă valoare a
directivei d e preprocesare trebuie să aibe valoarea „STM32F10X_XL ”, iar pentru
STM32F3Discovery „STM32F303xC ”. Aceste directive de preprocesare activează toate
modulele care sunt folosite de aceste platform e, cum ar fi ADC, GPIO, PWM, etc.
4.1.3. Comunicarea între cele 2 pl ăci de dezvoltare

Comunicarea celor 2 microcontrolere se realizează prin protocolul de comunicare
USART (Universal Synchronous/Asynchronous Receiver -Transmitter) . Un USART „un
receptor / emițător sincron universal / asincron ” este un periferic de microcon troler care
transformă octeții de intrare și ieșire a datelor într -un flux de biți seriali.
Comunicarea prin USART (Figura 20: Comunicarea prin ) are nevoie doar de 2 semnale
logice. Aces te semnale sunt:
 TX – transmit ;
 RX – receive .

23
Figura 20: Comunicarea prin USART

USART -urile transmit date în mod asincron, ceea ce înseamnă că nu există niciun
semnal de ceas care să sincronizeze ieșirea de biți de la USART -ul transmis la eșantionarea de
biți de către USART -ul receptor. În loc de un semnal de ceas, USART -ul care transmite adaugă
biți de pornire și oprire la pachetul de date care este transferat. Ace ști biți definesc începutul și
sfârșitul pachetului de date, ast fel încât USART -ul care primește știe când să înceapă să citească
biții.
Când USART -ul primitor detectează un bit de început, acesta începe să citească biții de
intrare la o frecvență specifică cunoscută sub numele de rata de transfer. Rata Baud este o
măsură a vitezei de transfer a datelor, exprimată în biți pe secundă (bps). Ambele USART -uri
trebuie să funcționeze aproximativ la aceeași viteză de transfer. Rata de transfer între USART –
urile care transmit și recepționează poate diferi doar cu aproximativ 1 0% înainte ca timpul de
biți să fie prea departe. Rata Baud configurată pentru comunicarea între cele două
microcontrolere este 9600.
Datele transmise U SART sunt organizate în pachete (Figura 21: Transmisia mesajelor
pe magistrala USART ). Fiecare pachet conține 1 bit de început, 5 până la 9 biți de date (în
funcție de U SART), un bit de paritate opțional și 1 sau 2 biți de oprire:

Figura 21: Transmisia mesajelor pe magistrala USART

Start Bit (Bit -ul de start):
Linia de transmitere a datelor USART este în mod normal ținută la un nivel înalt de
tensiune atunci când nu transmite date. Pentru a începe transferul de date, USART -ul care
transmite trage linia de transmisie de la mare la mic pentru un ciclu de ceas. Când USART -ul

24 receptor detectează tranziția de înaltă la joasă tensiune, începe citirea biților din cadrul de date
la frecvența vitezei de transfer.
Data Frame (Cadru de date):
Cadrul de date conține datele reale care sunt transferate. Poate fi lung de 5 biți până la
8 biți dacă se folosește un bit de paritate. Dacă nu se folosește un bit de paritate, cadrul de date
poate avea o lungime de 9 biți.
Paritatea:
Bitul de paritate este o modali tate prin care USART -ul care primește să spună dacă s –
au schimbat date în timpul transmisiei. După ce USART -ul primitor citește cadrul de date, el
numără numărul de biți cu o valoare de 1 și verifică dacă totalul este un număr par sau impar.
Dacă bitul de paritate este 0 (paritate uniformă), 1 biți din cadrul de date ar trebui să totalizeze
un număr egal. Dacă bitul de paritate este 1 (paritate impară), cei 1 biți din cadrul de date ar
trebui să totalizeze un număr impar. Când bitul de paritate se potriveșt e cu datele, USART știe
că transmisia a fost lipsită de erori. Dar dacă bitul de paritate este 0, iar totalul este impar; sau
bitul de paritate este un 1, iar totalul este par, U SART știe că biții din cadrul de date s -au
schimbat.
Stop Bits (Bit -ul de stop ):
Pentru a semnaliza sfârșitul pachetului de date, USART -ul trimițător conduce linia de
transmitere a datelor de la o tensiune joasă la o tensiune ridicată pentru cel puțin două durate
de biți.
Func ția pentru transmiterea datelor de la STM32F3Discovery c ătre STM32F103RC
este:
 vDoStmManager – Gestionarea transmiterii de comenzi dintre pl atforme.
Conexiunea (Figura 22: Conexiunea USART2 STM 32F103RC , Figura 23) celor 2
module se face prin intermediul următorilor pini:
 (STM32F103RC ) PA2 TX – PA3 RX ( STM3 2F3Discovery) ;
 (STM32F103RC ) PA3 RX – PA2 TX ( STM32F3Discovery ).

25
Figura 22: Conexiunea USART2 STM 32F103RC

Figura 23: Conexiunea USART2 STM32F3Discovery

Configurația celor 2 microcontrolere se face pe USART2 a fiecăruia, STM32F103RC
și STM32F3Discovery, ele având o mas ă comun ă. Funcția care evaluează comenzile primite de
către platforma mobil ă se numește „Get_RC ” cu parametru mode din fișierul control.c, după
care o alt ă funcție care execut ă algoritmul de mișcare a platformei mobile și anume
„EXTI15_10_IRQHandler ”.

26
4.1.4. Realizarea unei aplica ții android pentru controlul de la distan ță

Aplicația pentru controlul platformei se realizează cu ajutorul un software numit
Android Studio. Ea fiind alcătuită din co menzi de control pentru platforma mobilă .
Limbajul de dezvolare utilizat pentru crearea aplicației din Android Studio este numit
Kotlin. Kotlin este proiectat să opereze împreună cu Java, iar versiunea JVM a bibliotecii sale
standard depinde de biblioteca Java Class.
Folosind software -ul Android Studio comunicarea cu modulul bluetooth HC -06 a fost
posibilă, prin intermediul adresei sale MAC (98:D3:91:FD:7B:64) . Pentru a realiza aplicația am
utilizat comenzi pentru bluetooth din librăriile puse la dispoziție de Android Studio și anume:
 android.bluetooth.BluetoothAdapter ;
 android.bluetooth.BluetoothDevice .
Aplicația cuprinde 2 layere de configurare pentru realizarea codului în Kotlin și anume:
 ControlActivity.kt ;
 SelectDevice.kt .
Aplicația cuprine 2 layere de configurare pentru realizarea interfeței grafice și anume:
 Control_layout.xml ( Figura 24);
 Select_device_layout.xml ( Figura 25).

27
Figura 24: Control_Layout.xml

Figura 25: Select Device Layout.xml

28 Primul layer și anume Control_layout.xml cuprinde un buton de refresh și o list ă cu
adresele MAC ale aparatelor din aria detecției telefonului. Cu ajutorul unor funcții din librăriile
puse la dispoziție de Android studio pentru bluetooth, am reușit să alcătuiesc aceast ă listă de
detecție pentru aparatele care pot fi detectat e și alegerea corespun zatoare a modului bluetooth –
ului folosit în proiect.
Pentru Control_Layout.xml și ControlActivity.kt, am alcătuit aplicația cu care se poate
controla platforma mobil ă. Este o aplicație simpl ă, având 4 butoane care reprezintă direcția în
care se vrea să se deplaseze platforma, un buton de selecție prin care putem activa controlul
autonom al platformei, respectiv manual, și un buton pentru deconectarea de la platforma
mobil ă.
Pentru transmiterea comenzilor de la butoanele configurate am creat o funcție de
„sendCommand ” care a cceptă ca parametru o valoare string, pentru a fi mai ușor de folosit.
Butoanele când sunt apăsate, trimit diferite caractere în ASCII, care după aceea sunt
interpretate că string -uri în codul sursă , în funcția „BluetoothProcessingReq ”. Următoarele
caractere în ASCII sunt trimise:
• Caracterul „f” sau valoarea 102 în decimal pentru mers înainte;
• Caracterul „b” sau valoarea 98 în decimal pentru mers înapoi;
• Caracterul „l” sau valoarea 108 în decimal pentru mers la stânga;
• Caracterul „r” sau valoarea 114 în decimal pentru mers la dreapta;
• Caracterul „a” sau valoarea 97 în decimal pentru schimbarea modului.
Aceste butoane sunt de tipul toggle buttons, adică la o apăsare a acestuia, până nu se
apasă butonul din nou, informația trimis ă este păstrată. Informația trimis ă de la aplicație către
software este stocat ă într-un buffer numit RxUartBuffer.

29 Controlul de la distan ță poate fi descri s prin următoarea schem ă logic ă (Figura 26):

Figura 26: Schemă logică control de la distanță

30 4.1.5. Algoritm de detec ție a obstacolelor și conducerea autonom ă

Pentru detecția obstacolelor s -au folosit senzorii sharp de la pololu (Pololu – 2476), în
funcție de datele care le produc, se iau decizii legate de direcția în care se deplasează platforma
mobilă.
Dacă un senzor detectează un obstacol, platforma mobilă se va opri și va lua o decizie
în care direcție să meargă dacă alt senzor nu detectează obstacol. Pentru realizarea acestei
funcționalități, dacă senzorii au detectat un obstacol, set ez un flag, iar în funcție de evaluarea
acestui flag, trimit către modulul STM32F103RC o comandă prin intermediu l protocolului de
comunicație USART în hexadecimal. Comenzile trimise pot fi:
 0x41 – comanda de mers înainte ;
 0x45 – comanda de mers înapoi ;
 0x43 – comanda de mers la dreapta ;
 0x47 – comanda de mers la st ânga.
Aceste comenzi sunt transmise prin intermediul unei funcții HAL_UART_Transmit
care primește că parametrii, canalul de USART folosit, o variabil ă global ă numi tă
TxUartBuffer, lungimea maxim ă și un timeout.
Funcțiile pentru detecția de obstacole sunt dezvoltate în modulul diag:
 vDoDiagProxWarningFrontSe ns;
 vDoDiagProxWarningRearSens ;
 vDoDiagProxWarningRightSens ;
 vDoDiagProxWarningLeftSens .
Pentru aceste funcții a fost definit un prag între care să evalu ăm o detecție corect ă de
obstacole și evitarea unei detecții eronate, iar pentru valorile citite de căt re ADC -uri valoarea
raw, dacă aceast ă valoare este mai mic ă decât 225, și mai mare decât 125, atunci flag -ul pentru
detecția de obstacol vă fi setat pe 1, respectiv 0 dac ă suntem în afara acestui prag. Aceste valori
au fost alese experimental deoarece am o bservat că senzorul pe suprafețe mai luciose detectează
eronat.
În aceste diagnoze , în funcție de senzor ul care detectează un obstacol , mai este
configurat și c âte un LED de pe STM32F3Discovery, pentru a vedea când senzoru l a detectat
un obstacol .

31 Led-urile configurate pentru aceste diagnoze sunt:
 Senzor fa ță – PE10 ;
 Senzor spate – PE12 ;
 Senzor dreapta – PE14 ;
 Senzor st ânga – PE8.

Funcțiile pentru transmiterea comenzilor sunt dezvoltate în modulul stm:
 vDoStmManager .
În aceast ă funcție este realizat ă o mașină de stări, în funcție de comenzile primite de la
aplicația Android și din partea senzorilor. Dac ă modul este manual, se v a seta un flag prin care
se va realiza transmiterea de comenzi de la bluetooth, la STM32F3Discovery, du pă care către
platforma mobil ă. Dac ă este setat modul automat, în funcție de detecția de obstacole făcută de
cei 4 senzori de proximitate, se vor lua anumite decizii legat e de direcția pe care o v a urma
platforma mobil ă.
În funcție de direcția și comanda c are este trimis ă la platforma mobil ă, pentru a fi mai
ușor de făcut ă depanarea , se vor aprinde anumite led -uri de pe STM32F3Discovery și anume:
 Mișcare înainte – PE9;
 Mișcare înapoi – PE13;
 Mișcare la dreapta – PE11;
 Mișcare la st ânga – PE15.

32 Funcționalitatea pentru transmiterea comenzilor la platforma mobil ă pentru controlul
manual este descris ă în următoarea schem ă logic ă (Figura 27):

Figura 27: Transmitere comezi USART2

33
Pentru algoritmul de detecție al obstacolelor am definit 16 cazuri decizionale pentru a
evita coliziunile și sunt descrise în tabelul următor (Tabel 1):
Senzor față Senzor spate Senzor stânga Senzor dreapta Comanda
0 0 0 0 0x41
0 0 0 1 0x41
0 0 1 0 0x41
0 0 1 1 0x41
0 1 0 0 0x41
0 1 0 1 0x47
0 1 1 0 0x41
0 1 1 1 0x41
1 0 0 0 0x43
1 0 0 1 0x45
1 0 1 0 0x43
1 0 1 1 0x45
1 1 0 0 0x43
1 1 0 1 0x47
1 1 1 0 0x43
1 1 1 1 Nu e trimis
nimic
Tabel 1: Descrierea algoritmului de detective în funcție de senzori

Legend ă tabel:
Valori: 1 – S-a detectat obstacol
0 – Nu s-a detectat obstacol
0x41 – Mers înainte
0x43 – Mers la dreapta
0x45 – Mers înapoi
0x47 – Mers la st ânga

34
Arhitectura sistem
4.2.1. Diagrama bloc a proiectului

Arhitectura de sistem (Figura 28) a proiectului este prezentată în următoarea diagramă,
cu toate componentele acesteia.

Figura 28: Arhitectura de sistem

35
Arhitectura software
4.3.1. Descrierea modulelor software folosite în proiect

Modulele software folosite în proiect au în componen ța lor un fișier *.c (source),
respectiv un fișier *.h (header).
În acest proiect pentru ambele medii de dezvoltare STM32F3Discovery, respectiv
STM32F103RC au fost împărțite pe module sau funcționalități (adc, usart, etc.) fiecare cu rolul
specific al acestora care e prezentat în fiecare modul (Figura 29) *.c.

Figura 29: Module folosite în STM32F3Discovery

36 4.3.2. Configurarea periferice lor

Configurarea perifericelor s -a realizat cu ajutorul mediului de dezvoltare CubeMX, iar
configurarea fiecărui pin al STM32F3Discovery este prezentat ă în Figura 30:
Pentru fiecare pin configurat în CubeMX a fost adăugat o etichetă , pentru a fi mai ușor
de înțeles rolul acestui pin.

Figura 30: Configurarea pinilor

a) Configurarea ADC -ului

Pentru configurarea senzorilor de distan ță am folosit perifericul ADC pentru a citi cu
exactitate distan ța platformei mobile fa ță de un obstacol.
Perifericul ADC al STM32F3Discovery este pe o rezolu ție de 8 biți, în modul continuu
de conversie.
Func ționarea senzorului analog de dista nță este explicat ă în Figur a 31, iar citirea și
funcția de transfer pentru acest senzor este prezentat ă în Figur a 32. Distan ța maxim ă interpretat ă
de senzorul analog de distan ță poate fi p ână la 150 cm.
Fiecare senzor sharp foloseste un pin de enable care activează senzorul, și anume PC1.
Func țiile realizate pentru citirea datelor recep ționate de la senzor sunt urm ătoarele:
 vDoProcFrstSensAdc – procesarea datelor primului senzor – PC3;
 vDoProcScndSensAdc – procesarea datelor celul de -al doilea senzor – PC0;

37  vDoProcThdSensAdc – procesarea datelor celul de -al treilea senzor – PD10 ;
 vDoProcFrthSensAdc – procesarea datelor celul de -al patrulea senzor – PD13 .

Figur a 31: Detec ția obiectelor pe baza senzorului infraro șu de distan ță

Figur a 32: Func ția de transfer pentru senzor

38
b) Configurarea protocolului de comunicare USART pentru modulul Bluetooth
HC-06

Pentru conexiunea dintre bluetooth și aplicația dezvoltată în Android Studio am folosit
protocolul de comuncare USART, prin intermediul unui buffer pentru procesarea comenzilor
primate RX.
Conexiunea (Figura 33) TX se face pe pinul PC4, RX pe PC5 al microcontrolerului,
pentru activarea modulului bluetooth se face prin int ermediul unui pin de enable care este
conectat la PC6. Protocolul de comunicare USART se face la un baudrate de 9600 bits/s,
lungimea unui mesaj poate fi de maxim un octet.

Figura 33: Conexiunea modului HC -06

Func ția pentru interpretarea datelor este:
 BluetoothProcessingReq – pentru recep ționarea de date .

c) Configurarea FreeRTOS

CubeMx permite configurarea unui sistem de operare în timp real, și anume FreeRTOS,
care a ajutat la creearea unor task -uri recurente, pentru a apela funcțiile dezvoltate pentru
proiect.
FreeRTOS oferă metode pentru mai multe thread -uri sau task -uri, semafoare și
cronometre software. Prioritățile pentru thread -uri sunt acceptate.

39 FreeRTOS implementează mai multe thread -uri prin faptul că programul gazd ă apelează
la o metodă de tick la intervale regulate de timp. Metoda thread -ului tick schimbă sarcinile în
funcție de prioritate și de o schemă de planificare rotundă. Intervalul obișnuit este 1/1000 dintr –
o secundă la 1/100 de dintr -o, printr -o întreruper e de la un cronometru hardware, dar acest
interval este adesea modificat pentru a se potrivi cu o anumită aplicație.
Task -urile configurate cu ajutorlui CubeMx din interiorul proiectului sunt:
 FirstTask – Task -ul în care sunt apelate funcțiile pentru trans miterea comenzilor
către platformă mobilă , care are o recuren ță de 10ms ;
 ScndTask – Task -ul în care sunt apelate funcțiile pentru procesarea datelor
provenite prin intermediul bluetooth , care are o recuren ță de 20ms ;
 ThirdTask – Task -ul în care sunt apelat e funcțiile pentru detecția de obstacole ,
care are o recuren ță de 30ms .
Am configurat aceste task -uri în modul preemtiv și am considerat și configurat
recuren țele respective, deoarece am considerat că în cel mai rapid task ar trebui să rulez state –
machine -ul prin care trimit comenzile la platforma mobil ă.
Task -urile configurate au aceeași prioritate și funcționează după principiul round -robin,
doar au recuren țe diferite.
Task -ul cel mai puțin prioritar l -am considerat cel de procesare a valorilor primite de la
senzorii sharp, deoarece am considerat că nu este nevoie neapărat de o recuren ță foarte rapid ă
pentru detecția obstacolelor.
Execu ția task -urilor (Figura 34: Execu ția task -urilor ) configurat e sunt descris e în
următoarea figur ă:

Figura 34: Execu ția task -urilor

40 Capitolul 5. Concluzii
Rezultate ob ținute în urma testelor

În urma testelor efectuate am obținut următoarele rezultate:
 Comunicarea dintre bluetooth și STM32F3Discovery. Comenzile trimise prin
intermediul aplicației de telefon este funcțională, cu rezultatele dorin te în
proiect.
 Realizarea unei aplicații android, ușor de folosit.
 Procesarea datelor d e la senzorii sharp. Datele care sunt primite din afara
sistemului sunt înregistrate și trimise mai departe către microcontroler.
 Realizarea unui protocol de comunicație dintre dou ă platforme, prin protocolul
USART.
 Selectarea dintre cele dou ă moduri prop use, autonom, respectiv manual.
 Configurarea unui modul SPI, dar nu a fost folosit, deoar ece nu a fost posibil ă
conexiunea cu platforma mobil ă.
 Comenzile recepționate în urma comunicării prin protocol ajung cu succes la
platforma mobil ă, dar mobilitatea acesteia nu a fost obținută, deoarece
comenzile trimise din partea STM32F3Discovery se pare că ajung prea t ârziu la
10ms, iar regulatorul platformei mobile începe să incrementeze parametrii de
mișcare, dar nu într -un timp util pentru a ajunge la rezultatul dorit. Parametrii
platformei nu se incrementeaz ă din funcția „Get_RC” într -un timp util, și
regulatorul nu acționează comanda trimis ă către punțile de comand ă, respectiv
motoare. Ceea ce am obținut au fost doar ni ște mișcări ale roților într -un mod
discont inuu. Parametrii ar fi trebuit să atingă o valoare de peste 2000 pentru a
pune în mișcare platforma, în timp ce în testele făcut e nu ajungeau la 500, și
doar în anumite intervale reușeau să treacă de 500 (Figura 35: Parametrii afișați
pe display ).

Figura 35: Parametrii afișați pe display

41
Oportunit ăți de îmbun ătățire

Îmbun ătățirile care ar putea fi aduse la proiect, ar fi:
 Folosirea unui alt protocol de comunicare dintre cele dou ă platforme, cum ar fi
CAN/SPI, care folosesc o sincron izare de ceas.
 Optimizarea sistemului de operare, el func ționeaz ă cum am dorit, dar ar putea fi
îmbun ătățit, cum ar fi trecerea task -urilor într-un mod cooperativ.
 Îmbun ătățiri aduse aplica ției android, deoarece în momentul de fa ță ea doar
transmite comenzi. O sugestie ar fi s ă se configu reze un feedback de la fiecare
senzor.
 Dezvolt area acestei platforme mobil e în jurul unui microcontroler mai puternic,
pentru a nu folosi unul sau mai multe controlere, c a în cazul de fa ță.

Concluzii în urma realiz ării proiectului

Automatizare a unui platforme mobile are c a principal avantaj realizarea unor
sarcini dificile f ără a fi nevoie de intervenția unui om, în caz că aceasta detectează
anumite obstacole. În zilele noastre gradul de automatizare a diverselor dispozitive a
crescut, precum și gradul de comunicare dintre acestea cu alte dispozi tive sau chiar cu
mediul înconjur ător, prin intermediul senzorilor.
Utilizarea cuno științelor dob ândite în acest domeniu de studiu m -au ajutat la
realizarea acestui proiect și înțelegerea fiec ărui element sau component ă din cadrul
acestuia .
Nevoia platformelor mobile sau a dispozitivelor care nu necesit ă intervenția
omului a devenit foarte important ă în viaț a de zi cu zi. Utilizarea acestor platforme pot
crește eficien ța și de cele mai multe ori reduc costurile.
Controlul de la distan ță a devenit și el foarte important, deoar ece dorim să
obținem rezultate cât mai rapide și eficiente, iar acum având în vedere că toate
platformele oferă suport pentru diverse aplicații ce pot fi realizate pe telefonul personal
oferă un grad de flexibilitate și eficien ță în controlul dispozitivelor din jur.
Dezvoltarea unui produs autonom a devenit foarte accesibil deoarece
dezvoltarea de software a ajuns foarte comun ă și ușor de făcut, iar piaț a pentru
componentele de care este nevoie pentru dezvoltarea unui proiect e ste foarte deschis ă.

42 Bibliografie

1. Developer Android, 2020, Android Studio Bluetooth,
https://developer.android.com/guide/topics/connectivity/bluetooth
2. Wikipedia, 2020, Autonomous Robots –
https://en.wikipedia.org/wiki/Autonomous_robot
3. Shoham, M., 1986, A Textbook of Robotics
4. Wiki. Eclipse .Foundation, 2020, Eclipse – https://wiki.eclipse.org/Main_Page
5. Wikipedia, 2020, Embedded Systems –
https://en.wikipedia.org/wiki/Embedded_system
6. LyLa B.Das, 2012, Embedded_Systems_An_Integrated_Approach
7. Robotica – https://www.cs.cmu.edu/~mihaib/articole/roboti/roboti -html.html
8. Margaret Rouse, 2020, Sisteme incorporate –
https://internetofthingsagenda.techtarget.com/definition/embedded –
system#:~:text=An%20embedded%20system%20is%20a,programmable%20or%20with%20fi
xed%20functionality .
9. Circuit Basics, 2020, UART – https://www.circuitbasics.com/b asics -uart-
communication/#:~:text=UART%20stands%20for%20Universal%20Asynchronous,transmit
%20and%20receive%20serial%20data.
10. JACOB BENINGO, 2015, USART vs UART – https://www.edn.com/usart -vs-uart-
know -the-difference/

Similar Posts