Sistem de Avertizare Rapida Pentru Fenomene Meteo Implementat cu Microcontroller Avr
Cuprins
Introducere
Capitolul1: Structura unui sistem de avertizare rapida
-schema bloc
Capitolul 2: Microcontrollerul Atmel ATMEGA2560
2.1 Caracteristici generale
2.2 porturi I/O
2.3 Periferice
2.4 Comunicatia seriala RS232
2.5 SPI
Capitolul 3: Sistemul de dezvoltare ARDUINO MEGA
3.1Caracterisitci generale
3.2 Mediul de dezvoltare arduino IDE
3.3 Ethernet Shield
Capitolul 4: Sisteme de avertizare rapida
4.1Detectia descarcarilor electrice cu AS3935
4.2Formatul RSS
Capitolul 5: Realizare practica
5.1 Schema bloc si dezvoltarea fiecarui bloc functional
5.2 Realizare Hardware (scheme in Fritzi explicate si realizarea practica cu poze)
5.3Realizare Software ( detectia descarcarilor electrice, RSS, afisaj LCD)
Capitolul 6: Concluzii
Lista acronimelor
COMS – Complementary metal–oxide–semiconductor
RISC – Reduced Instruction Set Computing
CISC – Complex Instruction Set Computer
EEPROM – Electrically Erasable Programmable Read -Only Memory
SPI – Serial Peripheral Interface
PWM – Pulse-Width Modulation
USART – Universal Synchronous Asynchronous Receiver Transmitter
SRAM – Static Random Access Memory
ADC – Analog-To-Digital Converter
ALU – Arithmetic Logic Unit
LED – Light-Emitting Diode
MCUCR – MCU Control Register
DTE – Data Terminal Equipment
DCE – Data Circuitterminating Equipment
LSB – Least Significant Bit
MSB – Most Significant Bit
SCK – Systeml Clock
MOSI – Master Out – Slave In
MISO – Master In – Slave Out
SS – Slave Select
UART – Universally Asynchronous Receiver/Transmitter
USB – Universal Serial Bus
ICSP – In-System Self-Programmable
TTL – Transistor-Transistor Logic
TWI – The 2-wire Serial Interface
IDE – Integrated Development Environment
SPI – Serial Peripheral Interface
POE – Power Over Ethernet
I²C – Inter-Integrated Circuit
AFE – Analog Front-end
AREF – Analog Reference
Capitolul 2: Microcontrollerul Atmel ATMEGA2560
2.1. Caracteristici generale
ATmega 2560 este un microcontroler de mica putere, cu magistrala de date pe 8biti, realizat in tehnologia CMOS si are la baza arhitectura AVR de tip RISC avansata. Cu o executie a instructiunilor intr-un singur ciclu de ceas, acest microcontroler atinge o viteza de aproximativ 1MIPS/MHz permitand proiectantului de sistem sa optimizeze consumul de putere in favoarea vitezei de procesare.
Fig 2.1. Diagrama bloc a microcontroler-ului ATmega 2560 [1]
Atmega2560 ofera urmatoarele caracteristici:
64K/128K/256K bytes de memorie flash programabila oferind posibilitatea citirii in timpul scrierii
4KB memorie de tip EEPROM (Electrically Erasable Programmable Read-Only Memory)
8KB memorie interna de tip SRAM;
Un port SPI;
Sase numaratoare flexibile cu mod de comparare si PWM;
Patru USART;
Dispozitivul este fabricat utilizand tehnologia Atmel de inalta densitate a memoriei nevolatile. On-chip ISP Flash permite memoriei de program sa fie reprogramata in sistem printr-o interfata seriala, de catre o memorie de program nevolatila, sau de un program On-chip Boot care lucreaza pe nucleul AVR. Programul Boot poate utiliza orice interfata pentru a descarca aplicatia in memoria Flash. Software-ul din boot-flash va continua sa ruleze cat timp sectiunea aplicatiei Flash este actualizata, permitand operatii reale de citire in timpul scrierii.
Nucleul Atmel AVR combina un set bogat de instructiuni cu 32 de registre de lucru de uz general. Toate cele 32 de registre sunt conectate direct la ALU (unitate logico aritmetica), permitand doua registre independente pentru a fi accesate într-o singura instructiune executata într-un singur ciclu de ceas. Arhitectura rezultata este mai eficienta din punct de vedere al codului fiind de pana la 10 ori mai rapida decat microcontrolerele CISC conventionale.
Schimbarea modului de operarare al fiecaruia din cei 54 de pini se face utilizand functiile puse la dispozitie de catre compilator: pinMode(), digitalWrite() si digitalRead(). De asemenea fiecare pin poate furniza un curent de maxim 40 mA avand optiunea de a fi pus intern la o tensiune de 5V prin intermediul unor rezistente de 20 kΩ.
Modul Idle opreste CPU (unitatea centrala de prelucrare), iar in acelasi timp permite memoriei SRAM, timerului/numaratorului portului SPI si sistemului de intreruperi sa continue functionarea.
Modul de pornire-oprire salveaza continutul registrului dar opreste oscilatorul, dezactivand celelalte functionalitati ale chip-ului pana la urmatoarea intrerupere sau resetare hardware.
In modul Power-Save timer-ul asincron continua sa functioneze, permitand utilizatorului sa mentina baza de timp, in timp ce restul dispozitivului este in starea off. Modul ADC Noise Reduction, opreste CPU si toate modulele I/O, exceptand timer-ul asincron si ADC (converor analog-digital), pentru a minimiza zgomotul de comutatie in timpul conversiei ADC.
In modul Extended Standby, atat oscilatorul principal, cat si timer-ul asincron continua sa lucreze.
ATmega2560 are o memorie flash de 256KB pentru stocarea codului (din care 8 KB sunt utilizati pentru bootloader), 8 KB de SRAM si 4 KB de EEPROM. Bootloader-ul este un mic program care se afla, în cazul modulelor Arduino, în ultimii 2KB de memorie ai microcontroller-ului (aceasta valoare este setata automat de mediul de dezvoltare Arduino în momentul încarcarii bootloader-ului). Acest program are rolul de scanare a “evenimentelor speciale”. Daca aceste “evenimente” sunt gasite, microcontroller-ul va prelua datele de la programator si le va scrie în restul memoriei disponibile. În cazul în care nu se detecteaza nici un eveniment, bootloader-ul va ceda controlul catre programul existent în memorie.
Descrierea pinilor:
VCC – tensiuea de alimentare;
GND – masa;
Porturile A-E,G-L – Sunt porturi de iesire de 8 biti bidirectionale, cu o rezistenta de pull-up interna (selectata pentru fiecare bit). Buffer-ele acestor porturi au o caracteristica de conducere simetrica. Ca si intrare, porturile vor genera curent de intrare/ daca rezistentele de pull-up sunt active. Porturile pot fi folosite de asemenea si la mai multe functii speciale.
Port F – Portul F serveste ca intrare digitala a convertorului analog-digital. Daca acest convertor nu este folosit, portul F serveste si el ca port de intrare/iesire bidirectional de 8 biti. Portul poate furniza rezistente de pull-up interne (selectabile pentru fiecare bit). Buffer-ele acestui port au o caracteristica de conducere simetrica. Ca si intrare, portul E va genera current daca rezistentele de pull-up sunt active. Daca interfata JTAG este activa, rezistentele de pull-up ale pinilor PF7(TDI), PF5(TMS) si PF4(TCK) vor fi activate doar atunci cand apare o eroare. Portul F are de asemenea functii si in interfata JTAG.
Reset – intrare reset – un nivel scazut al acestui pin, urmat de o lungime minima a pulsului. Va genera un impuls de reset, chiar daca ceasul nu functioneaza. Pulsurile scurte nu garanteaza generarea unui reset.
XTAL1 – intrare pentru inversarea amplitudinii oscilatorului si intare pentru circuitul de operare a ceasului intern.
XTAL2 – Iesire pentru inversarea amplitudinii osciloatorului.
AVCC – este pinul de tensiune pentru portul F si pentru convertorul analog/digital. Trebuie sa fie conectat extern la VCC, chiar daca ADC nu este folosit, el trebuie conectat la VCC cu ajutorul unui filtru trece-jos.
AREF – referinta analog pentru convertorul analog-digital.
2.2. Porturi I/O
Toate porturile AVR au o reala functionalitate: citire-modificare-scriere, atunci cand sunt utilizate ca porturi I/O digitale generale. Acest lucru înseamna ca directia unui pin poate fi schimbata fara a schimba în mod neintentionat directia unui alt pin utilizand instructiunile SBI si CBI. La fel se aplica si pentru schimbarea valorii drive (daca e configurat ca si iesire) sau pentru activarea/dezactivarea rezistentei de pull-up (daca e configurat ca intrare). Fiecare buffer de iesire are caracteristici de actionare simetrice. Toti pinii portului au rezistente pull-up selectabile individual, cu o rezistenta care nu depinde de tensiunea de alimentare. Driverul de pin este suficient de puternic pentru a conduce direct afisaje LED. Toti pinii I/O au diode de protectie la VCC si la masa.
Fig 2.2. Schema echivalenta a unui pin I/O [1]
Toate registrele si referintele de biti din aceasta sectiune sunt scrise în forma generala. Un caz "x" reprezinta numarul porturilor, si un caz "n" reprezinta numarul bitului.
Cu toate acestea, atunci cand se utilizeaza registrul sau bitul definit într-un program, trebuie sa fie utilizata forma exacta. De exemplu, PORTC2 pentru bitul nr. 2 din portul C iar la modul general ne referim la el ca PORTxn.
Sunt alocate 3 adrese de memorie I/O pentru fiecare port: una pentru registrul data – portx, una pentru registrul data direction – DDRx si una pentru port input pins – PINx. Locatia porturilor de intrare este de tipul read-only, in timp ce registrul de date si registrul de directie sunt read/write. Cu toate acestea, scrierea valorii logice 1 intr-un bit al registrului PINx, va rezulta intr-o comutare in bitul corespunzator din registrul de date. In plus bitul de dezactivare a pull-up-ului, PUD din MCUCR dezactiveaza functia de pull-up pentru toti pinii din toate porturile cand se seteaza.
Porturile sunt intrari/iesiri bidirectionale cu pull-up-uri interne optionale. Figura urmatoare (fig 2.3) arata diagrama functionala a unui pin I/O, numit generic Pxn.
WRx, WPx, WD, RRx, RPx si RDx sunt comune tuturor pinilor din acelasi port. clk, SLEEP si PUD sunt comune tuturor porturilor
Fig. 2.3. Diagrama functionala a unui port I/O [1]
Configurarea pinilor
Fiecare pin al unui port are in componenta trei biti de registre: DDxn, PORTxn si PINxn. Bitii DDxn sunt accesati la adresele I/O ale DDRx, bitii PORTxn la adresele PORTx si bitii PINxn la adresele PINx.
Daca bitul PORTxn are valoarea logica 1 cand pinul este configurat ca intrare, rezistorul pull-up este activat. Pentru a dezactiva rezistorul, bitul trebuie sa aiba valoarea 0 sau pinul va trebui sa fie configurat ca pin de iesire. Pinii porturilor pot avea trei stari cand conditia de resetare devine activa, chiar daca clock-ul nu functioneaza.
Daca bitul PORTxn are valoarea logica 1 cand pinul este configurat ca pin de iesire, portul este setat 1(high). Daca bitul PORTxn are valoarea logica 0 cand pinul este configurat ca pin de iesire atunci portul este setat 0(low).
Comutarea pinilor
Atunci cand se scrie valoarea 1 in bitul PINxn este comutata valoarea din PORTxn fara sa se tina cont de ce valoare este scrisa in DDRxn. Instructiunea SBI poate fi utilizata pentru a comuta un singur bit intr-un port.
Comutarea intre intrare/iesire
Cand se face comutarea intre {DDxn,PORTxn}=0b00 si iesire high {DDxn,PORTxn}= =0b11, trebuie sa apara o stare intermediara care fie activeaza pull-up-ul {DDxn,PORTxn}=0b01 fie seteaza iesirea low {DDxn,PORTxn}=0b10.
Citirea valorii pinului
Valoarea pinului poate fi citita prin bitul de registru PINxn iar aceasta actiune este independenta de setarea bitului DDxn. Aceasta este necesara pentru evitarea metastabilitatii daca pinul fizic isi schimba valoarea in apropiere de varful clock-ului intern, dar totodata introduce si un delay. Figura arata diagrama in timp a sincronizarii cand se citeste o valoare externa aplicata pinului. Intarzierile maxime si minime de propagare sunt notate si respectiv .
Fig 2.4. Sincronizarea la citirea unei valori externe aplicata unui pin [1]
Digital Input Enable si Sleep Mode
Asa cum se observa in figura 2.3., semnalul digital de intrare poate fi prins la masa intrarii din Schmitt-trigger. Semnalul SLEEP din figura este setat de catre MCU SLEEP Controler in modul Power-Down, modul Power-Save si modul Standby pentru a evita consumul mare de putere daca unul dintre semnale este lasat la intamplare sau are un nivel analogic aproape de VCC / 2.
Daca cererea de intrerupere externa nu este activa, semnalul Sleep este activ si pentru acesti pini. Acest semnal poate fi de asemenea inlocuit de multe alte functii alternative.
Pinii neconectati
Daca unii pini sunt nefolositi, este recomandat sa ne asiguram ca acesti pini au un nivel definit. Chiar daca majoritatea intrarilor digitale sunt dezactivate in modul sleep descris mai sus, trebuie evitate valorile aleatoare pentru a reduce consumul de curent in alte moduri unde intrarile digitale sunt active (reset, modul active si modul idle).
Cea mai simpla metoda de a ne asigura ca avem un nivel definit pentru un pin neutilizat este sa activam pull-up-ul intern. In acest caz pull-ul-ul este dezactivat in timpul reset-ului. Daca consumul redus de energie in timpul reset-ului este important, este recomandat sa utilizam pull-up sau pull-down extern. Conectarea pinilor neutilizati direct la VCC sau la masa nu este recomandata, aceasta putand cauza curenti excesivi daca pinul este configurat accidental ca si iesire.
Functii alternative ale porturilor
Majoritatea pinilor au functii alternative pe langa cea de a fi intrare/iesire digitala generala. Semnalul de control al unui pin poate fi inlocuit de functii alternative. Inlocuirea semnalelor nu poate fi prezenta la toti pinii portului.
Mai departe este reprezentat un sumar al functiilor de inlocuire a semnalelor.Semnalele de inlocuire sunt generate intern de catre modulele care au functii alternative.
PUOE (Pull-up Override Enable)- Daca acest semnal este setat, pull-up-ul activat este controlat de catre semnalul PUOV. Daca acest semnal este respins, pull-up-ul este activat atunci cand {DDxn, PORTxn, PUD} = 0b010.
PUOV(Pull-up Override Value) – Daca PUOE este setat, pull-up este activat/dezactivat atunci cand PUOV este setat/respins, fara deosebire de setarea DDxn, PORTx si bitii PUD Register.
DDOE(Data direction override enable)- Daca acest semnal este setat, Output Driver Enable este controlat de catre semnalul DDOV. Daca semnalul este respins, driver-ul Output este activat de catre registrul bit-ului DDxn.
DDOV(Data direction override value)- Daca DDOE este setat, Driver-ul de iesire este activat/dezactivat cand DDOV este setat/respins, indiferent de valoarea setata pentru registrul DDxn al bit-ului.
PVOE(Port value override enable)- Daca acest semnal este setat si driver-ul Output este activat, valoarea portului este controlata de catre semnalul PVOV. Daca PVOE este stearsa si driverul Output este activat, portul Value este controlat de catre bit-ul registrului PORTxn.
PVOV(Port value override value)- Daca PVOE este setat, valoarea portului este setat la PVOV, indiferent de setarea bit-ului registrului PORTxn.
PTOE(Port toggle override enable)- Daca PTOE este setat, bit-ul registrului PORTxn este inversat.
DIEOE(Digital input enable override enable)- Daca acest bit este setat, Digital Input Enable este controlat de catre semnalul DIEOV. Daca acest semnal este respins, Digital Input Enable este determinat de starea MCU (modul Normal sau modul Sleep).
DIEOV(Digital input Enable override value)- Daca DIEOE este setat, Digital Input este activat/dezactivat atunci cand DIEOV este setat/sters, indiferent de starea MCU (modul normal, modul sleep).
DI(Digital input)- Semnalul este conectat la iesirea Schmitt-trigger-ului dar inainte de sincronizare. Daca Digital input nu este utilizat ca si sursa pentru CLK, modulul cu functia alternativa va folosi propriul sincronizator.
AIO(Analog input/output)- Acesta este intrare/iesire analog catre/de la alte functii. Semnalul este conectat direct catre placa si poate fi utilizat in ambele directii.
WRx, WPx, WD, RRx, RPx si RDx sunt comune tuturor pinilor din acelasi port. clk, SLEEP si PUD sunt comune tuturor porturilor. Restul de semnale sunt unice pentru fiecare pin
Fig 2.5. Functiile alternative ale unui port [1]
2.3. RS232 – comunicatie seriala
Una dintre cele mai uzuale interfete seriale asincrone folosite este RS-232(Reference Standard 232). Activitatea esentiala a acesteia este adaptarea semnalului transportat la cerintele receptorului, activitate denumita comunicatie asincrona. În interfata RS-232, datele sunt trimise sub forma de siruri de biti, fiind suportat atat modul sincron cat si cel asincron. Pe langa circuitele de date,standardul defineste un numar de circuite de control care supervizeaza conexiunea dintre DTE (Data Terminal Equipment), dispozitivul de la capatul îndepartat al conexiunii, de obicei, un calculator sau un terminal) si DCE (Data Circuitterminating Equipment), dispozitivul cel mai apropiat de conexiune.
Fiecare circuit de date sau control functioneaza doar într-o singura directie. Pentru ca datele transmise si datele receptionate folosesc fiecare cate un circuit separat, interfata poate functiona în mod duplex. În cadrul standardului, nu sunt definite formatul caracterelor din sirul de date sau tipul de codare a lor.
Standardele RS-232 utilizeaza pentru niveluri de semnal (0 si 1), în afara intervalului +3Vcc … –3Vcc (semnalele cuprinse în acest interval sunt ignorate), urmatoarele conventii: orice tensiune peste +3Vcc este considerata corespunzatoare unui bit de 0, iar sub –3Vcc este considerata corespunzatoare unui bit de 1. Standardul prevede un conector DB25 de tip tata pentru DTE si un conector DB25 de tip mama pentru DCE. Din cei 25 de pini ai conectorilor, doar 22 sunt folositi pentru semnale si masa. Deoarece majoritatea dispozitivelor folosesc doar 9 semnale, sunt folosisi adesea conectori mai mici.
Protocolul RS-232 se bazeaza pe tehnica acordului confirmat (handshake), iar semnificatia celor mai uzuale semnale, relativ la DTE, este:
Transmitted Data (TD) – transmisia datelor de la DTE la DCE;
Received Data (RD) – receptia datelor de la DCE;
Request To Send (RTS) – setat pe 0 de catre DTE, pregateste DCE-ul pentru receptionarea datelor;
Ready To Receive (RTR) – setat pe 0 de catre DTE, indica DCE-ului faptul ca DTE-ul este pregatit sa receptioneze date;
Clear To Send (CTS) – setat pe 0 de catre DCE ca raspuns la RTS, permite DTE-ului sa transmita date;
Data Terminal Ready (DTR) – setat pe 0 de catre DTE, indica faptul ca acesta este gata sa fie conectat (daca DCE-ul este un modem, atunci aceasta comanda îl activeaza);
Data Set Ready (DSR) – setat pe 0 de catre DCE, indica faptul ca acesta este pornit si pregatit sa receptioneze comenzi sau date de la DTE (în cazul unui modem, DSR-ul este setat pe 0 de îndata ce acesta este gata sa primeasca comenzi);
Data Carrier Detect (DCD) – setat pe 0 de catre DCE, indica faptul ca sa stabilit o conexiune cu echipamentul partener;
Ring Indicator (RI) – setat pe 0 de catre DCE, arata ca s-a detectat semnalul corespunzator apelului (soneriei) telefonice.
Standardele mai noi (RS-422, RS-485 etc.) dezvolta RS-232, urmarind optimizarea acestuia.
2.4. SPI- Serial Peripheral Interface
Protoculul SPI este o variatie a protocolului serial clasic RS232.Acesta are proprietatea ca transmisia datelor se face sincron, de aceea fiind necesar un semnal de ceas. O alta proprietate a protocolului este aceea ca datele se transmit continuu, in ritmul semnalului de ceas, prin doi registri cu deplasare seriala. Dispozitivele care comunica in acest mod sunt de tip Master si Slave. SPI permite un transfer sincron de date de mare viteza intre ATmega 2560 si dispozitivele periferice sau intre mai multe dispozitive AVR.
SPI include urmatoarele functii:
– Operatii Master sau Slave;
– Transfer de date LSB first sau MSB first;
– Sapte rate de bit programabile;
– Un flag de intrerupere pentru incheierea transmisiei;
– Un flag de protectie pentru suprascrieri accidentale;
– Wake-up din idle mode;
– Viteza dubla pentru modul master (SPI);
Fig. 2.6. Diagrama bloc pentru SPI [1]
Sistemul este alcatuit din doua registre de deplasare, si un generator de ceas master. Master si Slave pregatesc datele pentru a fi trimise in respectivele lor registre, iar Master genereaza impulsuri necesare de ceas pe linia SCK pentru a interschimba date. Datele sunt intotdeauna mutate din Master in Slave pe Master Out-Slave In, MOSI, linie, precum si de la Slave la Master pe Master In-Slave Out, MISO, linie. Dupa fiecare pachet de date, Master va sincroniza Slave facand 1 pe Slave, Select, SS si linie.
Cand este configurat ca Master, interfata SPI nu are control automat asupra liniei SS. Aceasta trebuie manipulata de catre software inainte de inceperea comunicatiilor. Cand acesta este gata, scrie un octet in registrul SPI data, porneste generatorul de ceas al SPI si hardware face schimbul de 8 biti in Slave. Dupa schimbarea unui octet, generatorul de ceas SPI se opreste si este setat flagul pentru finalul transmisiei (SPIF). Daca bitul de Intrerrupt Enable al SPI este setat in registrul SPCR, se solicita o intrerupere. Master poate continua sa mute urmatorul octet scriind in SPDR, sau sa semnaleze sfarsitul pachetului cu valoarea 1 in Slave Select si linia SS. Ultimul octet de intrare va fi pastrat in registrul Buffer pentru o utilizare ulterioara.
Cand este configurata ca Slave, interfata SPI va ramane in Sleep cu MISO declarat, atata timp cat pinul SS are valoarea 1. In aceasta stare, software-ul poate actualiza continutul registrului de date SPI, SPRD, dar datele nu vor fi mutate de impulsurile de ceas intrate pe pinul SCK pana ce pinul SS nu ia valoarea 0. Ca un octet sa fie complet schimbat, la finalul transmisiei flag-ul SPIF este setat. Slave poate continua sa plaseze noi date pentru a fi trimise in SPDR inainte de a citi datele de intrare. Ultimul octet de intrare va fi pastrat in registrul Buffer pentru o utilizare ulterioara.
Fig. 2.7. Interconectare SPI Master-Slave [1]
Sistemul are un singur buffer in directia de transmisie si doua buffere in directia de receptie. Asta inseamna ca byte-ul care trebuie transmis nu poate fi scris in registrul SPI Data inainte ca intregul ciclu de inlocuire sa fie incheiat. Cand se primesc date, un caracter primit trebuie sa fie citit de catre registrul SPI Data inainte sa fie inlocuit de urmatorul caracter. Oricum, primul byte se pierde.
In modul SPI Slave, controlul logic va proba semnalul primit de la pinul SCK. Pentru a se asigura esantionarea semnalului de ceas, minimul si maximul trebuie sa fie:
Perioada joasa: mai mult de 2 cicluri de ceas al CPU
Perioada inalta: mai mult de 2 cicluri de ceas al CPU
Cand SPI este activat, directia datelor pentru pinii MOSI, MISO, SCK si SS este inlocuita. Pentru pinul MOSI, MISO, SS directia si SPI Master sunt definite de utilizator, iar directia si SPI Slave sunt definite ca intrare, iar pentru pinul MISO directia si SPI Master definite ca intrare, iar directia si SPI Slave sunt definite de utilizator.
Modul Slave
Cand SPI este configurat ca Slave, atunci pinul SS (Slave select) este mereu intrare. Cand SS este tinut la 0 atunci SPI este activat si MISO devine o iesire daca este configurat astfel de catre utilizator. Toti ceilalti pini sunt intrari. Atunci cand SS este mutat la 1, toti pinii sunt intrari si SPI este pasiv, ceea ce inseamna ca el nu va primi date. De notat ca logica SPI va fi resetata atunci cand pin-ul SS este setat 1.
Modul Master
Atunci cand SPI este configurat Master (MSTR in SPCR este setat), utilizatorul poate determina directia pin-ului SS. Daca SS este configurat ca iesire, pin-ul este o iesire generala ceea ce nu afecteaza sistemul SPI.
Daca SS este configurat ca si intrare, el trebuie tinut la valoare 1 pentru a asigura operatiile din Master SPI. Daca pin-ul SS este tinut la 0 de catre circuitul periferic atunci cand SPI este configurat ca Master cu pin-ul SS definit ca si intrare, sistemul SPI interpreteaza asta ca alt master, selectand SPI ca si slave si pornind trimiterea de date catre el. Pentru a evita conflictul, sistemul SPI face urmatoarele actiuni:
Bit-ul MSTR in SPCR este sters si sistemul SPI devine unul Slave. Ca si rezultat SPI devine Slave, pinii MOSI si SCK devin intrari.
Flag-ul SPIF in SPSR este setat si daca intreruperile SPI sunt activate si bit-ul in SREG este setat, intreruperile de rutina vor fi executate.
Capitolul 3: Sistemul de dezvoltare Arduino MEGA
3.1. Caracteristici generale
ArduinoMega 2560 este o placa de dezvoltare avand ca nucleu microcontroller-ul ATMega2560 fiiind produs de catre firma ATMEL. Spre deosebire de lucrul cu microcontroller-ele clasice, acolo unde este necesara cunoasterea cu exactitate a structurii interne a acestora, platforma de dezvoltare Arduino ofera o solutie rapida de producere a aplicatiilor mascand accesul direct la registrii microcontroller-ului prin intermediul unor functii simple.
Fig3.1. Placa de dezvoltare Arduino Mega 2560 [3]
Microcontroller-ul are 54 de pini digitali de intrare sau iesire, dintre care 15 pot fi utilizati ca iesiri PWM, 16 intrari analogice, 4 UART (porturi seriale hardware), un oscilator de cristal de 16 MHz, o conexiune USB, un jack de alimentare, un header ICSP si un buton de resetare. Este un C-MOS de 8biti, de putere mica bazat pe arhitectura AVR consolidata RISC.
Placa de dezvoltare poate fi alimentata direct din conexiunea USB sau cu ajutorul unei surse externe. Daca se utilizeaza o sursa de alimentare externa, placa de dezvoltare va stabiliza automat la 5V tensiunea ce va fi furnizata microcontroller-ului. Circuitul integrat responsabil cu stabilizarea tensiunii accepta o tensiune de intrare maxima de 20 V, insa producatorul recomanda alimentarea de la o sursa externa între 7 si 12 V. Depasirea pragului maxim duce la încalizirea excesiva a stabilizatorului,ducand la deterioarare.In schimb, daca se coboara sub pragul 6 V, avand loc o cadere de tensiune pe stabilizator, tensiunea furnizata microcontroller-ului va fi mai mica de 5 V fapt care va duce la o functionare necorespunzatoare.
Microcontrollerul ATmega2560 are o tensiune de operare de 5V, tensiunea de alimentare recomandata poate varia intre 7 si 12V. Tensiunea de alimentare poate avea ca minim 6V, iar ca maxim 20V.Intrarile si iesirile sunt in numar de 54, intrarile analogice fiind doar 16.Curentul maxim/pin este de 40mA, iar memoria Flash are un maxim de 256KB.Memoria SRAM are valoarea de 8KB, pe cand EEPROM ajunge la 4KB.
Comunicarea cu Arduino Mega2560
Arduino Mega2560 are un numar de facilitati pentru comunicarea cu un calculator, un alt Arduino, sau alte microcontrolere. ATmega2560 ofera patru hardware UART pentru TTL (5V) de comunicare seriala . Software-ul Arduino include un monitor serial care permite datelor de tip text, simple, sa fie trimise la placa si de la placa. LED-urile RX si TX de pe placa vor clipi atunci cand datele sunt transmise prin intermediul cipului ATmega8U2 / ATmega16U2 si a conexiunii USB la computer (dar nu pentru comunicarea seriala pe pinii 0 si 1).
Arduino Mega2560 ofera, de asemenea, comunicare SPI si TWI. Software-ul acestui arduino include o librarie Wire pentur simplificarea utilizarii magistralei TWI.
Programarea Arduino Mega2560
Arduino Mega poate fi programat cu ajutorul mediului de dezvoltare propiu: Arduino IDE. ATmega2560 vine cu un bootloader care permite utilizatorului sa upload-eze un nou cod fara sa utilize alte hardware-uri externe. Acesta comunica utilizand protocolul STK500 original.
Se poate sari peste acest bootloader si se poate programa microcontroller-ul cu ajutorul header-ului ICSP (programare serial in circuit – In-Circuit-Serial-Programming) utilizand Arduino ISP sau ceva similar.
Resetarea (software) automata
Pe langa necistatea apasarii fizice a butonului de reset inainte de upload, Arduino Mega2560 este proiectat astfel incat sa accepte sa fie resetat cu ajutorul unui software conectat la un computer. Una dintre liniile de control hardware (DTR) ale ATmega2560 este conectata la linia de reset cu ajutorul unui condensator de 100 nanofarazi. Cand aceasta linie este activata, linia de reset va reseta chip-ul. Software-ul arduino este capabil sa permita upload-ul codului prin simpla apasare a unui buton din mediu de dezvoltare Arduino.
Setup-ul are alte implicatii. Cand Mega2560 este conectat la un computer care ruleaza Mac OS X sau Linux, el se va reseta de fiecare data cand conexiunea este facuta de catre software (prin USB). Pentru urmatoarea jumatate de secunda, bootloader-ul se executa pe Mega2560. Este de asemenea programat sa ignore datele gresite, el va intercepta primii cativa biti de date trimisi catre placa dupa ce conexiunea a fost deschisa. În cazul în care o aplicatie care ruleaza pe placa de configurare a primit-o data sau mai multe date, atunci cand porneste în primul rand, asigurati-va ca software-ul cu care comunica asteapta o secunda dupa deschiderea conexiunii înainte de a trimite aceste date.
Mediul de dezvoltare integrat Arduino (IDE) este o aplicatie cross-platform scrisa în Java. Acesta este conceput pentru a introduce in arta programarii nou-venitii nefamiliarizati cu dezvoltarea de software . Mediul de dezvoltare Arduino include un editor de cod cu o serie de caracteristici, cum ar fi evidentierea sintaxei , indentarea automata , si este , de asemenea, capabil de compilarea si încarcarea programelor in placa de dezvoltare cu un singur clic . Un program sau cod scris pentru Arduino este numit ” schita ” (sketch) .
Programele Arduino sunt scrise în C sau C + + . Pentru executia ciclica a unui program, utilizatorul nu trebuie decat sa defineasca doua functii:
setup ( ) : o functie ce ruleaza o singura data , la începutul unui program, care are rolul de a initializa setarile programului;
loop ( ) : o functie ce ruleaza în mod repetat pana la intreruperea alimentarii placii de dezvoltare;
3.2. Ethernet shield
Fig. 3.2. Placa Ethernet shield [4]
Arduino Ethernet Shield permite conectarea la internet în doar cateva minute. Daca vom conecta acest modul pe placa Arduino, conectam un cablu de retea la RJ45, si urmand cateva instructiuni simple putem incepe controlul placii cu ajutorul internetului. Ca de obicei, cu Arduino, fiecare element al platformei -hardware,software si partea de documentatie- este disponibila gratuit si este open-source. Aceasta inseamna ca se poate invata exact cum se face si cum se utilizeaza un design ca punct de plecare pentru fiecare circuit.
Ethernet Shield ste bazat pe cipul ethernet Wiznet W5100. Wiznet W5100 furnizeaza o adresa ip, acceptata de TCP si UDP. Suporta pana la 4 conexiuni socket simultane. Folosim libraria Ethernet pentru a scrie aplicatii conectate la internet prin aceasta placa. Ethernet Shield permite pastrarea intacta a pinilor permitand conectarea altei placi deasupra acesteia. Are o conectiune standard RJ-45, cu o linie de transformare integrata si alimentare prin internetul activat. Mai are un slot de card microSD care poate fi folosit pentru stocarea fisierelor pentru lucrul pe internet.Este compatibil cu Arduino Mega, utilizand libraria Ethernet.
Cititorul de carduri microSD integrat este accesibil prin intermediul librariei SD. Cand se utilizeaza aceasa librarie SS este pe pinul 4.
Placa include de asemenea si un controller de reset pentru a ne asigura ca modulul W5100 este resetat corect. Placa este alimentata cu ajutorul modulului POE( Power Over Ethernet) proiectat pentru a extrage putere dintr-o pereche conventionala de cablu ethernet categoria V, cu urmatoarele proprietati:
– conform standardului IEE802.3af
– zgomot si riplu de iesire scazut(100mVpp)
– tensiune de intrare cuprinsa intre 36V-57V
– circuit de protectie pentru supraalimentare
– iesire de 9V
– convertor DC-DC de mare eficienta
– izolatie de 1500V(intrare-iesire)
Arduino comunica cu W5100 si cardul SD utilizand magistrala SPI. Pentru aceasta sunt folositi pinii 50, 51 si 52 ai Atmega 2560. Pinul 10 este folosit pentru a selecta W5100 si pinul 4 este folosit pentru a selecta SD card. Acesti pini nu pot fi folositi ca I/O generali. Pinul SS, 53 nu este folosit pentru selecta W5100 sau SD card, dar trebuie pastrat ca si iesire altfel interfata SS nu va functiona. Pentru ca W5100 si cardul SD impart aceiasi magistrala SPI, nu le putem avea active pe ambele in acelasi timp. Daca folositi aceste periferice in aplicatii, ele vor trebui sa utilizeze librariile corespunzatoare. Daca nu folosim una din aceste periferice, trebuie sa o deselectam explicit. Pentru a face asta, utilizand cardul SD, setam pinul 4 ca si iesire apoi scriem valoarea 1. Pentru W5100, se seteaza pinul 10 ca si iesire. Butonul de reset va reseta ambele placi (W5100 si arduino).
Placa W5100 contine o serie de leduri informationale:
– PWR-indica faptul ca placa este alimentata
– LINK- indica prezenta link-ului de retea si clipeste atunci cand placa trimite sau primeste date
– FULLD- conexiunea este de tipul full duplex
– 100M- indica prezenta conexiunii de 100Mbs
– RX- clipeste atunci cand placa primeste date
– TX-clipeste atunci cand placa trimite date
– COLL-clipese atunci cand sunt detectate probleme de retea
Jumper-ul marcat INT poate fi conectat pentru a permite placii arduino sa primeasca notificari ale interuperilor de la evenimentele W5100. Aceasta nu este suportata de libraria Ethernet. Jumper-ul conecteaza pinul INT de la W5100 cu pinul digital 2 al arduino.
Chip-up W5100 este conceput pentru dezvoltarea de aplicatii unde este necesar sa se tina cont de usurinta de integrare, stabilitatea, performanta, dimensiuni si costuri. Acesta este conceput pentru a oferi posibilitatea de implementare usoara a conexiunii la internet fara utilizarea unui sistem de operare propriu.
Capitolul 4: Sisteme de avertizare rapida
4.1. Detectia descarcarilor cu AS3935
AS3935 este un integrat complet programabil, un Lightning senzor IC care detecteaza prezenta si abordarea potential periculoasa a activitatii unui fulger in apropiere si ofera o estimare cu privire la distanta pana la capul furtunii. Algoritmul acestui senzor este conceput sa verifice semnalul de intrare astfel incat sa elimine eventualele zgomote introduse de catre utilizator.
AS3935 poate de asemenea sa ofere informatii legate de nivelul de zgomot si sa informeze unitatea externa (de exemplu un microcontroler) in cazul unui nivel de zgomot ridicat.
AS3935 poate fi programat prin intermediul unui SPI standard. De asemenea, este posibil sa se aleaga între patru adrese diferite. Doua ceasuri sunt generate intern de doua Oscilatoare RC diferite: TRCO si SRCO. O procedura automata poate creste precizia acestor oscilatoare. AS3935 poate folosi tensiune fie furnizata de catre un regulator de tensiune interna sau direct de VDD.
Caracteristici generale:
Lightning Detector avertizeaza activitatea unei furtuni cu fulgere pe o raza de 40 km
Estimeaza distanta pana la furtuna, pana la distante de 1 km în 14 pasi
Detecteaza activitatea fulgerelor atat nor-sol cat si intra-nor (cloud-to-cloud)
Algoritmul încorporat permite respingere tulburarilor posibil introduse de catre om
Niveluri de detectie programabile permit setarea pragurilor de control optime
Interfetele SPI si I²C sunt utilizate pentru controlul si înregistrarea activitatilor fulgerelor
Tensiunea de alimentare in intervalul 2.4V la 5.5V
Fig. 4.1. Schema bloc a senzorului AS3935 [6]
Descriere
AS3935 poate detecta prezenta unei furtuni cu activitati electrice care se apropie si ofera o estimare a distantei fata de inceputul furtunii, unde acest inceput al furtunii este definit ca distanta minima dintre senzor si cea mai apropiata parte a furtunii. Distanta estimata care este afisata in registrul de estimare a distantei nu reprezinta distanta la un singur fulger dar estimeaza distanta pana la zona de inceput a furtunii.
Fig. 4.2. Algoritmul de estimare a distantei pana la inceputul furtunii [6]
Alegerea tipului de interfata(SPI sau I²C) este realizat folosind pinul 9 – SI( Selectarea interfetei). Cand SI este conectat la masa, interfata selectata este SPI. Cand SI este conectat la VDD. este selectata interfata I²C. Pinii ADD0 si ADD1 sunt utilizati pentru a selecta pana la 4 adrese diferite I²C.Regulatorul intern de tensiune poate fi activat prin conectarea EN_VREG la VDD. daca regulatorul intern nu este utilizat, concensatorul C3 nu este necesar si VREG trebuie conectat la VDD. Antena externa este conectata direct la interfata frontala (Analog Front-end – AFE), care amplifica si demoduleaza semnalul obtinut. Watchdog monitorizeaza continuu iesirea de AFE si alertele blocului algorithmic pentru detectia fulgerului in cazul unui semnal de intare. Blocul algoritmic pentru detectia fulgerului valideaza semnalul de control prin verificarea modelului semnalului de intrare, calculand energia si apoi senzorul AS3935 ofera un MCU cu o estimare a distantei pana la inceputul furtunei. Blocul algoritmic pentru detectia fulgerului,procesand semnalul demodulat, poate face diferenta intre semnalul pentru detectia fulgerului si tulburarile provocare de om. Daca semnalul receptionat este clasificat ca unul perturbator de om, evenimentul este respins si sistemul intra automat in modul listening pentru a miscora consumul de curent. Daca semnalul de intrare indentifica un eveniment luminos, blocul de estimare statistica a distantei realizeaza o estimare a distantei la inceputul furtunei.
Moduri de operare
Modul de pornire/oprire pentru intregul AS3935 este inchis pentru a reduce consumul de curent la minim;
In modul de ascultare, AFE, watchdog, the noise floor level generation (nivelul de zgomot generat), blocul bias, TRCO si regulatorul de tensiune (in cazul in care este activat) functioneaza. In acest mod, sistemul poate scadea consumul de putere la minim (60uA). In cazul in care tensiunea maxima nu depaseste pragul de 3.6V, este posibil ca regulatorul de tensiune sa poata fi oprit pentru a putea reduce consumul de energie.
La semnalul de verificare, senzorul AS3935 intra in acest mod de fiecare data cand watchdog detecteaza activitatea preluata de antenna (semnalul de intrare trece de un anumit prag). IC va parasi acest mod fie in cazul in care semnalul de intrare este clasificat a fi zgomot sau daca analiza evenimentului (fulgerului) s-a terminat. Daca semnalul primit este clasificat a fi zgomot, AS3935 trece automat in modul de ascultare fara nici o actiune necesara din exterior si o intrerupere va fi generata. In cazul in care modelul semnalului indeplineste toate criteriile, AS3935 incepe calculul energiei pentru a determina distanta.
Interfata SPI
Acest standard de interfata SPI poate fi utilizat de catre microcontroller pentru a programa AS3935. Pentru a activa SPI ca interfata de date, Select Interface (SI) trebuie setat 0 (GND). Frecventa maxima de operare a standardului SPI este 2MHz. Frecventa de operare a ceasului nu ar trebui sa fie identica cu frecventa de rezonanta a antenei(500kHz), cu scopul de a micsora zgomotul.
Citirea datelor din registrele adresabile (modul citire)
Odata ce adresa a fost trimisa catre SPI, datele pot fi transmise prin pinul MISO la microcontroller. A CS high toggling high-low-high (Un semnal CS inalt comuta inalt-jos-inalt) trebuie sa fie efectuate dupa terminarea sesiunii modului de citire, pentru a indica sfarsitul comenzii de citire si pentru pregatirea interfetei pentru urmatoarea comanda. Pentru a transmite octeti de la adrese consecutive, SPI master trebuie sa mentina semnalul CS pe 0 si ceasul SCLK trebuie sa fie activ atat timp cat datele trebuie sa fie citite.
Regulator de tensiune
AS3935 poate fi furnizat fie de un regulator de tensiune, fie direct.Daca regulatorul de tensiune este utilizat, un consum de energie suplimentar (aproximativ 55μA) va trebui sa fie luat in considerare. In aces caz, pinul EN_VREG trebuie sa fie conectat la VDD, si AS3935 este alimentat la pinul VDD, cat timp regulatorul de tensiune este conectat la pinul VREG (iesirea regulatorului de tensiune). Pentru a indeplini cerintele de stabilitate a regulatorului de tensiune este necesar un condensator cu capacitatea mai mare de 1μF intre pinul VREG si masa. Valoarea nominala a tensiunii este de 3V. Daca regulatorul de tensiune nu este utilizat, pinul EN_VREG trebuie sa fie conectat la masa, si pinii VDD si VREG trebuie sa fie conectati impreuna la tensiunea de alimentare (ex: baterie).
Analog Front-end (AFE) si Watchdog
AFE amplifica si demoduleaza semnalul AC care este preluat de antena. Pentru ca AS3935 este un senzor de fulger avand la baza tehnica receptiei pe o banda ingusta, largimea de bada a AFE este facuta sa fie mai mare ca largimea de banda a antenei. In aces caz este posibil sa se considere castigul largimii de banda a antenei constant. AFE, in mod implicit este optimizat pentru a opera in interior (de exemplu in interiorul unei cladiri). Daca AS3935 lucreaza in exterior, atunci AFE trebuie setat la o valoare mica (pentru interior-10010, iar pentru exterior-01110).
Semnalul de iesire al AFE este monitorizat de watchdog, care permite validarea semnalului, in cazul in care semnalul de intrare trece de un anumit prag. AS3935 este setat automat la modul de ascultare imediat ce blocul de validare a semnalului a facut o evaluare legata de natura semnalului primit (daca este fulger sau zgomot). Cu registrul REG0x01[3:0] este posibil sa schimbe nivelul pragului pentru a creste pragul la care un semnal este interpretat ca zgomot. Daca se utilizeaza praguri mai ridicate, AS3935 isi pierde din sensibilitate pentru detectarea fulgerelor indepartate odata cu imbunatatirea respingerii zgomotelor facute de om.
Iesirea semnalului AFE este folosit pentru generarea noise floor level. Noise floor level este comparat continuu cu tensiunea de referinta. De cate ori Noise floor level trece pragul de zgomot, AS3935 emite o intrerupere (INT_NH) pentru a informa unitatea externa ca AS3935 nu poate functiona corespunzator datorita zgomotelor primite de antena. Este posibil sa se seteze pragul de noise floor cu bitii REG0x01[6:4].
Algoritmul de detectare a fulgerului
Algoritmul de detectare a fulgerului este format din partea hardware. Evenimentele false, cum ar fi zgomotele facute de om, care ar putea declansa senzorul sunt respinse, in timp ce evenimentele de detectare a fulgerului calculeaza distanta pana la inceperea furtunii.
Algoritmul de detectare a fulgerului este format din trei blocuri:
– semnalul de validare-verifica daca semnalul de intrare poate fi clasificat ca fulger.
– calculul energiei-calculeaza energia unui singur fulger.
– estimarea statistica a distantei- in functie de numarul de fulgere, distanta este estimata si calculate.
Daca semnalul de intrare nu are caracteristicile unui fulger, energia calculata si distanta statistica estimata nu se iau in considerare, iar evenimentul este clasificat a fi unul tulburator (zgomot).
Semnalul de validare
Watchdog activeaza blocul ce contine algoritmul de detectare a fulgerului in cazul oricaror activitati sau evenimente detectate de antena. Cand se intampla aceasta, semnalul de iesire al AFE este evaluat de blocul de validare a semnalului, care verifica semnalul receptionat. AS3935 poate respinge semnalele de impuls, cum ar fi spike-urile preluate de antena.
Senzorul are proprietatea de a imbunatati rejectia spike-urilor cu registrul REG0x02[3:0] (0010). Valorile mai mari din registrul REG0x02[3:0] corespund unor zgomote mai ample, cu o scadere a eficientei detectiei.
Calcularea energiei si estimarea statistica a distantei
Daca semnalul receptionat este clasificat ca fulger, energia este calculata. Rezultatul energiei calculate este stocat in registrele: REGX06[4:0],REG0x05[7:0] si REG0x04[7:0]. Valoarea este doar un numar, si nu are o importanta fizica.
AS3935 genereaza o estimare a distantei la inceputul furtunii. Evaluarea se face pe baza calculului statistic. Energia fulgerului furnizata de blocul pentru calculul energiei este stocata intr-o memorie interna a AS3935 impreuna cu informatiile legate de timp. Evenimentele stocate in memorie sunt corelate cu un tabel statistic al estimarilor de distante care furnizeaza estimarea finala a distantei pana la inceputul furtunii.
Algoritmul sterge automat evenimentele care sunt mai vechi de o anumita perioada de timp. R7=0x01 inseamna ca furtuna este deasupra noastra, in timp ce R7=0X3F inseamna ca furtuna se indeparteaza. Acest algoritm este hardwire si nu poate fi accesat din exterior.
Estimarea distantei este data in kilometri, in registrul REG0X07[5:0] si este codata binar. Distanta estimata se poate schimba, in cazul in care AS3935 detecteaza un nou eveniment, iar de evenimenul vechi nu se mai tine cont.
Managerul de intreruperi
INT_NH este emis in cazul in care zgomotul primit depaseste limita maxima acceptabila a zgomotului. INT_NH continua pana cand nivelul de zgomot este iar scazut. In cazul in care blocul de validare a semnalului marcheaza semnalul primit ca fiind zgomot atunci INT_D este afisat. Exista posibilitatea de a masca intreruperile INT_D cu ajutorul MASK_DIST (REG0x03[5]=1). AS3935 emite o intrerupere atunci cand un nou eveniment este detectat. Toate aceste evenimente noi sunt memorate in memeoria interna si folosite statistic pentru algoritmul de estimare. Daca AS3935 emite o intrerupere si registrul de intreruperi REG0x03[0:3] =000 atunci distanta estimate se schimba din cauza inlaturarii evenimentelor vechi din cadrul statisticilor, actiune bazata pe algoritmul de estimare a distantelor fulgerului. De cate ori este emisa o intrerupere, unitatea externa trebuie sa astepte 2ms inainte de a citi registrul de intrerupere. Este posibil sa se permita ca AS3935 sa emita o intrerupere de detectare a fulgerului numai daca au fost detectate un numar minim de fulgere in ultimele 15 minute. Numarul minim de registre poate fi setat cu registrul REG0x02[5:4].
Antena
AS3935 foloseste o antena bazata pe un oscilator LC paralel. Antena a fost conceputa astfel incat sa aiba frecventa de rezonanta de 500kHz si factorul de calitate sa fie aproximativ 15. Cu alegerea unui registru este posibil sa se afiseze pe pinul IRQ frecventa de rezonanta a antenei ca un semnal digital cu registrul REG0x08[7] =1. Unitatea externa poate masura aceasta frecventa si poate regla antena adaugand sau eliminand din condensatorii interni cu ajutorul registrului REG0x08[3:0]. Este necesara reglarea antenei cu o acuratete de +-3.5% pentru a optimiza performantele de validare a semnalului si de estimare a distantei. Frecventa de rezonanta este divizata intern de catre un factor care este programabil in registrul REG0x03[7:6]. Ceasul este bazat pe doua oscilatoare RC diferite: un sistem RCO(SRCO) si un timer RCO(TRCO). SRCO va rula aproximativ la frecventa de 1,1MHz si ofera ceasului principal pentru intreaga parte digitala. TRCO are o putere mica fiind un oscilator de frecventa scazuta si ruleaza la 32,768kHz. Variatiile de frecventa in aceste doua oscilatoare, ca urmare a schimbarii de temperatura, se comepnseaza automat.
Frecventa de iesire a acestor doua oscilatoare poate fi afisata pe pinul IRQ cu setarea registrului REG0x08[5] =1 TRCO, while REG0x08[6] =1 SRCO. In timpul procesarii variatiilor, frecventa ambelor oscilatoare poate fi diferita de frecventa nominala. Prin urmare este posibila calibrarea celor doua osciloatoare cu o comanda directa. Precizia calibrarii depinde de frecventa de rezonanta a antenei. Este recomandat ca receptorul antenei sa fie deconectat inainte de a se face calibrarea oscilatoarelor. Rezultatul acestei calibrari este stocat intr-o memorie volatila, si necesita sa fie facuta de fiecare data cand se deconecteaza alimentarea (ex.: schimbul bateriei).
Daca AS3935 este setat in modul pornire/oprire, TRCO are nevoie sa fie recalibrat folosint urmatoarea procedura:
– trimite comanda directa CALIB_RCO
– asteapta 2 ms
– modifica registrul REG0X08[5]=0
4.2 Formatul RSS
RDF Site Summary, prima versiune a RSS, a fost creata de Dan Libby si Ramanathan V. Guha la Netscape. Acesta a fost lansata in martie 1999 pentru utilizarea pe portalul My.Netscape.Com. Aceasta versiune a devenit cunoscuta sub numele de RSS 0.9. În iulie 1999, Dan Libby din cadrul Netscape a produs o noua versiune, RSS 0.91 care a simplificat format prin eliminarea elementelor RDF si care încorporeaza elemente din formatul de stiri sindicalizare al lui Dave Winer. Libby a redenumit, de asemenea, formatul de RDF la RSS Rich Site Summary si a subliniat dezvoltarea în continuare a formatului in "documentul viitorului".
Aceasta ar fi ultima participare Netscape in RSS pentru o perioada de opt ani. RSS era îmbratisata de editorii de web care au dorit feed-uri pentru a fi utilizate pe My.Netscape.Com si alte portaluri RSS. Netscape a renuntat sa sprijine RSS-ul de la My.Netscape.Com în aprilie 2001 atunci cand, in timpul restructurarii noul proprietar AOL al companiei, a cerut eliminarea documentatie si a instrumentelor care au sustinut formatul.
Doua partide au aparut pentru a umple golul, fara ajutorul sau sprijinul Netscape si fara nici o aprobare: RSS-DEV Working Group si Dave Winer, a carui Userland Software a publicat unele dintre primele instrumente de publicare în afara Netscape, care ar putea citi si scrie RSS.
RSS (Rich Site Summary) a fost denumit initial RDF Site Summary, dar mai poate fi gasit si sub denumirea de Really Simple Sindication.Acesta foloseste o familie de formate standard de alimentare web pentru a publica informatii actualizate frecvent.
Un document RSS poate include un text complet sau rezumatul acestuia, metadate,dar si data de publicare a documentului si numele autorului. RSS este o aplicatie a XML, conforma cu specificatiile W3C RDF si poate fi extinsa cu ajutorul XML. Scopul formatului RSS este de a oferi actualizari la continutul web. Utilizand acest standard webmasters ofera titluri si continut scris intr-un mod succint.Intre timp, utilizatorii folosesc cititorul RSS si un nou agregator de stiri pentru a colecta si monitoriza fluxurile preferate intr-un program sau o locatie centralizata.continutul vizualizat in cititorul RSS sau in agregatorul de stiri este cunoscut ca un RSS feed.
RSS este pe cale de a deveni tot mai popular. RSS este gratuit si este folosit usor pentru a promova un site. Continutul nu are nevoie de publicitate sau sa se creeze parteneriate complicate.
RSS versiunea 2- Aceasta versiunea a aparut in 1999 si s-a dorit ca aceasta sa fie simpla, cu un format usor de inteles,cu obiective relativ modeste. Dupa ce a devenit un format popular, dezoltatorii au dorit sa extinda folosind module definite in sectiune. RSS 2.0 adauga aceasta capacitate, folosind reguli simple. Un RSS feed poate contine elemente care nu sunt descrise, numai daca elementele sunt definite in namespace.
RSS versiua 1- RDF Site Summary(RSS) este un format multifunctional extensibil. RSS este o aplicatie XML, conform u W3C si poate fi extinsa cu namespace-ul XML si/sau RDF bazat pe modularizare.
RSS versiunea 9- impune restrictii la primele caractere non-spatii a datelor in link-uri si tag-uri url. Aceasta versiune suporta in totalitate setul de caractere ASCII. De asemenea suporta entitatile HTML. RSS 0.9 nu suporta alte tipuri de caractere, cum ar fi UTF-8.
Bibliografie
[1] http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_summary.pdf
[2] Radescu R., Arhitectura Sistemelor de Calcul, Editura Politehnica Press, Bucuresti, 2014
[3] http://www.arduino.cc/en/Main/ArduinoBoardMega2560
[4] http://www.arduino.cc/en/Main/ArduinoEthernetShield
[5] https://www.teguna.ro/wiki/Introducere_programare_Arduino#Mediul_de_dezvoltare_
[6] http://www1.futureelectronics.com/doc/AUSTRIAMICROSYSTEMS/AS3935.pdf
[7] http://www.rss-specifications.com/rss-specifications.htm
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: Sistem de Avertizare Rapida Pentru Fenomene Meteo Implementat cu Microcontroller Avr (ID: 163490)
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.
