Enc28j60 modul ethernet - descriere, conexiune, schematică, biblioteci

Modulul Ethernet ENC28J60 pentru Arduino

caracteristicile
Sursă de alimentare
tensiune 3.14 - 3.45 V
curent, mA
maxim 250
evaluat 170
MAC integrat și 10 Base-T PHY






Duplex duplex și jumătate
Suport pentru un port 10 Base-T cu detecție și corectare a polarității automate
Alinierea automată a generării sumelor de control
Rejectarea automată a pachetelor eronate
Funcție de repetare programabilă pe eroare
Funcții programabile de umplere și generare CRC
Filtrarea programabilă a pachetelor eronate
Viteza SPI de până la 20 MHz
Dimensiunile tablei: 55 x 36 mm

Schema modulului ENC28J60

Dispozitivul, care execută funcțiile serverului web, include modulul ENC28J60 conectat la modulul microcontrolerului. Programul de microcontroler asigură interacțiunea cu cipul ENC28J60 și funcționarea serverului web. Ca modul de microcontroler, poate fi utilizat dispozitivul central Arduino.

Numele contactelor modulului.

Conectarea modulului ENC28J60 la arduino MEGA.

Contacte Arduino UNO, Due, Nano, Duemilanove

Întrerupeți ieșirea atunci când primiți un pachet

2 sau dezactivat

Ieșire date SPI MISO

Intrare ceas SPI SCK

Ceas de iesire ieșire ceas

Introducerea datelor SPI MOSI


La conectarea la Arduino, se utilizează interfața SPI, resetarea și alimentarea. Contactul de resetare poate fi conectat la pinul I / O digital Arduino dacă programul furnizează un semnal de resetare de la contactul digital. Modulul de alimentare 3.3 V poate fi luat de la Arduino.

Cea mai ușoară modalitate de a cunoaște ENC28J60 este utilizarea hardware și software-ului Arduino, deoarece pachetul de programe Arduino IDE conține bibliotecile pentru ENC28J60. Vom încerca să gestionăm pe Internet un modul cu relee cu 8 canale care comută sarcina la 220 V. Să ne imaginăm că sarcina este de a schimba liniile de iluminare a străzilor, a drumurilor și a podurilor.


Control prin Internet prin două relee.


Control prin intermediul internetului a patru relee.

Mai întâi trebuie să descărcați și să instalați biblioteca ethercard în IDE Arduino.

Conectăm modulele ENC28J60 și Arduino UNO, ghidate de marcaj. Conectarea contactelor:

GND - GND sub contactul 5V,

Să verificăm conexiunea. În Arduino IDE, în secțiunea de exemple, găsim biblioteca ethercard, unde selectăm rbbb_server. În mod implicit, biblioteca ethercard utilizează contactul de 8 Arduino pentru semnalul CS al interfeței SPI. Dacă conexiunea este făcută unui alt contact, de exemplu 10 ca în cazul nostru, atunci trebuie să faceți o modificare a textului exemplului rbbb_server. La începutul programului rbbb_server, sunt disponibile următoarele rânduri.

byte Ethernet :: tampon [500];
BufferFiller bfill;

void setup () dacă (ether.begin (sizeof Ethernet :: buffer, mymac) == 0)
Serial.println (F ("Eroare la accesarea controlerului Ethernet"));
ether.staticSetup (myip);
>

Modificați programul pentru a utiliza contactul 10. În cea de-a patra linie din partea de jos a secțiunii de mai sus a textului programului, facem o schimbare înainte de brațul de închidere sub forma unui număr de 10:

dacă (ether.begin (dimensiunea Ethernet :: buffer, mymac, 10) == 0)

PROGRAM PENTRU GESTIONAREA RELAȚIEI UMANE

// Cu cât sunt mai multe date de pe pagina Web, cu atât este mai mare tamponul necesar






byte Ethernet :: tampon [900];
BufferFiller bfill;

// Array de contacte Arduino activate, pentru controlul releului
int LedPins [] = 2,3,4,5,6,7,8,9>;

// Array pentru a efectua modificări
bootan PinStatus [] = 1,2,3,4,5,6,7,8>;

const char http_OK [] PROGMEM =
"HTTP / 1.0 200 OK \ r \ n"
"Tip de conținut: text / html \ r \ n"
"Pragma: nu-cache \ r \ n \ r \ n";
const char http_Found [] PROGMEM =

"HTTP / 1.0 302 S-a găsit \ r \ n"
"Locație: / \ r \ n \ r \ n";
const char http_Unautorizat [] PROGMEM =
"HTTP / 1.0 401 neautorizat \ r \ n"
"Tip de conținut: text / html \ r \ n \ r \ n"
"

void homePage ()
bfill.emit_p (PSTR ("$ F"
„“
"ArduinoPIN 1: $ F
"
"ArduinoPIN 2: $ F
"
"ArduinoPIN 3: $ F
"
"ArduinoPIN 4: $ F
"
"ArduinoPIN 5: $ F
"
"ArduinoPIN 6: $ F
"
"ArduinoPIN 7: $ F
"
"ArduinoPIN 8: $ F"),
http_OK,
PinStatus [1]? PSTR ("dezactivat"): PSTR ("on"),
PinStatus [1]? PSTR ("ON"): PSTR ("OFF"),
PinStatus [2] - PSTR ("dezactivat"): PSTR ("on"),
PinStatus [2] - PSTR ("ON"): PSTR ("OFF"),
PinStatus [3] - PSTR ("dezactivat"): PSTR ("on"),
PinStatus [3] - PSTR ("ON"): PSTR ("OFF"),
PinStatus [4] - PSTR ("dezactivat"): PSTR ("on"),
PinStatus [4] - PSTR ("ON"): PSTR ("OFF"),
PinStatus [5] - PSTR ("dezactivat"): PSTR ("on"),
PinStatus [5] - PSTR ("ON"): PSTR ("OFF"),
PinStatus [6] - PSTR ("dezactivat"): PSTR ("on"),
PinStatus [6] - PSTR ("ON"): PSTR ("OFF"),
PinStatus [7] - PSTR ("oprit"): PSTR ("on"),
PinStatus [7] - PSTR ("ON"): PSTR ("OFF"),
PinStatus [8] - PSTR ("dezactivat"): PSTR ("on"),
PinStatus [8] - PSTR ("ON"): PSTR ("OFF");
>

buclă voidă ()
întârziere (1);
cuvânt len ​​= ether.packetReceive (); // Verificați pachetele ethernet
cuvânt pos = eter.packetLoop (len); // Verificați pachetele TCP
dacă (pos) bfill = ether.tcpOffset ();
char * date = (char *) Ethernet :: buffer + pos;
dacă (strncmp ("GET /", date, 5)! = 0) bfill.emit_p (http_Unautorizat);
>

altceva date + = 5;
dacă (date [0] == '') homePage (); // Dacă se găsesc modificări pe pagină, executați funcția
pentru (int i = 0; i <= 7; i++)digitalWrite(LedPins[i],PinStatus[i+1]);
>

// "16" = numărul de caractere "? ArduinoPIN1 = on".
altfel dacă (strncmp ("? ArduinoPIN1 = on", date, 16) == 0) PinStatus [1] = adevărat;
bfill.emit_p (http_Found);
>

altfel dacă (strncmp ("? ArduinoPIN2 = on", date, 16) == 0) PinStatus [2] = adevărat;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN3 = on", date, 16) == 0) PinStatus [3] = adevărat;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN4 = on", date, 16) == 0) PinStatus [4] = adevărat;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN5 = on", date, 16) == 0) PinStatus [5] = adevărat;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN6 = on", date, 16) == 0) PinStatus [6] = adevărat;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN7 = on", date, 16) == 0) PinStatus [7] = adevărat;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN8 = on", date, 16) == 0) PinStatus [8] = adevărat;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN1 = off", date, 17) == 0) PinStatus [1] = false;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN2 = off", date, 17) == 0) PinStatus [2] = false;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN3 = dezactivat", date, 17) == 0) PinStatus [3] = false;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN4 = off", date, 17) == 0) PinStatus [4] = false;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN5 = dezactivat", date, 17) == 0) PinStatus [5] = false;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN6 = dezactivat", date, 17) == 0) PinStatus [6] = false;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN7 = oprit", date, 17) == 0) PinStatus [7] = false;
bfill.emit_p (http_Found);

altfel dacă (strncmp ("? ArduinoPIN8 = off", date, 17) == 0) PinStatus [8] = false;
bfill.emit_p (http_Found);

static octet mymac [] = 0x7b, 0x6c, 0x4d, 0x3e, 0x2f, 0x10>;

PROCEDEU DE LUCRU AL MODELELOR ENC28J60

Dacă experimentele noastre au succes, atunci în rețeaua noastră locală, implementăm încă un server web pe cel de-al doilea modul ENC28J60, adăugăm al treilea și al patrulea modul în aceeași rețea locală. Acest lucru asigură extinderea sau redundanța sistemului, redundanța pentru a crește fiabilitatea. În acest caz, un port 80 este mic. Pentru a rezolva problema, atribuiți un port unic fiecărui server web următor, făcând o intrare specială în program. În secțiunea void setup (), introduceți linia:

Modulul utilizează microcipul ENC28J60. Placa este conectată la un controler cu o interfață standard SPI cu o rată de transfer de până la 20 MHz.

Specificațiile produsului:
ENC28J60 Ethernet SOP28
Interfață SPI
Alimentare: 3.3 V
Frecvența de operare 25 MHz
Dimensiuni: 55x36 mm







Trimiteți-le prietenilor: