Universitatea Tehnică Gheorghe Asachi din Iaşi [309173]

UNIVERSITATEA TEHNICĂ „Gheorghe Asachi” IAȘI

FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE

DOMENIUL: INGINERIA SISTEMELOR

SPECIALIZAREA: INFORMATICĂ APLICATĂ

LUCRARE DE DIPLOMĂ

PROIECTAREA ȘI REALIZAREA PLĂCII UNUI SISTEM DE MONITORIZARE ȘI MENTENANȚĂ A UNUI ACVARIU

Coordanor științific Absolvent: [anonimizat], 2019

CUPRINS

Capitolul 1. Introducere 2

Capitolul 2. Componente hardware utilizate 3

2.1. Microcontroller dsPIC33FJ128MC802 3

2.2. Ceas de timp real DS1307 3

2.2.1. Avantajele utilizării DS1307-ului 4

2.2.2. Arhitectura 4

2.3. Plăci de forță POLOLU 2961 5

2.4. Modul LCD cu Butoane (LCD Keypad Shield) 7

2.5. Pompe 8

2.6. Senzor de temperatură 8

2.7. Sondă de pH 8

Capitolul 3. Proiectarea și realizarea plăcii sistemului 9

Capitolul 4. Arhitectura software 11

4.1. Mediul de lucru 11

4.2. Facilitătile sistemului de operare de timp real FreeRTOS 13

4.3. Testări software realizate (??) 14

Capitolul 5. Rezultate experimentale 14

Capitolul 6. Concluzii 14

[anonimizat], [anonimizat]-ului și iluminatul. Acești parametri sunt foarte importanți pentru supraviețuirea vieții acvatice din acvariu. [anonimizat], supravegherea umană este adesea ineficientă. [anonimizat], calculatoarelor dar și al conceptului de IoT (“Internet of Things” – engl.) [anonimizat]. [anonimizat], prompt, [anonimizat]-un acvariu să fie afectate și să sufere crește foarte mult. Rolul unui sistem capabil să monitorizeze și să controleze parametrii unui acvariu devine cu atât mai important atunci când intervalele de valori permise pentru aceștia sunt mici sau cand acvariul este nesupravegheat mult timp.

Au fost făcute eforturi de a [anonimizat]-[anonimizat]. Aceste sisteme sunt independente iar unele dintre ele sunt destul de costisitoare. [anonimizat], [anonimizat].

Lucrarea prezintă prototipul unui sistem de timp real destinat monitorizării și mentenanței unui acvariu. [anonimizat]-o placă principală cu un microcontroller dsPIC și un modul NodeMCU de tip IoT ce comunică prin interfața serială. Placa principală a fost proiectată și realizată astfel încât să ofere flexibilitate în dezvoltarea modulară a sistemului încorporat. [anonimizat]-urilor, dar și cele privind comunicația și sincronizarea între acestea. [anonimizat] a acvariului, [anonimizat]2. [anonimizat], în același timp existând posibilitatea de a modifica de la distanță setările sistemului.

Sistemul pentru monitorizarea și mentenanța acvariilor funcționează cu ajutorul unui ceas de timp real (RTC – “Real Time Clock” – engl.) care este setat în prealabil de către utilizator. Datorită RTC-ului, sistemul capătă o flexibilitate suplimentară ce ajută la temporizarea lui. O facilitate ce este controlată în funcție de RTC este iluminarea. Aceasta funcționează pe baza a două intervale active de timp introduse de utilizator cu ajutorul interfeței grafice afișate. O altă facilitate este hrănirea, ce se face automat la o oră după activarea primului interval de iluminare. O ultimă facilitate implementată cu ajutorul RTC-ului este fertilizarea cu micronutrienți și macronutrienți. Utilizatorul setează orele de funcționare și cantitatea de fertilizanți prin interfața grafică.

Sistemul furnizează informații despre temperatura apei fără controlul acesteia deoarece există deja încălzitoare la un preț accesibil pe piață. De asemenea se monitorizează și controlează pH-ul apei prin adiție de CO2.

Toate informațiile din sistem sunt afișate pe o pagină web, iar cu ajutorul tehnologiei IoT se poate controla de la distanță hrănirea.

