Universitatea Dunărea de Jos Galaţi Facultatea de Inginerie Electrică şielectronică Specializarea: Tehnologii şi Sisteme de Telecomunicaţii Circuit de supervizare şi control cu interfaţă ethernet Coordonator ştiinţific, Asist. Drd. Ing. EPURE Silviu Absolventă, MIHNEA Dorina
Plan de prezentare 1. Obiectivele proiectului 2. Proiectarehardware 3. Proiectaresoftware 4. Rezultatepractice 5. Concluzii
1.Obiectivele proiectului Proiectarea unui circuit de supervizare şi control cu interfaţă ethernet prin: 1. Realizarea unei interfeţe hardware ce asigură comunicarea PC-ului cu circuitul; 2. Implementarea algoritmilorsoftware pentrucomandarea senzorilor prinserver; 3. Realizarea unei aplicaţiisoftware ce trimite linie cu linie un fişier text serverului (client).
2. Proiectare hardware Circuitul de interfaţă: n Constă în comunicarea între un encoder de tip ENC28J60 cu interfaţă Ethernet şi un microcontroller de tip PIC18F2620 legându-se fizic de un calculator printr-o mufă RJ-45; n ENC28J60 comunică cu PIC18F2620 prin interfaţa SPI; n Se alimentează la o tensiune de 3.3V. Figura 1. Realizarea fizică a circuitului de interfaţă
Schema electrică detaliată
3. Proiectare software 3.1 Aplicaţia server -Rulează în microcontroller (mikroc); -Reprezintă un server http ce procesează comenzile TCP primite pe portul 80 de la clientul PC; -Structura aplicaţieirealizată în mikrocreprezintă: 1. Comenzile principale care conţininiţializarea porturilor, a ethernetului şi apelul înbuclă infinită; 2. Comenzile care tratează procedurade transmisie/recepţie între microcontroller şi encoderul ethernet. 3. Comenzile care implementează procedura de tratare a evenimentelor TCP;
3.1 Aplicaţia server Figura 2. Organigrama programului Figura 3. Mini web server
3.2 Prelucrare TCP Pagina web memorată înserver conţine elemente simple (text, tabele, fundal colorat, linkuri). Ea a fost proiectată manual şi salvată în variabila/ constanta index-page din microcontroller; Pentrua comunica între PC şi server, se foloseşte aplicaţia browser(internet Explorer, Mozilla, etc.); Datorită protocolului de comunicare TCP, microcontrollerul recepţionează un şir de caractere de forma: GET /stare buton HTTP/1.1..Accept:... -atunci când se trimite comanda de la buton prin browserul web.
3.2.1 Configurarea porturilorpentru comunicareacu ENC28J60 sfrsbit SPI_Ethernet_Rst at RC0_bit; sfrsbit SPI_Ethernet_CS at RC1_bit; sfrsbit SPI_Ethernet_Rst_Direction at TRISC0_bit; sfrsbit SPI_Ethernet_CS_Direction at TRISC1_bit; // Se configurează regiştrii SFR Ethernet RST şi CS pentru pinii RC0, respectiv RC1; typedef struct { unsigned canclosetcp: 1; // Blocul care închide soketul TCP; unsigned isbroadcast: 1; // Blocul care scoateîn evidenţă pachetul; } TEthPktFlags;
3.2.2 Structurade cod pentru senzorul de lumină IntToStr(ADC_Read(0), dyna) ; len += putconststring("var AN0=") ; len += putstring(dyna) ; len += putconststring(";") ; ADC Read apelează convertorul analog numeric din PIC şi întoarce ca rezultat un număr între 0 şi 1024, corespunzător tensiunii de la intrarea analogică AN0 a PIC-ului. IntToStrtransformă numărul returnat de ADC Read într-un şir de caractere ce poate fi trimisenc28j60. Următoarele linii semnifică scrierea şirului de caractere înrăspunsul ce va fi trimisclientului (PC).
3.2.3 Structura de cod pentru buton <script>var str,i;\str=\"\";\ for(i=4;i<5;i++){str+=\"<tr><td bgcolor=#eff23a align=center>comandaaux. RA\"+i+\"</td>\ <td bgcolor=#f0f27a align=center><a href=/t\"+i+\">buton</a></td>\";\ if(porta&(1<<i)){str+=\"<td width=50px bgcolor=#32f62c align=center>on\";}\ else {str+=\"<td width=50px bgcolor=#255528 align=center>off\";}\ str+=\"</td></tr>\";}document.write(str);</script> if(getrequest[5] == 't') { // Dacă numelecererii începecu "t", comută starea portului RA4, // numărcare vine după; unsigned char bitmask= 0 ; // pentrubitulde mască; if(isdigit(getrequest[6])) { // dacă este0 <= numărulbitului <=9, biţii8 si9 nu există dar //nicinu contează; bitmask = getrequest[6] -'0' ; // Converteştedin codulascii în numărîntreg; bitmask = 1 << bitmask ; // Crează bitulde mască; PORTA ^= bitmask ; // Schimbă starea portului RA4 cu operatorul XOR; }
4. Rezultate experimentale[1] În timpul programării microcontrollerului s-a ţinut cont de mărimea pachetului de date către encoder care nu trebuie sădepăşeascã 1500 biţi de cuvinte pentrua evita supraîncărcarea magistralei de date. Se deschide pagina html (înbrowser se introduce adresa 192.168.0.200), se încarcă serverul înbrowser afişându-se informaţiile senzorilor şi starea butonului cu comanda direct din pagina web. Prin apăsarea butonului se efectuează comanda auxiliară care trimite pe portul RA4, a microcontrolerului, starea de 1 logic (+5vcc). La o a doua apăsare portul RA4 trece în starea de 0 logic (0vcc). Senzorul de lumină, la variaţia intensităţii luminoase, trimite semnal analogic între 0 şi 5vcc la intrare în portul RA0 setat pe analogic input, după conversie, pe pagina web se afişeaz valoarea între 0 şi 1023 echivalentul a 10 biţi de conversie a semnalului analogic.
4. Rezultate experimentale[2] Utilizare Internet Explorer: Reîmprospătareapaginii web se face în mod automat la un interval de o secundă, conform liniei de cod: <meta http-equiv="refresh" content="1" />
5. Concluzii În proiectul curent am realizat următoarele: Fizicam realizat un circuit de interfaţă cu un microcontroller de tip PIC18F2620 cesuportă interfaţa SPI pentru a facilitacomunicaţiacu encoderulenc28j60. Acesta are rolulde a se conectaprin ethernet cupc. Software am realizat, un buton, înpaginaweb care schimbă starea portului RA4, 0vcc sau 5vcc, folositpentru comandaauxiliară, princare microcontrollerul receptionează liniade comandă (if(getrequest[5] == 't')) trimisă prin TCP de utilizator pentru executarea funcţiei cerute. Am realizat un program în mikroc pentru microcontroller (implementare server), recepţionarea şi afişareatemperaturii senzorului DS18B20 şi conversiaanalog digital pentru senzorulde lumină. Identitateaserverului este dată de adreselemac si IP care suntdeclarate software şi sunt apelatede cătreclient când se efectuează transmisia pachetelor de date.
Vă mulţumesc pentru atenţie!