Industria de Automatizari Si Software

Ca orice activitate productivă și generatoare de profit, industria de automatizări si software a fost în permanență preocupată de problema productivității. Avansul tehnologic survenit în domeniul tehnologiei informaticii, dintre care enumerăm pe cele mai importante: creșterea performanțelor microcontrolerelor, dezvoltarea interfețelor utilizator grafice, impunerea arhitecturii Client/Server, orientarea către sisteme deschise și conectivitate la toate nivelele, au pus proiectanții de aplicații software în fața unor cerințe cu totul noi.

Dezvoltarea de aplicații care să utilizeze o interfață utilizator grafică(GUI) este radical diferită față de dezvoltarea tradițională. Controlul fluxului de execuție este cedat utilizatorului, iar aplicația, până acum monolitică, se divide în mai multe subprograme care trebuie să-și păstreze o anumită independență pentru că ar putea fi apelate în orice moment – pentru acest aspect trebuie o conexiune cu un dispozitiv extern care sa preia informatiile prin portul serial al placii Arduino si folosirea/stocarea lor pentru utilizarea ulterioara.

I.1 Contextul actual

Inovațiile au dus la creșterea explozivă a complexității aplicațiilor, și primul lucru care a fost clar a fost inadecvarea vechilor metode și unelte la noile cerințe. Industria de software si hardware vine în sprijinul proiectanților și a investitorilor doritori de a creea sisteme cât mai automate, eliminând nevoia forței de muncă, dar și pericolele aferente acestui tip de muncă.

Un sistem de reglare în general trebuie să aibă următoarele caracteristici:

Mediu integrat de dezvoltare

Era nevoie în primul rând de un mediu de lucru integrat, care să permită dezvoltarea sistemului de la început și până la sfârșit, dar in același timp să permită accesul la toate componentele sistemului.

Instrumentele de achiziție

Cu ajutorul acestora se pot achiziționa cu ușurință datele. Odată achizționate, acestea trebuie reproduse, pentru a putea fi folosite în controlul climei din interiorul sistemului de reglare, în funcție de specificațiile necesare creșterii unui anumit tip de plantă.

Instrumentele de reglare

Datele preluate de la instrumentele de achiziție pot fi prelucrate prin intermediul microcontroler-ului și utilizate în reglarea condițiilor climatice.

Conectivitatea

Întrucât este un sistem de reglare automat, producătorul trebuie să fie informat cât mai des în legatură cu datele ce sunt preluate și prelucrate de la instrumentele de achiziție, dar în același timp trebuie furnizate și informații în legatură cu instrumentele de reglare în eventualitatea în care unul din aceste instrumente cedează pentru aceasta am conectat un sistem de alarma .

Operabilitatea

Înțelegem prin operabilitate, că oricine are acces la panoul de control al sistemului poate modifica cu ușurință valorile pe care sistemul se bazează pentru a genera un climat propice pentru cultura de plante.

I.2 Beneficii

Un sistem de reglare automat are un numar destul de mare de beneficii, ceea ce constituie motivul principal de utilizare pe o arie mai răspândită în pofida costului destul de ridicat de implementare și de punere in funcțiune. O listă destul de mică de beneficii:

– Asigură integrarea cu sistemul de comunicare în timp real pentru afișarea informațiilor preluate din interiorul sistemului.

– Permite urmărirea stării sistemului pe parcursul funcționării, precum și posibilitatea de a rezolva anumite probleme apărute;

– Eficientizează producția și automatizează procesele de control și informare, reducând timpul necesar manipulării angajaților.

I.3 Analiza parametrilor necesari dezvoltării optime al plantelor

A fost identificat că rata fotosintezei depinde de cantitatea de lumina ce cade pe frunzele plantelor, astfel că reducerea cantității de lumina reduce rata de fotosinteză, iar rata respirației crește, reducându-se astfel producția. De aceea este necesar ca luminozitatea din timpul zilei trebuie sa fie cât mai ridicată. Contrar este sa ținem luminozitatea din timpul nopții ridicat, întrucât plantele nu o să se dezvolte corect.

Temperatura atmosferei poate atinge valori sub pragul necesar dezvoltării plantelor și poate reduce rata respirației plantelor, dar și rata fotosintezei, reducând astfel producția.

Procesele de fotosinteză și respirație trebuie înțelese, pentru a putea implementa un sistem eficient de control. Astfel, că prin fotosinteza se înțelege procesul prin intermediul căruia plantele procură hrana. Acestea absorb CO2 și H2O din atmosferă și folosesc lumină pentru a transforma moleculele de glucoza și a le depozita ca și glicogen. Oxigenul este un produs rezultat în urma acestui proces.

Respirația este procesul prin care moleculele organice sunt divizate pentru a obține CO2, H2O și energie. Aceste procese folosesc anumite enzime pentru a realiza operațiunile aferente respirației, iar enzimele depind în totalitate de temperatură. La temperaturi în jurul valorilor de 50 de grade Celsius enzima își pierde caracteristicile, iar la temperaturi scăzute acestea sunt inactive. Astfel este necesar controlul temperaturii în interiorul unei sere de plante.

Datorită proceselor menționate mai sus într-un sistem este nevoie ca temperatura, intensitatea luminii, dar și nivelul de umiditate a solului să fie controlate de către un sistem automatizat.

I.4 Scopul sistemului de reglare si specificatii de proiectare

Scopul proiectului este de a realiza un sistem de reglare al unei sere de plante bazată pe tehnologii moderne care să ofere utilizatorilor anumite informații preluate de pe un sistem de achiziții prin intermediul unor senzori.

Sistemul este realizat pentru a gestiona:

– Fluxul de informații:

– Afișarea informațiilor către utilizator

– Afișarea datelor preluate

– Starea sistemului

– Controlul condițiilor optime de dezvoltare a plantelor

– Randamentul producției

– Reducerea generală a costurilor, pe cât posibil, la toate nivelele producției.

I.5 Definirea unui sistem automatizat

Automatizările sunt un topic cu totul nou în serele de legume, fructe sau plante. Producătorii de echipamente și chiar operațiile necesare menținerii serei, au gasit modalități de a reduce din costurile producerii acestor echipamente de-a lungul timpului. Totuși pentru a realiza un sistem cu echipamente de o performanța înaltă, prețurile sunt încă la un nivel destul de ridicat.

Prin această automatizare se poate înțelege reducerea numărului de angajați platiți pentru a efectua lucrări de întreținere a culturilor, dar și reducerea riscului de apariție a accidentelor la locul de munca, eliminându-se astfel și probleme de tip legislativ.

Cultivările intensive moderne folosesc aceste automatizări în special pentru a asista timpul de creștere a plantelor, dar și creșterea în sine. Prin controlul temperaturii, a nivelului de umiditate, dar și a altor factori de lumină pentru cultivarea unui tip de plantă ce trebuie crescută în anumite condiții, sera reprezintă mediul ideal de dezvoltare. Motivul principal pentru creearea unei sere o reprezintă factorii climatici din arealul respectiv.

Ideea de baza de control al climei într-o seră reprezintă o performanță mai bună, cu privire la randamentul culturilor, dar și utilizarea resurselor, fiind un plus din punct de vedere financiar pentru investitori( între 15 si 30% reducerea costului la energie, reducerea forței de muncă, fără pierderea sau chiar câstigul în procente al producției).

Pentru realizarea unui proiect de automatizare în cadrul unei sere, s-a ajuns la concluzia că un microcontroler reprezintă cea mai bună soluție atât din punct de vedere financiar, cât și din punctul de vedere al redundanței.

Un sistem este constituit în general dintr-un microcontroler, o interfață, sistemele de achiziție de date, sistemele de control si sistemele aferente. O construcție defectuoasă poate reduce performanța sistemului. Exemple: reducerea factorului de lumina, prin folosirea de materiale necurățate sau pierderea de căldură, care este direct proporționala cu mărimea serei.

Capitolul II Medii și tehnologii utilizate

II.1 Arduino – Platforma Hardware

II.1.1 Ce este Arduino?

Arduino este o platformă hardware open source formată dintr-o placă electronică cu un microcontroler. Pe scurt, platforma este o placă (de test, de circuit imprimat, etc.) de diferite forme fizice și design care are ca element central un circuit integrat programabil. Atât placa de bază cât și circuitul integrat programabil pot fi diferite, ceea ce conferă proiectelor realizate o flexibilitate in proiectare deosebită.

Arduino Mega

II.1.2 Tipuri de module

Un proiect bazat pe platforma Arduino constă din mai multe module conectate între ele. Modulele pot fi catalogate în funcție de diverse criterii; aici le vom structura după funcție. Vom vedea mai jos cum anume se conectează diversele module la platforma de dezvoltare:

 Platforma de dezvoltare — aceasta este placa electronică ce conține microcontroler-ul („creierul”) programabil. Dat fiind că platforma Arduino este open source, sunt disponibile atât platforme Arduino originale, fabricate în Italia, cât și clone compatibile, mai ieftine, fabricate în general, în China. Vom vedea mai departe că există mai multe modele de astfel de platforme, modele care diferă atât în ceea ce privește capabilitățile cât și în ceea ce privește dimensiunile fizice. Totuși limbajul de programare, mediul de dezvoltare și interconectarea diverselor module sunt practic identice, indiferent de modelul specific al platformei.

 Module de intrare — numite și senzori, acestea sunt module care se conectează la platforma Arduino pentru a trimite date către aceasta (de exemplu butoane, senzori de temperatură, senzori de distanță, potențiometre ș.a.m.d.)

 Module de ieșire — acestea sunt module care se conectează la platforma Arduino pentru a permite acesteia să transmită informații către lumea exterioară. Acestea pot fi relee, afișaje, difuzoare ș.a.m.d.

 Module de date — modulele de date permit platformei Arduino să comunice direct cu alte dispozitive digitale (inclusiv cu alte module Arduino). Modulele de date pot fi module Ethernet, care permit comunicația prin Internet sau printr-o rețea locală, module radio, care pot comunica cu computere sau alte platforme Arduino, module USB, module GSM și așa mai departe.

 Accesorii — acestea nu sunt în general considerate module Arduino, însă sunt o parte uzuală a proiectelor de acest gen. Există tot felul de accesorii, de la soluții de alimentare cu curent electric până la cele mai diverse accesorii.

Conectorii de pe platformele de dezvoltare Arduino sunt conectori mamă. Pinii de pe placa de dezvoltare au următoarele funcții, conform etichetelor tipărite pe placă:

GND — ground, masa, polul negativ al circuitului, tensiune 0 volți;

5V— 5V, pin care prezintă o tensiune de 5 volți față de GND, indiferent de tensiunea de alimentare; în funcție de modelul platformei de dezvoltare, tensiunea de lucru poate fi 5V sau 3,3V;

VCC — tensiunea de intrare. Platforma Arduino se alimentează fie prin conectorul USB, fie prin mufa de alimentare; acest pin prezintă tensiunea de alimentare neschimbată, indiferent că este 3,3V, 5V, 9V, 12V sau orice altceva.

Digital 0, Digital 1, …, Digital N — pini de intrare/ieșire digitală. Pinii digitali au doar două stări: 1 sau 0 (logic), HIGH sau LOW (notația în cod), 5V sau 0V (tensiunea propriu-zisă). Numărul concret de pini disponibili depinde de modelul specific al platformei de dezvoltare; în general, numărul lor este între 4 și 54.

Analog 0, Analog 1, …, Analog N — pini exclusivi de intrare analogică. Aceștia pot citi valori discrete între 0 și 1023, corespunzătoare în mod proporțional tensiunii de intrare (între 0 și 5V). Din nou, numărul de pini diferă de la placă la placă; în general numărul lor este de 6 sau 16.

II.2 Sisteme de achiziție de date(senzori)

II.2.1 Senzor temperatură

Arduino are multe utilizări, printre cele mai populare este utilizarea de senzori de temperatură. Pentru aceasta Dallas Onewire DS18820 este cel mai utilizat. Cu acest senzor de temperatură puteți obține temperatura din cameră, mașină, aproape oriunde.

Ca și în trecut, producția senzorului de temperatură este analogică, avem nevoie pentru a adăuga un cip suplimentar in linie pentru conversie A / D și D / A, pentru Arduino,la care interfața externă nu este foarte largă, dar în același timp utilizarea microcontroler-ului nu este mare. Noul senzor de temperatură DS18B20 este o soluție bună pentru utilizarea uzuală și economică.

Specificații:
    Modulul foloseste un singur senzor DS18B20, sursa de alimentare externă are o gama de tensiuni de la 3,0 V la 5,5 V. Intervalul de temperatură la măsurare este de la -55 ° C până la 125 ℃, Fahrenheit echivalent 67 ° la 257 ° F, de la -10 ° C până la +85 ° C are o gamă de precizie de ± 0,5 ° C.
    Senzorul de temperatură este o rezoluție programabilă de 9 până la 12 de conversie a temperaturii în format digital de 12-biți cu un maxim de 750 de milisecunde cu formula de la utilizatori setări pot fi definite de alarmă temperatură nevolatile.

Conectarea:

    Pin – = conectat la Arduino GND
    Pin (mijloc) = conectat la Arduino + 5V
    Pin S = semnal, în acest exemplu conecta la portul Arduino Digital n

Exemplu cod: Anexă A1.1

Când totul este corect conectat la modulul există un led care clipește dacă senzorul este citit.

II.2.2 Senzor temperatura digital și de umiditate

Măsurarea digitală a temperaturii și umidității folosește semnal digital pentru temperatură și umiditate și asigură fiabilitate ridicată și o stabilitate excelentă pe termen lung. Produsul are o calitate excelentă, un răspuns rapid, capacitate anti-interferențe, costul redus și alte avantaje. Interfața are un singur fir serial care permite integrarea sistemului rapid și ușor. Este de mici dimensiuni, consum redus de energie, poate transmite semnal la o distanță de până la 20 de metri, ceea ce face integrarea usoară și reprezintă cea mai bună alegere.

Specificații:

    Tensiune de alimentare: 3.3 ~ 5.5V DC

    Ieșire: un singur bus de semnal digital

    Gama de măsurare: Umiditate 20-90% RH, Temperatură 0 ~ 50 ℃

    Precizie: Umiditate + -5% RH, temperatura + -2 ℃

    Rezolutie: Umiditate 1% RH, temperatura de 1 ℃

    Stabilitate pe termen lung: <± 1% RH / an

Schemă conectare:

Arduino pin 8 –> Pin S modul

Arduino GND –> Pin – modul

Arduino +5 –> Pin Mijloc

Exemplu Cod: Anexă A1.2

II.2.3 Modul detectare intensitate lumină

Senzorul este, de asemenea, cunoscut sub numele de rezistență dependentă de lumina (LDR), sunt dispozitive sensibile la lumină, de cele mai multe ori folosite pentru a indica prezența sau absența luminii, sau pentru a măsura intensitatea luminii. În întuneric, rezistenta lor este foarte mare, uneori până la 1MΩ, dar atunci când senzorul LDR este expus la lumina, rezistenta scade dramatic, chiar până la câteva ohmi, în funcție de intensitatea luminii. LDRs au o sensibilitate care variază în funcție de lungimea de undă a luminii aplicată și sunt dispozitive neliniare. Ele sunt folosite in multe aplicatii, dar sunt uneori depășite de alte dispozitive, cum ar fi fotodiodele și fototranzistoarele. Unele țări au interzis LDRs din plumb sau cadmiu pe probleme de siguranța mediului.

Specificații:

    În funcție de caracteristicile spectrale fotorezistența are trei fotorezistori: Ultraviolet , infraroșu, fotosensibil vizibil;

    Schemă conectare:

Arduino A5 –> Module Signal (S)

Arduino 5V –> Module +5V (Pin2)

Arduino GND –> Module GND (-)

Exemplu cod: Anexă A1.3

II.2.4 Sondă nivel

Sonda de citire a nivelului apei se bazează pe faptul că apa este un foarte bun conducător de electricitate. Sonda are 3 stări posibile: 25%, 50% respectiv 75% toate respectând același principiu de proiectare și funcționare. Întrucât cunoaștem că pentru un microcontroler valoarea de 0 volți reprezintă „0” logic, iar pentru o valoare cuprinsă între 3,5 și 5 volți, este reprezentat „1” logic, am recurs la implementarea unui circuit capabil să preia nivelul apei din interiorul unui recipient de 500 ml.

Sonda de nivel a apei conține 3 stări posibile, stări ce îmi permit să deduc folosirea a 3 pini de la microcontroler. Principiul de functționare este asemănător ca și în cazul unui buton simplu cu două stări. Implementarea a fost realizată astfel:

Circuitul este prezentat în figura alăturată:

Sistem achiziție sondă volum

Codul folosit pentru achiziția volumului este:

II.2.5 Senzor umiditate sol

Teoria de funcționare a acestor senzori este aceeași cu cea prezentă în cadrul sondei de nivel, cu diferența că la microcontroler nu mai ajunge un semnal de tip digital, ci unul de tip analog. Acest tip de semnal permite citirea cu o precizie mai ridicată a umidității solului.

În cazul citirii umidității, realizăm doar o simplă citire a valorii tensiunii prezente pe acel conector. Intervalul fiind situat între 0 și 5 Volți citirea datelor a fost realizată cu o funcție simplă de interpretare a datelor de tip analog. Și în cazul acesta s-a recurs la transformarea datelor în procente, acestea fiind mai ușor de interpretat de către utilizator.

În secvența prezentată mai sus putem observa că datele preluate pe pinul cu denumirea upin sunt stocate în variabila de tip integer cu denumirea readu. Se convertește în date ce pot fi prelucrate cu ușurință și sunt transformate in procentaje prin intermediul funcției map, dar și constânse în același timp cu funcția ―constrain‖ pentru a se încadra în intervalul 0-100 %.

II.3 Instrumente de control

II.3.1 Releu control

Modulul releu poate fi conectat la 240V AC sau 28V, curent continuu într-o varietate de alte componente electrice. Releul poate fi folosit în alarmă anti-furt, jucării, etc. Releul este un dispozitiv controlat electric. El are un sistem de control (de asemenea cunoscute ca circuitul de intrare) și sistemul de control (Cunoscut ca circuitul de ieșire).

Frecvent utilizate în circuitul de control la automatizări, acesta este de fapt un dispozitiv comandat de un curent de intensivate mică pentru a controla o operațiune de curent de intensitate mai mare "comutator automat." Prin urmare, circuitul are diverse roluri: reglează automat funcționarea, de protecție, de siguranță, circuit de conversie, de transfer și așa mai departe.Este foarte potrivit pentru a controla dispozitive single-chip în circuite electrice puternice.

Specificații:

    Scopul principal al releului este funcția izolării automate la comutarea elementelor, sunt utilizate pe scară largă în telecomenzi, telemetrie, comunicații, control automat, mecatronica si dispozitive electronice de putere, este una dintre cele mai importante elemente de comandă.

Schema conectare:

Arduino digital pin 10 –> module pin S

Arduino GND –> module pin –

Arduino +5V –> module pin +

Exemplu cod: Anexă A2.1

II.4 Instrumente de intrare/ieșire

II.4.1 Display

Afișarea datelor pe display este importantă deoarece în lipsa unui calculator sau a unui dispozitiv – ce suportă instalarea aplicației și rularea acesteia, respectiv inexistența unui port USB, permite utilizatorului vizualizarea datelor existente în acel moment în interiorul serei.

Displayul este folosit ca intrument de ieșire, pentru afișarea diverselor date din sistem, sau pentru stocarea datelor obținute pe card-ul MicroSD.

Specificații:

Acesta este un ecran tactil rezistiv , care poate fi folosit ca dispozitiv de afișare sau pad pentru introducere date de către utilizator / interfață.

Un modul pentru card-ul MicroSD este , de asemenea, integrat pentru a oferi spațiu de stocare , pentru proiectele dumneavoastră .

Schema conectare:

Arduino Pin LCD Shield Pin Use

3.3V 3.3V Power

5V 5V Power

GND GND Power

A0 LCD_RD LCD Control

A1 LCD_WR TOUCH_YP LCD Control / Touch Data

A2 LCD_RS TOUCH_XM LCD Control / Touch Data

A3 LCD_CS LCD Control

A4 LCD_RST LCD Reset

D2 LCD_D2 LCD Data

D3 LCD_D3 LCD Data

D4 LCD_D4 LCD Data

D5 LCD_D5 LCD Data

D6 LCD_D6 / TOUCH XP LCD Data/ Touch Data

D7 LCD_D7 / TOUCH YM LCD Data / Touch Data

D8 LCD_D0 LCD Data

D9 LCD_D1 LCD Data

D10 SD_CS SD Select

D11 SD_DI SD Data

D12 SD_DO SD Data

D13 SD_SCK SD Clock

Exemplu cod: Anexa A3.1

II.4.2 Modul alarmă vizuală.

Necesitatea sistemelor de alarmă este esențială, pentru că, în lipsa unei avertizări vizuale, ale unor parametrii ai sistemului de automatizare, producția poate fi compromisă sau chiar distrusă.

Dispune de două culori: roșu și verde.

Schema conectare:

Arduino pin 10 –> rezistor 330 Ohm –> pin semnal S

Arduino pin 11 –> rezistor 330 Ohm –> pin mijloc

Arduino GND –> modul -/GND

Exemplu cod: Anexă A3.2

II.4.3 Modul alarmă sunet

Aceasta este o sonerie activa pentru alarma sistemului . Se aplica doar tensiunea la sonerie și produce un sunet . Dezavantajul este că nu se poate determina frecvența sunetelor , pentru aceasta ai nevoie de o sonerie pasiva .

Schema conectare:

Modulul pin” -” = GND

PIN modul S = Pin digital Arduino n

Exemplu cod: Anexă A3.3

II.5 Sisteme de reglare

Pentru controlul sistemelor de reglare din seră, se vor folosi releele prezentate anterior, pentru a putea utiliza o plajă mai mare de tensiuni, aferente diverselor tipuri de sisteme utilizate.

Avantajele folosiri releelor sunt:

– Izolarea tensiunilor de control, fata de cele utilizate

– Controlul facil

– Usurința in utilizare

– Costuri mici de achiziție

– Fiabilitate

II.5.1 Sistem răcire – ventilație

Ventilatorul este folosit pentru răcirea, ventilarea si recircularea aerului in incinta serei. Sistemele de ventilare sunt formate din ventilatoare distribuite uniform pe toată suprafața serei. Adesea, ele sunt montate deasupra culturilor, pe structura clădirii. Astfel, ventilatoarele ajută la crearea unui curent slab de aer ce va permite distribuirea uniformă a aerului. În cazul în care ferestrele serei sunt închise, curentul de aer produs de ventilatoare va impiedica saturarea cauzată de umiditatea excesivă, data fiind temperatura scazută. Mai mult, aceste dispozitive pot ajuta la îmbunătățirea schimbului de gaze și la intensificarea procesului de transpirație, atunci când temperaturile sunt ridicate.

II.5.2 Sistem umidificare- pompă apă

Sistemele de irigare prin picurare s-au impus din ce în ce mai mult datorită costurilor tot mai scăzute și avantajelor numeroase.

Sistemele de udare prin picurare folosesc ca elemente de udare tubul de picurare.

Avantajele sistemului de udare prin picurare:

-Puterea mare de udare într-un timp relativ scurt (20-30 minute);

-Economie de apă;

-Timp redus de udare;

-Efort minim pentru  udarea plantelor;

-Se evita prezența apei pe frunze, reducând astfel atacurile și bolile;

-Ușurință în exploatare și montare;

-Odată cu apa prin picurare se pot administra: fertilizanți (îngrășăminte, stimulatori de creștere, aminoacizi,etc), insecticide sau fungicide;

-Picurarea nu face nămol sau crustă între și pe rândurile cu legume.

II.5.3 Sistem iluminare

Deoarece lumina trebuie să fie constantă, dar și să respecte anumite reguli și anume: pe timpul zilei să fie aprinsă la capacitate maximă, plantele având nevoie de acest factor pentru a realiza fotosinteza, iar pe timpul nopții lumina trebuie să fie stinsă, am implementat sistemul de iluminare astfel încât utilizatorul să nu poată interveni. Senzorul de lumină controlează în mod automat sistemul de iluminare alcătuit dintr-un set de diode luminescente.

Am recurs la utilizarea acestui tip de iluminare, deoarece aceste diode nu sunt mari consumatoare de curent electric, dar în același timp furnizează o lumină albă de o intensitate mare.

II.5.4 Sistem încălzire

Căldura este un factor important în procesul de creștere a plantelor. Încălzirea sistemului este realizată prin intermediul a câte 15 rezistori de 330Ω cu o putere de ½ Watti fiecare. Un circuit este alimentat la o tensiune de 12 Volți, prin intermediul unui releu, deoarece Arduino nu oferă ieșire decât la 3V și 5V.

Alimentarea la o tensiune așa ridicată permite rezistorilor să degajă căldură, însă numărul destul de mare al acestora împiedică apariția anumitor riscuri cum ar fi: existența fumului, distrugerea rezistorilor ș.a.m.d.

II.6 Arduino Programing Language

II.6.1 Ce înseamnă?

Limbajul folosit este o variantă simplificată de C/C++, ameliorată cu diverse biblioteci specifice platformei Arduino. Este foarte ușor de folosit pentru oricine are experiență de programare în orice limbaj cât de cât structurat.

Limbajul oferă și un mediu de dezvoltare IDE (integrated development environment), pentru ușurarea programării microcontrolerului și librării predefinite.

II.6.2 Structura

Fiind asemanator cu limbajul C++, codul este structurat pe functii care nu este necesar a fi completate.

Mediul de dezvoltare Arduino conține un editor de text pentru scrierea de cod , o zonă de mesaj , o consolă text, o bară de instrumente cu butoane pentru funcții comune , precum și o serie de meniuri . Se interconectează la hardware-ul Arduino prin portul serial-USB pentru a încărca programe și pentru a comunica.

Exemplu de program:

1. /*

2. Blink

3. Turns on an LED on for one second, then off for one second, repeatedly.

4.

5. This example code is in the public domain.

6. */

7. void setup()

8. {

9. // initialize the digital pin as an output.

10. // Pin 13 has an LED connected on most Arduino boards:

11. pinMode(13, OUTPUT);

12. }

13.

void loop()

{

15. digitalWrite(13, HIGH); // set the LED on

16. delay(1000); // wait for a second

17. digitalWrite(13, LOW); // set the LED off

18. delay(1000); // wait for a second

19. }

Explicația codului precedent:

 Au fost definite două funcții, setup() (liniile 8-12) și loop() (liniile 14-19). Aceste două funcții trebuie să fie prezente în orice program; dacă nu aveți nevoie de vreuna dintre ele atunci scrieți-o și lăsați-o goală (deși este puțin probabil să vă găsiți vreodată în această situație).

 Funcția setup() este executată o singură dată, la inițializarea plăcii (de fiecare dată când este alimentată, de fiecare dată când încărcați un program nou și de fiecare dată când resetați placa)

 Funcția loop() se execută apoi la infinit, fără pauză. Dacă aveți nevoie de pauze trebuie să le introduceți dumneavoastră în mod explicit.

 În programul nostru, funcția setup() face un singur lucru: declară pinul 13 (adică pinul digital 13) ca pin de ieșire

 Funcția loop() de mai sus face următoarele:

linia 15: scrie "1" la pinul 13 (adică din acest moment pinul respectiv va fi alimentat cu 5V)

linia 16: așteaptă 1000 de milisecunde, adică o secundă;

linia 17: scrie "0" la pinul 13 (adică din acest moment pinul respectiv nu va mai fi alimentat)

linia 18: așteaptă din nou o secundă (dar de data asta pinul 13 nu mai este alimentat, deci LED-ul este stins).

Capitolul III Proiectarea sistemului de reglare

În acest capitol sunt prezentate cerințele de proiectare ale sistemului. Acest lucru presupune o bună formulare și înțelegere a problemei, evidențiind necesitățile structurale ale sistemului, dar și necesitățile funcționale. Această înțelegere poate conduce la o distincție netă între analiză ("ce trebuie făcut?") și proiectarea ("cum trebuie făcut?") sistemului.

III.1 Structură hardware

III.1.1 Proiectare embedded

Funcționalitatea proiectului se bazează pe sistemul de achiziție. Acest sistem trebuie să îndeplinească anumite operații necesare prelucrării datelor preluate de la senzori, sau prelucrării datelor preluate de la utilizator în vederea controlării elementelor active din sistem, cum ar fi ventilator, sistem iluminare, încălzire sau pompa de apă.

Programarea microcontrolerului este un pas important, deoarece cipul fără cod nu este altceva decât un simplu integrat fără o funcție anume. Pentru a crea sistemul au trebuit respectate 3 etape principale:

– Crearea arhitecturii

– Implementarea arhitecturii

III.1.2 Crearea arhitecturii

Cel mai important element al arhitecturii, este fară indoială microcontrolerul Arduino, care este responsabil cu procesarea tuturor proceselor care se desfășoară in sistem.

În cadrul creării arhitecturii s-a luat în seamă rezultatul final dorit și costurile cât mai reduse, îmbunătățirile fiind adăugate pe parcursul implementării.

Elaborarea sistemului a avut ca punct de pornire sistemul de achiziție de date, care este și partea cea mai importantă a automatizăriiși ne oferă toate datele necesare pentru a continua monitorizarea si controlul sistemului, prin intermediul microcontrolerului.

Următorul pas, este sistemul de control, care este implementat prin relee, fiind ușor de controlat și costuri foarte mici. Din sistemul de control fac parte si intrumentele de intrare/ieșire, pentru controlul proceselor desfașurate.

Ultimul pas în crearea arhitecturii este, sistemelul de reglare a condițiilor în incinta serei. Arhitectura conține sisteme de : ventilație, iluminare, umidificare și încălzire

III.1.3 Implementarea arhitecturii

Sistemul automatizat fiind unul autonom, necesitând pentru a functiona, doar de energie electrică și condiții optime de climat pentru a funcționa, ca de altfel, ca și toate dispozitivele electronice/electrice.

Ținând cont, că perioadele de cultură, sunt relativ mari, intervenția in sistem nu este necesară, doar dacă se schimbă felul culturii sau oprirea sistemelor pentru mentenanță. Din această cauză nu s-a implementat un sistem de control la distanță, acesta fiind costisitor financiar și îngreunând funcționarea sistemului.

Pentru schimbarea parametrilor in sistem, se poate folosi portul Serial-USB al Arduino și durata de implementare fiind foarte scurtă.

Capitolul 4. Realizarea, punerea în funcțiune și rezultatele obținute

IV.1 Realizarea sistemului

Perioada realizării proiectului a fost îndelungată, s-a început prin proiectarea sistemului de reglare și stabilirea funcțiilor ce ar trebui îndeplinite de fiecare sistem in parte.

S-a dezvoltat o schemă logică pentru ușurarea implementării proiectului, atât pe parte hardware, cât si software.

IV.2 Punerea în funcțiune

Pentru a fi pus în funcțiune, sistemul necesită o conexiune cu sistemul de achiziție, pentru a fi colectate date.

Alimentarea sistemului de achiziție se efectuează de la o sursă de calculator. Se cupleaza de la sursa de tensiune de la bornele de 5 volti, respectiv 12 volți, o serie de fire de tip multifilar. Pe sursă este montat un întrerupator ce ne permite deschiderea circuitului în caz de problemă sau erori. Alimentarea sursei se efectuează la tensiunea de 220 V curent alternativ, la o frecvență de 50 Hertzi.

Cablul folosit pentru conexiunea serială

Programarea microntrolerului se realizeaza prin portul serial-USB al plăcii Arduino și se folosește in principal mediul de dezvoltare integrată, oferit de către platforma Arduino.

IV.3 Rezultate obținute

Pentru a observa funcționalitatea sistemului cât mai precis, am considerat ca, după realizarea unui modul software sau hardware, o testare a acestuia este următorul pas. Citirea datelor și compararea acestora cu rezultatele scontate a fost un pas esențial în dezvoltarea proiectului, deoarece testarea produsului este un factor decisiv în livrarea sau implementarea acestuia.

Capitolul V Concluzii

V.1 Obiective realizate

Scopul proiectului a fost acela de a creea un instrument prin intermediul căruia să putem avea control, dar în aceeași măsură să putem prelua și vizualiza datele preluate de la un sistem de achiziție, în cazul în care dorim să folosim calculatorul personal sau calculatorul ce se poziționează la o distanță redusă față de sistemul de achiziție, și cu ajutorul unui site în cazul în care avem la dispoziție o conexiune stabilă la internet. Printre obiectivele realizate se numără de asemenea creearea unui sistem ce poate funcționa autonom fără a fi necesară o conexiune cu calculatorul personal sau cu rețeaua de internet.

Proiectarea sistemului de achiziție și reglare cu parametrii ce pot fi modificați în timpul funcționării au condus la o potrivire a sistemului, per total, într-o categorie ce poate fi denumită automatizare.

V.2 Posibilități de îmbunătățire

Deoarece sistemul beneficiază de o legătură directă cu un site, o îmbunătățire ce ar putea fi adusă asupra părții software a proiectului o constituie creearea unei aplicații realizată pentru telefoanele mobile sau pentru smartphone-uri ce poate fi în contact direct cu site-ul. Utilizarea acestui tip de aplicație îi poate asigura utilizatorului o mobilitate sporită, față de utilizarea unui laptop sau orice alt tip de dispozitiv prin intermediul căruia avem posibilitatea accesării rețelei de internet.

Îmbunătățirea unui produs înseamna implementarea de idei noi și eficiente din punct de vedere financiar sau funcțional pentru utilizator.

Panou solar

Adăugarea de panouri solare, permite realizarea unui sistem autonom și stabil. Întrucât cantitatea combustibililor fosili este în scădere, acest lucru a dus la scumpirea curentului electric, dezvoltatorii fiind nevoiți să caute încontinuu alte surse de energie.

Întrucât acestea utilizează o sursă inepuizabilă de energie și anume Soarele, are totodată și anumite dezavantaje cum ar fi:

Sensibilitatea la intemperiile naturii;

Incapacitatea de a produce energie pe timpul nopții, acest impediment fiind foarte ușor trecut cu ajutorul unor acumulatori de o capacitate ridicată;

Spațiul necesar utilizat;

Și nu în ultimul rând costul;

Fiind o tehnologie care se află încă la început, raportul calitate-preț este unul destul de ridicat, împiedicând utilizarea panourilor pe o scară mai largă. Prețul fiind ridicat, unitățile de producere a energiei electrice prin intermediul panourilor solare se găsesc preponderent în țările aflate în dezvoltare. Un exemplu este China sau Japonia, țări aflate în topul statelor cu o ascensiune a capitalului.

O altă posibilitate de îmbunătățire este aceea de a utiliza un modul GSM, modul ce poate fi utilizat în vederea expedierii de mesaje de tip text către telefonul mobil al utilizatorului cu valorile citite de la senzorii amplasați în interiorul serei.

Pentru sporirea portabilității se mai poate adăuga un modul wireless, pentru trimiterea sau primirea datelor pe un laptop. Astfel se elimină problemele de conexiune ce pot apărea în urma întreruperii cablului sau se poate elimina chiar necesitatea unui cablu suficient de lung necesar legării sistemului de achiziție cu aplicația de pe calculatorul personal.

Interfață ethernet

Arduino Ethernet Shield Arduino se conectează la Internet în doar câteva minute . Doar conectați acest modul la Arduino , conectați-l la rețea cu un cablu RJ45 și urmați câteva instrucțiuni simple pentru a începe controlul întregului sistem Arduino prin intermediul internetului .

Arduino Ethernet Shield permite ca o placa Arduino să se conecteze la internet . Ea se bazează pe cip ethernet Wiznet W5100 . Wiznet W5100 oferă o rețea ( IP ) capabilă atât TCP și UDP . Aceasta susține până la patru conexiuni simultane .

Interfață GSM

Arduino GSM Shield Arduino se conectează la Internet folosind rețeaua wireless GPRS . Doar conectați acest modul la Arduino , conectați o cartelă SIM de la un operator de acoperire GPRS , urmați câteva instrucțiuni simple pentru a începe controlul Arduino prin intermediul internetului . De asemenea, puteți efectua / primi apeluri vocale ( veți avea nevoie de un circuit difuzor și microfon extern ) și puteți trimite / primi mesaje SMS .

Interfață rețea wireless

Arduino WiFi Shield Arduino se conectează la Internet fără fir . Conectați-l la rețeaua fără fir , urmând câteva instrucțiuni simple.

WiFi Shield se poate conecta la rețele fără fir care operează în conformitate cu specificațiile 802.11b și 802.11g .

Există și un slot pentru card micro SD integrat , care poate fi folosit pentru a stoca fișiere. Este compatibil cu Arduino Uno și Mega .

Joystick control

Principiul de control poate fi considerat că este organizat de două potențiometre și un buton .Mișcări direcționale sunt pur și simplu două potențiometre – una pentru fiecare axă.

Utilizat, in principal pentru controlul aplicațiilor de pe microcontroler

Bibliografie

http://arduino.cc

http://elforum.ro

O'Reilly – Programming C# 2nd Edition, O'Reilly Media, 2002

Brad Kendall – Getting started with Arduino- a beginner’s guide, MakeUseOf.com, 2013

http://arduinosensors.com

https://learn.adafruit.com

Michael McRoberts – Beginning Arduino, www.apress.com, 2013

John Boxall – Arduino workshop, No Starch Press, Inc 2013

http://www.ladyada.net/learn/arduino/

Arduino Tutorials

https://youtube.com

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

Brian Evans – Beginning Arduino Programming, www.apress.com, 2011

Anexe

A.1 Anexe: Exemple cod sisteme achiziție

Anexa A1.1: Senzor temperatura:

#include <OneWire.h>

 // DS18S20 Temperature chip i/o