Toate facilitățile sunt controlate cu ajutorul placuței principale cu dsPIC, aceasta comunicând prin interfața seriala cu modulul NodeMCU de tip IoT.

Scopul lucrării este proiectarea, realizarea unei stații de fertilizare atât hardware cât și software. În capitolul doi s-au prezentat componentele folosite în cadrul proiectului: microcontrollerul dsPIC33FJ128MC802, ceasul de timp real, cele două placi de forță, modului LCD cu butoane și cele două pompe. Capitolul trei prezintă arhitectura plăcii realizate, urmând ca în capitolul patru să se detalieze soft-ul folosit pentru aceasta. Capitolul 5 relatează concluziile în urma realizării acestui proiect.

Componente hardware utilizate

Microcontroller dsPIC33FJ128MC802

-periferice, pini, i2c

Ceas de timp real DS1307

Ceasul de timp real DS1307 este un ceas/calendar în totalitate codat în BCD(“Binary-Coded Decimal” – engl.), funcționând cu un voltaj scăzut. Adresa și data sunt transferate serial printr-o interfață I2C (“Inter-Integrated Circuit” – engl.). Acesta poate furniza informații despre secunde, minute, ore, zile, dată, lună și an. La sfârșitul lunii data este automat actualizată pentru lunile cu mai puțin de 31 de zile, incluzând anii bisecți. Ceasul funcționează în format de 24 de ore sau 12 ore cu indicator AM/PM. DS1307 are încorporat un circuit ce detectează întreruperile de curent și activează automat alimentarea suplimentară. În acest timp o parte din operații, precum și contorizarea timpului, funcționează cu ajutorul alimentării suplimentare.

Avantajele utilizării DS1307-ului

Capsula DS1307 prezintă următoarele avantaje și caracteristici:

Administrează în totalitate funcțiile de contorizat timpul.

Ceasul de timp real contorizează secunde, minute, ore, ziua lunii, luna, ziua din săptămână, anul si anul bisect, valid până in anul 2100

56-Byte, Baterie suplimentară, RAM cu scop general și număr nelimitat de scrieri

Semnal Dreptunghiular pentru ieșire, programabil

Port serial simplu ce interfațează majoritatea microcontroller-elor

Interfață serială I2C

Operațiile de putere redusă extind durata de execuție

Utilizează mai puțin de 500nA atunci când funcționează cu bateria suplimentară

Detecție automată a căderii de tensiune

8 pini DIP(“Dual In-line Package” – engl.) și 8 pini SO ce minimizează spațiul necesar

Temperatură industrială optională:

Sunt suportate de la -40o C până la +85o C

Arhitectura

Ceasul de timp real DS1307 este unul de putere scăzută, codat în binar, având 56 bytes de NV SRAM(“Non-Volatile Static Random-Access Memory” – engl.). Ceasul/calendarul oferă informații în privința secundelor, minutelor, orelor, zilelor, lunilor și al anilor. Data de la sfârșitul lunii este automat ajustată pentru lunile cu mai puțin de 31 de zile, incluzând anii bisecți. DS1307 operează ca un dispozitiv “slave” pe seriala I2C. Accesul este permis prin implementarea unei condiții de START ce oferă un cod de identificare al dispozitivului urmat de un registru de adrese. Registrele ulterioare pot fi accesate secvențial până ce condiția de STOP este executată. În momentul în care alimentarea VCC scade sub 1.25 x VBAT, dispozitivul întrerupe accesul în rulare și resetează adresa sa “counter”. Intrările dispozitivului nu sunt recunoscute în acest timp pentru a prevenii cantități eronate de scriere pe dispozitiv de la sistemul de toleranță. Odată ce alimentarea VCC scade sub nivelul VBAT, dispozitivul comută spre un mod de curent redus cu baterie de rezervă. Odată cu revenirea la starea inițială, dispozitivul comută de la baterie la alimentarea VCC în momentul în care VCC este peste VBAT +0.2V și recunoaște intrările atunci când VCC este mai mare de 1.25 x VBAT.

Tabel 2-2-1 Pinii ceasului de timp real

Plăci de forță POLOLU 2961

Plăcuța MAX14870 de la “Maxim Integrated” este un circuit integrat cu punte-H și driver motor, care poate fi folosită pentru controlul bidirecțional al unui motor (cu perii) DC de la 4.5 V pana la 36 V. Poate suplimenta pana la 1.7 A (amperi) in continuu (neîncetat) si poate tolera curenți (de vârf) de până la 2.5A pentru câteva secunde, fiind astfel o bună alegere pentru motoare mici ce funcționează pe o gamă mare/largă de voltaje.

Plăcuța de forță MAX14870 este un foarte bun circuit integrat (IC), dar suprafața sa de dimensiune redusă poate aduce dificultăți în utilizare. PCB-ul plăcii este populat cu numeroase componente SMD, incluzând și un circuit de protecție (reverse battery protection circuit).

Caracteristici:

Un singur Driver motor cu punte-H cu protecție împotriva scurt-circuitului și diode interne cu rotire liberă.

Voltajul motorului: [ 4,5V – 36 V ]

Curent la ieșire de până la 1.7A in continuu cu maximum de 2.5A

Nu are nevoie de alimentare (logică) separată; intrari 3V- și 5V- compatibile

Interfață simplă DIR/PWM în 2 pini (unul controlează direcția, altul viteza)

Protejat împotriva voltajului scăzut, al scurt-circuitului si temperaturii ridicate

Sunt adaugate protecții împotriva voltajului invers

Sistem de protecție împotriva curentului ridicat sau a temperaturii ridicate

Poate fi adăugat un rezistor pe suprafață pentru a activa automat limitarea curentului

Dimensiune compactă (0.6” x 0.5”) (inch)

Plăcuta conține 2 seturi de 1×5 pini, având capete “tată” ce sunt incluse pe MAX14870.

Fig. 2-3-1 Diagrama minimalistă pentru a conecta un microcontroller

la un MAX14870 cu un singur motor DC cu perii

Conexiunile de motor și alimentare se află pe o parte a placuței, iar conexiunile pentru control pe cealaltă. Motorul impune ca voltajul de operare sa fie cuprins între 4.5V și 36V, pentru a putea fi suplimentat de la alimentarea cu protecție inversată, VIN. Pinul VM furnizează acces convenabil la alimentarea cu protecție inversată.

MAX14870 prezintă o interfață simplă DIR/PWM cu 2 pini, unde pinul DIR determină direcția motorului, iar pinul PWM poate fi suplimentat cu un semnal de control PWM pentru viteza motorului. Controlul intrării este redus pe placă de o rezistență pull-down the 100 KΩ. Când pinul PWM este setat ca LOW, ieșirile motorului sunt ambele legate la masă, ceea ce rezultă într-o oprire dinamică a motorului contectat.

Pinul EN poate fi setat ca HIGH pentru a oprii ieșirile motorului, ceea ce poate fi benefic în cazul în care se dorește mersul în gol. Pinul EN este re-adus pe LOW cu ajutorul unui rezistor pull-down de 100 KΩ astfel încât driverul este activat în mod implicit.

Următorul tabel evidențiază modalitățile de operare ale motorului:

Tabel 2-3-1 Modalități de operare

Tabel 2-3-2 Pinii plăcii Pololu 2961

Modul LCD cu Butoane (LCD Keypad Shield)

Acest modul LCD cu butoane este unul foarte popular pentru Arduino. Include un display LCD de 2×16 (2 linii x 16 coloane) și 6 butoane „push”. Pinii 4,5,6,7,8,9 și 10 sunt folosiți pentru interfața LCD-ului. Pinul analog 0 este folosit pentru a citii semnalele butoanelor „push”. Modulul LCD-ului permite reglarea contrastului și luminii „backlit”. În același timp, se extind pinii analogici pentru o mai ușoară citire a senzorilor analogi și al display-ului.

Acest modul LCD este dezvoltat pentru plăcuțe Arduino compatibile, pentru a asigura o interfață ușor de folosit, ce permite utilizatorilor navigarea ușoara prin meniu și selectarea comenzilor. Conține 1602 caractere albe cu lumină „backlight” albastră. Tastatura este compusă din 5 butoane:

Selectare (Select)

Sus (Up)

Dreapta (Right)

Jos (Down)

Stânga (Left)

Pentru a salva pinii digitali I/O (Input / Output), interfața tastaturii folosește un singur canal ADC (Analog Digital Convertor).

Specificații:

Voltaj: 5V

5 butoane „push” pentru a ușura utilizarea meniului

Buton RST (reset) pentru a reseta programul Arduino

Potențiometru integrat pentru ajustarea luminii „backlight”

Extinderea pinilor I/O disponibili

Extinderea pinilor Analogici cu DFRobot standard configurat pentru extinderea rapidă a senzorilor

Dimensiune: 80 x 58 mm

Fig. 2-4-1 Structura modulului LCD cu butoane

Tabel 2-4-1 Funcționalitățile pinilor modulului

Pompe

Senzor de temperatură

Sondă de pH

Proiectarea și realizarea plăcii sistemului

Placa sistemului de monitorizare și mentenanță a unui acvariu va avea ca funcționalități controlul a două motoare de curent continuu folosind două plăci de forță POLOLU 2961, controlul unui releu necesar iluminării, utilizarea unui RTC, furnizarea informațiilor despre temperatura apei, al pH-ului și controlul acestuia prin adiție de CO2, comunicarea prin intefața serială, toate acestea fiind controlate printr-un modul LCD cu butoane înglobat pe placă.

Placa conține un microcontroller dsPIC33FJ64MC802 produs de Microchip. DsPIC33FJ64MC802 este un microcontroller de 16 biți cu un set îmbunătățit de periferice, compatibil cu aplicațiile de procesare și control digital de semnal. Microcontroller-ul dsPIC este capabil să se ocupe de toate task-urile dacă cele mai rapide nu au cerințe pentru o putere de procesare ridicată.

Prima etapă a proiectării plăcii a constat în alocarea pinilor în funție de necesitățile sistemului și este prezentată în Tabelul 3-1.

Tabel 3-1 Alocarea pinilor

A doua etapă a dezvoltării plăcii a constat în realizarea schemei electronice ce poate fi urmărită în ANEXA 1. În această etapă s-a urmărit crearea unei scheme care să conțină toate componentele necesare funcționării sistemului.

Componentele elecronice folosite pot fi împărțite în 4 blocuri:

Blocul de alimentare

Blocul celor două plăci de forță

Blocul LCD-ului

Bloculul ceasului de timp real

Blocul de alimentare, prezentat în Figura 3-1, este alcătuit dintr-o mufă de alimentare jack conectată la 12V și GND. Alimentarea este compusă și din două regulatoare de tensiune: 7805DT și LM3904 care au rolul de a reduce tensiunea și de a o stabiliza de la 12 V la 5V, respectiv de la 5V la 3.3V.

Fig. 3-1 Blocul de alimentare

Blocul celor două plăci de forță, din Figura 3-2, constă în 2 barete de 5 pini de tip mamă, pentru fiecare placă în parte. Cele două plăci sunt conectate la pinii RB8 și RB10 ai microcontroller-ului pentru generarea semnalelor PWM, la pinii RA3 și RA4 prin intermediul jumperilor pentru stabilirea direcției, la pinii RB2 și RB3 pentru FLT și la pinii de masă și alimentarea de 12V a plăcii.

Fig. 3-2 Blocul plăcilor de forță

Blocul LCD-ului, prezenatat în Figura 3-3, constă în 4 barete de tip mamă: două barete de 8 pini și două barete de 6 pini. LCD-ul este conectat la pinii RB15, RB14, RB13 și RB12 folosiți pentru afișare, la pinul RB09 pentru reset, la pinul RB11 pentru enable, la pinul RA0 pentru conversia analog-digitală necesară utilizării celor cinci butoane, la masă și la alimentarea de 5V a plăcii.

Fig. 3-3 Blocul LCD-ului

