Arduino Pro Mini + Ethernet Shield

ingener.solovyev
Offline
Зарегистрирован: 12.02.2013

Добрый день!

Существует ли Ethernet Shield для данной платы? 

axill
Offline
Зарегистрирован: 05.09.2011

Шилды практически все заточены под Uno и мега - они в большинстве случаев срвместимы

Но нет проблемы любой шилд подключить к мини

берите компактный ethernet шилд не тот который стандартный ардуино, а другой, меньшего размера. Там всего что то около 6 проводов для соединения - питание, SPI и CS. Этот шилд для мини будет логичнее чем брать громоздкий arduino ethernet

axill
Offline
Зарегистрирован: 05.09.2011

Имел в виду такой шилд http://www.buyincoins.com/new_en/details/new-enc28j60-ethernet-lan-network-module-schematic-for-arduino-51-avr-lpc-stm32-product-9026.html

чип попроще чем wiznet но для многих задач его хватает

Samodelkin
Offline
Зарегистрирован: 07.06.2012

Для Pro Mini не знаю, есть для Nano полноценный шилд езернет на w5100 с картой sd. Покупал у них http://www.gravitech.us/etwmiadforar.html, правда ценник 40$

ingener.solovyev
Offline
Зарегистрирован: 12.02.2013

Samodelkin пишет:

Для Pro Mini не знаю, есть для Nano полноценный шилд езернет на w5100 с картой sd. Покупал у них http://www.gravitech.us/etwmiadforar.html, правда ценник 40$

 

Да вы батенька олигарх http://www.ebay.com/itm/ENC28J60-Ethernet-Shield-for-Arduino-Nano-3-0-RJ45-Webserver-Module-/400389806489?pt=LH_DefaultDomain_0&hash=item5d39179999

ingener.solovyev
Offline
Зарегистрирован: 12.02.2013

Всем спасибо, нашел mini ethernet shield заказал. http://www.ebay.com/itm/200924658028?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Samodelkin
Offline
Зарегистрирован: 07.06.2012

Да я что, заказчик все оплачивал :)

leshak
Offline
Зарегистрирован: 29.09.2011

ingener.solovyev пишет:

Samodelkin пишет:

Для Pro Mini не знаю, есть для Nano полноценный шилд езернет на w5100 с картой sd. Покупал у них http://www.gravitech.us/etwmiadforar.html, правда ценник 40$

 

Да вы батенька олигарх http://www.ebay.com/itm/ENC28J60-Ethernet-Shield-for-Arduino-Nano-3-0-RJ45-Webserver-Module-/400389806489?pt=LH_DefaultDomain_0&hash=item5d39179999

Нет, это вы явно не щупали эти шилды. Обратите внимание что они на разных чипсетах.  Это примерно как сравнить мерседес и жигули. IMHO разница в $30 вполне оправдана если делать на этом шилде что-то сложней "включаем диод". Иначем, стоимость времени програмиста, вам второй шилд сделает раз в 10-ть дороже первого.

Второй шилд имеет смысл, IMHO только в случае если логика действительно не сложна (и при этом, тот кто будет с ним ковыряться - далеко не чайник) или если планируется пускать устройство в серию. Тогда экономия $30*размер_серии - вполне может оправдать потраченное на enc28j60 время.

axill
Offline
Зарегистрирован: 05.09.2011

leshak пишет:

Нет, это вы явно не щупали эти шилды. Обратите внимание что они на разных чипсетах.  

вы правы, wiznet подходит для большего числа задач

но разница в цене чипов wiznet5100 и enc28j60 всего два бакса. Разницы в цене обвязки почти нет. Так что 40 баксов за такой шилд конечно перебор. Но хозяин барин. Здесь переплата за редкий товар.

Апрайсин
Апрайсин аватар
Offline
Зарегистрирован: 05.08.2013

люди подскажите пожалуйста.
есть у меня arduino pro mini и Ethernet HR911105A

подключил
gnd / gnd
sck / 13
so / 12
si / 11
cs / 10
vcc / 3,3 (на TTL)
теоретически так

залил программу

 

#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
 
// Ethernet Configuration
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,110,115);
// Used default port for HTTP
EthernetServer server(80);
 
byte wirePin = 8;
OneWire ds(wirePin);
byte addr[8];
 
byte ledPin = 7;
boolean isLedOn = false;
 
unsigned long lastUpdate = 0;
 
float temperature = -100.0;
 
 
void setup(void) {
  pinMode(ledPin, OUTPUT);
  Ethernet.begin(mac,ip);
  server.begin();
  connectToSensor();
}
 
void loop(void) {
  updateTemperature();
 
  EthernetClient client = server.available();
 
  if(client){
 
    String request;
 
    boolean currentLineIsBlank = true;
    boolean requestLineReceived = false;
 
    while(client.connected()){
      if (client.available()) {
        char c = client.read();
 
        if(c == '\n' && currentLineIsBlank) { 
          // substract path from a request line
          request = request.substring( 
                      request.indexOf(' ') + 1, 
                      request.lastIndexOf(' '));
          if(request=="/"){
            successHeader(client);
            generatePage(client);
          }
          else if(request=="/switch-on"){
            digitalWrite(ledPin, HIGH);
            isLedOn = true;
            redirectHeader(client, "/");
          }
          else if(request=="/switch-off"){
            digitalWrite(ledPin, LOW);
            isLedOn = false;
            redirectHeader(client, "/");
          }
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
          if(!requestLineReceived){
            requestLineReceived = true;
          }
        } 
        else if (c != '\r') {
          if(!requestLineReceived) {
            request += c;
          }
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
  }  
}
 
void successHeader(EthernetClient client){
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("Connnection: close");
  client.println();
}
 
void redirectHeader(EthernetClient client, String path){
  client.println("HTTP/1.1 302 Moved Temporarily");
  client.println("Content-Type: text/html");
  client.println("Location: " + path);
  client.println("Connnection: keep-alive");
  client.println();
}
 
void generatePage(EthernetClient client){
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head>");
  client.println("  <title>Server</title>");
  client.println("</head>");
 
  client.println("<body>");
  String ledStatus = isLedOn ? "ON" : "OFF";
  client.println("  <h1>Led is " + ledStatus + "</h1>");
 
  if(temperature != -100.0){
    client.println("  <h1>Temperature is " + 
                      floatToString(temperature, 100) + 
                      "</h1>");
  }
  client.println("  <a href=\"/switch-on\">Switch ON</a>");
  client.println("  <br />");
  client.println("  <a href=\"/switch-off\">Switch OFF</a>");
  client.println("</body>");
  client.println("</html>");
}
 
String floatToString(float value, byte precision){
  int intVal = int(value);
  unsigned int frac;
  if(intVal >= 0){
    frac = (value - intVal) * precision;
  } 
  else {
    frac = (intVal - value) * precision;
  }
  return String(intVal) + "." + String(frac);
}
 
void updateTemperature(){
  unsigned long time = millis();
  if((time - lastUpdate) > 5000 || lastUpdate == -100.0){
    lastUpdate = time;
    temperature = getTemperature();
  }
}
 
float getTemperature() {
 
  ds.reset();
  ds.select(addr);
  ds.write(0x44);        
 
  delay(750);
 
  ds.reset();
  ds.select(addr);    
  ds.write(0xBE);     
 
  byte data[9], i;
  for ( i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
 
  if (OneWire::crc8(data, 8) != data[8]) {
    return temperature;
  }
 
  unsigned int raw = (data[1] << 8) | data[0];
  raw = raw << 3;
  if (data[7] == 0x10) {
    raw = (raw & 0xFFF0) + 12 - data[6];
  }
 
  float celsius;
  celsius = (float)raw / 16.0;
  return celsius;
}
 
void connectToSensor(){
  if ( !ds.search(addr) || 
          OneWire::crc8(addr, 7) != addr[7] || 
          addr[0]!=0x10) {
    ds.reset_search();
    delay(250);
    connectToSensor();
  }
}

подключился к роутеру TP-link mr-3220 (снял датакабель с компа, сам сижу по вайфаю с нотика)
захожу на 192.168.110.115
и всё... 
белый экран и нчего нету. другие примеры так же не отрабатывают.
даже не знаю, может пайка плохая (хотя прозваниваеться)
может пины перепутал.
может ещё что-то.
подскажете?