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

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. 


Requisitos

Descargar el archivo comprimido de la librería del github:


Librería Arduino-FTP >>>.


Controlador Industrial Arduino

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 de capa de red TCP/IP al usuario, normalmente utilizando el puerto de red 20 o 21. 
Para conectarse al servidor FTP sólo tienes que establecer la dirección IP del servidor, tu usuario y tu contraseña. Opcionalmente puedes establecer el puerto TCP del servidor, pero el que viene 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 de almacenar y recuperar archivos de datos en el Directorio de ejemplos del repositorio de Github. 


Ejemplo Almacenar 

// 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 Recuperar

// 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
}

Echa un vistazo a la gama Ethernet 

Arduino Mega para soluciones industriales


Ethernet Programmable Logic Controller range


Ethernet Programmable Logic Controller range


Hay disponibles hasta 58 IOs. 

Múltiples protocolos y otras opciones a tu disposición como:
LoRa - Solución de largo alcance.
WiFi - Opción inalámbrica.
GPRS - Si no hay opción de tener 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

¿Buscas tu controlador lógico programable 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.


Comparación PLC industrial>>>

¿Quieres más información?

¡Rellena el formulario!

¡Cuéntame más!