Blocul ceasului de timp real, din Figura 3-4, este alcătuit dintr-un DS1307 care este conectat la masă, alimentarea de 3.3V, la pinii de ASDA și ASCL ai microcontroller-ului și anume la pinii RB5 și RB6. După cum se poate observa din figură sunt conectate și două rezistențe de pull-up de 4k7 între cei doi pini ai microcontroller-ului și alimentarea de 3.3V. De asemenea DS1307 are conectat și un cristal de quarț, un condensator de decuplare de 100nF și o baterie.

Fig. 3-4 Blocul ceasului de timp real

După ce schema electrică a fost finalizată, s-a trecut la partea de trasare a cablajului. PCB-ul(“Printed Circuit Board” – engl) plăcii a fost proiectat astfel încât să ofere flexibilitate în dezvoltarea sistemului. S-a dorit proiectarea unei plăci de dimensiuni reduse, astfel obținându-se una de 7.5cm x 10cm. Pentru a ajunge la această dimensiune s-a urmărit ca majoritatea traseelor să fie pe ambele părți ale PCB-ului. De asemenea s-a încercat minimizarea numărului de viasuri, cât și scurtarea traseelor. Cablajul plăcii poate fi urmărit în ANEXA 2.

Următoarea etapă a constat în implementarea efectivă a plăcii. Imprimarea traseelor s-a făcut la firma ELECTRA din Iași, unde a trecut printr-un proces de corodare, și unde s-au dat găurile necesare pentru componente și viasuri.

În Figura 3-5 este prezentată placa sistemului în starea inițială.

Fig. 3-5 PCB-ul plăcii

Ultima etapă a constat în lipirea componentelor pe placă și alimentarea acesteia.

În Figura 3-6 este prezentată placa cu dsPIC, în starea finală, aceasta fiind proiectată astfel încât să aibă dimensiuni cât mai reduse. Pentru acestea, dupa ce s-au luat măsurători, s-a stabilit ca microcontroller-ul, ceasul de timp real, bateria necesară ceasului, cât și partea de alimentare să fie sub modulul LCD înglobat pe placă.

Fig. 3-6 Proiectarea finală a plăcii

Arhitectura software

Mediul de lucru

În Figura 2.a si 2.b este prezentată placa cu dsPIC, în stare inițială și finală, aceasta fiind proiectată și realizată astfel încât să ofere flexibilitate în dezvoltarea modulară a sistemului încorporat. În acelasi timp placa prezintă un modul LCD înglobat cu o interfață ușor de folosit, ce permite utilizatorilor navigarea ușoara prin meniu și selectarea comenzilor.

O componentă de bază a plăcii este ceasul de timp real, acesta oferind sistemului o flexibilitate suplimentară ce ajută la temporizarea aplicației. De asemenea, placa conține și două plăci de forță necesare pentru comandarea celor două pompe. Pentru monitorizarea temperaturii s-a folosit senzorul de temperatură DS18B20. În ceea ce privește nivelul pH-ului s-a utilizat o sondă de pH, iar pentru adiția de CO2, în cazul în care nivelul pH-ului este mai mare decât cel setat de utilizator releul activează adiția de CO2. Cel de-al doilea releu se ocupă cu activarea/oprirea iluminarii, respectând intervalele setate în prealabil.

Facilitățile sistemului de operare de timp real FreeRTOS

FreeRTOS(“Real Time Operating System” – engl) facilitează obținerea unei înțelegeri corecte a modului în care funcționează un kernel de timp real, care sunt provocările comune întâlnite în dezvoltarea aplicațiilor de timp real și modul în care ar putea fi aplicate tehnicile de proiectare / programare recomandate. Este de remarcat faptul că FreeRTOS ilustrează facilitățile comune pentru o mare varietate de sisteme de operare de timp real, cum ar fi mecanismele specifice executării multitasking-ului în combinație cu rutinele de servicii de întrerupere (ISR), comunicarea între procese prin mesajele în coadă și partajarea resurselor pasive prin sincronizări bazate pe mutex / semafor.

Procesele concomitente ale aplicației integrate sunt definite ca sarcini, co-rutine sau rutine de întrerupere a serviciului. O sarcină poate avea una dintre următoarele stări: execută (este executată), gata (cere să fie executată), blocată (așteaptă un eveniment temporal) și suspendată (nu este disponibilă pentru programare).

