Ethernet модуль на ENC28J60, сетевой модуль для ARDUINO NANO
Ethernet Shield для Arduino NANO - позволит создать TCP/UDP сервер или клиент на базе Araduino Nano и управлять различными устройствами через уже существующую сетевую инфраструктуру.
Характеристики
- Контроллер: ENC28J60;
- Интерфейс: SPI;
- LAN-коннектор с встроенным трансформатором;
- Светодиоды состояния;
- Размеры: 68x18x25 мм (с колодкой и коннектором).
Подключение
На модуле имеются колодки в которые можно вставить Arduino NANO с припаянными пинами сверху или припаять Arduino NANO без пинов снизу.
Примеры
Arduino как TCP-сервер
После загрузки скетча соединитесь с ним через telnet: telnet 198.168.1.99 1000
. Всё, что вы введёте с клавиатуры будет отправлено в UART Arduino, а в ваш терминал будет выведено "iArduino.ru"
#include <UIPEthernet.h> EthernetServer server = EthernetServer(1000); void setup() { Serial.begin(9600); // MAC адрес, должен быть уникальным в сети uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05}; // IP адрес сервера, измените на адрес в своей подсети IPAddress myIP(198,168,1,99); Ethernet.begin(mac,myIP); server.begin(); } void loop() { size_t size; if (EthernetClient client = server.available()) { while((size = client.available()) > 0) { uint8_t* msg = (uint8_t*)malloc(size); size = client.read(msg,size); Serial.write(msg,size); free(msg); } client.println("iArduino.ru"); client.stop(); } }
Arduino как TCP-клиент
В данном примере Arduino получает IP адрес при помощи DHCP и посылает запрос каждые 5 секунд на порт 5000. В папке библиотеки находится сценарий для perl интерпретатораArduino\libraries\arduino_uip\tests\perl\tcpserver.pl
, который ждёт соединения на порту 5000. Запустив этот сценарий на ПК можно обмениваться данными с Arduino.
#include <UIPEthernet.h> EthernetClient client; signed long next; void setup() { Serial.begin(9600); // MAC адрес, должен быть уникальным в сети uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05}; Ethernet.begin(mac); Serial.print("localIP: "); Serial.println(Ethernet.localIP()); Serial.print("subnetMask: "); Serial.println(Ethernet.subnetMask()); Serial.print("gatewayIP: "); Serial.println(Ethernet.gatewayIP()); Serial.print("dnsServerIP: "); Serial.println(Ethernet.dnsServerIP()); next = 0; } void loop() { if (((signed long)(millis() - next)) > 0) { next = millis() + 5000; Serial.println("Client connect"); // замените hostname именем компьютера на котором запущен tcpserver.pl // if (client.connect("server.local",5000)) // или впишите его IP адрес ниже if (client.connect(IPAddress(192,168,1,1),5000)) { Serial.println("Client connected"); client.println("DATA from Client"); while(client.available()==0) { if (next - millis() < 0) goto close; } int size; while((size = client.available()) > 0) { uint8_t* msg = (uint8_t*)malloc(size); size = client.read(msg,size); Serial.write(msg,size); free(msg); } close: //disconnect client Serial.println("Client disconnect"); client.stop(); } else Serial.println("Client connect failed"); } }