“Internetul integrat” atrage din ce în ce mai mult interes. Acest articol explică acest concept, folosind ca exemplu o aplicaţie simplă
Martin Burhardt (FAE Manager Central Europe, Microchip Technology)
Francesco P. Volpe (Profesor de tehnica microcomputerelor şi electronică digitală)
Serverele web bazate pe PC sunt un lucru comun astăzi. Orice PC care rulează Windows, Linux sau Unix poate fi folosit ca server web. Aplicaţiile care necesită un server web cu dimensiuni mici au condus la dezvoltarea de PC-uri “integrate” sau “DIMM”, proiectate în jurul unui nucleu mic bazat pe un procesor 80386 – 80486 – sau Pentium. Avantajul unei asemenea variante este că aplicaţia poate fi generată folosind un mediu de dezvoltare PC. Un dezavantaj major este totuşi costul mare al acestei variante.
Multe aplicaţii nu necesită totuşi un server web de utilizare generală; de exemplu, atunci când un traductor sau un cititor de stare este suficient pentru aplicaţie. Exemple de asemenea aplicaţii includ monitorizarea unui automat sau a unui fotocopiator. Un microcontroler de 8 biţi, cum ar fi PIC16F877 din familia de produse PICmicro, este mult mai ieftin pentru aceste sarcini. Resursele PIC16F877 sunt suficiente pentru implementarea unei stive TCP/IP şi a unui server HTTP.
Dacă un server web integrat trebuie să controleze un dispozitiv independent folosind un browser, acesta trebuie să conţină mai multe componente (vezi figura 1).
Datele sunt trimise către serverul web integrat prin Internet. Ele trec prin stiva TCP/IP a serverului şi sunt trimise către motorul aplicaţiei HTTP. Datele necesare pentru aplicaţia integrată sunt extrase din textul HTTP. Aceste date pot conţine, de exemplu, o valoare de temperatură necesară unei aplicaţii specifice. Acest modul oferă datele necesare – valoarea temperaturii – unui generator HTML care le formatează astfel încât să poată fi citite de browser. Motorul HTTP integrează apoi aceste date într-o pagină web pe care o trimite către Ethernet prin intermediul stivei TCP/IP. Datele sunt apoi trimise înapoi către browser-ul care a iniţiat cererea prin Ethernet către serverului web integrat.
Protocoale Internet
Trimiterea de date pe Internet, aşa cum este descrisă mai sus, necesită o anumită prelucrare din partea protocolului. Stiva TCP/IP controlează modul în care datele sunt procesate. Stiva este realizată din mai multe straturi (vezi figura 2).
Stratul de legătură (link layer) conţine driverele adaptorului de reţea. La serverul web integrat prezentat în acest articol, driverul conţine numai configurarea controlerului Ethernet şi datele pentru comunicaţie dintre PIC16F877 şi controlerul Ethernet. Stratul de reţea (network layer) conţine protocolul Internet (IP). IP transmite date către protocolul corespunzător stratului de transport (transport layer). Stratul de transport conţine protocolul de control al transmisiei (TCP, transmission control protocol) care controlează transportul datelor între aplicaţie şi stratul aplicaţie (application layer). TCP este de asemenea responsabil ca nici un pachet de date să nu fie pierdut. Stratul aplicaţie conţine aplicaţia, în acest caz serverul HTTP. Aşa cum s-a arătat mai sus, aplicaţia definită de utilizator se află pe serverul web integrat şi nu în stiva TCP/IP.
În figura 3 este arătat fluxul de date din stiva TCP/IP. Stratul aplicaţie înserează un antet care precede datele serverului HTTP; această combinaţie este apoi transmisă către stratul TCP. Acest segment este apoi trimis către stratul IP, care înserează antetul IP pentru a forma datagrama IP. În sfârşit, această datagramă este trimisă către stratul de legătură (driverul Ethernet). Acest strat înserează, ca un ultim pas, antetul Ethernet şi adaugă un “trailer” Ethernet la sfârşitul datagramei. Cadrul Ethernet rezultat este apoi transmis prin Ethernet.
Atunci când serverul web integrat primeşte datele, cadrul Ethernet parcurge stiva TCP/IP în direcţia inversă. Acum fiecare strat îşi extrage antetul corespunzător, îl procesează şi transmite datele mai departe, către stratul următor al protocolului.
Implementarea PICmicro
Implementarea stivei TCP/IP şi a serverului în PIC16F877 consumă aproape 4 Kbytes de memorie Flash de program şi aproximativ 300 bytes de RAM, fiind astfel una din cele mai mici stive TCP/IP pentru un microcontroler de 8 biţi. În figura 4 este arătată schema bloc pentru implementarea serverului web integrat.
Semnalul de tact, realizat de un oscilator de 20MHz, este folosit de microcontrolerul PIC16F877 şi de controlerul Ethernet. Acest semnal este necesar controlerului Ethernet; MCU poate folosi o frecvenţă considerabil mai mică. Pentru circuitul de resetare a fost ales MCP-130. La interfaţa aplicaţiei este conectat un traductor digital de temperatură de tip DS1820. PIC16F877 citeşte valoarea măsurată şi o trimite către controlerul Ethernet.
Pagina de web a serverului web integrat se află în memoria program a MCU. Textul HTML necesar este stocat ca un tabel. Deoarece PIC16F877 suportă programarea de tip “in-circuit”, utilizatorii pot adapta aplicaţia şi pagina web cerinţelor lor specifice. N
Figura 1: Componentele unui server web integrat