OneWire ds(10); // on pin 10

 void setup(void) {

// initialize inputs/outputs

// start serial port

Serial.begin(9600);}

 void loop(void) {

  //For conversion of raw data to C

int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;

  byte i;

byte present = 0;

byte data[12];

byte addr[8];

  if ( !ds.search(addr))

{

Serial.print("No more addresses.\n");

ds.reset_search();

return;

}

 {

Serial.print("R=");

for( i = 0; i < 8; i++)

{

Serial.print(addr[i], HEX);

Serial.print(" ");

}

 {

if ( OneWire::crc8( addr, 7) != addr[7])

{

Serial.print("CRC is not valid!\n");

return;

}

 {

if ( addr[0] == 0x10)

{

Serial.print("Device is a DS18S20 family device.\n");

}

else if ( addr[0] == 0x28)

{

Serial.print("Device is a DS18B20 family device.\n");

}

else

{

Serial.print("Device family is not recognized: 0x");

Serial.println(addr[0],HEX);

return;

}

  ds.reset();

ds.select(addr);

ds.write(0x44,1); // start conversion, with parasite power on at the end

  delay(1000); // maybe 750ms is enough, maybe not

// we might do a ds.depower() here, but the reset will take care of it.

  present = ds.reset();

ds.select(addr);

ds.write(0xBE); // Read Scratchpad

  Serial.print("P=");

Serial.print(present,HEX);

Serial.print(" ");

for ( i = 0; i < 9; i++) { // we need 9 bytes

data[i] = ds.read();

Serial.print(data[i], HEX);

Serial.print(" ");

}

Serial.print(" CRC=");

Serial.print( OneWire::crc8( data, 8), HEX);

Serial.println();  //Conversion of raw data to C

LowByte = data[0];

HighByte = data[1];

TReading = (HighByte << 8) + LowByte;

SignBit = TReading & 0x8000; // test most sig bit

if (SignBit) // negative

{

TReading = (TReading ^ 0xffff) + 1; // 2's comp

}

Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25

  Whole = Tc_100 / 100; // separate off the whole and fractional portions

Fract = Tc_100 % 100;

   if (SignBit) // If its negative

{

Serial.print("-");

}

Serial.print(Whole);

Serial.print(".");

if (Fract < 10)

{

Serial.print("0");

}

Serial.print(Fract);

  Serial.print("\n");

//End conversion to C

}

Anexa A1.2:Senzor temperatura si umiditate:

//KY015 DHT11 Temperature and humidity sensor int DHpin = 8;

byte dat [5];

byte read_data ()

{

byte data;

for (int i = 0; i < 8; i ++)

{

if (digitalRead (DHpin) == LOW)

{

while (digitalRead (DHpin) == LOW); // wait for 50us

delayMicroseconds (30); // determine the duration of the high level to determine the data is '0 'or '1'

if (digitalRead (DHpin) == HIGH)

data |= (1 << (7-i)); // high front and low in the post

while (digitalRead (DHpin) == HIGH); // data '1 ', wait for the next one receiver

}

}

return data;

}

 void start_test ()

{

digitalWrite (DHpin, LOW); // bus down, send start signal

delay (30); // delay greater than 18ms, so DHT11 start signal can be detected

  digitalWrite (DHpin, HIGH);

delayMicroseconds (40); // Wait for DHT11 response

  pinMode (DHpin, INPUT);

while (digitalRead (DHpin) == HIGH);

delayMicroseconds (80); // DHT11 response, pulled the bus 80us

if (digitalRead (DHpin) == LOW);

delayMicroseconds (80); // DHT11 80us after the bus pulled to start sending data

  for (int i = 0; i < 4; i ++) // receive temperature and humidity data, the parity bit is not considered

dat[i] = read_data ();

  pinMode (DHpin, OUTPUT);

digitalWrite (DHpin, HIGH); // send data once after releasing the bus, wait for the host to open the next Start signal

}

 void setup ()

{

Serial.begin (9600);

pinMode (DHpin, OUTPUT);}

 void loop ()

{

start_test ();

Serial.print ("Current humdity =");

Serial.print (dat [0], DEC); // display the humidity-bit integer;

Serial.print ('.');

Serial.print (dat [1], DEC); // display the humidity decimal places;

Serial.println ('%');

Serial.print ("Current temperature =");

Serial.print (dat [2], DEC); // display the temperature of integer bits;

Serial.print ('.');

Serial.print (dat [3], DEC); // display the temperature of decimal places;

Serial.println ('C');

delay (700);

}

Anexă A1.3 Senzor lumină:

//KY018 Photo resistor module

 int sensorPin = A5; // select the input pin for the potentiometerint ledPin = 13;

// select the pin for the LEDint sensorValue = 0;

// variable to store the value coming from the sensor;

void setup()

{

pinMode(ledPin, OUTPUT);

Serial.begin(9600);

}

void loop()

{

sensorValue = analogRead(sensorPin);

digitalWrite(ledPin, HIGH);

delay(sensorValue);

digitalWrite(ledPin, LOW);

delay(sensorValue);

Serial.println(sensorValue, DEC);

}

Anexă A2 Exemple cod instrumente control

Anexă A2.1 Releu control

//KY019 5V relay module

int relay = 10; // relay turns trigger signal – active high;

void setup ()

{

pinMode (relay, OUTPUT); // Define port attribute is output;

}

void loop ()

{

digitalWrite (relay, HIGH); // relay conduction;

delay (1000);

digitalWrite (relay, LOW); // relay switch is turned off;

delay (1000);

}

Anexă A3 Instrumente de intrare/ieșire

Anexă A3.1 Display Touchscreen

// drawCircle example

#include <stdint.h>

#include <TFTv2.h>

#include <SPI.h>

void setup()

{

TFT_BL_ON; //turn on the background light

Tft.TFTinit(); //init TFT library

Tft.drawCircle(100, 100, 30,YELLOW); //center: (100, 100), r = 30 ,color : YELLOW

Tft.drawCircle(100, 200, 40,CYAN); //center: (100, 200), r = 10 ,color : CYAN

Tft.fillCircle(200, 100, 30,RED); //center: (200, 100), r = 30 ,color : RED

Tft.fillCircle(200, 200, 30,BLUE); //center: (200, 200), r = 30 ,color : BLUE

}

void loop()

{

}

Anexă A3.2 Modul alarmă vizuală

void setup () {

pinMode (redpin, OUTPUT);

pinMode (greenpin, OUTPUT);}void loop () {

for (val = 255; val> 0; val–)

{

analogWrite (greenpin, val);

analogWrite (redpin, 255-val);

delay (15);

}

for (val = 0; val <255; val++)

{

analogWrite (greenpin, val);

analogWrite (redpin, 255-val);

delay (15);

} }

Anexa A3.3: Exemplu cod buzzer:

// KY012 buzzer activ

int speakerPin = 8;

void setup ()

{

pinMode (speakerPin, OUTPUT);

}

void loop ()

{

analogWrite (speakerPin, 255);

delay (50);

analogWrite (speakerPin, 0);

delay (10);}

Similar Posts