Sistem Informatic pe Platforma Android Pentru Comanda Unui Vehicul

PROIECT DE DIPLOMĂ

Studiul si proiectarea unui sistem informatic pe platforma android pentru comanda unui vehicul

Cuprins

Introducere

Capitolul 1. Aparitia vehiculelor

1.1 Scurt istoric

1.2 Implementarea calculatoarelor de bord in structura vehiculelor

Capitolul 2. Sisteme de operare

2.1 Despre MS-DOS

2.1.1 Configurarea sistemului de operare MS-DOS

2.1.2 Comenzile de configurare a sistemului de operare MS-DOS

2.2 Sistemul de operare LINUX

2.2.1 Partitionarea discurilor

2.2.2 Componentele sistemului de operare Linux

2.2.3 Sistemul de fisiere

2.2.4 Shell

2.2.5 Comenzi de baza

2.3 Sistemul de operare ANDROID

2.3.1 Istoria sistemului de operare Android

Capitolul 3. Consideratii de implementare

3.1 Componente utilizate pentru realizarea vehiculului

3.1.1 Platforma de dezvoltare cu microcontroller Arduino UNO

3.1.1.1 Instalarea driverelor Arduino

3.1.1.2 Anatomia unui program Arduino

3.1.2 Driver de motoare L298

3.1.3 Conector Bluetooth Mate

3.1.4 Carcasa vehicul

Capitolul 4. Conectarea componentelor hardware si realizarea aplicatiei android

4.1 Model experimental hardware

4.1.1 Conectare placa de dezvoltare Arduino cu Shiled Motoare L298

4.1.2 Conectarea motoaraselor de curect continuu pe shield

4.1.3 Alimentarea conectorului Bluetooth

4.2 Model experimental software

4.2.1 Arduino IDE

4.2.2 Solid Edge

4.2.3 AppInventor

4.2.3.1 Java

4.3 Utilizarea aplicatiei “FinalLic

Avantajele lucrarii

Concluzii

Bibliografie

Anexa 1 – Cod Arduino

Anexa 2 – Blocuri secventiale aplicatie Android

Introducere

Prezenta lucrare de licență cu tema “Studiul și proiectarea unui sistem informatic pe platformă Android pentru comanda unui vehicul” și-a propus de la bun început verificarea cunoștiințelor teoretice și practice dobândite în decursul a celor patru ani de studii din cadrul facultății de Inginerie Mecanică și Electrică, specializarea Calculatoare și Tehnologia Informației, cunoștiințe materializate în lucrarea propriu-zisă.

Tema, deși una complexă din punct de vedere al implementării cunoștiințelor dobândite este în prezent gata pentru a fi prezentată și altor organisme din domeniile tehnice, precum cel al automatizărilor, automobilelor și altele, având la bază informații din domeniul tehnologiei.

Folosirea programelor învățate, complexe din acest vast domeniu în continuă mișcare și perfecționare pot oricând să contribuie la dezvoltarea tehnicilor robotizării sau automatizării.

În prezent asistăm la utilizarea roboților în locul oamenilor în diverse domenii , putem lua legătura telefonică cu orice persoană de pe mapamond prin utilizarea anumitor softuri .

Cum a fost posibilă această schimbare? Tocmai datorită dezvoltării acestei știinte a tehnologiei informației.

Aici este o muncă continuă, tehnologia fiind în deplină ascensiune și doar acele companii și instituții care vor aloca suficient de mult în dezvoltarea acestor procese vor avea prioritate. Ceilalți vor fi simpli consumatori, nu și beneficiari.

A transpune aplicația într-un telefon ca sa ghideze o mașină a implicat un vast process de învațare și implementare. Pornind de la tema , continuând cu piesele electronice și apoi cu cele mecanice, dar mai ales cu rolul lor, dar nu în ultimul rând cu folosirea limbajelor de programare adecvate atât pentru realizarea aplicației controlului vehiculului cât și a aplicației Android.

Complexitatea programelor a necesitat o lungă perioada de timp, mai ales în ceea ce privește interconexiunea între dispozitive, folosind mediul de transmitere Bluetooth.

Acest sistem poate fi omologat, eventual brevetat, iar fondurile să poată fi folosite în formarea viitorilor ingineri de tehnologie a informației.

Capitolul 1. Apariția vehiculelor

1.1 Scurt istoric

Automobilul, este un vehicul cu doua sau mai multe axe, acționat de un motor cu ardere internă, cu abur, cu electricitate sau aer comprimat. Acestea sunt clasificate în funcție de categorie, clasă, greutate și în funcție de numărul de pasageri care pot fi transportați .

Un automobil tipic are un motor cu ardere internă și patru roți, însă au apărut pe piață și mașini cu motoare hibride, cu gaz sau electrice. Au fost construite și autovehicule cu trei roți, dar nu sunt prea răspândite din cauza problemelor de stabilitate.

1.2 Implementarea calculatoarelor de bord în structura vehiculelor

Unitățile electronice de control sunt sisteme sofisticate bazate pe microprocesoare ce realizează numeroase funcții de control în timp real.

Cele mai importante funcții ale acestor unități sunt controlul emisiei, ABS-ului, transmisiei, aerului condiționat și ale motorului. Supervizarea acestor sisteme este posibilă cu ajutorul datelor preluate de la o varietate de senzori încorporați în structura vehiculelor. Acești senzori masoară stările parametrilor și valorile acestora în timpul funcționării.

Datele sunt preluate de către unitatea de control care realizează ajustări ce configurează setările senzorilor pentru o funcționare cât mai corectă a sistemului.

OEM-urile (Original Equipment Manufacturer) din industria auto lucrează în mod continuu la dezvoltarea de vehicule mai sigure, mai inteligente și mai eficiente din punct de vedere energetic. Multe dintre soluțiile implementate sunt datorate noilor module de control electronic (ECM), făcând ca electronica să fie sectorul cu dezvoltarea cea mai rapidă din cadrul elementelor auto.

Microcontrolerele cu memorie flash, înalt integrate, ce dispun de management energetic, se află la baza ECM-urilor, și sunt elemente cheie ale sistemelor embedded pe care proiectanții le doresc pentru implementarea în sistemele curente și viitoare.

Sub denumirea generică de computer auto se ascunde de fapt un număr mai mic sau mai mare de microprocesoare care au funcții dedicate și care controlează funcționarea diferitelor componente ale mașinii. Există microprocesoare care monitorizează aprinderea motorului, altele care se ocupa de funcționarea airbag-urilor, altele de modulul de aer condiționat, de sistemele de siguranță ABS sau ESP, chiar și de deschiderea sau închiderea geamurilor. Toate aceste microprocesoare sunt, așa cum le spune și numele, niște calculatoare în miniatura care ruleaza în memoria lor niște programe, primesc în permanență date de la componentele mașinii și prin prelucrarea acestor date de catre programul din memorie, furnizează la rândul lor niște date de ieșire, care se concretizează în comenzi transmise către diferite dispozitive ale mașinii.

ECU se găsește și sub denumirea de UCM – Unitate de Control a Motorului. Acesta este de obicei cel mai puternic microprocesor dintre toate care există în mașina pentru că este pus la treabă cel mai mult. Practic acesta are de făcut milioane de calcule pe secundă trebuind să analizeze datele oferite de zecile de senzori amplasați prin toată mașina și apoi să decidă asupra celor mai bune valori care sa le transmită motorului pentru ca acesta sa funcționeze cu consum minim de carburant și să polueze cât mai puțin mediul înconjurător.

ECU funcționează ca un sistem de reglaj cu circuit închis (closed-loop control), ceea ce înseamnă că el reglează valorile parametrilor de ieșire în funcție de valorile parametrilor de intrare. Cu alte cuvinte, el primește date de la senzorii care monitorizează cantitatea de oxigen din gazele de ardere, viteza autoturismului, temperatura motorului și alte valori pe care le analizează, și în funcție de aceste valori trimite comenzi către injectoare și prelungește sau micșorează timpul cât acestea rămân deschise, reglând în acest fel cantitatea și calitatea amestecului combustibil precum și momentul arderii.

ECU este ca un un mini-calculator care funcționează foarte eficient. Practic acesta are o viteză mult mai mică decât calculatorul pe care îl folosiți în acest moment pentru a citi aceste informații, are la dispoziție o memorie mult mai mică și cu toate acestea își face treaba foarte bine.

Capitolul 2. Sisteme de operare

Un sistem de operare, prescurtat OS  ( Operating System), reprezintă un produs de tip software care este parte componentă a unui sistem, echipament sau aparat computerizat, și care se ocupă de gestionarea și coordonarea activităților acestuia. 

În principal , un sistem de operare asigură îndeplinirea următoarelor funcții generice:

Gestiunea eficientă a resurselor fizice și logice ale sistemelor, urmărindu-se încercarea maximă a resurselor fizice, respective minimizarea timpului de răspuns.

Gestiunea utilizatorilor, în sensul acordarii noțiunii de acces atât la nivelul sistemelor în ansamblu cât și la nivelul resurselor individuale.

