arduino uno + ENC28J60 + SD CARD

kazakoff
Offline
Зарегистрирован: 07.06.2013
Всем привет.
 
Хочу сделать веб интерфейс и открыть страницу например index.html с sd карточки, но не как не могу найти пример с использованием именно ENC28J60.
 
Помогите новичку в этом.
 
Спасибо.
 
 
maksim
Offline
Зарегистрирован: 12.02.2012
Найдено результатов: примерно 93 (за 0,05 сек.)
16 фев 2012 ... Подскажите пожалуйста как правильно соединить Arduino UNO и ENC28J60 Ethernet LAN Network Module Schematic For Arduino чтобы ...
arduino.ru/.../arduino-uno-i-enc28j60-ethernet-lan-network-module- schematic-arduino
17 июл 2012 ... Час повозился с ENC28J60, только поднял сервер по готовым примерам (и то , 90% не работают)... До клиента так и не допер, может, ...
arduino.ru/forum/.../internet-shild-enc28j60
images?q=tbn:ANd9GcSVvqNFjtY_nz5B1Xefhhu
1 апр 2013 ... Коллеги, здравствуйте! Прошу помощи. Уже мозг сломал. Есть схема расширения входов на 74LS165. Стандартная. Работает по SPI.
arduino.ru/forum/.../nano-ethernetshield-enc28j60
24 июн 2012 ... помогите разобраться в проблеме: имеется ардуино точнее клон craftduino ()
arduino.ru/forum/.../problema-s-enc28j60arduino-0
20 фев 2013 ... Подскажите, пожалуйста ссылочку на описания всех методов, функций в этой библиотеке. А лучше, если это возможно, приведите ...
arduino.ru/forum/.../ethershield-api-dlya-enc28j60
15 июл 2013 ... Сут такова. NANO+ENC28J60 Ethernet Shield, залил скетч, Ethernet кабель воткнул, зеленая лампа горит, оранжевая пару раз мигнет и ...
arduino.ru/.../remontiruem-enc28j60-ethernet-shield-arduino-nano-30-rj45- webserver-module
11 апр 2013 ... Все привет!. решил сдедать простую телеметрию для р/у машинки. Появилась проблема связкиGPS и Ethernet.
arduino.ru/.../ne-rabotaet-svyazka-gps-i-ethernet-enc28j60-na-atmega328
images?q=tbn:ANd9GcS-lOR67f0FwQCrMPYuBP7
23 дек 2012 ... Возникла идея создать небольшую партию (20 штук) датчиков на основе Arduino Pro Mini + ENC28J60 Ethernet LAN Module.
arduino.ru/.../neobkhodimo-pridumat-korpus-dlya-arduino-pro-mini- enc28j60-ethernet-lan-mod
13 июл 2013 ... Приветствую, all. Единственная библиотека, с которой хоть что-то отвечается в браузер - EtherCard по ссылке leshak. На данный ...
arduino.ru/forum/.../server-enc28j60-arduino-103
6 мар 2013 ... проблема с enc28j60+arduino .... К тому же, можно, от греха когда ее ставите - убрать из папки libraries другие библиотеки enc28j60.
arduino.ru/forum/.../problema-s-enc28j60arduino-0?...1
1
2
3
4
5
6
7
8
9
10

 

kazakoff
Offline
Зарегистрирован: 07.06.2013

Хватит умничать, я просил помочь связать с sd картой. Если не можете помочь просто промолчите.

maksim
Offline
Зарегистрирован: 12.02.2012

На это могу только написать: Хватит тупить! Вы мне еще предлагает за вас взять пример кода по ссылкам выше и соединить его со стандартным примером для работы с СД картой? Если вы не в состоянии найти сами эти два примера и соединить их в один скейтч, а затем если возникают проблемы, то выложить код сюда и описать проблему... то о какой еще помощи вы тут просите? Сделать все за вас и выложить сюда? Ну ждите тогда "помощи"...

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

(тащит лоток с попкорном и много газировки) ДРАКА! ДРАКА! :)

kazakoff
Offline
Зарегистрирован: 07.06.2013

Народ я тут вот кое что набросал, но вместо того что бы открыть страницу с карточки показывает цифры, я так понимаю считывает ее байты.

#include "etherShield.h"
#include "ETHER_28J60.h"
#include <SD.h>

File myFile;

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};  
static uint8_t ip[4] = {192, 168, 0, 7};      
static uint16_t port = 80;

ETHER_28J60 ethernet;

void setup()
{ 
  
  ethernet.setup(mac, ip, port);
  
Serial.begin(9600);
  Serial.print("Initializing SD card...");  
  pinMode(10, OUTPUT);
  if (!SD.begin(8)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
  
  myFile = SD.open("index.htm");
  if (myFile) {
    Serial.println("index.htm:");
    
    while (myFile.available()) {
    	Serial.write(myFile.read());
    }

  } else {

    Serial.println("error opening test.txt");
  }
  
}

void loop(){
      
  if (ethernet.serviceRequest())
  {
  
    ethernet.print("BAMBUK");
    ethernet.print("<br>");
    
    myFile = SD.open("index.htm");  
    if (myFile) {
         
      while (myFile.available()) {
        
          ethernet.print(myFile.read());
                                  
         } 
         myFile.close();  
      }    
      else {
              Serial.println("error opening index.htm");
          }
        
    ethernet.respond();
   }
}

 

maksim
Offline
Зарегистрирован: 12.02.2012

А в монитор что приходит?

Так попробуйте:

 ethernet.write(myFile.read());

или так:

 ethernet.print((char)myFile.read());

 

kazakoff
Offline
Зарегистрирован: 07.06.2013
Serial.write(myFile.read());

Приходи код страницы

а если 

Serial.print(myFile.read());

тоже самое что на странице.

ethernet.print((char)myFile.read());

не помогло(

Vinch
Offline
Зарегистрирован: 01.08.2013

kazakoff, ну что у вас получилось что-нибудь?

kazakoff
Offline
Зарегистрирован: 07.06.2013

Нет, залил все в прошивку.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

kazakoff пишет:

Нет, залил все в прошивку.

ну и здря залили, вот вам пример работающего кода, только он для w5100... изучайте, может почерпнете идею в чем у вас проблема...

//zoomkat 2/26/13
//SD server slider test code
//open serial monitor to see what the arduino receives
//browser address will look like http://192.168.1.102:84/servosld.htm when submited
//for use with W5100 based ethernet shields
//put the servosld.htm, slider.js, bluev_sl.gif,
//and bluev_bg.gif on the SD card
//download flies at:
// http://web.comporium.net/~shb/pix/servosld.htm
// http://web.comporium.net/~shb/pix/slider.js
// http://web.comporium.net/~shb/pix/bluev_bg.gif
// http://web.comporium.net/~shb/pix/bluev_sl.gif
// 

#include <SD.h>
#include <SPI.h>
#include <Ethernet.h>

#include <Servo.h> 
Servo myservoa, myservob, myservoc, myservod;  // create servo object to control a servo 
Servo myservoe, myservof, myservog; // myservoh not used due to lack of another free pin
String readString, pos;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port

//////////////////////

void setup(){

  Serial.begin(9600);

  // disable w5100 while setting up SD
  pinMode(10,OUTPUT);
  digitalWrite(10,HIGH);
  Serial.print("Starting SD..");
  if(!SD.begin(4)) Serial.println("failed");
  else Serial.println("ok");

  Ethernet.begin(mac, ip, gateway, gateway, subnet);

  //delay(2000);
  server.begin();
  Serial.println("Ready");

  myservoa.attach(2);  //the pin for the servoa control
  myservob.attach(3);  //the pin for the servob control
  myservoc.attach(5);  //the pin for the servoc control
  myservod.attach(6);  //the pin for the servod control 
  myservoe.attach(7);  //the pin for the servoa control
  myservof.attach(8);  //the pin for the servob control
  myservog.attach(9);  //the pin for the servoc control
  //myservoh.attach(10);  //the pin for the servod control 

}

void loop(){
  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {
          //store characters to string 
          readString += c; 
          //Serial.print(c);
        } 
        //if HTTP request has ended
        if (c == '\n') {

          ///////////////
          Serial.println(readString); //print to serial monitor for debuging

            //select proper header for file to be sent to browser

          client.println("HTTP/1.1 200 OK"); //send new page
          if(readString.indexOf("servosld") >=0) {
            client.println("Content-Type: text/html");
            client.println(); 
          }

          if(readString.indexOf("slider") >=0) {
            client.println("Content-Type: application/x-javascript");
            client.println(); 
          }

          if(readString.indexOf("bluev") >=0) {
            client.println("Content-Type: image/gif");
            client.println(); 
          }

          //select file to send to browser
          if(readString.indexOf("servosld") >=0) {
            File myFile = SD.open("SERVOSLD.HTM");
            if (myFile) {

              byte clientBuf[64];
              int clientCount = 0;              

              while (myFile.available()) 
              {
                clientBuf[clientCount] = myFile.read();
                clientCount++;

                if(clientCount > 63)
                {
                  client.write(clientBuf,64);
                  clientCount = 0;
                }                
              }
              if(clientCount > 0) client.write(clientBuf,clientCount);            
              myFile.close();
            }
          }

          if(readString.indexOf("slider") >=0) {
            File myFile = SD.open("slider.js");
            if (myFile) {

              byte clientBuf[64];
              int clientCount = 0;              

              while (myFile.available()) 
              {
                clientBuf[clientCount] = myFile.read();
                clientCount++;

                if(clientCount > 63)
                {
                  client.write(clientBuf,64);
                  clientCount = 0;
                }                
              }
              if(clientCount > 0) client.write(clientBuf,clientCount); 
              myFile.close();
            }
          }

          if(readString.indexOf("bluev_sl") >=0) {
            File myFile = SD.open("bluev_sl.gif");
            if (myFile) {

              byte clientBuf[64];
              int clientCount = 0;              

              while (myFile.available()) 
              {
                clientBuf[clientCount] = myFile.read();
                clientCount++;

                if(clientCount > 63)
                {
                  client.write(clientBuf,64);
                  clientCount = 0;
                }                
              }
              if(clientCount > 0) client.write(clientBuf,clientCount); 
              myFile.close();
            }
          }

          if(readString.indexOf("bluev_bg") >=0) {
            File myFile = SD.open("bluev_bg.gif");
            if (myFile) {

              byte clientBuf[64];
              int clientCount = 0;              

              while (myFile.available()) 
              {
                clientBuf[clientCount] = myFile.read();
                clientCount++;

                if(clientCount > 63)
                {
                  client.write(clientBuf,64);
                  clientCount = 0;
                }                
              }
              if(clientCount > 0) client.write(clientBuf,clientCount); 
              myFile.close();
            }
          }

          delay(1);
          //stopping client
          client.stop();

          //process GET string request from client and and position servo

          pos = readString.substring(8, 12); //get the first four characters         
          //Serial.println(pos);
          int n = pos.toInt();  //convert readString into a number   
          Serial.println(n); 
          Serial.println();

          if(readString.indexOf("?0") >0) myservoa.writeMicroseconds(n);
          if(readString.indexOf("?1") >0) myservob.writeMicroseconds(n);
          if(readString.indexOf("?2") >0) myservoc.writeMicroseconds(n);
          if(readString.indexOf("?3") >0) myservod.writeMicroseconds(n);
          if(readString.indexOf("?4") >0) myservoe.writeMicroseconds(n);
          if(readString.indexOf("?5") >0) myservof.writeMicroseconds(n);
          if(readString.indexOf("?6") >0) myservog.writeMicroseconds(n);
          //only seven servo pins, so back to myservoa for testing
          if(readString.indexOf("?7") >0) myservoa.writeMicroseconds(n);

          //clearing string for next read
          readString="";
          pos="";
        }
      }
    }
  } 
}

 

kazakoff
Offline
Зарегистрирован: 07.06.2013

Спасибо гляну.

Severlock
Offline
Зарегистрирован: 16.03.2016

А как вы подключили все модули к одной uno?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

Severlock пишет:

А как вы подключили все модули к одной uno?

через SPI :)