EA3HMJ Blog

Proyectos, ideas, trabajos & demás cosas

Control remoto con Arduino y conversor serie-Ethernet

with one comment

He adquirido en ebay este pequeño artefacto

usr-tcp-t-500x500

Lo podéis encontrar también aquí.

Y toda la información y aplicaciones aquí.

Sin entrar en grandes detalles os diré que permite configurarlo como cliente, y servidor TCP.

Para mi utilidad lo he configurado como servidor con la idea que sea el que reciba las peticiones vía ethernet de un programa y realice lo encomendado.

La comunicación entre el modulo y arduino se realiza con los pins rx, tx,gnd y 5v. No os olvidéis de cruzar tx y rx.

He realizado una pequeña aplicación en arduino que permite leer por ethernet 6 entradas analógicas y leer/escribir 5 digitales,muy fácilmente configurable.


/**************************************************************************//**
* Arduino remote control
* ver 1.0 (c) EA3HMj 2.015 ea3hmj.qlfecv.net
*
* use: USR-TCP232-T V2
* http://en.usr.cn/Ethernet-Module-T24/RS232-serial-to-ethernet-converter-tcp-ip-module
* Serial UART To Ethernet Converter,TCP/IP Module
*
* This library is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see http://www.gnu.org/licenses/
******************************************************************************/
/******************************************************************************
* Header file inclusions.
******************************************************************************/
/******************************************************************************
* Private variable declaration.
******************************************************************************/

/******************************************************************************
* Public function definitions.
******************************************************************************/
//The number of outputs going to be switched.
int outputQuantity = 5;
//Invert the output
boolean outputInverted = false; //true or false
// Select the pinout address
int outputAddress[5] = { 9,10,11,12,13};
/**************************************************************************//**
* void setup()
******************************************************************************/
void setup()
{
// speed module
Serial.begin(115200);
delay(1000);
// Define pin how out
for (int var = 0; var < outputQuantity; var++){
pinMode(outputAddress[var], OUTPUT);
}
}
/**************************************************************************//**
* void loop()
******************************************************************************/
void loop()
{
char incomingByte,pt,c;
int outp ;
// read analogic data
int RA0 = ReadSamples(A0,float)(500.0/1023.0);
int RA1 = ReadSamples(A1,(float)(500.0/1023.0));
int RA2 = ReadSamples(A2,(float)(500.0/1023.0));
int RA3 = ReadSamples(A3,(float)(500.0/1023.0));
int RA4 = ReadSamples(A4,(float)(500.0/1023.0));
int RA5 = ReadSamples(A5,(float)(500.0/1023.0));

if (Serial.available()>0){
incomingByte = Serial.read();
// Dump datas
if (incomingByte=='*'){
// Send analogic inputs
Serial.print(RA0);
Serial.print("*");
Serial.print(RA1);
Serial.print("*");
Serial.print("2");
Serial.print(RA2);
Serial.print("*");
Serial.print("3");
Serial.print(RA3);
Serial.print("*");
Serial.print("4");
Serial.print(RA4);
Serial.print("*");
Serial.print("5");
Serial.print(RA5);
Serial.print("*");
// Send digital output
for (int var = 0; var < outputQuantity; var++){
Serial.print(digitalRead(outputAddress[var]),DEC);
Serial.print("*");
}
// switch digital output
}else if (incomingByte=='?'){
// read values
while (!Serial.available());
pt = Serial.read()-48;
while (!Serial.available());
c = Serial.read();
//if user input is H set output to 1
if(c == 'H') {
outp = 1;
}
//if user input is L set output to 0
if(c == 'L') {
outp = 0;
}
triggerPin(outputAddress[pt], outp);
}
}
}
////////////////////////////////////////////////////////////////////////
//triggerPin Function
////////////////////////////////////////////////////////////////////////
void triggerPin(int pin, int outp){
//Switching on or off outputs, reads the outputs and prints the buttons
if(outp == 1) {
if (outputInverted ==false){
digitalWrite(pin, HIGH);
}
else{
digitalWrite(pin, LOW);
}
}
if(outp == 0){
if (outputInverted ==false){
digitalWrite(pin, LOW);
}
else{
digitalWrite(pin, HIGH);
}
}
}
///////////////////////////////////////////////////////////////////////////
//special Functions
////////////////////////////////////////////////////////////////////////
int ReadSamples(int ana,float scale){
int i;
double s;
int sample=256;

// Sampling loop
for(i=0, s=0; i<sample; i++){
s += analogRead(ana);
}
s /= (double)sample;
s = s*scale;
i=(int)s;
return i;
}

El protocolo es muy sencillo, admite los siguientes comandos:

“*” Devuelve una cadena con el formato 1230*5*27*33*44*57*0*0*1*0*0*

Los 6 primeros valores son las entradas analogicas y los 5 siguientes las salidas digitales

“?xH/L” Para modificar la salida digital anúmero x al valor L o H , ejemplo activar la salida 3: ?3H, desactivar la 4, ?4L, los indices empiezan siempre por cero.

Para el PC uso el programa en Visual Basic

Captura de pantalla 2015-05-03 a las 19.55.17

Aquí os podéis bajar el soft

 

Anuncios

Written by qlfecv

3 de mayo de 2015 a 18:58

Publicado en Arduino, Ham radio, Proyecto

Tagged with , ,

Una respuesta

Subscribe to comments with RSS.

  1. Gracias campeón solo trabajas tu un buen aporte para la comunidad Jose Ignacio

    Me gusta

    Jose Ignacio

    4 de mayo de 2015 at 16:04


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s

A %d blogueros les gusta esto: