Arduino, ethernet a webclient

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Arduino, ethernet a webclient

Post autor: Pseudo » 28 cze 2013, 22:14

Witam

Mam Arduino uno + Moduł Ethernet ENC28J60
Szukam poradnika jak odpalic na tym webclienta.

Wszedzie lacznie z majsterkowo sa implementacje webserwera, np:
http://majsterkowo.pl/lampka-zapalana-przez-internet/

Da sie ? Ktos ma jakis przyklad ?
Chce pobrac strone przez normalny GET, w ten sposob przesle np temperature do bazy danych (wiem ze mozna tez cronem w druga strone ale ja potrzebuje na zasadzie webclienta)

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
Santyago
Młodszy majsterkowicz
Posty: 22
Rejestracja: 18 cze 2013, 14:07
Lokalizacja: Bytom
Kontakt:

Re: Arduino, ethernet a webclient

Post autor: Santyago » 28 cze 2013, 23:09

Daj adres e-mail, wyślę Ci tutki. Linki ... jeszcze... mi nie działają :}
Awatar użytkownika
rafalzaq
Majsterkowicz
Posty: 180
Rejestracja: 2 maja 2013, 23:57

Re: Arduino, ethernet a webclient

Post autor: rafalzaq » 28 cze 2013, 23:19

Pospamuj trochę i będziesz mógł wstawiać linki. :P
Posiadam taki moduł i na razie leży bo coś nie chciał współpracować z arduino leonardo (może dlatego, że leo jest trochę 'inne'). Ale mam już programator i mam zamiar podłączyć moduł do jakiejś atmegi. Wszelkie linki jakie masz na ten temat mile widziane. Jeśli dalej nie możesz ich tu wstawić to na priva chyba się da.
Awatar użytkownika
Santyago
Młodszy majsterkowicz
Posty: 22
Rejestracja: 18 cze 2013, 14:07
Lokalizacja: Bytom
Kontakt:

Re: Arduino, ethernet a webclient

Post autor: Santyago » 28 cze 2013, 23:23

Za moich czasów spam kończył się bananem :) Link poszedł na PM
Awatar użytkownika
rafalzaq
Majsterkowicz
Posty: 180
Rejestracja: 2 maja 2013, 23:57

Re: Arduino, ethernet a webclient

Post autor: rafalzaq » 28 cze 2013, 23:39

Dzięki. Teraz muszę tylko znaleźć trochę czasu i chęci. ;)
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: Arduino, ethernet a webclient

Post autor: Pseudo » 29 cze 2013, 01:01

Santyago pisze:Daj adres e-mail, wyślę Ci tutki. Linki ... jeszcze... mi nie działają :}

no niestety przy kompilacji walnelo mi errorami :(

C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:18:55: error: WConstants.h: No such file or directory
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c: In function 'enc28j60ReadOp':
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:46: error: 'LOW' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:46: error: (Each undeclared identifier is reported only once
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:46: error: for each function it appears in.)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:60: error: 'HIGH' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c: In function 'enc28j60WriteOp':
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:66: error: 'LOW' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:73: error: 'HIGH' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c: In function 'enc28j60ReadBuffer':
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:78: error: 'LOW' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:92: error: 'HIGH' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c: In function 'enc28j60WriteBuffer':
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:97: error: 'LOW' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:109: error: 'HIGH' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c: In function 'enc28j60Init':
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:163: error: 'OUTPUT' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:164: error: 'HIGH' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:170: error: 'INPUT' undeclared (first use in this function)
C:\Program Files (x86)\Arduino\libraries\etherShield\enc28j60.c:173: error: 'LOW' undeclared (first use in this function)
Awatar użytkownika
Santyago
Młodszy majsterkowicz
Posty: 22
Rejestracja: 18 cze 2013, 14:07
Lokalizacja: Bytom
Kontakt:

Re: Arduino, ethernet a webclient

Post autor: Santyago » 29 cze 2013, 01:05

Zmień w enc28j60.c:18:55 wpis include WConstants.h na Arduino.h

czyli zamiast

#include <WConstants.h>

na

#include <Arduino.h>
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: Arduino, ethernet a webclient

Post autor: Pseudo » 29 cze 2013, 01:56

Santyago pisze:Zmień w enc28j60.c:18:55 wpis include WConstants.h na Arduino.h

czyli zamiast

#include <WConstants.h>

na

#include <Arduino.h>

kompiluje sie
dziekuje za pomoc :)

jutro wgram na uC :)
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: Arduino, ethernet a webclient

Post autor: Pseudo » 29 cze 2013, 19:00

no niestety zrobilem testy ale to co podeslales dzialal tylko w sieci lokalnej.
moge zrobic GETa do IP z sieci lokalnej ale jak juz wstawie ip z internetu to nie dziala.

czy za pomoca modułu ethernet ENC28J60 mozna to osiagnac, tzn zrobic GETa do strony w necie ?
cos jak z przykladow Arduino Ethernet Shield

Kod: Zaznacz cały

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


// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 };
IPAddress ip(192,168,1,20);

// initialize the library instance:
EthernetClient client;

const unsigned long requestInterval = 60000;  // delay between requests

char serverName[] = "api. twitter . com";  // twitter URL

boolean requested;                   // whether you've made a request since connecting
unsigned long lastAttemptTime = 0;            // last time you connected to the server, in milliseconds

String currentLine = "";            // string to hold the text from server
String tweet = "";                  // string to hold the tweet
boolean readingTweet = false;       // if you're currently reading the tweet

void setup() {
  // reserve space for the strings:
  currentLine.reserve(256);
  tweet.reserve(150);

 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // attempt a DHCP connection:
  Serial.println("Attempting to get an IP address using DHCP:");
  if (!Ethernet.begin(mac)) {
    // if DHCP fails, start with a hard-coded address:
    Serial.println("failed to get an IP address using DHCP, trying manually");
    Ethernet.begin(mac, ip);
  }
  Serial.print("My address:");
  Serial.println(Ethernet.localIP());
  // connect to Twitter:
  connectToServer();
}



void loop()
{
  if (client.connected()) {
    if (client.available()) {
      // read incoming bytes:
      char inChar = client.read();

      // add incoming byte to end of line:
      currentLine += inChar; 

      // if you get a newline, clear the line:
      if (inChar == '\n') {
        currentLine = "";
      } 
      // if the current line ends with <text>, it will
      // be followed by the tweet:
      if ( currentLine.endsWith("<text>")) {
        // tweet is beginning. Clear the tweet string:
        readingTweet = true; 
        tweet = "";
      }
      // if you're currently reading the bytes of a tweet,
      // add them to the tweet String:
      if (readingTweet) {
        if (inChar != '<') {
          tweet += inChar;
        } 
        else {
          // if you got a "<" character,
          // you've reached the end of the tweet:
          readingTweet = false;
          Serial.println(tweet);   
          // close the connection to the server:
          client.stop(); 
        }
      }
    }   
  }
  else if (millis() - lastAttemptTime > requestInterval) {
    // if you're not connected, and two minutes have passed since
    // your last connection, then attempt to connect again:
    connectToServer();
  }
}

void connectToServer() {
  // attempt to connect, and wait a millisecond:
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
    Serial.println("making HTTP request...");
    // make HTTP GET request to twitter:
    client.println("GET /1/statuses/user_timeline.xml?screen_name=arduino&count=1 HTTP/1.1");
    client.println("HOST: api . twitter . com");
    client.println("Connection: close");
    client.println();
  }
  // note the time of this connect attempt:
  lastAttemptTime = millis();
}   
Awatar użytkownika
Janus
Majsterkowicz
Posty: 110
Rejestracja: 3 gru 2012, 07:48
Lokalizacja: Mikołów

Re: Arduino, ethernet a webclient

Post autor: Janus » 29 cze 2013, 20:13

Wystarczy zamienić 192,168,1,20 na adres routowany.
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: Arduino, ethernet a webclient

Post autor: Pseudo » 29 cze 2013, 20:37

Janus pisze:Wystarczy zamienić 192,168,1,20 na adres routowany.
wg mnie ten kod nie zadziala z ENC28J60
nie chce pobrac ip z dhcp, nie mozna nadac recznie tez

to raczej dedykowane do arduino shielda
Awatar użytkownika
Maxik
Starszy majsterkowicz
Posty: 405
Rejestracja: 6 lip 2012, 18:27
Lokalizacja: Gdańsk
Kontakt:

Re: Arduino, ethernet a webclient

Post autor: Maxik » 29 cze 2013, 22:02

Ale podajesz IP z internetu? Bo po domenie nie będzie działać - nie ma DNS.
Awatar użytkownika
Santyago
Młodszy majsterkowicz
Posty: 22
Rejestracja: 18 cze 2013, 14:07
Lokalizacja: Bytom
Kontakt:

Re: Arduino, ethernet a webclient

Post autor: Santyago » 29 cze 2013, 23:17

Musisz mieć routowalny adres IP, aby był widoczny z zewnątrz Twojej sieci.

Jeśli taki masz np. na routerze to możesz zrobić przekierowanie portu na adres lokalny w ustawieniach routera.

Jeśli takiego nie masz, możesz poprosić swojego admina sieci, aby przekierował ci jakiś port na Twój lokalny IP.

Możliwości ogólnie sporo, ale musiałbym wiedzieć jakiego typu masz IP od dostawcy :)
Awatar użytkownika
Marhef
Złota rączka
Posty: 1244
Rejestracja: 18 lis 2011, 02:18

Re: Arduino, ethernet a webclient

Post autor: Marhef » 30 cze 2013, 22:50

Santyago, już możesz linki wklejać. Podziel się z wszystkimi
Awatar użytkownika
donau
Starszy majsterkowicz
Posty: 466
Rejestracja: 4 gru 2012, 23:20

Re: Arduino, ethernet a webclient

Post autor: donau » 30 cze 2013, 23:27

Santyago pisze:Musisz mieć routowalny adres IP, aby był widoczny z zewnątrz Twojej sieci.

Jeśli taki masz np. na routerze to możesz zrobić przekierowanie portu na adres lokalny w ustawieniach routera.

Jeśli takiego nie masz, możesz poprosić swojego admina sieci, aby przekierował ci jakiś port na Twój lokalny IP.

Możliwości ogólnie sporo, ale musiałbym wiedzieć jakiego typu masz IP od dostawcy :)
http://www.noip.com/
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: Arduino, ethernet a webclient

Post autor: Pseudo » 30 cze 2013, 23:53

Maxik pisze:Ale podajesz IP z internetu? Bo po domenie nie będzie działać - nie ma DNS.
tak ip
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: Arduino, ethernet a webclient

Post autor: Pseudo » 30 cze 2013, 23:54

Santyago pisze:Musisz mieć routowalny adres IP, aby był widoczny z zewnątrz Twojej sieci.

Jeśli taki masz np. na routerze to możesz zrobić przekierowanie portu na adres lokalny w ustawieniach routera.

Jeśli takiego nie masz, możesz poprosić swojego admina sieci, aby przekierował ci jakiś port na Twój lokalny IP.

Możliwości ogólnie sporo, ale musiałbym wiedzieć jakiego typu masz IP od dostawcy :)
ok mam upc
takze jutro przekieruje port na ruterze na arduino i zrobie test jeszcze raz
Awatar użytkownika
Santyago
Młodszy majsterkowicz
Posty: 22
Rejestracja: 18 cze 2013, 14:07
Lokalizacja: Bytom
Kontakt:

Re: Arduino, ethernet a webclient

Post autor: Santyago » 1 lip 2013, 09:31

VFighter
Młodszy majsterkowicz
Posty: 1
Rejestracja: 19 gru 2015, 18:56

Re: Arduino, ethernet a webclient

Post autor: VFighter » 19 gru 2015, 18:58

Można również prosić o liba i tutki na priv'a?
cyberduck
Młodszy majsterkowicz
Posty: 3
Rejestracja: 8 kwie 2016, 00:27

Re: Arduino, ethernet a webclient

Post autor: cyberduck » 17 maja 2016, 19:05

Witam.
Nie będę już otwierać kolejnego tematu na temat połączenia i karty sieciowej.
W swoim projekcie, który już skończyłem i działa zastosowałem bibliotekę z bloga dotyczącą
lampki i zapalania jej poprzez sieć lan.
Wszystko działa pięknie do momentu kiedy zacznę stronę wywoływać z pod linuxa.
Po długich godzinach testowania doszedłem właśnie do takiego wniosku, że kiedy pojawia się
wywołanie serwera Arduino z pod przegladarki odpalonej pod Linux połączenie zawisa.
Póki robię to z telefonu lub windowsa wszystko działa poprawnie.

Znacie powód lub może spotkaliście się z takim problemem ?

Teraz troszkę o projekcie :

bluelan.eu/1/Message_1463417340571.jpg

Jest nim restarter zamieszczony na zdjeciu do sieci lan.
Mozna zdalnie odpowiednimi komendami umieszczanymi w linku do urzadzenia :
1. wylaczyc na okreslony czas dowolne lub grupe urzadzen od 1 do 4
2. mozna nastawic czas wylaczenia od 1 do 120 sekund
3. mozna zmienic adres Ip urzadzenia
4. mozna zmienic haslo dostepowe
5. mozna odczytac temperature jaka panuje w otoczeniu lub tam gdzie zostanie umieszczony czujnik
6. mozna odczytac napiecie panujace na akumulatorach zasilacza buforowego zasilajacego calosc w razie zaniku napiecia zewnetrznego
7. przywrocic ustawienia "fabryczne" Podczas wlaczania nalezy zewrzec odpowiedni styk do masy. Wtedy zostana wpisane do pamieci eeprom : adres Ip, czasy restartu urzadzen, i inne ...

Jak widac na plytce sa umieszczone kolejne bloki :
1. Karta sieciowa
2. arduino nano klon
3. przekazniki
4. gniazda RJ45
5. uklad uln2803 jako wzmacniacz pradowy dla przekaznikow
6. max6301 w wersji mikro. TO jest watchdog poniewaz mialem z wewnetrznym problem , a MAX w wersji mikro jest
najtanszy i kosztuje jedyni 3 zl. Juz w wersji smd kosztuje 23 zl ...
No i pare innych elementow takie jak diody smd, zwykle, rezystory. Czesc jest ukryta pod Arduno ...
cyberduck
Młodszy majsterkowicz
Posty: 3
Rejestracja: 8 kwie 2016, 00:27

Re: Arduino, ethernet a webclient

Post autor: cyberduck » 18 maja 2016, 16:51

Juz znam powod.
Powodem bylo to ze pomiar temperatury powinien znalezc sie poza petla odwolania sie do
serwera www arduino. Sam pomiar zawieszal polaczenie programu z karta sieciowa.
ODPOWIEDZ

Strony partnerskie: