Server web pe enc28j60 și microcontroler avr pentru gestionarea dispozitivelor prin tcp

Tehnologii moderne de informare / Inginerie informatică

Universitatea Națională Khmelnytsky, Ucraina

Server web pe microcontrolerul ENC28J60 și AVR







pentru controlul dispozitivelor printr-o rețea TCP / IP

Pentru dispozitivele de comandă la distanță, prin eliminarea parametrilor de la senzori sunt microcontrolere AVR folosite. Pentru conectarea lor la cele mai populare și W5100 ENC28J60 cip. Primul cip hardwired protocoale TCP / IP și Ethernet, iar în al doilea - numai Ethernet. În ciuda acestui controler ENC28J60 este în prezent cel mai popular. Pentru el, există, de asemenea, mai multe biblioteci pentru crearea de rețele cu diverse servicii. Se propune schema de conectare ENC28J60, de exemplu ATmega128L, și un program care permite dispozitivului să funcționeze într-un mod mai simplu de web - dispozitive de server de gestionare cu 3 și citiri din DS18B20 senzor de temperatură. Cu toate acestea, până în prezent fezabilitatea unui desen sau model de circuit independent în dubiu, din cauza ieftinătate de module gata făcute, cu toate acestea, uneori, un modul separat este inacceptabilă, iar dispozitivul poate fi proiectat pentru a fi mai puțin costisitoare decât asamblate din module. Pentru conectarea la Ethernet peste perechii de fire răsucite în considerare, de exemplu, conector HR911105A, care este cea mai optimă pentru utilizare împreună cu ENC28J60. El este ieftin și ponosită. Pe această bază o diagrama din figura 1. Într-un cip controler în carcasa ENC28J60 DIP28 selectat. În Schema atenție merită R13 rezistor, de exemplu, în descrierea este specificat ca ENC28J60 2kOm. Cu toate acestea, unele revizuiri au ENC28J60 valori mai optime rezistor. Deci, pentru audit 1 și 4 rezistor ar trebui să aibă o valoare 2,7kOm, și pentru audit 5 și 7 - 2,32kOm. Verificați revizuirea este posibilă numai prin citirea registrului corespunzător. În acest scop, în primul rând pe placa de circuit este instalat ENC28J60, apoi citiți audit, și apoi setați rezistența nominală dorită. Cu toate acestea, stabilirea de valori nominale sau 2K Ohm rezistor 2,32kOm asigură funcționalitatea circuitului din Figura 1, dar poate scădea gama de operare. Dar pentru mediul de birou, clasa de afișare este acceptabilă.

Server web pe enc28j60 și microcontroler avr pentru gestionarea dispozitivelor prin tcp

Fig.1. Circuitul controlerului ENC28J60 utilizând conectorul HR911105A

Docel L1 pentru funcționarea cipului ENC28J60 nu este necesar, este folosit ca filtru. Dacă dispozitivul nu conține componente predispuse la interferențe, cum ar fi modulele radio, ADC-urile exacte și altele asemenea, este posibil să nu fie prezente. Ca un sufoc, puteți folosi un inel de ferită cu un diametru de 5 mm, cu mai multe rotiri ale plumbului sau o rezistență de 0 Ohm.

Polaritatea de pornire a LED-ului galben (bornele 9 și 10 ale conectorului HR911105A) determină modul de operare al chipului ENC28J60 - jumătate duplex sau duplex complet. În documentația pentru cip, includerea este prezentată ca în Figura 2.

Server web pe enc28j60 și microcontroler avr pentru gestionarea dispozitivelor prin tcp

Fig.2. Polaritatea de a porni LED-ul galben

Cu toate acestea, modernizarea schemei prezentate este posibilă pentru a simplifica sau utiliza piesele disponibile. În absența conectorului HR911105A, puteți utiliza transformatoare instalate pe cardurile de rețea ale computerelor. De exemplu, figura 3 prezintă schema de comutare a transformatorului filtru 20F001N YCL. Simbolurile din diagrama din figura 3 a punctului A B C D corespund notării diagramei din figura 1. Aceste puncte sunt conectate la transformator în locul conectorului HR911105A. LED-urile care se află în conectorul HR911105A sunt instalate separat când transformatorul este conectat.

Server web pe enc28j60 și microcontroler avr pentru gestionarea dispozitivelor prin tcp






Figura 3. Conectarea transformatorului 20F001N YCL.

În unele cazuri, din cauza lipsei de Ethernet - transformatoare, conectori de tip HR911105A sau construirea unui dispozitiv de buget poate realiza versiunea controler ENC28J60 conecta la schema de beztransformatornoy cu condiția ca router-ul se află în vecinătatea dispozitivului creat. În acest caz, schema de conectare este prezentată în figura 4.

Server web pe enc28j60 și microcontroler avr pentru gestionarea dispozitivelor prin tcp

Figura 4. Schema de conectare fără transformator.

Cu această schemă de conectare, standardul IEEE 802.3 nu este implementat, dar dispozitivul funcționează.

Server web pe enc28j60 și microcontroler avr pentru gestionarea dispozitivelor prin tcp

Figura 4. Diagrama conexiunii ATmega128L

În ciuda faptului că programarea secvențială ATmega128 SPI utilizează aceeași unitate ca și în funcționarea normală a microcontrolerului, există o diferență importantă: concluziile Mosi / MISO modul de intrare-ieșire SPI, care sunt aliniate cu PB2 și PB3, nu este utilizat pentru programare. In schimb, acestea sunt utilizate în programarea secvențială PE0 și PE1 la datele de intrare și de ieșire. De aceea, în Figura 1 prezintă separat pentru bus programare (programare serială). Bus este indicat în Figura 1 ca SPI ENC28J60 conectează modulul la ENC28J60 cip, a cărui schemă este reprezentată în figura 1.

Figura 5 prezintă o fotografie a dispozitivului asamblat pe placa de circuite. De asemenea, marchează principalele elemente funcționale.

Aparatul a fost programat folosind ID-ul Arduino. Avantajul său este că conține multe biblioteci utile, în special pentru lucrul cu busul OneWire și chipul ENC28J60.

Server web pe enc28j60 și microcontroler avr pentru gestionarea dispozitivelor prin tcp

Fig. 5. Fotografia serverului web de pe placa de circuite

Mediul software Arduino descrie porturile I / O pentru un număr limitat de microcontrolere. Prin urmare, problema este de a descrie pinoutul controlerului ATmega128 în mediul de dezvoltare propriu-zis și în biblioteca pentru cipul ENC28J60. Pentru aceasta, corectați fișierul d: \ arduino-1.0.3 \ hardware \ arduino \ variante \ standard \ pins_arduino.h.

statică const uint8_t SS = 10;

static const uint8_t MOSI = 11;

static const uint8_t MISO = 12;

statică const uint8_t SCK = 13;

statică const uint8_t SS = 8;

static const uint8_t MOSI = 10;

static const uint8_t MISO = 11;

statică const uint8_t SCK = 9;

În fișierul d: \ arduino-1.0.3 \ libraries \ etherShield \ enc28j60.c al bibliotecii ENC28J60, efectuăm și reparații.

#define ENC28J60_CONTROL_CS 10

#define SPI_MOSI 11

#define SPI_MISO 12

#define SPI_SCK 13

#define ENC28J60_CONTROL_CS 8

#define SPI_MOSI 10

#define SPI_MISO 11

#define SPI_SCK 9

Mai jos este un program pentru controlul a trei LED-uri (actuatoare) și citirea temperaturii de la senzorul DS18B20. Trebuie remarcat faptul că, în comparație cu sarcina de la începutul paginii, programul este extins la 3 LED-uri. Acestea sunt conectate la pinii microcontrolerului 28, 30, 32.

static uint8_t ip [4] =; static uint16_t port = 80;

ETHER_28J60 e; OneWire ds (6); char buf [30];

e.setup (mac, ip, port);

pinMode (3, ieșire); pinMode (5, OUTPUT); pinMode (7, ieșire);>

int freeRam ()

retur (int) v - (__brkval == 0. (int) __heap_start. (int) __brkval);

ds.search (addr); ds.reset (); ds.select (addr);

ds.write (0x44.1); // începe conversia, cu puterea de parazit la sfârșitul anului

ds.write (0xBE); / / Citiți Scratchpad

Figura 6 arată ieșirea programului într-un browser web

Server web pe enc28j60 și microcontroler avr pentru gestionarea dispozitivelor prin tcp

Figura 6. Interfața serverului web

Pentru a elimina datele de la senzorul de temperatură, se folosește și biblioteca OneWire. Conform experienței bibliotecii, etherShield și ETHER_28J60 permit trimiterea unui singur pachet la cererea clientului. Prin urmare, crearea unei pagini care nu se încadrează într-un pachet Ethernet (aproximativ 1500 de octeți) poate duce la dificultăți suplimentare în scrierea programului. De asemenea, în memoria microcontrolerului este necesar să se rezerve un tampon suplimentar cu un volum de 1500 de octeți. Pentru ca programul să opereze cele 3 LED-uri din fișierul ETHER_28J60.cpp al bibliotecii ETHER_28J60, se face următoarea modificare:

#define BUFFER_SIZE 1500

În caz contrar, serverul web a fost suspendat.

Modulul Ethernet bazat pe cipul W5100 și biblioteca Arduino Ethernet vă permite să schimbați un număr nelimitat de pachete, astfel încât este posibil să creați un simplu server web universal pe baza sa.

Documente conexe:

900 secunde serverul DDNS va trimite informații despre client. Referințe 1. Myasischev AA Serverul Web ENC28J60 și microcontrolerul AVR pentru gestionarea dispozitivelor TCP / IP. [Electronic.







Articole similare

Trimiteți-le prietenilor: