Arduino enc28j60

Sekcia určená pre Arduino nadšencov

Moderátor: Moderátori

hackerwoody
Okoloidúci
Okoloidúci
Príspevky: 41
Dátum registrácie: 21 Nov 2009, 00:00
Bydlisko: Ružomberok
Vek: 32
Kontaktovať používateľa:

Arduino enc28j60

Príspevok od používateľa hackerwoody » 12 Jún 2015, 20:04

Ahojte,

Používam arduino a modul enc28j60 konkrétne knižnicu: https://github.com/jcw/ethercard.

Snažím sa vykonať request na adresu http://www.arduino.6f.sk/pokus.php?d=4

v pokus.php sa nachadza tento kod:

Kód: Vybrať všetko

<?php
	print_r($_GET);
?>
moj arduino program:

Kód: Vybrať všetko

// Demo using DHCP and DNS to perform a web client request.
// 2011-06-08 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[700];
static uint32_t timer;

const char website[] PROGMEM = "www.arduino.6f.sk";

// called when the client request is complete
static void my_callback (byte status, word off, word len) {
  Serial.println(">>>");
  Ethernet::buffer[off+300] = 0;
  Serial.print((const char*) Ethernet::buffer + off);
  Serial.println("...");
}

void setup () {
  Serial.begin(57600);
  Serial.println(F("\n[webClient]"));

  if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) 
    Serial.println(F("Failed to access Ethernet controller"));
  if (!ether.dhcpSetup())
    Serial.println(F("DHCP failed"));

  ether.printIp("IP:  ", ether.myip);
  ether.printIp("GW:  ", ether.gwip);  
  ether.printIp("DNS: ", ether.dnsip);  

  if (!ether.dnsLookup(website))
    Serial.println("DNS failed");
    
  ether.printIp("SRV: ", ether.hisip);
}

void loop () {
  ether.packetLoop(ether.packetReceive());
  
  if (millis() > timer) {
    timer = millis() + 5000;
    Serial.println();
    Serial.print("<<< REQ ");
    ether.browseUrl(PSTR("/pokus.php"), "?d=4", website, my_callback);
  }
}
v respons ktory pozeram cez Serial Monitor mi pride:

Kód: Vybrať všetko

<<< REQ >>>
700HTTP/1.1 200 OK
Server: nginx/1.7.1
Date: Fri, 12 Jun 2015 17:32:02 GMT
Content-Type: text/html
Connection: close
X-Powered-By: PHP/5.4.37

...
Niekedy(1 z 50 krat) mi pride:

Kód: Vybrať všetko

<<< REQ >>>
700HTTP/1.1 200 OK
Server: nginx/1.7.1
Date: Fri, 12 Jun 2015 17:32:02 GMT
Content-Type: text/html
Connection: close
X-Powered-By: PHP/5.4.37
Array
(
    [d] => 4
)
...
proste potrebujem len ten php vypis bez hlaviciek popripade aj s hlavickami len aby to chodilo stale a nie raz za 50krat...
Neviete kde robim chybu? dakujem
0

Používateľov profilový obrázok
dxr
Ultimate člen
Ultimate člen
Príspevky: 3968
Dátum registrácie: 05 Aug 2013, 20:21
Bydlisko: V strede nicoho
Kontaktovať používateľa:

Re: Arduino enc28j60

Príspevok od používateľa dxr » 12 Jún 2015, 22:29

Este raz poloz otazku :)?
Asi by som sa sustredil aky request vychazda z toho enc+duina ci je spravne naformatovany a vzdy.
To spravis asi len tak ze pustis nejaky sniffer a budes pozerat.
Potom to iste skusit rucne na ten nginx (cez telnet) ci to dava vypis toho pola.
bez hlaviciek to si ako predstavujes napis si vlastny HTTPD :) je na to kniznica (napriklad)
tie hlavicky sa daju pekne ignorovat cize vypises len co je generovane ako html page.

Ale zacni tym ci tvoj request je skutocne dobry a timeouty a taketo veci...

inak spracovavat vystup z print_r() to chce vela odvahy :)
0
Mahátma Ghándí: „Nejdřív tě budou ignorovat. Pak se ti budou smát. Pak proti tobě budou bojovat. Potom zvítězíš.“
čo viac dodať som taký a možeš to skúsiť vyhrať aj tak to vzdáš.. Obrázok
Arduino is popular becouse allow complex task with minimum investment

hackerwoody
Okoloidúci
Okoloidúci
Príspevky: 41
Dátum registrácie: 21 Nov 2009, 00:00
Bydlisko: Ružomberok
Vek: 32
Kontaktovať používateľa:

Re: Arduino enc28j60

Príspevok od používateľa hackerwoody » 13 Jún 2015, 10:41

otázka je jasná :D - chcem aby to fungovalo spolahlivo... a vypis si upravim do formatu ktory budem schopny vyparsovat.
0

Používateľov profilový obrázok
dxr
Ultimate člen
Ultimate člen
Príspevky: 3968
Dátum registrácie: 05 Aug 2013, 20:21
Bydlisko: V strede nicoho
Kontaktovať používateľa:

Re: Arduino enc28j60

Príspevok od používateľa dxr » 13 Jún 2015, 10:46

Zacinam si tiez kablikovat vcera mi dosla miniENC dosticka je to take male ze ani nebude kde dat srobik :(
poobede si skusim backSoon.ino a multipaket - u teba bude asi problem s requestom mas nastrel kde to hladat :P
a stale neviem co ti tam robi ta "700" vo vypise normalna odpoved by mala vyzerat "HTTP/1.1 200 OK" bez "700"

Este ako tak som pochopil ze raz ti da vypis pola a niekedy ti neda nic - cize zacni kontrolou requestu
snifferom a rucne-telnetom... ci to nerobi paket alebo nginx/http_server
0
Mahátma Ghándí: „Nejdřív tě budou ignorovat. Pak se ti budou smát. Pak proti tobě budou bojovat. Potom zvítězíš.“
čo viac dodať som taký a možeš to skúsiť vyhrať aj tak to vzdáš.. Obrázok
Arduino is popular becouse allow complex task with minimum investment

dudoo
Pokročilý člen
Pokročilý člen
Príspevky: 522
Dátum registrácie: 31 Júl 2014, 05:27
Bydlisko: Kusok od Cahnova, Brno
Vek: 42

Re: Arduino enc28j60

Príspevok od používateľa dudoo » 13 Jún 2015, 11:04

S tým nginix-om sa prikláňam ku dxr. Verzia 1.7.1 je "mainline" verzia, takže môže sa jednať o BUG. Vývoj aplikácií by sa mal robiť na "stable" verziach inak sa zbytočne komplikuje celý vývoj.
0

hackerwoody
Okoloidúci
Okoloidúci
Príspevky: 41
Dátum registrácie: 21 Nov 2009, 00:00
Bydlisko: Ružomberok
Vek: 32
Kontaktovať používateľa:

Re: Arduino enc28j60

Príspevok od používateľa hackerwoody » 13 Jún 2015, 11:56

no idem vyskusat iny free hosting :D dam vediet

-- 13 Jún 2015, 14:16 --

inak nechápem čo robí tento kód

Kód: Vybrať všetko

Serial.println(">>>"); // vypis na serial line
  Ethernet::buffer[off+300] = 0; // preco je tu off + 300 ????????????
  Serial.print((const char*) Ethernet::buffer + off); // toto je vypis buffera
 // v ktorom je ulozena stranka ? preco je tam "+ off"
  Serial.println("...");  // vypis na serial line

vo vypise tych "700" bol .length toho buffera (v kode som mal jeden printline naviac ktory som vymazal)

-- 13 Jún 2015, 14:38 --

akurát skúšam iné stránky ako napríklad google etc... Vypisuje to pekne aj html... Chyba bude asi v tom ngnixe alebo nwm... :D
0

Používateľov profilový obrázok
Andrej152
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1022
Dátum registrácie: 29 Júl 2013, 12:49
Bydlisko: prešov
Vek: 22

Re: Arduino enc28j60

Príspevok od používateľa Andrej152 » 06 Feb 2018, 17:10

Zdravim , trosku to tu ozivim :)
riesim vazny problem .. mam arduino a enc28j60 . coskoro pride plosky spoj , jedna sa o centralu . problem je ze som musel pouzit ine piny ako su spi , ale rychlo som zistil ze v kniznici UIPEthernet sa piny nedaju zmenit .. vie mi niekto poradit ?
aktualne to mam zapojene

SI 7
SO 8
SCK 6
CS 5
skusal som v jednom subore kde su definovane piny to zmenit , nefunguje to ..
Dakujem
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Arduino enc28j60

Príspevok od používateľa peterple » 06 Feb 2018, 18:28

Bodaj by to fungovalo. SI treba pripojiť na MOSI, SO na MISO CLK na CLK a CS si môžeš dať kde chceš, ale SS asi bude najlepšie. Čo je kde na tvojom arduine si už zisti sám. SPI je v tom MCU napevno. Takže si nemôžeš voliť čo kam pripojíš.
Je tu síce možnosť naprogramovať si sw SPI ale to má tri nevýhody.
  1. bude to pomalšie
  2. pravdepodobne nebudeš schopný upraviť arduino "knižnicu" aby miesto hw SPI používala tvoju sw SPI.
  3. pri prenosoch zabiješ celý strojový čas MCU. teda okrem toho prenosu už nedokážeš nič robiť. Ďalšie zníženie výkonu MCU.
Na toto si sa mal pýtať skôr. Resp odladiť na kontaktnom poli a potom robiť dosku.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
Andrej152
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1022
Dátum registrácie: 29 Júl 2013, 12:49
Bydlisko: prešov
Vek: 22

Re: Arduino enc28j60

Príspevok od používateľa Andrej152 » 06 Feb 2018, 19:28

pomalsie - nieje to az taky problem . ide o to ze na hlavnom spi je komunikacny modul , ten ma prioritu
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Arduino enc28j60

Príspevok od používateľa peterple » 06 Feb 2018, 19:46

a prečo by si nemohol mať na jednom SPI viac zariadení? od toho je tam ten CS. Každý slave ho má a povolí sa ten s ktorým sa chceš baviť. Komunikacia (SCK, MISO, MOSI) sú stále tie isté. Ja mám na SPI tri AD prevodníky, externú FLASH, a ešte aj externú RAM. A samozrejme ISP. A beží to bez problému.
Ale ak sa nedá tak si urob vlastné sw SPI, alebo použi lepší AVR ktorý má tých SPI viacero.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok