Llibreria de Industrial Shields para usar Arduino y FTP
Cómo enviar y recibir archivos con el controlador industrial Arduino
29 agosto, 2019 por
Llibreria de Industrial Shields para usar Arduino y FTP
Serzh Ohanyan


Industrial Shields Arduino IDE Library - FTP


Introducción

Hemos creado una librería que te permite enviar y recibir archivos des de un servidor FTP. 

Un Servidor FTP (del Inglés File Transfer Protocol) es comunmente usado para transferir archivos entre ordenadores conectados en una red. El mecanismo básico, así como el conjunto de comandos y respuestas de protocolo, se han definido en el contexto de una arquitectura simplificada. 

En este post se explica cómo esta hecha la librería arduino-FTP y su funcionamiento. 


Requerimientos

Descargar el archivo comprimido de la librería del github:Arduino-FTP Library >>.


Industrial Arduino Controller

M-Duino PLC>>


Librería Arduino FTP

Puede utilizar cualquier cliente para enviar y recibir archivos desde un servidor FTP. En primer lugar, debe incluir la biblioteca y crear un objeto FTP:


#include <FTP.h>
FTP ftp(ftpControl, ftpData);


Tanto ftpControl como ftpData son objetos Client, igual que EthernetClient o otro:


EthernetClient ftpControl;
EthernetClient ftpData;


El servicio FTP es ofrecido por la capa de aplicación del modelo TCP/IP de red al usuario, normalmente se usa el puerto 20 o el 21. Para conectar al Servidor FTP solo tienes que definir una dirección IP, un usuario (user) y una contraseña (password). Opcionalmente puedes establecer el puerto TCP, pero por defecto es el 21. 

ftp.connect(serverIP, user, password);


o en en caso de querer otro TCP port (por ejemplo el 6758):


ftp.connect(serverIP, 6758, user password);


Cuando la conexión esté lista, es posible descargar contenido de archivos del Servidor FTP:


char fileContent[512];
ftp.retrieve(fileName, fileContent, 512);


o cargar archivos al servidor FTP:


const char *fileContent = "This is the new file content";
ftp.store(fileName, fileContent, strlen(fileContent));


Puedes ver ejemplos completos de cargar (store) y descargar  You can see complete examples of store and retrieve files data in the directorio de Ejemplos del repositorio de Github. 


Ejemplo Cargar

// FTP library example
// by Industrial Shields

#include <FTP.h>

#if defined(MDUINO_PLUS)
#include <Ethernet2.h>
#else
#include <Ethernet.h>
#endif

uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10, 10, 10, 6);
IPAddress namesServer(8, 8, 8, 8);
IPAddress gateway(10, 10, 10, 1);
IPAddress netmask(255, 255, 255, 0);

IPAddress server(192, 168, 1, 220);
const char *user = "YOUR-USER";
const char *pass = "YOUR-PASSWORD";
const char *fileName = "YOUR-FILE";

EthernetClient ftpControl;
EthernetClient ftpData;

FTP ftp(ftpControl, ftpData);

////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
  Serial.begin(9600UL);

  Ethernet.begin(mac, ip, namesServer, gateway, netmask);
  Serial.print("IP address: ");
  Serial.println(Ethernet.localIP());

  if (!ftp.connect(server, user, pass)) {
    Serial.println("Error connecting to FTP server");
    while (true);
  }

  Serial.println("You have 10 seconds to write something...");
  delay(10000UL);

  // Send the written content to the FTP file
  ftp.store(fileName, Serial);

  Serial.println("The written content is sent to the FTP file");
}

////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  // Nothing to do
}


Ejemplo Descargar

// FTP library example
// by Industrial Shields

#include <FTP.h>

#if defined(MDUINO_PLUS)
#include <Ethernet2.h>
#else
#include <Ethernet.h>
#endif

uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10, 10, 10, 6);
IPAddress namesServer(8, 8, 8, 8);
IPAddress gateway(10, 10, 10, 1);
IPAddress netmask(255, 255, 255, 0);

IPAddress server(192, 168, 1, 220);
const char *user = "YOUR-USER";
const char *pass = "YOUR-PASSWORD";
const char *fileName = "YOUR-FILE";

EthernetClient ftpControl;
EthernetClient ftpData;

FTP ftp(ftpControl, ftpData);

////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
  Serial.begin(9600UL);

  Ethernet.begin(mac, ip, namesServer, gateway, netmask);
  Serial.print("IP address: ");
  Serial.println(Ethernet.localIP());

  if (!ftp.connect(server, user, pass)) {
    Serial.println("Error connecting to FTP server");
    while (true);
  }

  // Print FTP file content to Serial
  Serial.println("FTP file content: ");
  size_t len = ftp.retrieve(fileName, Serial);

  Serial.println();
  Serial.print("FTP file size: ");
  Serial.println(len);
}

////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  // Nothing to do
}

Conoce la gama Ethernet

Arduino Mega para soluciones industriales

Ethernet Programmable Logic Controller range


Ethernet Programmable Logic Controller range


Hasta 58 entradas-salidas disponibles.

Múltiples protocolos y otras opciones a tu disposición como:
LoRa - Solución de larga distancia.
WiFi - Wireless option.
GPRS - Si no hay opción de tener un soporte físico.
DALI - Protocolo de iluminación para soluciones específicas.

Gama Ethernet >>


Llibreria de Industrial Shields para usar Arduino y FTP
Serzh Ohanyan
29 agosto, 2019
Compartir
Archivar

¿En busca de tu PLC ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparativa PLCs industriales >>

¿Quieres más información?

¡Rellena el formulario!

¡Cuéntame más!