Protecția informațiilor împotriva distrugerii accidentale și a accesului neautorizat.

Asigurarea unui model abstract pentru periferice(cel mai utilizat este modelul de tip fișier)

Asistarea utilizatorilor prin subsistemul de comunicație. Interacțiunea între utilizator și sistemul de operare se face prin limbaje de comandă, respectiv sisteme de mesaje, iar interacțiunea dintre o aplicație și sistemul de operare se face prin intermediul apelurilor de sistem.

2.1 Despre MS-DOS

MS-DOS (MicroSoft Disk Operating System) este un sistem de operare monotasking, monoutilizator cu interfață text. Este produsul înregistrat al cooperării dintre cunoscutele firme MicroSoft și IBM (S.U.A).

Configurația hardware minimă necesară pentru implementarea și utilizarea sistemului de operare MS-DOS cuprinde următoarele echipamente:

microprocesor pe 16 biți (de regulă INTEL I-8086, I-8088) cu o memorie internă mai mare de 256 kB.

1 ecran de afișare (monitor video);

1 tastatură, de la care se transmit comenzile operatorului pentru SO;

1 unitate pentru discuri flexibile (floppy-disk) sau pe scurt dischete.

Opțional mai pot fi cuplate și alte periferice:

unitate de dischete;

una sau mai multe imprimante pentru tipărirea datelor;

unul sau mai multe dispozitive pentru trasarea graficelor cunoscute sub numele de ploter,

dispozitive de punctare cunoscute sub numele de mouse

placă de rețea pentru conectarea la rețeaua de calculatoare;

modem-uri pentru conectare la rețeaua telefonică;

faxuri pentru transmiterea de imagini prin rețeaua telefonică;

scanere pentru achiziție de imagini;

Deși este de generație veche, sistemul de operare MS-DOS este încă foarte actual și cunoașterea lui este utilă din următoarele motive:

• reprezintă nucleul sistemelor de operare Microsoft Windows bazate pe sistemul de fișiere de tip FAT, care sunt încă mult utilizate

• comenzile DOS sunt recunoscute în toate versiunile sistemelor de operare din familia Windows

• majoritatea conceptelor și structurii comenzilor MS-DOS se regăsesc sub o formă mai mult sau mai puțin adaptată în toate sistemele de operare, ceea ce face ca un cunoscător al MS-DOS să poată migra ușor spre alte sisteme de operare.

2.1.1 Configurarea sistemului de operare MS-DOS.

Sistemul de operare MS-DOS este caracterizat prin anumiți parametri care pot fi modificați în funcție de necesitățile utilizatorului. Acești parametri se referă la:

dimensiunile zonelor tampon de memorie (bufere) alocate sistemului de operare;

numărul de fișiere ce pot fi deschise simultan;

dimensiunile stivelor de memorie;

caracteristicile driverelor existente;

numele și locația interpretorului de comenzi folosit.

Se precizează că operația de configurare a sistemului de operare are loc numai la inițializarea sa. Deci orice reconfigurare a sistemului implică reinițializarea sa.

Datele necesare reconfigurării sistemului de operare în structură dorită sunt furnizate cu ajutorul fișierului de configurare CONFIG.SYS. În absența acestuia, sistemul este configurat cu un set de valori implicite, care formează așa numita configurație standard.Dacă există, fișierul CONFIG.SYS trebuie să se afle obligatoriu în directorul rădăcină al discului sistem de pe care se lansează sistemul de operare.

Ca și AUTOEXEC.BAT,ul sistemelor de operare Microsoft Windows bazate pe sistemul de fișiere de tip FAT, care sunt încă mult utilizate

• comenzile DOS sunt recunoscute în toate versiunile sistemelor de operare din familia Windows

• majoritatea conceptelor și structurii comenzilor MS-DOS se regăsesc sub o formă mai mult sau mai puțin adaptată în toate sistemele de operare, ceea ce face ca un cunoscător al MS-DOS să poată migra ușor spre alte sisteme de operare.

2.1.1 Configurarea sistemului de operare MS-DOS.

Sistemul de operare MS-DOS este caracterizat prin anumiți parametri care pot fi modificați în funcție de necesitățile utilizatorului. Acești parametri se referă la:

dimensiunile zonelor tampon de memorie (bufere) alocate sistemului de operare;

numărul de fișiere ce pot fi deschise simultan;

dimensiunile stivelor de memorie;

caracteristicile driverelor existente;

numele și locația interpretorului de comenzi folosit.

Se precizează că operația de configurare a sistemului de operare are loc numai la inițializarea sa. Deci orice reconfigurare a sistemului implică reinițializarea sa.

Datele necesare reconfigurării sistemului de operare în structură dorită sunt furnizate cu ajutorul fișierului de configurare CONFIG.SYS. În absența acestuia, sistemul este configurat cu un set de valori implicite, care formează așa numita configurație standard.Dacă există, fișierul CONFIG.SYS trebuie să se afle obligatoriu în directorul rădăcină al discului sistem de pe care se lansează sistemul de operare.

Ca și AUTOEXEC.BAT, fișierul CONFIG.SYS se poate crea fie cu ajutorul unui editor de texte, fie prin copiere de la consolă.

2.1.2 Comenzile de configurare a sistemului de operare MS-DOS.

Principalele comenzi pe care le acceptă operația de configurare a sistemului sunt:

Comanda BREAK- prin intermediul ei se fixează momentele la care operațiunea în curs de execuție poate fi întreruptă prin apăsarea tastelor:

<Ctrl> + <C> ( echivalent cu <Ctrl> + <Break>)

Sintaxa: BREAK <Comutator> unde <Comutator> poate fi :

ƒ ON –> verifică introducerea tastelor de întrerupere la fiecare apel de funcție DOS;

ƒ OFF –> verifică introducerea tastelor de întrerupere la fiecare operație de I/E (I/O).

Operațiile I/E se realizează de regulă tot prin funcții DOS, constituind o submulțime a acestora; deci în primul caz tastele de întrerupere devin active atât în timpul operațiilor de I/E, cît și la apelul oricărei funcții DOS, deci mult mai des; în al doilea caz dacă programul nu execută operații de I/E el nu poate fi întrerupt !

Comanda BUFFERS –stabilește numărul de zone tampon de disc pe care le are SO. O zonă tampon de disc reprezintă o zonă a memoriei interne în care sunt păstrate datele de intrare /ieșire în timpul operațiilor de citire /scriere. Zonele tampon de disc sunt acelea care asigură independența funcționării canalului de date față de unitatea centrală.

Sintaxa: BUFFERS = n ; n – numărul de zone tampon de disc pe care îl are SO. Limite posibile: 1 < n < 99; valoare standard n = 2 / 3 / 5 / 10 / 15 depinzând de capacitatea unităților de disc ale sistemului și de dimensiunea memoriei interne. Cu cât n este mai mare cu atât viteza de transfer a datelor crește, dar memoria liberă la dispoziția utilizatorului scade. De aceea trebuie căutat un compromis: valorile normale sunt 10<n<20.

Comanda COUNTRY (Țară).

Identifică setul de caractere și a convențiilor de scriere a datei, orei, monedei specifice unei

anumite țări.

Sintaxa: COUNTRY = <CodTara>, <PaginaCod>, <NumeFișier>

unde <NumeFisier> reprezintă numele fișierului cu informații specifice țării respective; dacă lipsește atunci el este implicit COUNTRY.SYS.

Codul și pagina de cod pentru o anumită țară se pot stabili din tabelele existente în documentația de firmă (Microsoft sau IBM). Spre exemplu pagina de cod pentru SUA – 437, Franța (Canada) – 863, multilingvă – 850, etc.

Comanda DEVICE (Instalație, aparat).

Permite specificarea unui nume de fișier care va forma un driver al SO. În timpul configurării SO, fișierul respectiv este încărcat în memoria internă constituind programul prin care se realizează funcționarea driver-ului respectiv. Driver-ele folosite implicit, care nu trebuie specificate în CONFIG.SYS sunt: consola (ecran și tastatură), imprimantă, discul și ceasul de timp.

Sintaxa: DEVICE = <NumeDriver>

Pentru fiecare driver de echipament trebuie introdusă câte o comandă DEVICE. În general echipamentele de I/E sunt livrate împreună cu driverele necesare funcționării lor.

Dacă nu, atunci revine utilizatorului sarcina de a-și scriere propriile drivere conform necesităților, ceea ce este o problemă ce poate fi rezolvată numai de profesioniști. La dispoziția utilizatorului există următoarele drivere furnizate odată cu SO:

ƒANSI.SYS – permite folosirea funcțiilor extinse pentru consolă.

ƒDISPLAY.SYS – permite schimbarea paginilor de cod de la consolă pe durata funcționării SO.

ƒDRIVER.SYS – este folosit la echipamentul orientat pe mod de lucru bloc, deci echipamente logice de tip disc.

ƒPRINTER.SYS – permite schimbarea paginilor de cod la porturile paralele (imprimante paralele).

ƒVDISK.SYS – permite crearea unui disc virtual în memorie care se comportă identic cu o unitate de disc flexibil.

Discul virtual are o serie de caracteristici care îl recomandă, dar și îl limitează în funcționare:

viteza de transfer a informației este la nivelul vitezei de acces la locațiile de memorie;

discurile virtuale nu trebuie formatate, ele funcționând imediat ce au fost create în memorie; folosirea lor nu implică o uzură fizică a echipamentului; utilizează zone de memorie la adrese mai mari ca 640 KB, care nu pot fi accesate altfel de SO

Comanda DRIVPARAM.

Permite definirea parametrilor pentru dispozitivele bloc care înlocuiesc dispozitivele originale MS-DOS.

Sintaxa: DRIVPARAM <Opțiuni>

În cadrul opțiunilor se specifică caracteristicile dispozitivului: număr sectoare, piste, capete de

scriere /citire, tipul unității, etc.

Comanda FCBS.

Cu ajutorul ei se specifică numărul de blocuri de control a fișierelor (FCB – File Control

Bloc) care pot fi deschise simultan de DOS. Această comandă este preluată de la versiunile mai vechi al SO care foloseau FCB pentru lucrul cu fișierele.

Sintaxa: FCBS = m, n

unde: m este numărul maxim de fișiere cu FCB deschise simultan; limite: 1 < m < 255; implicit m = 4; n este numărul de fișiere deschise ce nu pot fi închise automat de către SO, atunci când se încearcă deschiderea simultană a mai mult de m fișiere; se protejează la închidere primele n fișiere deschise; limite: 0 < n < 255; implicit n = 0 (adică toate fișierele pot fi închise automat de SO, dacă acest lucru este necesar). La deschiderea celui de al m + 1 fișier, SO caută să închidă automat pe primul dintre ele, pentru a face loc noului fișier; dacă m = n, atunci SO nu va mai deschide automat nici un fișier până ce nu se vor închide unele din ele.

Comanda FILES (Fișiere).

In versiunile mai noi ale SO MS-DOS, pentru lucrul cu fișiere nu mai este necesară utilizarea FCB, SO construind blocul de parametrii necesar exploatării fișierului chiar în zona aplicației, zonă rezervată la lansarea sistemului. Dimensiunea zonei și deci numărul maxim de fișiere deschise simultan depinde de valoarea specificată în comanda FILES. Pentru fiecare fișier deschis sunt necesari 48 de octeți.

Sintaxa: FILES = nn unde nn este numărul maxim de fișiere ce pot fi deschise simultan; limite: 8 < nn < 255; valori normale 15 – 25.

Comanda LASTDRIVE (Ultimul echipament).

Specifică ultima literă acceptată pentru a defini o unitate logică.

Sintaxa: LASTDRIVE = <Literă> unde <Literă> reprezintă ultimă literă acceptată spre a defini o unitate logică de disc. Implicit <Literă> = E.

Comanda SHELL.

Permite definirea numelui și locului de amplasare a interpretorului de comenzi care să fie folosit în locul lui COMMAND.COM. Acest interpretor trebuie să fie conceput și realizat de utilizator, ceea ce reprezintă desigur o sarcină dificilă chiar și pentru un profesionist.

Sintaxa: SHELL <NumeInterpretor> <Parametri>

Parametrii definesc dimensiunea în octeți a interpretorului și modul lui de acționare în prezența

fișierului AUTOEXEC.BAT. Această comandă trebuie corelată cu parametrul COMSPEC din zona de variabile a SO.

Comanda STACKS (Stive).

Permite definirea dimensiunilor zonelor de stivă din memoria internă. La fiecare întrerupere hardware, SO alocă o zonă de stivă, care după tratarea întreruperii este eliberată (adusă la 0 și părăsită).

Sintaxa: STACKS = n,s

unde: n – numărul maxim al zonelor de stivă definite, s – dimensiunea în octeți a zonei de stivă. Limite: 8 < N < 64; 32 < s < 512. Valori implicite: pentru XT n = 0; s = 0 (nu folosește stiva suplimentară dinamică, ci numai stiva internă); pentru AT n = 9; s = 128.

2.2 Sistemul de operare LINUX

Unix este denumirea generic a unei largi familii de sisteme de orientare orientate pe comenzi multi-user și multi-tasking, dezvoltat pentru prima dată în anii `70 la compania AT&T și Universitatea Berkeley. În timp a devenit sistemul de operare cel mai răspândit în lume, atât în mediile de cercetare și de învățământ cât și în mediile industrial și comerciale.

Linux –ul este o variantă de UNIX gratuit (open-source) pentru sisteme de calcul bazate pe procesoare din familia Intel , Dec Alpha și mai nou pentru alte tipuri de procesoare cum ar fi de exemplu cele pentru embedded systems.

A fost creat în 1991 de Linus Towards fiind în prezent dezvoltat în permanență de o echipa formată din mii de entuziaști Linux din lumea întreagă sub îndrumarea unui colectiv condus de Linus Towards. Mai precis, această echipă mondială se ocupă cu dezvoltarea nucleului sistemului de operare.

Ca orice sistem din familia UNIX-ului si Linux-ul este compus, pe langa nucleul sistemului de operare dintr-o colecție de utilitare de bază și programe de aplicații cum ar fi de exemplu diverse shell-uri, editoare de text, compilatoare, programe de poștă electronică,etc. Majoritatea sunt programe open-source,dar există și aplicații comerciale pentru Linux.

2.2.1 Partiționarea discurilor

Partiționarea discurilor este un pas important , deoarece modificarea ulterioara a partițiilor nu oferă siguranță în fața posibilității pierderii de date.

Avem nevoie de o partiție (root) pentru a stoca kernelul și fișierele legate de acesta și este obligatoriu să creem o partiție swap care să aibă o dimensiune egală cu de doua ori marimea memoriei RAM. Alte partiții pe care le putem crea:

/usr – o partiție care trebuie sa fie foarte mare +512Mb;

/home – pentru directoarele rădăcina ale utilizatorilor mai puțin utilizatorul root

/boot – partiție de 16 Mb

/var – pentru cozile și log-urile sistemului

2.2.2 Componentele sistemului de operare Linux

Sistemul de operare Linux folosește un sistem de procese numit multitasking pentru a aloca timpul de lucru al procesorului mai multor utilizatori în același timp. În realitate nu este vorba de procese care se rulează în același timp, ci unele după altele la intervale de timp de ordinul milisecundelor, de aceea sistemul alocă timpul în așa fel încât să lase impresia de continuitate pentru fiecare utilizator.

Linux, ca oricare alt sistem de operare, este un set de programe care administrează toate operațiile sistemului de calcul, el asigurând și o interfață între utilizator și resursele sistemului, convertind cererile care vin de la mouse sau tastatură în operații de efectuat în sistemul de calcul.

Sistemul de operare este alcătuit din 3 elemente:

Kernel-ul – administrează operațiile calculatorului

Shell-ul – asigură o interfață pentru interacțiunea dintre utilizator și calculator

Sistemul de Fișiere – asigura un mijloc de organizare și gestionare a informațiilor pe discurile hard ale calculatorului.

2.2.3 Sistemul de fișiere

Sistemul de fișiere este integrat cu Kernel-ul în scopul asigurării unei structuri organizatorice pentru software-ul și pentru datele utilizatorilor. Structura de fișier subdivide hard disk-urile, făcându-le mai ușor de administrat și ușurându-se localizarea fișierelor. Sistemul de fișiere este dulapul, directoarele sunt asemenea sertarelor, subdirectoarele asemenea dosarelor,iar fișierele pot fi asemănate cu foile prinse în dosar.

Cele mai importante directoare Linux

Directorul din vârful structurii unui sistem se numește director rădăcină și reprezintă punctul de plecare în ierarhia respectivă. Este indispensabil pentru ca sistemul de operare să funcționeze, el conținand fișiere sistem critice.

/bin – comenzi necesare în timpul procesului de bootare și care pot fi folosite de orice utilizator

/etc – fișiere de configurare specifice

/root – directorul propriu al utilizatorului rădăcină

/lib – librarii necesare programelor din sistemul de fișiere root

/lib/modules – module kernel încărcabile

/dev – fișiere dispozitiv

/tmp – fișiere temporare

/boot – fișiere utilizate de bootstrap loader. Imaginile Kernel sunt ținute adesea aici în loc de directorul rădăcină

/usr – conține comenzi executabile, utilități diverse și diverse librării

/home – conține directoarele utilizatorilor

2.2.4 Shell

Este interfața între utilizator și kernel și acționează ca un întrerupător sau ca un translator. Shell-ul acceptă comenzi scrise de utilizator, le interpretează și apoi execută programele corespunzătoare. Shell-urile pot și linie de comandă sau grafice,iar pentru a verifica ce shell se utilizează putem folosi comanda ps (process status).

Dupa ce citește și interpretează cererile introduse de utilizator, shell-ul comunică instrucțiunile kernel-ului care duce la îndeplinirea cererilor.

Există doua shel-uri standard: shell bourne și shell C.

Tipuri de shell:

Bsh – bourne shell

Bash – bourne again shell

Csh – c shell

Ksh – korn shell

În Linux comenzile pot fi date atât folosind linia de comandă din cadrul terminalului cât și fișiere numite script. Terminalul se deschide folosind combinația de taste Ctr+Alt+T.

Promtul $ arată că sistemul este pregătit să accepte comenzi de la utilizator.

2.2.5 Comenzi de bază

Cd – deschidere de director

Cd .. – revine la directorul /home

Ls – afișează conținutul unui director

Cat – concatenează și printează

Echo – afișează o linie de text

Hostname – afișează sau schimbă host-ul sistemului

Passwd – meniul de schimbare de parolă pentru userul pe care ești

Pwd – afișează adresa directorului curent

Mkdir – creează director

Mv – mută fișier/director într-o locație

Rm – șterge un fișier

Chmod – schimbă drepturile pentru utilizator

Kill – omoară procesele

Sudo nume_script – ruleaza un script cu drepturi de administrator (root) și funcționează numai dacă este introdusă parola pentru admin

2.3 Sistemul de operare ANDROID

Android este un sistem de operare mobil (OS) bazat pe kernel-ul Linux, care este în prezent dezvoltat de Google. Acesta dispune de o interfață utilizator bazată pe manipularea directă fiind proiectat în primul rând pentru dispozitivele cu ecran tactil, cum ar fi smartphone-uri și smartTV.

Sistemul de operare folosește intrări de atingere care corespund la acțiuni din lumea reală.

Codul sursă Android este eliberat de către Google sub licență open source. Acesta a fost inițial dezvoltat de Android Inc, urmând să fie cumpărată de către Google în 2005.

Android a încurajat o mare comunitate de dezvoltatori entuziaști de a folosi codul open-source ca o bază pentru proiectele bazate pe comunitate, la care se adaugă noi caracteristici pentru utilizatori avansați.

Succesul sistemului de operare, a făcut o țintă pentru litigiile legate de brevete, ca parte din așa-numitele "războaie de smartphone-uri" între companii de tehnologie. [25] [26]

2.3.1 Istoria sistemului de operare Android

Android Inc a fost înființată în Palo Alto, California, în octombrie 2003 de către Andy Rubin, Bogat Miner, Nick Sears și Chris White. Intențiile inițiale ale companiei au fost de a dezvolta un sistem de operare avansat pentru camere digitale, atunci când au realizat că piața pentru dispozitivele mobile nu este suficient de mare, dorind astfel să rivalizeze cu sistemele de operare bazate pe Symbian și Windows Mobile

Google a achiziționat compania Android Inc pe 17 august 2005, fondatorii Android Inc Rubin Miner și Chris White, fiind singurii care au rămas în companie după achiziție.

La Google, echipa condusă de Rubin a dezvoltat o platformă de dispozitiv mobil alimentat de kernel-ul Linux. Google a început comercializarea platformei pentru producătorii de telefoane mobile și operatorii de transport cu promisiunea de a oferi un sistem flexibil și usor upgradabil.

Speculațiile cu privire la intenția companiei Google de a intra pe piața de comunicații mobile, au început să apară prin decembrie 2006 cand a fost lansat un prototip cu nume de cod “mai devreme” , având un aspect asemănător cu cel al unui telefon BlackBerry , fără touchscreen și cu tastatură QWERTY fizică. Acest prototip a fost re-proiectat pentru a fi compatibil cu ecrane tactile și pentru a concura cu alte dispozitive anunțate în 2006 si 2007 cum ar fi LG Prada și Apple Iphone.În septembrie 2007 , InformationWeek a realizat un studio de raportare în care se menționa că Google a depus mai multe cereri de brevet în domeniul telefoniei mobile

La data de 05 noiembrie 2007, Open Handset Alliance, un consorțiu de companii de tehnologie, producatorii de dispozitive( HTC, Sony și Samsung), operatorii de transport fără fir(Sprint Nextel și T-Mobile), Google a prezentat sistemul de operare Android cu scopul de a dezvolta standarde deschise pentru dispozitive mobile. În acea zi , Android a fost prezentat ca fiind primul produs software dezvoltat pentru dispozitivele mobile construit pe kernel Linux.

Primul smartphone disponibil pe piață pe care rulează Android a fost HTC Dream, lansat pe 22 octombrie 2008. În 2010, Google a lansat seria de dispozitive Nexus, o linie de smartphone-uri și tablete care rulează pe sistemul de operare Android. Google și-a actualizat din seria cu dispozitive noi, cum ar fi telefonul Nexus 5 (realizat de LG) și Nexus 7 comprimat (realizat de Asus).

 La data de 13 martie 2013 Larry Page a anunțat într-un post pe blog că Andy Rubin s-au mutat de la divizia de Android pentru a lua decizii cu privire la noile proiecte de la Google. El a fost înlocuit de Sundar Pichai, care continuă, de asemenea, rolul său în calitate de șef al Google Chrome. Începând cu anul 2008, Android a văzut numeroase actualizări care au îmbunătățit treptat sistemul de operare, adăugarea de noi caracteristici și fixarea de bug-uri din edițiile anterioare. 

Capitolul 3. Considerații de implementare

Pentru realizarea prezentei lucrări de diplomă, a fost realizat un prototip de vehicul, având o platformă de dezvoltare cu microcontroller de tip Arduino UNO, un driver de motoare L298 utilizat pentru controlul motorașelor de curent continuu și un conector Bluetooth pentru realizarea conexiunii între dispozitive.

3.1 Componente utilizate pentru realizarea vehiculului

3.1.1 Platforma de dezvoltare cu microcontroller Arduino UNO

Arduino este una dintre cele mai simplu de utilizat platforme cu microcontroller. Te poți gândi la el ca la un minicalculator (are puterea de calcul a unui computer obișnuit de acum 15 ani), fiind capabil să culeagă informații din mediu și să reacționeze la acestea.

În jurul lui Arduino exista un ecosistem de dispozitive extrem de bine dezvoltat. Orice fel de informație ți-ai dori să culegi din mediu, orice fel de conexiuni cu alte sisteme ai avea nevoie, există o șansă foarte mare să găsești un dispozitiv pentru Arduino capabil sa îți ofere ceea ce ai nevoie. Dacă ne referim la posibilitatea de a ne conecta cu alte sisteme, există plăci de rețea Ethernet pentru Arduino capabile să comunice informații prin Internet, dispozitive capabile să transmită date prin conexiune radio, plăci de rețea WIFI, dispozitive GSM pentru Arduino (capabile să trimită / recepționeze SMS-uri, să inițieze apeluri de voce sau să trimită date prin rețeaua 3G) sau conectori Bluetooth pentru conectarea Arduino cu telefonul mobil sau laptop. În zona mecanică, există motoare de curent continuu (utilizate pentru robotică), motoare pas cu pas (utilizate de obicei în zona industriala) sau servomotoare, controlate foarte exact. Pentru afișarea informațiilor preluate, există ecrane LCD pentru Arduino, începând cu cele mai simple (LCD text cu 16 caractere) până la ecran LCD grafice.

Arduino UNO  este o platformă de procesare open-source, bazată pe software și hardware flexibil și simplu de folosit. Constă într-o platforma de mici dimensiuni (6.8 cm / 5.3 cm – în cea mai des întâlnită varianta) construită în jurul unui procesor de semnal și este capabilă de a prelua date din mediul înconjurator. Procesorul este capabil să ruleze cod scris într-un limbaj de programare care este foarte similar cu limbajul C++.

Fig. 1 (Descrierea plăcuței de dezvoltare Arduino Uno)

Specificații tehnice

Microcontroler:                                   ATmega328

Tensiune de lucru:                              5V

Tensiune de intrare (recomandat):      7-12V

Tensiune de intrare (limita):               6-20V

Pini digitali:                                        14 (6 PWM output)

Pini analogici:                                     6

Intensitate de ieșire:                             40 mA

Intensitate de ieșire pe 3.3V:                50 mA

Flash Memory:                                    32 KB (ATmega328)  0.5 KB pentru bootloader

SRAM:                                                2 KB (ATmega328)

EEPROM:                                           1 KB (ATmega328)

Clock Speed:                                       16 MHz

3.1.1.1 Instalarea driverelor Arduino

Primul lucru care trebuie făcut înainte de a putea programa placa Arduino, este instalarea driverelor pe PC. Pentru sistemele de operare Linux sau MAC nu este nevoie de instalarea driverelor, însă pentru sistemul de operare Windows pentru a putea fi efectuată programarea microcontrollerului este nevoie de instalarea driverelor, ca pentru orice alt dispozitiv hardware.

Pentru instalarea driverelor se accesează site-ul producătorului, se navighează până în dreptul secțiunii download și se selectează versiunea software-ului dorit pentru instalare.

După instalarea drivere-lor, următorul pas este programarea plăcii Arduino. Pentru acest pas, placuța se conectează la calculator prin intermediul unui port serial și se așteaptă ca sistemul de calcul să detecteze portul unde este conectată placuța Arduino. Se navighează în meniul “Tools” până la secțiunea “Serial Port” și se selectează portul asociat plăcuței Arduino(fig.2).

Fig. 2. Selectarea portului serial

Următorul pas este selectarea tipului de placă corespunzătoare. Acest lucru se poate seta navigând în meniul "Tools”, secțiunea “Board” unde se selecteaza tipul de placă asupra căruia se dorește programare (Arduino Uno, Leonardo, Mega, etc)-(fig.3).

Fig.3. Selectarea tipului de placuță

3.1.1.2 Anatomia unui program Arduino

Orice program Arduino are doua secțiuni. Secțiunea "setup", care este rulată doar o singură dată, atunci când placa este alimentată (sau este apăsat butonul "Reset"), și secțiunea "loop", care este rulată în ciclu, atât timp cât este alimentată placa. Să luăm un exemplu.

void setup() {

//codul scris aici rulează o singură dată

}

void loop() {

//codul scris aici rulează tot timpul

}

Astfel, în rutina "setup" vom pune de obicei cod de inițializare, iar în rutina "loop" vom scrie partea principală a programului.

3.1.2 Driver de motoare L298

Driver-ul de motoare L298 este utilizat pentru controlul motoarelor de curent continuu folosind Arduino. Arduino este capabil să scoată pe porturile lui o putere foarte mică, total insuficientă pentru a învârti un motor. Dacă vom conecta un motor electric direct la un port Arduino, cel mai probabil vom obține arderea procesorului din placa Arduino. Ca să nu se întample acest lucru, avem nevoie de un amplificator de putere, care să ia putere din sursa de alimentare (exemplu: baterie), și să o transmită motoarelor așa cum ii comandă Arduino. Acest amplificator poartă numele generic de "driver de motoare". Există o multitudine de drivere de motoare, diferența majoră între ele fiind cât de multă putere pot conduce (cât de puternice pot fi motoarele pe care le pot controla).

Driver-ul folosit pentru realizarea prezentei lucrări este bazat pe integratul L298, fiind un driver de nivel mediu din punct de vedere al puterii conduse.

Acest integrat generează semnale de control pentru motoare, permite selectarea direcției de deplasare și execuția unui pas întreg sau a unei jumătăți de pas, prin programarea adecvată a intrărilor sale.

Driver-ul se conectează la platforma Arduino folosind 4 pini digitali (3,5,6 si 9) prin înfigere directă în pinii plăcii Arduino.

Fig.4 Driver motoare

Driverul se prezintă sub forma shield-ului Arduino complet asamblat (placa roșie cu pini) la care se adaugă o serie de elemente de conectare.

Fig. 5 . Shield Arduino

Specificații tehnice

Senzorii se pot alimenta direct din shield, folosind 6 conectori care oferă conexiune directă la o tensiune directă de 5V și 6 conectori care oferă conexiune directă la Ground.

Fig. 6 Descrierea shield-ului din punct de vedere al conectorilor de alimentare

Se poate conecta un Bluetooth Mate la Arduino. Pe Shield există un conector dedicat cu 6 pini gândit special pentru conexiunea Bluetooth folosind pinii digitali 2 și 4.

Fig.8 Descrierea conectorului Bluetooth situat pe shield

În cazul prezentei lucrări pentru alimentarea plăcii Arduino s-a folosit aceeași sursă de tensiune folosită și pentru alimentarea motoarelor (12V). Pentru această configurație a fost cuplat jumper-ul de culoare mov de pe shield, astfel încât tensiunea aplicată pe pinul cu surub VIN ajunge direct prin jumper pe pinul VIN (mamă) din placa Arduino.

3.1.3 Conector Bluetooth Mate

Bluetooth este un protocol standardizat pentru trimiterea și primirea de date prin intermediul unui link wireless de 2,4 GHz. Este un protocol securizat, și este perfect pentru-rază scurtă de acțiune, low-power, low-cost și transmisii radio între aparate electronice.

Conectorul Bluetooth Mate Silver îți permite să transmiți și să recepționezi, în același timp date, valori sau informații, într-un mod simplu și usor. Acestea pot fi transmise sub aceeași formă pe care le-ai transmite folosind Monitorul Serial din Arduino, folosind perechea de fire Tx și Rx.

Fig.9 . Conector Bluetooth Mate

Specificații tehnice

modem Bluetooth clasa 2

atinge 10 metri ca distanță de transmisie

consumă în medie 25 mA

conexiune criptată

frecvență 2.4~2.524 GHz

tensiune de alimentare 3.3 – 6 V

capabil de rate de transfer între 2400-115200 bps (configurată by default la 115200 bps)

temperatură de operare – 40 ~ + 70 C

antenă inclusă pe placă

3.1.4 Carcasa vehicul

Capitolul 4. Conectarea componentelor hardware și realizarea aplicației android

4.1 Model experimental hardware

4.1.1 Conectare placa de dezvoltare Arduino cu Shiled Motoare L298

Asa cum am menționat în capitolul anterior, driver-ul de motoare L298 este utilizat pentru controlul motoarelor de curent continuu folosind Arduino. Acesta se conectează direct pe placuță Arduino folosind 4 pini digitali (3,5,6,9) , așa cum se observă în figura 10:

Fig. 10 Conectarea Shield-ului pe placuța Arduino

4.1.2 Conectarea motorașelor de curent continuu pe shield

Alimentarea motoarelor se face prin pinii cu șurub VIN și GND. Shieldu-ul se alimentează în funcție de necesitățile motoarelor.

Fig .11 Conectarea motorașelor de curent continuu la shield

4.1.3 Alimentarea conectorului Bluetooth

În prezenta lucrare, pentru realizarea transmisie Bluetooth, conectorul a fost alimentat pe placuța Arduino, folosind shieldul pentru conectare directă. Am folosit următoarea :

Bluetooth CTS-I  – nu se conectează

Bluetooth VCC  – Arduino 5V

Bluetooth GND  – Arduino GND

Bluetooth TX-O  – Arduino RX

Bluetooth RX-I  – Arduino TX

Bluetooth RTS-O  – nu se conectează

Fig. 12. Conectarea modulului Bluetooth pe placa Arduino

4.2 Model experimental software

Pentru realizarea modelului experimental software s-au folosit 3 programe:

Arduino IDE

SolidEdge

AppInventor

4.2.1 Arduino IDE

Arduino IDE este un proiect open-source, punând la dispoziția utilizatorului un mediu de programare foarte apropiat cu limbajul de programare C. Este dezvoltat în Java și axat pe partea de procesare, dezvoltare și cercetare.

Avantaje:

Cross-platform – Software-ul Arduino rulează pe Windows, Macintosh OS X și sisteme de operare Linux. Cele mai multe sisteme microcontroler sunt limitate la Windows.

Un mediu de programare simplu și clar – Mediul de programare Arduino este ușor de folosit pentru începători, dar și destul de flexibil pentru utilizatorii avansați. Pentru profesori este convenabil mediul de programare Processing, astfel încât studenții care învată să programeze în acest mediu vor fi familiarizați imediat cu Arduino.

Software open source și extensibil – Softwerul Arduino este publicat ca unealtă open source disponibilă pentru extindere de către programatorii cu experientă. Limbajul poate fi extins prin bibliotecile C++, iar cei care doresc să înteleagă detaliile tehnice pot face saltul de la Arduino la AVR C, limbajul de programare pe care se bazează. În mod similar se poate adăuga cod AVR C direct în programele Arduino.

Hardware open source și extensibil – Arduino se bazează pe microcontolerele Atmel ATMEGA8 și ATMEGA168. Planurile pentru module sunt publicate sub licenta Creative Commons, deci designeri de circuite cu experiență pot face propria versiune a modulului extinsa și îmbunătățită. Chiar și utilizatorii relativ neexperimentați pot construi modulul pentru a întelege cum functionează și de a salva bani.

Fig. 13 . Arduino IDE

4.2.2 Solid Edge

Solid Edge este un produs CAD pentru modelare 3D dezvoltat de Siemens PLM Software. Rulează pe Microsoft Windows și asigură modelarea solidelor, ansamblelor și asigură capabilități de desen tehnic pentru ingineri mecanici.

Este un sistem de proiectare pentru industrie cu instrumente excepționale pentru crearea și gestionarea de prototipuri 3D. Cu o procesare a modelelor superioară, se pune accent pe nevoile din anumite industrii și integrează un management integrat pentru design.

Solid Edge ghidează proiectele către un drum fără erori și soluții de proiectare exacte. Instrumentele pentru modelare și asamblare din Solid Edge permite echipei de ingineri să dezvolte cu ușurintă o gamă completă de produse, de la piese simple până la ansambluri care conțin mii de componente. Comenzile adaptive și fluxurile de lucru structurate accelerează proiectarea de caracteristici comune în anumite industrii și asigură potrivirea corectă și funcționarea pieselor proiectate prin analiză și modificarea acestora în cadrul modelului de asamblare.

În prezenta lucrare de diploma am folosit versiunea Solid Edge ST2 pentru a realiza o machetă 3D a mașinii pe care am folosit-o în dezvoltarea vehiculului.

În continuare vor fi prezentate ansamblurile facute în Solid Edge.

Fig.14 Shield motoare

Fig 15. Placa dezvoltare Arduino

Fig 16. Modul Bluetooth

Fig 17 . Ansamblul format din Arduino, Shild si Bluetooth

Fig. 18 Sasiul suport al ansamblului

Fig.19 Viziune per ansamblu

4.2.3 AppInventor

Acest kit de dezvoltare este oferit de Google în colaborare cu Institutul de Tehnologie din Massachusetts (MIT), fiind pus la dispoziția utilizatorilor începând cu decembrie 2010.

Cu AppInventor se pot dezvolta atât aplicații mici cât și mari , asamblând blocurile logice asemenea jocurilor de puzzle, fără să trebuiască să scrieți nici măcar o linie de cod în Java. Cu AppInventor toți utilizatorii de smartphone-uri cu sistem de operare Android au acum șansa de a-si exprima creativitatea folosind design-uri mai mult sau mai puțin complicate pentru a dezvolta propriile aplicații. În cazul în care aceste aplicații merg și sunt în întregime funcționale rămâne la preferințele individuale ale dezvoltatorilor dacă lucrările vor fi lansate public sau nu.

Chiar și dezvoltatorii cu experiență pot învăța mereu ceva nou și util. AppInventor oferă, de asemenea, o imagine de ansamblu a grupurilor de componente dedicate pentru dezvoltarea de jocuri multiplayer,a schimbului de date prin Bluetooth,a controlului roboților construiți prin Lego Mindstorms, sau chiar combinarea AppInventor cu dezvoltarea aplicațiilor în Java prin intermediul AppInventor Java Bridge .

Software-ul de care aveți nevoie pentru AppInventor este disponibil gratuit. O parte din mediul de dezvoltare pentru AppInventor rulează pe computerul local și o altă parte la un serviciu web, astfel încât tot ce aveți pentru a rula AppInventor este un PC sau notebook cu acces DSL sau o conexiune similară la internet.

Începand cu anul 2012, Google anunță o nouă eră pentru dezvoltatorii de aplicatii Android facand public dezvoltatorul AppInventor. Acesta poate fi considerat un add-on al sistemului de operare Android, lansat tot de compania Google, prin care utilizatorii își pot dezvolta rapid și sigur aplicațiile necesare sistemului de operare.

Pentru a putea dezvolta aplicații folosind acest dezvoltator în primă fază este nevoie sa vă logați pe contul personal de gmail(fig. 20), apoi se acceseaza pagina appinventor.mit.edu (fig.21)

Fig.20 Conectare la contul google

Fig. 21 Accesarea paginii appinventor.mit.edu

Generarea unui nou proiect se face accesând butonul “New” din partea stângă a aplicației (fig 22).Se seteaza numele proiectului și se apasă butonul “Ok” apoi generatorul va intra implicit în modul “Interfață” al proiectului nou generat(fig.23)

Fig 22. Generare proiect nou

Fig 23. Modul interfață

Odata intrați în modul interfață se pot adăuga modulele necesare pentru funcționalitatea aplicației. În cazul prezentei lucrări au fost importate următoarele module: butoane(fig24), modul BluetoothClient (prezent în secțiunea OtherStuff)(fig25), modul bază de date “TinyDB” pentru salvarea dispozitivelor(fig26) , modul ListPicker pentru salvarea și preluarea dispozitivului la care dorim să ne conectăm prin Bluetooth(fig.27), un modul Notifier (prezent în secțiunea OtherStuff) utilizat pentru notificarea printr-un mesaj dacă suntem sau nu conectați la dispozitivul selectat anterior(fig28) și doua elemente pentru aranjarea butoanelor în pagină: TableArrangement și HorizontalArrangement.

Fig 24. Butoane utilizate în realizarea interfeței

Fig.25 Modul Bluetooth Fig 26. Modul TinyDB Fig 27. Modul Notifier

Dupa finalizarea inserărilor elementelor realizatoare aplicației se navighează în partea dreaptă a aplicației până la secțiunea “Open blocks editor”(fig.28) și se așteaptă inițializarea scriptului java. Odată intrați în secțiunea “Blocks editor” se pot construi blocurile secvențiale funcționării fiecarui buton în parte.(fig.29)

Fig 28. Open Block Editor.

Pentru rularea editorului este necesară instalarea kitului de dezvoltare Java (JDK).

4.2.3.1 Java

Java este un limbaj de programare și platforma de calcul lansată în prima fază de către Sun Microsystems în 1995. Există o mulțime de aplicații și site-uri care nu funcționeaza decât dacă această platformă este instalată în sistemul de calcul.

Oracle Corporation este proprietarul actual al platformei Java SE, ca urmare a dobândirii de Sun Microsystems pe 27 ianuarie 2010. Această punere în aplicare se bazează pe punerea în aplicare inițială a Java de Sun. 

Implementarea Oracle este ambalată în două distribuții diferite: Java Runtime Environment (JRE), care conține părți ale platformei Java SE necesar pentru a rula programe Java și este destinat pentru utilizatorii finali și Java Development Kit (JDK), care este destinat pentru dezvoltatorii de software și include instrumente de dezvoltare, cum ar fi compilatorul Java, javadoc, Jar, și un debugger.

OpenJDK este o altă implementare al Java SE licențiată sub GPL. Implementarea a început atunci când Sun Microsystems a început eliberarea codului sursă Java sub GPL. 

De ce dezvoltatorii de software au ales Java?

Java a fost testat, rafinat, extins, și dezvoltat de către o comunitate dedicată de dezvoltatori. Java este proiectat pentru a permite dezvoltarea de aplicații portabile, de înaltă performanță pentru cea mai largă gamă de platforme de calcul posibile. Prin punerea la dispoziție aplicații în medii eterogene, companiile pot oferi mai multe servicii și să stimuleze productivitatea utilizatorului final, comunicarea, colaborarea și reducerea costului de proprietate. Java a devenit de neprețuit pentru dezvoltatori deoarece le permite:

Scrierea de programe și aplicații pe o platformă și rularea acestora pe altă platformă

Crearea de programe care pot rula într-un browser web

Combină de aplicații sau servicii folosind limbajul Java pentru a crea aplicații sau servicii extrem de personalizate

Fig 29.Blocks Editor

Dupa adăugarea blocurilor secvențiale proiectul se salvează și se accesează butonul “Package for Phone” situat în partea din dreapta sus al aplicației. (fig. 30)

Fig 30 . Salvarea proiectului și importul în telefon

Proiectul este salvat în mod implicit cu extensia .apk, folosită de sistemele Android pentru recunoașterea aplicațiilor.

4.3 Utilizarea aplicației “FinalLic”

După importarea proiectului în telefon , se lanseaza aplicația, intrând în modul de instalare (fig.31)

Dupa selectarea opțiunii “Install” , aplicația continuă procesul de instalare și intră în modul interfață în care utilizatorul poate selecta opțiunea”Open”(fig.32)

Fig 31. Instalare aplicație Fig.32 Deschiderea aplicației

Aplicația s-a dorit a fi dezvoltată cu o interfață cât mai prietenoasă cu utilizatorul, de aceea sunt disponibile decât butoanele necesare conectării la dispozitiv și controlării vehiculului, atât pe partea luminoasă cât și pe partea motorie.

Imagine 1. Viziune de ansamblu a aplicației

Așa cum se observă în imaginea anterioara butoanele pentru conexiunea Bluetooth sunt afișate în partea din stânga sus a aplicației. Dacă se dorește conexiunea cu un dispozitiv se accesează lista dispozitivelor apăsând cu degetul deasupra listei și se selectează dispozitivul la care se dorește conexiunea.

Fig.33 Selecția dispozitivului Bluetooth

După finalizarea acestui pas aplicația revine în modul interfață și tot ce trebuie să faceți este să apăsați deasupra butonului cu iconița “Bluetooth” pentru a finaliza conexiunea.

Fig 35. Selecția butonului pentru Bluetooth

În momentul conectării la dispozitivul pe care dorim să îl controlăm va apărea mesajul “Dispozitiv conectat” . Dacă se dorește renunțarea controlului la dispozitiv, în cazul în care se selectează butonul Bluetooth, va apărea mesajul “Dispozitiv Deconectat”

Fig 36. Dispozitiv Conectat

Fig 37. Dispozitiv Deconectat

Pentru controlul motoriu al mașinii sunt funcționale butoanele din partea stângă a aplicației, cele sub forma de săgeți, folosite pentru a indica direcția de mers a vehiculului.

Pentru o simulare cât mai apropiată de conducerea unui vehicul, sagețile stânga/ dreapta indică virajul în direcția dorită de utilizator.

Pentru un control cât mai eficient al mașinii în momentul virajului se executa virajul stânga/dreapta în funcție de dorința utilizatorului după care se revine la sensul direcției de mers apăsând butonul înainte / înapoi pentru a preveni situația în care mașina rămâne virată pe sensul stabilit anterior.

Butonul “Stop” afișat între cele doua componente este folosit pentru oprirea motoarelor.

Butoanele folosite pentru controlul luminilor instalate pe mașină sunt descrise în imaginile următoare:

Fig 38. Apinderea ledurilor sirenei

Fig. 39 Aprinderea luminilor față

Fig 40. Aprinderea luminilor spate

Fig 41. Oprirea tuturor luminilor

Fig. 42. Oprirea vehiculului.

Avantajele lucrării

Din punct de vedere personal, avantajele prezentei lucrări sunt :

Fiabilitatea vehiculului : se manevreaza ușor, rapid și eficient

Costurile aferente dezvoltării unei astfel de aplicații sunt accesibile fiecărei persoane

Dimensiunile vehiculului sunt reduse, astfel poate fi folosit în acțiuni de spionaj

Dezavantajele lucrării

Dezavantajele pe care le poate prezenta o astfel de lucrare sunt:

Alimentarea destul de mare pentru vehicul (12V) ceea ce poate duce la îngreunarea vehiculului

Timpul de funcționare al bateriilor

Concluzii

La prezenta lucrare de diplomă, se pot aduce modificări în vederea îmbunătățirii vehiculului, astfel încât poate fi folosit ca ustensilă de spionaj sau chiar prototip pentru industria auto în vederea îmbunătățirilor aduse vehiculelor de pe piață prin adăugarea de senzori,camere digitale pentru transmiterea imaginilor sau a unui modul de transmisie prin GPS pentru localizarea vehiculului.

Din punct de vedere al programării se pot dezvolta aplicații care permit localizarea vehiculului, preluarea de informatii atât din interiorul vehiculului cât și din exteriorul acestuia, evitarea obstacolelor aflate la o anumita distanță de vehicul , implementarea unui sistem de inteligență artificiala pentru adăugarea regulilor de circulație în memoria microcontrollerului.

Bibliografie

Unitatea electronica de control – ECU (Electronic Control Unit)

http://en.wikipedia.org/wiki/Automobile

http://docs-asia.electrocomponents.com/webdocs/0e8b/0900766b80e8ba21.pdf

https://www.sparkfun.com/products/11021

http://en.wikipedia.org/wiki/Arduino

http://arduino.cc/en/Main/Software

http://www.circuiteelectronice.ro/diverse/comanda-pentru-un-motor-pas-cu-pas-cu-l297-l298.html

http://invata.mecatronica.eu/arduino-uno-specificatii-tehnice/

www.ubuntu.ro

Prof. B LUȘTREA, Utilizarea și programarea calculatoarelor, 2006 Cap.5 .Sistemul de operare MS-DOS

http://books.google.ro/books?id=gUcLAAAAQBAJ&pg=RA1-PA40&lpg=RA1-PA40&dq=informatii+despre+appinventor.mit&source=bl&ots=OacLNErnVX&sig=14x4qyzDnYCHVYC61klD1mpevuQ&hl=ro&sa=X&ei=g4S6U8XwJcv8ygOQhoD4AQ&ved=0CEcQ6AEwBQ#v=onepage&q&f=false

Android Appinventor for absolute beginner

Android Apps with App Inventor, preface by Hal Abelson , MIT Center for Mobile Learning

http://en.wikipedia.org/wiki/Solid_Edge

Appinventor.mit.edu

Beta.appinventor.mit.edu

https://www.java.com/en/about/

Anexa 1 – Cod Arduino

#include "SoftwareSerial.h";

int bluetoothTx = 2; // Transmisie modul Bluetooth

int bluetoothRx = 3; // Recepție modul Bluetooth

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

int lumini_spate = 12; // lumini_spate pin

int lumini_fata = 11; // lumini_fata pin

int LED1 = 10; // Sirena Led1 pin

int LED2 = 8; // Sirena Led2 pin

int MOTOR2_PIN1 = 3; // Pin pentru selecția motorului înainte

int MOTOR2_PIN2 = 5; // Pin pentru selecția motorului înapoi

int MOTOR1_PIN1 = 6; // Pin pentru selecția motorului stânga

int MOTOR1_PIN2 = 9; // Pin pentru selecția motorului dreapta

int ledDelay = 100;

void setup()

{

Serial.begin(9600); //Rata transfer transmisie serială

bluetooth.begin(115200); // Din fabrică modulul Bluetooth este

bluetooth.print("$$$"); // configurat la o rată de transfer de 115200

bluetooth.println("U,9600,N"); //Inițializăm rata de transfer pentru Bluetooth

bluetooth.begin(9600); // la 9600 biti/sec

pinMode(lumini_spate, OUTPUT); // Inițializăm pinul lumini_spate ca ieșire

digitalWrite(lumini_spate, LOW); // Setăm valoare LOW = 0, adică oprit

pinMode(lumini_fata, OUTPUT); // Inițializăm pinul lumini_ fata ca ieșire

digitalWrite(lumini_fata, LOW); // Setăm valoare LOW = 0, adică oprit

pinMode(MOTOR1_PIN1, OUTPUT);

digitalWrite(MOTOR1_PIN1, LOW);

pinMode(MOTOR1_PIN2, OUTPUT);

digitalWrite(MOTOR1_PIN2, LOW);

pinMode(MOTOR2_PIN1, OUTPUT);

digitalWrite(MOTOR2_PIN1, LOW);

pinMode(MOTOR2_PIN2, OUTPUT);

digitalWrite(MOTOR2_PIN2, LOW);

pinMode(LED1, OUTPUT);

pinMode(LED2, OUTPUT);

digitalWrite(LED1, LOW);

digitalWrite(LED2, LOW);

}

void loop()

{

if(bluetooth.available())

{

char toSend = (char)bluetooth.read();

Serial.print(toSend);

if(toSend == '0')

{

digitalWrite(MOTOR1_PIN1, LOW);

digitalWrite(MOTOR1_PIN2, LOW);

digitalWrite(MOTOR2_PIN1, LOW);

digitalWrite(MOTOR2_PIN2, LOW);

}

if(toSend == '1')

{

digitalWrite(MOTOR1_PIN1, HIGH);

}

else{

digitalWrite(MOTOR1_PIN1, LOW);

}

if(toSend == '2')

{

digitalWrite(MOTOR1_PIN2, HIGH);

}

else{

digitalWrite(MOTOR1_PIN2, LOW);

}

if(toSend == '3')

{

digitalWrite(MOTOR2_PIN1, HIGH);

digitalWrite(lumini_fata, HIGH);

digitalWrite(lumini_spate, LOW);

if(toSend == '2'){

digitalWrite(MOTOR1_PIN2, HIGH);

}

else {

digitalWrite(MOTOR2_PIN1, HIGH);

digitalWrite(lumini_fata, HIGH);

}

if(toSend == '1'){

digitalWrite(MOTOR1_PIN1, HIGH);

}

else {

digitalWrite(MOTOR2_PIN1, HIGH);

digitalWrite(lumini_fata, HIGH);

}

}

if(toSend == '4')

{

digitalWrite(MOTOR2_PIN2, HIGH);

digitalWrite(lumini_fata, LOW);

digitalWrite(lumini_spate, HIGH);

if(toSend == '2'){

digitalWrite(MOTOR1_PIN2, HIGH);

}

else {

digitalWrite(MOTOR2_PIN2, HIGH);

digitalWrite(lumini_spate, HIGH);

}

if(toSend == '1'){

digitalWrite(MOTOR1_PIN1, HIGH);

}

else {

digitalWrite(MOTOR2_PIN2, HIGH);

digitalWrite(lumini_spate, HIGH);

}

}

if(toSend == '5')

{

digitalWrite(lumini_spate, HIGH);

}

if(toSend == '6')

{

digitalWrite(lumini_fata, HIGH);

}

if(toSend == '7')

{

digitalWrite(LED1, HIGH);

delay(ledDelay);

digitalWrite(LED1, LOW);

delay(ledDelay);

digitalWrite(LED2, HIGH);

delay(ledDelay);

digitalWrite(LED2, LOW);

delay(ledDelay);

digitalWrite(LED1, HIGH);

delay(ledDelay);

digitalWrite(LED1, LOW);

delay(ledDelay);

digitalWrite(LED2, HIGH);

delay(ledDelay);

digitalWrite(LED2, LOW);

delay(ledDelay);

digitalWrite(LED1, HIGH);

delay(ledDelay);

digitalWrite(LED1, LOW);

digitalWrite(LED2, HIGH);

delay(ledDelay);

digitalWrite(LED2, LOW);

delay(ledDelay);

digitalWrite(LED1, HIGH);

delay(ledDelay);

digitalWrite(LED1, LOW);

delay(ledDelay);

}

if(toSend == '9')

{

digitalWrite(lumini_fata, LOW);

digitalWrite(lumini_spate, LOW);

digitalWrite(LED1, LOW);

digitalWrite(LED2, LOW);

}

if(Serial.available())

{

char toSend = (char)Serial.read();

bluetooth.print(toSend);

}

}

}

Anexa 2 – Blocurile secvențiale ale aplicație Android

Funcții motorii

Bloc1. Apelarea funcției “Înainte ” a vehiculului

Bloc2. Apelarea funcției “Înapoi” a vehiculului

Bloc3. Apelarea funcției “Stânga” a vehiculului

Bloc4. Apelarea funcției “Dreapta” a vehiculului

Controlul luminilor instalate pe mașină

Bloc5. Aprinderea ledurilor “Sirena” a vehiculului

Bloc6. Aprinderea ledurilor “Lumini_fata” a vehiculului

Bloc7. Aprinderea ledurilor “Lumini_spate” a vehiculului

Bloc8. Oprirea tuturor ledurilor vehiculului

Bloc9. Oprirea vehiculului

Realizarea conexiunii Bluetooth

Bibliografie

Unitatea electronica de control – ECU (Electronic Control Unit)

http://en.wikipedia.org/wiki/Automobile

http://docs-asia.electrocomponents.com/webdocs/0e8b/0900766b80e8ba21.pdf

https://www.sparkfun.com/products/11021

http://en.wikipedia.org/wiki/Arduino

http://arduino.cc/en/Main/Software

http://www.circuiteelectronice.ro/diverse/comanda-pentru-un-motor-pas-cu-pas-cu-l297-l298.html

http://invata.mecatronica.eu/arduino-uno-specificatii-tehnice/

www.ubuntu.ro

Prof. B LUȘTREA, Utilizarea și programarea calculatoarelor, 2006 Cap.5 .Sistemul de operare MS-DOS

http://books.google.ro/books?id=gUcLAAAAQBAJ&pg=RA1-PA40&lpg=RA1-PA40&dq=informatii+despre+appinventor.mit&source=bl&ots=OacLNErnVX&sig=14x4qyzDnYCHVYC61klD1mpevuQ&hl=ro&sa=X&ei=g4S6U8XwJcv8ygOQhoD4AQ&ved=0CEcQ6AEwBQ#v=onepage&q&f=false

Android Appinventor for absolute beginner

Android Apps with App Inventor, preface by Hal Abelson , MIT Center for Mobile Learning

http://en.wikipedia.org/wiki/Solid_Edge

Appinventor.mit.edu

Beta.appinventor.mit.edu

https://www.java.com/en/about/

Anexa 1 – Cod Arduino

#include "SoftwareSerial.h";

int bluetoothTx = 2; // Transmisie modul Bluetooth

int bluetoothRx = 3; // Recepție modul Bluetooth

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

int lumini_spate = 12; // lumini_spate pin

int lumini_fata = 11; // lumini_fata pin

int LED1 = 10; // Sirena Led1 pin

int LED2 = 8; // Sirena Led2 pin

int MOTOR2_PIN1 = 3; // Pin pentru selecția motorului înainte

int MOTOR2_PIN2 = 5; // Pin pentru selecția motorului înapoi

int MOTOR1_PIN1 = 6; // Pin pentru selecția motorului stânga

int MOTOR1_PIN2 = 9; // Pin pentru selecția motorului dreapta

int ledDelay = 100;

void setup()

{

Serial.begin(9600); //Rata transfer transmisie serială

bluetooth.begin(115200); // Din fabrică modulul Bluetooth este

bluetooth.print("$$$"); // configurat la o rată de transfer de 115200

bluetooth.println("U,9600,N"); //Inițializăm rata de transfer pentru Bluetooth

bluetooth.begin(9600); // la 9600 biti/sec

pinMode(lumini_spate, OUTPUT); // Inițializăm pinul lumini_spate ca ieșire

digitalWrite(lumini_spate, LOW); // Setăm valoare LOW = 0, adică oprit

pinMode(lumini_fata, OUTPUT); // Inițializăm pinul lumini_ fata ca ieșire

digitalWrite(lumini_fata, LOW); // Setăm valoare LOW = 0, adică oprit

pinMode(MOTOR1_PIN1, OUTPUT);

digitalWrite(MOTOR1_PIN1, LOW);

pinMode(MOTOR1_PIN2, OUTPUT);

digitalWrite(MOTOR1_PIN2, LOW);

pinMode(MOTOR2_PIN1, OUTPUT);

digitalWrite(MOTOR2_PIN1, LOW);

pinMode(MOTOR2_PIN2, OUTPUT);

digitalWrite(MOTOR2_PIN2, LOW);

pinMode(LED1, OUTPUT);

pinMode(LED2, OUTPUT);

digitalWrite(LED1, LOW);

digitalWrite(LED2, LOW);

}

void loop()

{

if(bluetooth.available())

{

char toSend = (char)bluetooth.read();

Serial.print(toSend);

if(toSend == '0')

{

digitalWrite(MOTOR1_PIN1, LOW);

digitalWrite(MOTOR1_PIN2, LOW);

digitalWrite(MOTOR2_PIN1, LOW);

digitalWrite(MOTOR2_PIN2, LOW);

}

if(toSend == '1')

{

digitalWrite(MOTOR1_PIN1, HIGH);

}

else{

digitalWrite(MOTOR1_PIN1, LOW);

}

if(toSend == '2')

{

digitalWrite(MOTOR1_PIN2, HIGH);

}

else{

digitalWrite(MOTOR1_PIN2, LOW);

}

if(toSend == '3')

{

digitalWrite(MOTOR2_PIN1, HIGH);

digitalWrite(lumini_fata, HIGH);

digitalWrite(lumini_spate, LOW);

if(toSend == '2'){

digitalWrite(MOTOR1_PIN2, HIGH);

}

else {

digitalWrite(MOTOR2_PIN1, HIGH);

digitalWrite(lumini_fata, HIGH);

}

if(toSend == '1'){

digitalWrite(MOTOR1_PIN1, HIGH);

}

else {

digitalWrite(MOTOR2_PIN1, HIGH);

digitalWrite(lumini_fata, HIGH);

}

}

if(toSend == '4')

{

digitalWrite(MOTOR2_PIN2, HIGH);

digitalWrite(lumini_fata, LOW);

digitalWrite(lumini_spate, HIGH);

if(toSend == '2'){

digitalWrite(MOTOR1_PIN2, HIGH);

}

else {

digitalWrite(MOTOR2_PIN2, HIGH);

digitalWrite(lumini_spate, HIGH);

}

if(toSend == '1'){

digitalWrite(MOTOR1_PIN1, HIGH);

}

else {

digitalWrite(MOTOR2_PIN2, HIGH);

digitalWrite(lumini_spate, HIGH);

}

}

if(toSend == '5')

{

digitalWrite(lumini_spate, HIGH);

}

if(toSend == '6')

{

digitalWrite(lumini_fata, HIGH);

}

if(toSend == '7')

{

digitalWrite(LED1, HIGH);

delay(ledDelay);

digitalWrite(LED1, LOW);

delay(ledDelay);

digitalWrite(LED2, HIGH);

delay(ledDelay);

digitalWrite(LED2, LOW);

delay(ledDelay);

digitalWrite(LED1, HIGH);

delay(ledDelay);

digitalWrite(LED1, LOW);

delay(ledDelay);

digitalWrite(LED2, HIGH);

delay(ledDelay);

digitalWrite(LED2, LOW);

delay(ledDelay);

digitalWrite(LED1, HIGH);

delay(ledDelay);

digitalWrite(LED1, LOW);

digitalWrite(LED2, HIGH);

delay(ledDelay);

digitalWrite(LED2, LOW);

delay(ledDelay);

digitalWrite(LED1, HIGH);

delay(ledDelay);

digitalWrite(LED1, LOW);

delay(ledDelay);

}

if(toSend == '9')

{

digitalWrite(lumini_fata, LOW);

digitalWrite(lumini_spate, LOW);

digitalWrite(LED1, LOW);

digitalWrite(LED2, LOW);

}

if(Serial.available())

{

char toSend = (char)Serial.read();

bluetooth.print(toSend);

}

}

}

Anexa 2 – Blocurile secvențiale ale aplicație Android

Funcții motorii

Bloc1. Apelarea funcției “Înainte ” a vehiculului

Bloc2. Apelarea funcției “Înapoi” a vehiculului

Bloc3. Apelarea funcției “Stânga” a vehiculului

Bloc4. Apelarea funcției “Dreapta” a vehiculului

Controlul luminilor instalate pe mașină

Bloc5. Aprinderea ledurilor “Sirena” a vehiculului

Bloc6. Aprinderea ledurilor “Lumini_fata” a vehiculului

Bloc7. Aprinderea ledurilor “Lumini_spate” a vehiculului

Bloc8. Oprirea tuturor ledurilor vehiculului

Bloc9. Oprirea vehiculului

Realizarea conexiunii Bluetooth

Similar Posts