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/
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);}
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Industria de Automatizari Si Software (ID: 162604)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
