Arduino - Ethernet Shield

Het gebruik van Arduino Ethernet Shield is een van de eenvoudigste manieren om Arduino met het Internet te verbinden. U kunt andere opties bekijken om Arduino met Internet te verbinden via Ethernet in Arduino - Ethernet tutorial

In deze handleiding gaan we het volgende leren:

Arduino Ethernet Shield

Benodigde Hardware

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×Arduino Ethernet Shield
1×Ethernetkabel
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Basiskennis Netwerken voor beginners

Dit onderdeel biedt basiskennis voor beginners die niets weten over netwerken.

Wanneer een apparaat verbinding maakt met het Internet (via Ethernet of WiFi), MOET het verbinding maken met een router of een access point. Router en access point zijn apparaten die fungeren als de gateway naar het Internet. Alle data tussen een apparaat en het Internet verloopt via de router of het access point.

Wanneer een apparaat verbinding maakt met het Internet, MOET het beschikken over:

  • Een MAC-adres
  • Een IP-adres
  • De subnetmasker van het netwerk
  • Het IP-adres van de gateway (IP-adres van de router of het access point)
  • Het IP-adres van de DNS-server (bij verbinding via een domeinnaam)

Het apparaat werkt niet als:

  • Er één of meerdere andere apparaten in hetzelfde netwerk hetzelfde MAC-adres gebruiken (dit wordt een MAC-adres conflict genoemd)
  • Er één of meerdere andere apparaten in hetzelfde netwerk hetzelfde IP-adres gebruiken (dit wordt een IP-adres conflict genoemd)

Deze tutorial overlaadt u niet met uitgebreide netwerkinformatie. Daarom worden deze concepten niet diepgaand uitgelegd. Ze vallen buiten de reikwijdte van deze handleiding. In plaats daarvan wordt getoond hoe u ze toepast.

Het MAC-adres zit meestal ingebouwd in apparaten en hoeft u niet te regelen. Echter, Arduino Ethernet Shield heeft geen ingebouwd MAC-adres. Het MAC-adres staat gedrukt op een sticker die op het shield is geplakt. Dit adres moet worden overgenomen en ingesteld in de Arduino-code voor het Ethernet Shield.

Er zijn twee methoden om het IP-adres, subnetmasker, gateway IP en DNS server IP aan een apparaat toe te wijzen (ook aan Arduino):

  1. Gebruik een statisch IP-adres:
    • U moet het IP-adres, subnetmasker, gateway IP en DNS server IP beheren
    • De gegevens moeten handmatig worden ingesteld (voor Arduino Ethernet Shield via Arduino-code)
    • Het werkt NIET als:
      • Het IP-adres al door een ander apparaat op hetzelfde LAN wordt gebruikt → IP-conflict
      • Het subnetmasker, gateway IP of DNS server IP verkeerd zijn ingesteld
  • Automatisch een IP-adres verkrijgen via DHCP (dynamisch IP-adres):
    • Het apparaat krijgt automatisch IP-adres, subnetmasker, gateway IP en DNS server IP toegewezen door de router of access point via DHCP. U hoeft deze gegevens niet zelf te beheren. Dit wordt verzorgd door de router/access point.

    Wanneer u uw smartphone verbindt met uw thuis-WiFi, wordt de tweede methode gebruikt.

    Bij gebruik van Arduino is de eerste methode lastig voor beginners. De tweede methode is makkelijker en wordt aanbevolen als u weinig netwerkkennis heeft.

    Hoe u Arduino Ethernet Shield gebruikt

    Arduino communiceert met het Ethernet Shield via de SPI-interface. Hieronder ziet u hoe u Arduino Ethernet Shield gebruikt:

    • Plaats Ethernet Shield op Arduino Uno of Mega
    • Verbind de PC met Arduino Uno/Mega via USB-kabel
    • Verbind het Ethernet Shield met de router/access point via een Ethernetkabel
    • Open Arduino IDE en schrijf de code
    • Upload de code naar Arduino Uno/Mega

    Dit is heel eenvoudig.

    Basis Arduino-code voor Arduino Ethernet Shield bij gebruik van dynamisch IP-adres

    Vereisten

    • U moet het MAC-adres van het Ethernet Shield weten (te vinden op een sticker van de fabrikant)

    Stapsgewijs programmeren

    • Inclusief libraries
    #include <SPI.h> #include <Ethernet.h>
    • Declareer het MAC-adres
    // vervang het MAC-adres hieronder door het MAC-adres dat op de sticker op het Arduino Shield 2 staat byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    • Declareer andere objecten afhankelijk van uw toepassing.
    • Start het Ethernet Shield
    // initialiseer het Ethernet Shield met DHCP: Ethernet.begin(mac);
    • (Optioneel) Print het IP-adres, subnetmasker, gateway IP en DNS server IP van Arduino
    Serial.print("Arduino's IP Address: "); Serial.println(Ethernet.localIP()); Serial.print("DNS Server's IP Address: "); Serial.println(Ethernet.dnsServerIP()); Serial.print("Gateway's IP Address: "); Serial.println(Ethernet.gatewayIP()); Serial.print("Network's Subnet Mask: "); Serial.println(Ethernet.subnetMask());

    Let op: Arduino kan geen IP-adres verkrijgen als:

    • De router of access point DHCP niet ondersteunt
    • De Ethernetkabel niet goed is aangesloten of defect is

    Om dit probleem te detecteren, kunt u Ethernet.begin(mac); aanpassen naar:

    if (Ethernet.begin(mac) == 0) { Serial.println("Failed to obtaining an IP address"); // controleer of Ethernet-hardware aanwezig is if (Ethernet.hardwareStatus() == EthernetNoHardware) Serial.println("Ethernet shield was not found"); // controleer de Ethernet-kabel if (Ethernet.linkStatus() == LinkOFF) Serial.println("Ethernet cable is not connected."); while (true); }

    ※ Notiz:

    Als u het MAC-adres niet aanpast, kan het nog steeds werken. Echter, het kan falen wanneer het MAC-adres conflicteert met dat van een ander apparaat in hetzelfde LAN. Als u de sticker met het MAC-adres kwijt bent, kunt u het bovenstaande MAC-adres voor testdoeleinden gebruiken.

    Complete basiscode voor gebruik met dynamisch IP-adres

    /* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-ethernet-shield-2 */ #include <SPI.h> #include <Ethernet.h> // replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // TODO: Declare something depending on your application void setup() { Serial.begin(9600); // initialize the Ethernet shield using DHCP: Serial.println("Obtaining an IP address using DHCP"); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to obtaining an IP address"); // check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) Serial.println("Ethernet shield was not found"); // check for Ethernet cable if (Ethernet.linkStatus() == LinkOFF) Serial.println("Ethernet cable is not connected."); while (true); } // print out Arduino's IP address, subnet mask, gateway's IP address, and DNS server's IP address Serial.print("- Arduino's IP address : "); Serial.println(Ethernet.localIP()); Serial.print("- Gateway's IP address : "); Serial.println(Ethernet.gatewayIP()); Serial.print("- Network's subnet mask : "); Serial.println(Ethernet.subnetMask()); Serial.print("- DNS server's IP address: "); Serial.println(Ethernet.dnsServerIP()); // TODO: initialize something depending on your application } void loop() { // TODO: do something depending on your application }

    Upload deze code naar Arduino. Als het lukt, toont de Serial Monitor iets als het volgende:

    COM6
    Send
    Obtaining an IP address using DHCP - Arduino's IP address : 192.168.0.5 - Gateway's IP address : 192.168.0.1 - Network's subnet mask : 255.255.255.0 - DNS server's IP address: 8.8.8.8
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

    Als de Serial Monitor dit niet toont, controleer dan uw Ethernetkabel. Werkt het nog steeds niet? Ga dan door naar het volgende gedeelte om een statisch IP-adres te proberen.

    Basis Arduino-code voor Arduino Ethernet Shield bij gebruik van statisch IP-adres

    Vereisten

    Stapsgewijs programmeren

    • Inclusief libraries
    #include <SPI.h> #include <Ethernet.h>
    • Declareer MAC-adres
    // vervang hieronder het MAC-adres door het adres van de sticker op Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    • Declareer een ongebruikt IP-adres, subnetmasker, gateway IP en DNS server IP
    // wijzig IP-adres, subnetmasker, gateway IP en DNS server IP naar uw netwerkconfiguratie IPAddress ip(192, 168, 0, 5); IPAddress gateway(192, 168, 0, 1); IPAddress subnet(255, 255, 255, 0); IPAddress myDns(8, 8, 8, 8);
    • Declareer andere objecten afhankelijk van uw toepassing
    • Start het Ethernet Shield
    // initialiseer het Ethernet Shield met het statische IP-adres: Ethernet.begin(mac, ip, myDns, gateway, subnet);
    • Optioneel: controleer de netwerk link status
    if (Ethernet.linkStatus() == LinkON) Serial.println("Link status: On"); else Serial.println("Link status: Off");

    ※ Notiz:

    Als u het MAC-adres niet aanpast, kan het nog steeds werken. Echter, het kan falen wanneer het MAC-adres conflicteert met dat van een ander apparaat in hetzelfde LAN. Als u de sticker met het MAC-adres kwijt bent, kunt u het bovenstaande MAC-adres voor testdoeleinden gebruiken.

    Complete basiscode voor gebruik met statisch IP-adres

    /* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-ethernet-shield-2 */ #include <SPI.h> #include <Ethernet.h> // replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // change the IP address, subnet mask, gateway's IP address, and DNS server's IP address depending on your network IPAddress ip(192, 168, 0, 5); IPAddress gateway(192, 168, 0, 1); IPAddress subnet(255, 255, 255, 0); IPAddress myDns(8, 8, 8, 8); // TODO: Declare something depending on your application void setup() { Serial.begin(9600); // initialize the Ethernet shield using the static IP address: Ethernet.begin(mac, ip, myDns, gateway, subnet); // TODO: initialize something depending on your application } void loop() { // optional, check link status if (Ethernet.linkStatus() == LinkON) Serial.println("Link status: On"); else Serial.println("Link status: Off"); // TODO: do something depending on your application }

    Upload deze code naar Arduino. Als het lukt, toont de Serial Monitor iets als het volgende:

    COM6
    Send
    Link status: On Link status: On Link status: On
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

    Als de Serial Monitor dit niet toont:

    • Controleer uw Ethernetkabel
    • Controleer of het IP-adres binnen uw netwerk valt
    • Controleer of het IP-adres niet conflicteert met andere apparaten in hetzelfde netwerk
    • Controleer of subnetmasker, gateway IP en DNS server IP correct zijn ingesteld

    Extra netwerkkennis voor beginners

    Bij gebruik van een statisch IP-adres moet u een ongebruikt IP-adres, subnetmasker, gateway IP en DNS server IP achterhalen. Hieronder wordt uitgelegd hoe.

    Als Arduino en uw PC met hetzelfde netwerk verbonden zijn:

    • Open de Command Prompt op uw PC
    • Typ het volgende commando:
    ipconfig
    Command Prompt
    C:\Windows\system32>ipconfig Ethernet adapter Ethernet 2: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Wireless LAN adapter Wi-Fi: Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::d559:ae92:8dff:a604%20 IPv4 Address. . . . . . . . . . . : 192.168.0.14 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.0.1
    • Hieruit kunt u het subnetmasker en het gateway IP-adres aflezen
    • U ziet ook het IP-adres van uw PC. We zoeken een ongebruikt IP-adres gebaseerd op dit adres.
      • Verhoog of verlaag het laatste getal één voor één, begin bij het IP-adres van de PC.
      • Gebruik het ping commando in de Command Prompt op dat IP-adres. Herhaal deze stappen totdat het IP-adres niet bereikbaar is. Dit betekent dat het IP-adres niet in gebruik is en u het mag gebruiken voor Arduino. Bijvoorbeeld:
      ping 192.168.0.16
      Command Prompt
      C:\Users\youruser>ping 192.168.0.16 Pinging 192.168.0.16 with 32 bytes of data: Reply from 192.168.0.14: Destination host unreachable. Reply from 192.168.0.14: Destination host unreachable. Reply from 192.168.0.14: Destination host unreachable. Reply from 192.168.0.14: Destination host unreachable. Ping statistics for 192.168.0.16: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

      ※ Notiz:

      In sommige gevallen kan een IP-adres ondanks onbereikbaarheid toch in gebruik zijn door een ander apparaat. Dit komt doorgaans niet voor in een thuissituatie.

      • Voor het DNS server IP-adres kunt u eenvoudig 8.8.8.8 gebruiken.

      Nu kunt u dit shield gebruiken om Arduino met het Internet te verbinden. Bekijk andere voorbeelden in het gedeelte Zie ook.

    Opmerkingen

    WARNING

    Let op: deze tutorial is nog niet compleet. We zullen een bericht plaatsen op onze Facebook-pagina wanneer de tutorial compleet is. Like de pagina om op de hoogte te blijven.

    ※ ONZE BERICHTEN

    • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!