Comparând cu sarcinile, procesele ISR (folosite pentru a oferi răspunsuri specifice la întreruperi) acceptă doar o gamă limitată de servicii de interfață de programare a aplicațiilor (API). Prioritățile lor (mai mari decât prioritățile oricărei sarcini) nu sunt gestionate de FreeRTOS. Cu toate acestea, procesele ISR (care se numesc servicii API) trebuie să fie atribuite cu o prioritate egală cu prioritatea întreruperii kernel-ului în timp real, pentru a permite o execuție corespunzătoare a serviciilor necesare de operare a sistemului. Pe de altă parte, executarea sarcinilor (preemptivă sau non-preemptivă) este supravegheată de un planificator bazat pe timp, în funcție de prioritățile alocate. Sistemul de operare FreeRTOS de timp real include servicii API care permit controlul complet asupra priorităților și stărilor sarcinilor în timpul executării aplicației, cum ar fi schimbarea priorităților sarcinilor, blocarea, suspendarea sau chiar crearea sau ștergerea sarcinilor.

Kernel-ul FreeRTOS permite programarea preemptivă sau non-preemptivă. În modul preventiv, punctele de planificare implicite sunt distribuite periodic. Algoritmul de planificare este bazat pe "prioritatea cea mai mare". Punctele de planificare pot apărea în mod asincron, de exemplu atunci când o activitate este blocată, suspendată sau setată cu o prioritate mai mare decât prioritatea sarcinii care rulează, când se creează o sarcină cu prioritate mai mare sau când se cere o reprogramare explicită.

FreeRTOS oferă trei scheme diferite de alocare a memoriei care permit utilizarea scalabilă a memoriei RAM în cadrul aplicației. Aceste scheme suportă utilizarea de memorie limitată la alocări statice, alocarea dinamică a blocurilor de dimensiuni predefinite sau alocarea memoriei cu utilizarea fără restricții a funcțiilor malloc () și free ().

Funcționalitățile kernel-ului și disponibilitatea serviciilor API sunt adaptate unei anumite aplicații prin intermediul unui fișier de configurare FreeRTOSConfig.h. Definițiile sale specifice indică tipul de nucleu (preemptiv sau cooperativ), frecvența microcontrolerului, facilitățile de urmărire permise, mecanismele de comunicare interconectate și mecanismele de sincronizare angajate etc.

Testări software realizate (??)

-task-uri

-diagrama bloc

-module conectate

-pini reconfig

După ce s-a realizat și alimentat placa s-a continuat cu urmatoarea etapă ce a constat în programarea acesteia.

Sistemul este unul modular și permite configurare flexibilă. Placa cu dsPIC a fost proiectată astfel încât să poată fi conectați toți senzorii și toate modulele necesare în vederea obținerii unui mediu acvatic optim pentru totalitatea viețuitoarelor din acvariu, precum și minimizarea efortului de mentenanță prin automatizarea acestor procese.

În Figura 4-3-1 este prezentată arhitectura hardware a sistemului de monitorizare și mentenanță a unui acvariu.

Fig. 4-3-1 Arhitectura Hardware a sistemului

Aplicația plăcii se bazează pe sistemul de operare de timp real FreeRTOS și este prezentată în Figura 4-3-2. Task-urile din cadrul aplicației încorporate FreeRTOS fiind prezentate în Figura 4-3-4.

Fig. 4-3-2 Arhitectura aplicației bazate pe FreeRTOS

Fig. 4-3-4 Aplicația bazată pe FreeRTOS

Task-ul Citire_DS1307 se ocupă cu citirea ceasului de timp real ce stă la baza programării aplicației. Informația citită este transmisă către task-urile: Afișare_meniu_principal ce afișează ora, temperatura și pH-ul, Afișare_oră_setări afișează ora și data sistemului, Pompă1 și Pompă2 compară datele primite cu cele setate în prealabil, dacă pompele sunt active, în cazul în care cele două date sunt idententice, pornește fertilizarea respectând cantitatea de micronutrienți și macronutrienți setată, Iluminare respectă intervalele active setate cu ajutorul informației primite, iar task-ul Hrănire trimite pe serială comanda către motorul pas cu pas prin NodeMCU, în cazul în care ora sistemului coincide cu ora de hrănire, aceasta fiind setată după o ora de la activarea iluminării. Task-ul CO2 verifică dacă nivelul de pH este mai mare decât nivelul setat, în caz pozitiv se pornește releul pentru adiția de CO2. Task-ul Meniu permite navigarea prin meniul aplicației și cu ajutorul lui putem face toate setările sistemului. În cazul în care dsPIC-ul primește prin interfața serială comanda de „update”, task-ul Task_SerialTX trimite toate informațiile sistemului către NodeMCU.

Informațiile sunt trimise de la un task la altul prin cozi de mesaje, sincronizarea dintre task-ul Hrănire și task-ul Task_SerialTX se face cu un semafor mutex, iar sincronizarea peentru scrierea pe LCD se face tot cu ajutorul unui semafor Mutex. În acest fel toate mecanismele specifice FreeRTOS sunt folosite pentru a se asigura că nu există date corupte și că task-urile sunt sincronizate.

Rezultate experimentale

(2-4 pagini)

-poze cu sistemul

-poze la meniuri

-tabel peroade task

-prioritati

Aplicația a fost testată experimental, varianta curentă a sistemului obținut fiind prezentată în Figura 5-1.

Fig. 5-1 Sistemul

Perioadele și prioritățile sarcinilor care rulează pe aplicația bazată pe FreeRTOS sunt prezentate în Tabelul 1. Task-ul Citire_DS1307 are prioritatea cea mai mare deoarece el este responsabil cu programarea automată a facilităților sistemului. Urmatorul ca prioritate este task-ul Meniu întrucât acesta ajută la navigarea prin interfața grafică, de asemenea, se poate observa că acesta are perioada cea mai mica deoarece s-a dorit captarea fiecărei apăsări de buton. Task-urile Afișare_meniu_principal și Afișare_oră_setări au prioritatea 5 fiindcă se ocupă cu afișarea temperaturii, pH-ului, timpului și anume cu afișarea orei și datei sistemului. Task-urile cu perioadă de 1 secundă au prioritățile în funcție de importanța acțiunilor în cadrul sistemului. Task-ul Task_SerialTX, ce are prioritatea 3, este periodic deoarece se dorește trimiterea informațiilor atunci când serverul web îi transmite cerere de „update”.

Tabel – Caracteristici task-uri

Meniul principal și câteva submeniuri mai importante sunt ilustrate grafic în Figura 7.

Fig. 7 Interfața grafică

Concluzii

BIBLIOGRAFIE

http://pdf1.alldatasheet.com/datasheet-pdf/view/58481/DALLAS/DS1307.html

https://www.dfrobot.com/wiki/index.php/LCD_KeyPad_Shield_For_Arduino_SKU:_DFR0009#More

https://www.pololu.com/product/2961

http://pns.ac.tuiasi.ro/Doc/laborator/LUCRAREA_2.pdf

http://users.utcluj.ro/~sebestyen/_Word_docs/Cursuri/Lab_infoind_3.doc

[1] M.Z.A Rashid, S.K.S Nordin, Design and Control of Aquarium Water Management System using Programmable Logic Controller (PLC)

[2]Claudia Ifrim, Florin Pop, Ciprian Dobre, and Valentin Cristea, The Art of Advanced Healthcare Applications in Big Data and IoT Systems

[3]Lavinia Ferariu, Florin Catalin Braescu and Constantin Teodorescu, Simulating the Execution Plan for Real Time Applications Developed in OSEK/VDX

[4]João Rosas, Vasco Brito, Luís Brito Palma, Jose Barata, Approach to Adapt a Legacy Manufacturing System Into the IoT Paradigm

[5]Inam, R., Maki-Turja, J., Sjodin, M., Ashjaei, S.M.H., și Afshar, S. (2011). Support for Hierarchical Scheduling in FreeRTOS. 2011 IEEE 16th Conference on Emerging Technologies & Factory Automation (ETFA), 1 – 10.

[6] R. Barry , FreeRTOS – User Manual, 2007.

[7] R. Goyette, “An Analysis and Description of the Inner Workings of the FreeRTOS Kernel”, 2007.

Similar Posts