Ethernetshield ENC28J60 Arduino anschließen & verwenden

Bei der Entwicklung von eigenständigen Mechanismen oder bei der Erstellung eines Smart Home-Systems haben viele Menschen das Bedürfnis, die Arduino-Plattform mit dem ENC28J60 Ethernet LAN / Netzwerkmodul zu verbinden. Dadurch kann der Arduino über ein lokales Netzwerk über einen Computer oder ein mobiles Gerät gesteuert werden. In diesem Artikel wollen wir uns den Anschluss des HR911105A an den Arduino ansehen.




Bestandteile:

Folgen Sie den schrittweisen Anweisungen und Sie können das Einschalten der LEDs über Ihr lokales Netzwerk über Ihren Computer steuern. Und wenn der Router die Möglichkeit hat, einen Wi-Fi-Zugangspunkt zu erstellen, kann die Steuerung über ein beliebiges Mobilgerät (Telefon oder Tablet) erfolgen. Der Schaltplan des HanRun HR911105A LAN-Moduls sowie das Programm zur Steuerung des Arduino über Wi-Fi sind unten dargestellt.

HanRun ENC28J60 Ethernet Module pinout, datasheet

ENC28J60 Ethernet Module pinout, datasheet

Merkmale des HR911105A ENC28J60 Ethernet Module (datasheet)

  • Versorgungsspannung: 3.3 V
  • IC: ENC28J60-I/SO
  • 25 MHZ
  • Ethernet-Schnittstelle: HR911105A
  • Größe der Platine: 56 x 34 mm

Dieses Netzwerkmodul ist ideal, um auf einfache Art und Weise eine Netzwerkverbindung mit einem Mikrocontroller herzustellen. Es ist mit einer herkömmlichen RJ45-Netzwerkbuchse und einem ENC28J60 Ethernet-Controller ausgestattet. So können Sie einen kleinen Webserver, einen Chatserver oder einen Telnet-Client einrichten. Das Netzwerkmodul kann einfach über die 10 Buchsenstifte angeschlossen werden.

Wie man einen HanRun ENC28J60 Module Arduino anschließt

Wie man einen HanRun ENC28J60 Module Arduino anschließt

ENC28J60 Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
5V / 3.3V 5V / 3.3V 5V / 3.3V 5V / 3.3V
SCK 13 (SCK) 13 (SCK) 52 (SCK)
SO 12 (MISO) 12 (MISO) 50 (MISO)
ST 11(MOSI) 11 (MOSI) 51 (MOSI)
CS 10 (SS) 10 (SS) 53 (SS)

Schließen Sie das Arduino Uno-Board und das HR911105A wie auf dem Foto unten an. Beachten Sie, dass das 10-polige Ethernet-Modul ENC28J60 über einen 3,3V-Anschluss und das 12-polige Modul über 5V versorgt wird. Darüber hinaus können die Steckerbezeichnungen auf dem HanRun HR911105A vom Hersteller geändert werden, z. B. ST statt SO. Die Verbindung der Drähte mit den Stiften muss von guter Qualität sein.

Programm Arduino für HR911105A ENC28J60 Ethernet Module





#include "EtherCard.h"

static byte mymac[] = {0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A }; // MAC Address
static byte myip[] = {192, 168, 1, 55 }; // IP Address
byte Ethernet::buffer[1200]; BufferFiller bfill;

int LedPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
boolean PinStatus[] = {1, 2, 3, 4, 5, 6, 7, 8};

const char http_OK[] PROGMEM =
  "HTTP/1.0 200 OK\r\n"
  "Content-Type: text/html\r\n"
  "Pragma: no-cache\r\n\r\n";

const char http_Found[] PROGMEM =
  "HTTP/1.0 302 Found\r\n"
  "Location: /\r\n\r\n";

const char http_Unauthorized[] PROGMEM =
  "HTTP/1.0 401 Unauthorized\r\n"
  "Content-Type: text/html\r\n\r\n"
  "<h1>401 Unauthorized</h1>";

void homePage() {
  bfill.emit_p(PSTR("$F"
  "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"
  "<meta name='viewport' content='width=device-width, initial-scale=1.0'>"
  "<title>Contrôle Arduino via Wi-Fi</title>"
  "<h1 style='color:#0ea6f2'>Arduino-Steuerung über Wi-Fi</h1>"
  "<font size='3em'>"
  "<font style='display:none;'>LED 0: <a href='?ArduinoPIN1=$F'>$F</a></font>"
  "LED 1: <a href='?ArduinoPIN2=$F'>$F</a><br /><br />"
  "LED 2: <a href='?ArduinoPIN3=$F'>$F</a><br /><br />"
  "LED 3: <a href='?ArduinoPIN4=$F'>$F</a><br /><br />"
  "</font>"),

  http_OK,
  PinStatus[1] ? PSTR("off") : PSTR("on"),
  PinStatus[1] ? PSTR("<font color='green'>ON</font>") : PSTR("<font color='red'>OFF</font>"),
  PinStatus[2] ? PSTR("off") : PSTR("on"),
  PinStatus[2] ? PSTR("<font color='green'>ON</font>") : PSTR("<font color='red'>OFF</font>"),
  PinStatus[3] ? PSTR("off") : PSTR("on"),
  PinStatus[3] ? PSTR("<font color='green'>ON</font>") : PSTR("<font color='red'>OFF</font>"),
  PinStatus[4] ? PSTR("off") : PSTR("on"),
  PinStatus[4] ? PSTR("<font color='green'>ON</font>") : PSTR("<font color='red'>OFF</font>"));
}

void setup() {
  Serial.begin(9600);

  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0);
  if (!ether.dhcpSetup());

  ether.printIp("My Router IP: ", ether.myip);
  ether.staticSetup(myip);
  ether.printIp("My SET IP: ", ether.myip);

  for (int i = 2; i <= 5; i++) {
    pinMode(LedPins[i], OUTPUT);
    PinStatus[i] = false;
  }
}

void loop() {
  delay(1);
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);

  if (pos) {
    bfill = ether.tcpOffset();
    char *data = (char *) Ethernet::buffer + pos;
    if (strncmp("GET /", data, 5) != 0) {
      bfill.emit_p(http_Unauthorized);
    }
    else {
      data += 5;
      if (data[0] == ' ') {
        homePage();
        for (int i = 2; i <= 5; i++) { digitalWrite(LedPins[i], PinStatus[i + 1]); }
      }

      // "14" = die Anzahl der Zeichen in der Zeichenkette "?ArduinoPIN1=on "
      else if (strncmp("?ArduinoPIN1=on ", data, 16) == 0) {
        PinStatus[1] = true;
        bfill.emit_p(http_Found);
      }
      else if (strncmp("?ArduinoPIN2=on ", data, 16) == 0) {
        PinStatus[2] = true;
        bfill.emit_p(http_Found);
      }
      else if (strncmp("?ArduinoPIN3=on ", data, 16) == 0) {
        PinStatus[3] = true;
        bfill.emit_p(http_Found);
      }
      else if (strncmp("?ArduinoPIN4=on ", data, 16) == 0) {
        PinStatus[4] = true;
        bfill.emit_p(http_Found);
      }

      // "15" = die Anzahl der Zeichen in der Zeichenkette "?ArduinoPIN1=off "
      else if (strncmp("?ArduinoPIN1=off ", data, 17) == 0) {
        PinStatus[1] = false;
        bfill.emit_p(http_Found);
      }
      else if (strncmp("?ArduinoPIN2=off ", data, 17) == 0) {
        PinStatus[2] = false;
        bfill.emit_p(http_Found);
      }
      else if (strncmp("?ArduinoPIN3=off ", data, 17) == 0) {
        PinStatus[3] = false;
        bfill.emit_p(http_Found);
      }
      else if (strncmp("?ArduinoPIN4=off ", data, 17) == 0) {
        PinStatus[4] = false;
        bfill.emit_p(http_Found);
      }

      else { bfill.emit_p(http_Unauthorized); }
    }
    ether.httpServerReply(bfill.position());
  }
}

  1. Mit dieser Zeile byte Ethernet::buffer[1200]; haben wir im Mikrocontroller Speicher für die Zwischenablage frei gemacht. Wenn wir die Daten auf der Webseite vergrößern, müssen wir den Puffer vergrößern, damit es nicht zu einem „Hänger“ kommt;
  2. Der Stil und das Design der Webseite werden mit Hilfe von HTML-Tags erstellt.

Schlussfolgerung. Die IP des Arduino ist im Code vorgegeben. Alle grundlegenden Funktionen sind im Sketch auskommentiert, so dass Sie keine Probleme haben sollten, das Programm zu konfigurieren. Rufen Sie die IP-Adresse 192.168.1.55 über den Computer oder das Telefon auf. Wenn die Verbindung mit dem HanRun HR911105A 15/10 Ethernet Shield fehlschlägt, sollten Sie die Einstellungen des Wi-Fi-Routers überprüfen.

5/5 - (1 vote)


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert