Официальный сайт компании Arduino по адресу arduino.cc
enc28j60 и browseUrl
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чт, 05/09/2013 - 16:32
Добрый день. Немогу отправить данные в php скрипт с помощью библиотеки EtherCard.h
Вот код
#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; //char website[] PROGMEM = "www.google.com"; char website[] PROGMEM = "192.168.1.90"; // 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(9600); Serial.println("\n[webClient]"); if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0) Serial.println( "Failed to access Ethernet controller"); if (!ether.dhcpSetup()) Serial.println("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("/arduino/logger1.php?pwd=secret"), "", website, my_callback); } }
Ардуина получает ip адрес, потом выходит сообщение "DNS failed", пингуется один раз и потом пинг пропадает.
Далее в serial монитор выводится сообщение об отправке, но функция my_callback не вызывается. Со статическим ip тоже самое. Пробовал добавлять
ether.hisip[0] = 192; ether.hisip[1] = 168; ether.hisip[2] = 1; ether.hisip[3] = 90; ether.hisport = 80;
но результата нет :(
Нужна помощь, второй день мозг закипает...
Вам нужно почитать что такое DNS. Тогда станет понятно что если вы уже знаете IP - то вам DNS совсем не нужен. Пример getStaticIP.ino из библиотеки
Попробуйте убрать из loop() все кроме
и пробуйте пинговать ее. Стабильно пинги идут?
Всё убрал. Пинг стабильный.
Сорри, не пингуется вообще
У меня были такие танцы из-за питания.
Моя ардуинка - выдавала очень слабый ток на 3.3v пин. Чуть-чего - просаживался. Собрал отдельный регулятор именно для шилда - заработало все стабильно.
Через год - опят начало глючить. Оказалось что ноут от которого все питается начал умирать и выдавать на USB пониженное напряжение. И мой регулятор - уже не мог сделать из него 3.3V. Подключил внешний блок питания - опять все заработало стабильно.
Мне кажется проблема не в питании, потому что другие примеры работают (тот же подправленный backSoon.ino для статического ip, например)
Вот так работает. Заметил одну особенность. Если ip статический то пинг порядка 20мс, если динамический то 1мс. Без delay в цикле не пингуется вообще.
Спасибо! Проблема была в питании!
Чтобы не морочиться с 3,3В можно купить Ethernet модуль с установленным регулятором напряжения, который питается от 5 В
Чтобы не морочиться с 3,3В можно купить Ethernet модуль с установленным регулятором напряжения, который питается от 5 В
А еще лучше не покупать этот модуль вообще.