Nettengja Arduino

Til að nettengja Arduino dugar enc28j60.

arduino ethernet

Þetta er mjög einföld lausn þegar maður er að nota Arduino á tengibretti.

Fyrst þarf að ná sér í library til að setja inn í Arduino sketch hugbúnaðinn. https://github.com/jcw/ethercard 

Best er að velja zip download á library og afpakka því undir C:\Program Files (x86)\Arduino\libraries\.

thumb leid github leid ethercard 

Þá ættu að vera komin Exambles. ( muna slökva kveikja á hugbúnaði ef hann hefur verið í gangi. )

leid arduino_sketch

Síðan þarf að tengja það rétt við Arduino eins og taflan sýnir.

arduino to_encj

Myndin hér að neðan sýnir svo alla pinnana á Atmega328 sem er notaður sem Arduino.

 arduino atmega328

Þegar allt er tengt þá er bara byrja skemmta sér með Arduino nettengt.

Fullt af skemmtilegum sýnis hornum á netinu til að byrja.

Hér er sketc sem nettengir og leyfir að slökkva og kveikja á pinna 3.

Flott að tengja við led eða relay.

webled 

#include <EtherCard.h>

static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31};
static byte myip[] = {192,168,1,2};
static byte gwip[] = {192,168,1,1};

byte Ethernet::buffer[700];

const int ledPin = 3;
boolean ledStatus;

char* on = "ON";
char* off = "OFF";
char* statusLabel;
char* buttonLabel;

void setup () {
 
  Serial.begin(57600);
  Serial.println("WebLed Demo");
 
  if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))
    Serial.println( "Failed to access Ethernet controller");
 else
   Serial.println("Ethernet controller initialized");
 
  if (!ether.staticSetup(myip))
    Serial.println("Failed to set IP address");

  Serial.println();
  
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  ledStatus = false;
}
  
void loop() {
 
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);
  
  if(pos) {
    
    if(strstr((char *)Ethernet::buffer + pos, "GET /?status=ON") != 0) {
      Serial.println("Received ON command");
      ledStatus = true;
    }

    if(strstr((char *)Ethernet::buffer + pos, "GET /?status=OFF") != 0) {
      Serial.println("Received OFF command");
      ledStatus = false;
    }
    
    if(ledStatus) {
      digitalWrite(ledPin, HIGH);
      statusLabel = on;
      buttonLabel = off;
    } else {
      digitalWrite(ledPin, LOW);
      statusLabel = off;
      buttonLabel = on;
    }
      
    BufferFiller bfill = ether.tcpOffset();
    bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
      "Content-Type: text/html\r\nPragma: no-cache\r\n\r\n"
      "<html><head><title>WebLed</title></head>"
      "<body>LED Status: $S "
      "<a href=\"/?status=$S\"><input type=\"button\" value=\"$S\"></a>"
      "</body></html>"      
      ), statusLabel, buttonLabel, buttonLabel);
    ether.httpServerReply(bfill.position());
  }
}