Eğitimler
WebClientRepeating
Bu örnek, bir Ethernet kalkanı kullanarak tekrarlanan HTTP isteklerinin nasıl yapılacağını gösterir. Bu örnekte, Ethernet istemcisine bir MAC adresi, IP adresi ve DNS adresi atayarak DNS kullanılır. Http://www.arduino.cc/latest.txt dosyasına bağlanır. Sayfanın içeriği Seri Monitörde görüntülenebilir.
Gerekli Donanım
- Arduino veya Genuino Kurulu
- Arduino Ethernet Kalkanı
Devre
Ethernet kalkanı, bir WIZNet Ethernet denetleyicisini SPI veri yolu üzerinden Arduino veya Genuino kartlarına bağlamanızı sağlar. Ethernet denetleyici yongasına SPI bağlantısı için yonga seçimi olarak ICSP başlık pimlerini ve pin 10'u kullanır. Ethernet kalkanının sonraki modellerinde de bir SD Kart bulunur. Dijital pim 4, SD karttaki ikincil seçim pimini kontrol etmek için kullanılır.
Kalkan bir Ethernet kablosuyla bir ağa bağlanmalıdır. Programdaki ağ ayarlarını ağınıza uygun olacak şekilde değiştirmeniz gerekecektir.
Fritzing kullanılarak geliştirilen görüntü . Daha fazla devre örneği için Fritzing proje sayfasına bakın
Yukarıdaki görüntüde, Arduino veya Genuino kartı Ethernet kalkanının altına istiflenecektir.
Şematik
Kod
Repeating Web client
This sketch connects to a a web server and makes a request
using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or
the Adafruit Ethernet shield, either one will work, as long as it's got
a Wiznet Ethernet module on board.
This example uses DNS, by assigning the Ethernet client with a MAC address,
IP address, and DNS address.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
created 19 Apr 2012
by Tom Igoe
modified 21 Jan 2014
by Federico Vanzati
http:egitim.aspx?e=WebClientRepeating
This code is in the public domain.
*/
#include <SPI.h>
#include <Ethernet.h>
// assign a MAC address for the ethernet controller.
// fill in your address here:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192, 168, 0, 177);
IPAddress myDns(192, 168, 0, 1);
// initialize the library instance:
EthernetClient client;
char server[] = "www.arduino.cc"; // also change the Host line in httpRequest()
//IPAddress server(64,131,82,241);
unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
const unsigned long postingInterval = 10*1000; // delay between updates, in milliseconds
void setup() {
// You can use Ethernet.init(pin) to configure the CS pin
//Ethernet.init(10); // Most Arduino shields
//Ethernet.init(5); // MKR ETH shield
//Ethernet.init(0); // Teensy 2.0
//Ethernet.init(20); // Teensy++ 2.0
//Ethernet.init(15); // ESP8266 with Adafruit Featherwing Ethernet
//Ethernet.init(33); // ESP32 with Adafruit Featherwing Ethernet
// start serial port:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// start the Ethernet connection:
Serial.println("Initialize Ethernet with DHCP:");
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// Check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :(");
while (true) {
delay(1); // do nothing, no point running without Ethernet hardware
}
}
if (Ethernet.linkStatus() == LinkOFF) {
Serial.println("Ethernet cable is not connected.");
}
// try to congifure using IP address instead of DHCP:
Ethernet.begin(mac, ip, myDns);
Serial.print("My IP address: ");
Serial.println(Ethernet.localIP());
} else {
Serial.print(" DHCP assigned IP ");
Serial.println(Ethernet.localIP());
}
// give the Ethernet shield a second to initialize:
delay(1000);
}
void loop() {
// if there's incoming data from the net connection.
// send it out the serial port. This is for debugging
// purposes only:
if (client.available()) {
char c = client.read();
Serial.write(c);
}
// if ten seconds have passed since your last connection,
// then connect again and send data:
if (millis() - lastConnectionTime > postingInterval) {
httpRequest();
}
}
// this method makes a HTTP connection to the server:
void httpRequest() {
// close any connection before send a new request.
// This will free the socket on the WiFi shield
client.stop();
// if there's a successful connection:
if (client.connect(server, 80)) {
Serial.println("connecting...");
// send the HTTP GET request:
client.println("GET /latest.txt HTTP/1.1");
client.println("Host: www.arduino.cc");
client.println("User-Agent: arduino-ethernet");
client.println("Connection: close");
client.println();
// note the time that the connection was made:
lastConnectionTime = millis();
} else {
// if you couldn't make a connection:
Serial.println("connection failed");
}
}
See Also
- Arduino Ethernet Shield- Ürün Açıklaması.
- Getting started with the Ethernet Shield- Her şeyi dakikalar içinde kurun.
- Ethernet library- Ethernet Kütüphanesi için referansınız.
- ChatServer- Gelen iletileri bağlı tüm istemcilere dağıtan basit bir sunucu.
- WebClient- Web'i sorgulayın ve seri monitörden cevap alın
- WebServer- Analog girişin değerini gösteren basit bir web sunucusu.
- DhcpAddressPrinter- Bir DHCP adresi alın ve seri monitöre yazdırın.
- DhcpChatServer- Bir Telnet sunucusuna bağlanın ve alınan tüm mesajları seri monitörde yazdırın; DHCP kullanır.
- TelnetClient- Bir Telnet sunucusuna bağlanın ve alınan tüm mesajları seri monitörde yazdırın
- BarometricPressureWebServer- SPI kullanarak basınç sensöründen okunan verileri kaydedin.
- UDPSendReceiveString- UDP protokolü (Universal Datagram Packet) aracılığıyla metin dizeleri gönderip alın.
- UdpNtpClient- bir Ağ Zaman Protokolü (NTP) sunucusunu sorgulamak ve seri monitörden bilgi almak.