Arduino Lektion #114: Mini Ethernetshield ENC28J60

In diesem Beitrag möchte ich dir das Mini Ethernetshield ENC28J60 für den Arduino vorstellen.

Bezug

Das Mini Ethernetshield vom Typ ENC28J60 findest du bei ebay.de für knapp 2,59€ .. 8€ zzgl. Versandkosten. Und auch hier gilt wieder, das du den günstigsten Preis bei einem Hän

technische Daten des ENC28J60

  • Betriebsspannung 3,3V
  • Netzwerkschnittstelle RJ45 (HR911105A)
  • Abmaße (LxBxH) 50,7mm x 20,7 mm x 15,3 mm

Aufbau der Schaltung mit einem ENC28J60

Für den Aufbau der Schaltung benötigst du zunächst nur ein paar Breadboardkabel (8 Stück). 

Das Shield selber verfügt wie bereits erwähnt über eine 2fach 5er Stiftleiste im Rastermaß von 2,54mm und wird wiefolgt mit einem Arduino UNO verbunden:

EthernetShield ENC28J60Arduino UNO
CLK
INTdigitaler Pin D2
WQL
SOdigitaler Pin D12
SIdigitaler Pin D11
SCKdigitaler Pin D13
CSdigitaler Pin 8
RSTRESET
VCC3,3V
GNDGND
 
Aufbau der Schaltung - Mini Ethernetshield EN28J60 am Arduino UNO
Aufbau der Schaltung – Mini Ethernetshield ENC28J60 am Arduino UNO
 
Arduino UNO mit angeschlossenem Ethernet Shield (EN28J60)
Arduino UNO mit angeschlossenem Ethernet Shield (EN28J60)

Programmieren des ENC28J60 am Arduino

benötigte Bibliotheken

Für das Mini Ethernetshield ENC28J60 benötigst du eine Bibliothek welche du vom GitHub Repository https://github.com/njh/EtherCard als Zip Datei herunterladen kannst.

Wie du eine Bibliothek in der Arduino IDE installierst habe ich dir im gleichnamigen Beitrag Arduino IDE, Einbinden einer Bibliothek ausführlich erläutert.

Nachdem du die Bibliothek installiert hast findest du unter “Datei” > “Beispiele” > “EtherCard” viele Beispiele zu diesem Shield / dieser Bibliothek.

Beispiele zur Bibliothek "EtherCard"
Beispiele zur Bibliothek “EtherCard”

Quellcode

Im nachfolgenden Beispiel möchte ich dir zeigen wie du einen kleinen WebClient realisierst und zunächst einen einfachen Text auf einer Seite ausgeben kannst.

Hier findest du ein “fast” lauffähiges Beispiel in der Bibliothek. Du musst nur den Pin für CS bzw. SS anpassen. Dazu ersetzt du die Zeichen “SS” durch die Zahl 8. (Bzw. durch den von dir gewählten Pin.)

// Change 'SS' to your Slave Select pin, if you arn't using the default pin
  if (ether.begin(sizeof Ethernet::buffer, mymac, SS) == 0)
// Change 'SS' to your Slave Select pin, if you arn't using the default pin
  if (ether.begin(sizeof Ethernet::buffer, mymac, 8) == 0)

Wenn du das Beispiel dann auf den Arduino UNO spielst und ein RJ45 Kabel an schließt solltest du deinen Microcontroller im Router finden. Ich verwende eine FritzBox! und dieses neue Gerät wird mir wiefolgt angezeigt.

Einstellungen zur EthernetCard in der FritzBox!
Einstellungen zur EthernetCard in der FritzBox!

Mit der angezeigten IP-Adresse können wir nun im Browser eine Anfrage an den Microcontroller stellen und sollten eine Antwort in form einer Fehlerseite erhalten.

Beispiel "backsoon" aus der Bibliothek EtherCard im Browser
Beispiel “backsoon” aus der Bibliothek EtherCard im Browser

Nun wollen wir aber einmal vernünftigen Content generieren und anzeigen lassen.

Als Basis für das Beispiel dient das Beispiel “backsoon” aus der Bibliothek “EtherCard” vom GitHub Repository njh/EtherCard.

Beispiel – Anzeigen von Sensordaten eines DHT11 Sensors

Für den Aufbau der Schaltung benötigst du zusätzlich einen DHT11 Sensor und 4 Breadboardkabel.

Mini Ethernetshield ENC28J60 & DHT11 Sensor am Arduino UNO R3
Mini Ethernetshield ENC28J60 & DHT11 Sensor am Arduino UNO R3

Der DHT 11 Sensor liefert uns neben der Temperatur auch die relative Luftfeuchtigkeit.

#include <EtherCard.h>
#include "DHT.h"

#define STATIC 0  // set to 1 to disable DHCP (adjust myip/gwip values below)

#if STATIC
// ethernet interface ip address
static byte myip[] = { 192, 168, 178, 200 };
// gateway ip address
static byte gwip[] = { 192, 168, 178, 1 };
#endif

// ethernet mac address - must be unique on your network
static byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x31 };

byte Ethernet::buffer[500]; // tcp/ip send and receive buffer

#define DHTTYPE DHT11
#define DHTPIN 6 // Bestimmen das der Sensor DHT11 an den PWM PIN 6 angeschlossen ist.
DHT dht(DHTPIN, DHTTYPE);

String temp, hum;

void setup() {
  Serial.begin(57600);
  Serial.println("\n[backSoon]");

  // Change 'SS' to your Slave Select pin, if you arn't using the default pin
  if (ether.begin(sizeof Ethernet::buffer, mymac, 8) == 0)
    Serial.println( "Failed to access Ethernet controller");
#if STATIC
  ether.staticSetup(myip, gwip);
#else
  if (!ether.dhcpSetup())
    Serial.println("DHCP failed");
#endif

  ether.printIp("IP:  ", ether.myip);
  ether.printIp("GW:  ", ether.gwip);
  ether.printIp("DNS: ", ether.dnsip);

  dht.begin();
  readDht11Sensor();
}

void readDht11Sensor() {
  //Werte ausgeben
  Serial.print("Temperatur: ");
  Serial.print(dht.readTemperature(), 1); //Die Temperatur auslesen.
  Serial.println("C");
  Serial.print("rel. Luftfeuchtigkeit: ");
  Serial.print(dht.readHumidity(), 1);  // Die Luftfeuchtigkeit auslesen.
  Serial.println("%");

  temp = String(dht.readTemperature(), 2);
  hum = String(dht.readHumidity(), 2);
}

void loop() {
  // wait for an incoming TCP packet, but ignore its contents
  if (ether.packetLoop(ether.packetReceive())) {

    String page = "";
    page += "HTTP/1.0 200 OK\r\n";
    page += "Content-Type: text/html\r\n";
    page += "\r\n";
    page += "<html>";
    page += "<head><title>DHT11 Sensordata</title></head><body>";
    page += "<span>Temperatur: " + String(dht.readTemperature(), 2) + "&deg;C</span><br/>";
    page += "<span>rel.Luftfeuchtigkeit: " + String(dht.readHumidity(), 2) + "%</span>";
    page += "</body></html>";

    int lengthOfContent = 180;

    char pageCopy[lengthOfContent];
    page.toCharArray(pageCopy, lengthOfContent);
    memcpy(ether.tcpOffset(), pageCopy, lengthOfContent);
    ether.httpServerReply(lengthOfContent);
  }
}

Im Browser wird nun die Temperatur sowie die relative Luftfeuchtigkeit auf einer Seite angezeigt.

Beispiel - Sensordaten des DHT11 im Browser darstellen

Beispiel – Sensordaten des DHT11 im Browser darstellen

Download des Sketches

Hier nun der Sketch zum bequemen Download.

Kommentar hinterlassen

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