Show Posts
|
|
Pages: [1]
|
|
2
|
International / Software / processing , via internet???
|
on: November 10, 2012, 05:35:15 am
|
|
Perdonar unas preguntas , se podria ejecutar processing para controlar una placa arduino por internet de ser asi seria mejor una wed de control con HTML o processing, en el caso de usar processing la placa actuaria como servidor o como cliente ? , gracias.-
|
|
|
|
|
3
|
International / Software / Avanzando despacio con "Ethernet Shield"
|
on: November 07, 2012, 06:18:44 am
|
Hola , como va yo estoy digamos reiniciandome en el proyecto , he intentado echar a correr antes de andar pero creo que tengo antes que adquirir mas conocimiento e ir paso a paso , estoy usando un router moden 3g de la marca Tp-Link concretamente TL-MR3020 , cargandole a la placa Arduino UNO con Ethernet Shield el codigo "WebServer" , redireccionando el puerto 80 a la IP de la placa , y conectando con otra red a traves del navegador usando la IP de la tarjeta 3g 62.83.59.156:80 por ejemplo , todo bien la pagina me muestra el estado de los pines, y noto esa satisfacción que todos conocemos  y que justifica con creces el tiempo empleado analog input 0 is 262 analog input 1 is 214 analog input 2 is 199 analog input 3 is 202 analog input 4 is 183 analog input 5 is 291 Solo que al no tener una ip fija de vez en cuando me la cambia, pero bueno eso de momento no me preocupa ya estudiaria posibles soluciones , lo que necesitaria es avanzar un poco , entiendo que con este mismo codigo como base ya que se que funciona, podria hacer que la web me diese la posibilidad de cambiar el estado de las salidas digitales (usando porgramacion HTML) , algún enlace que me sirva para continuar , intente algo con la libreria "Teleduino328" pero no me conectaba con el servidor y creo que es correr antes de andar , gracias de antemano.
|
|
|
|
|
5
|
International / Software / error "teleduino was not declared in this scope"???? (SOLUCIONADO)
|
on: November 05, 2012, 12:03:42 pm
|
|
me da este error al cargar este codigo , tiene solucion o no puedo usarlo, gracias
TeleduinoEthernetClientProxy.ino - TeleduinoEthernetClientProxy example Version 328-0.6.7 Nathan Kennedy 2012 http://www.teleduino.org
This sketch 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. */
#include <EEPROM.h> #include <Servo.h> #include <Wire.h> #include <Teleduino328.h>
#include <SPI.h> #include <Ethernet.h>
// User configurable variables byte useDhcp = true; byte useDns = true; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress deviceIp(192, 168, 1, 100); // Only if useDhcp is false IPAddress gatewayIp(192, 168, 1, 1); // Only if useDhcp is false IPAddress dnsIp(192, 168, 1, 1); // Only if useDhcp is false IPAddress subnet(255, 255, 255, 0); // Only if useDhcp is false IPAddress serverIp(173, 230, 152, 173); // Only if useDns is false char serverName[] = "us01.proxy.teleduino.org"; // Only if useDns is true unsigned int serverPort = 5353; // Can be set to either 53 or 5353 byte statusLedPin = 8;
// User configurable key, this is used to authenticate with the proxy server // This is checked against the EEPROM on boot and written if necessary // The proxy server retreives the key from the EEPROM byte key[] = { };
// Other required variables byte data[257]; byte dataLength; byte hexStage; unsigned long lastInstruction = 0; unsigned long lastRefresh = 0; byte stage = 0;
// Declare client object EthernetClient Client;
void setup() { // Load presets Teleduino.loadPresets(); // Set status LED pin Teleduino.setStatusLedPin(statusLedPin);
Teleduino.setStatusLed(1); // Initialisation // Check the EEPROM header and check to see if the key is correct // This is to ensure the key is not cleared from the EEPROM if(EEPROM.read(0) != '#') { EEPROM.write(0, '#'); } if(EEPROM.read(1) != 0) { EEPROM.write(1, 0); } if(EEPROM.read(2) != '#') { EEPROM.write(2, '#'); } if(EEPROM.read(160) != '#') { EEPROM.write(160, '#'); } for(byte i = 0; i < 16; i++) { if(EEPROM.read(161 + i) != key) { EEPROM.write(161 + i, key); } } if(EEPROM.read(177) != '#') { EEPROM.write(177, '#'); }
// Start network and attempt to connect to proxy server Teleduino.setStatusLed(2); // Network configuration if(useDhcp) { if(!Ethernet.begin(mac)) { Teleduino.setStatusLed(2, false, 10000); Teleduino.reset(); } } else { Ethernet.begin(mac, deviceIp, dnsIp, gatewayIp, subnet); } delay(1000);
Teleduino.setStatusLed(3); // Connect to server if((useDns && !Client.connect(serverName, serverPort)) || (!useDns && !Client.connect(serverIp, serverPort))) { Teleduino.setStatusLed(3, false, 10000); Teleduino.reset(); } lastInstruction = millis(); }
void loop() { if(Client.connected()) { // What we need to do depends on which 'stage' we are at switch(stage) { case 0: // Wait for start byte if(Client.available()) { char c = Client.read(); if(c == '?') { stage++; } } break; case 1: // Reset variables dataLength = 0; hexStage = 0; stage++; break; case 2: // Instruction byte if(Client.available()) { char c = Client.read(); if(c == '?') { stage = 1; break; } else if(c == '\r' || c == '\n' || c == '.') { stage = 0; break; } if(!hexStage) { data[0] = Teleduino.hexDecode(c) * 16; } else { data[0] += Teleduino.hexDecode(c); } hexStage = !hexStage; if(!hexStage) { stage++; } } break; case 3: // Data length byte if(Client.available()) { char c = Client.read(); if(c == '?') { stage = 1; break; } else if(c == '\r' || c == '\n' || c == '.') { stage = 0; break; } if(!hexStage) { data[1] = Teleduino.hexDecode(c) * 16; } else { data[1] += Teleduino.hexDecode(c); } hexStage = !hexStage; if(!hexStage) { stage++; } } break; case 4: // Data if(Client.available()) { char c = Client.read(); if(c == '?') { stage = 1; break; } else if(c == '\r' || c == '\n' || c == '.') { if(dataLength == data[1]) { stage++; break; } else { stage = 0; break; } } if(!hexStage) { data[2 + dataLength] = Teleduino.hexDecode(c) * 16; } else { data[2 + dataLength] += Teleduino.hexDecode(c); } hexStage = !hexStage; if(!hexStage) { dataLength++; } } break; case 5: // Execute instruction and return result Teleduino.instruction(data); Client.write('!'); for(int i = 0; i < data[1] + 2; i++) { Client.write(Teleduino.hexEncode(data / 16)); Client.write(Teleduino.hexEncode(data % 16)); } Client.write('\n'); lastInstruction = millis(); stage = 0; break; } } else { Teleduino.setStatusLed(10); Teleduino.reset(); }
// Has the instruction timeout been reached? if(millis() - lastInstruction > 30000) { Client.flush(); Client.stop(); Teleduino.setStatusLed(9); Teleduino.reset(); }
// Process refreshes every 50ms if(millis() - lastRefresh >= 50) { Teleduino.pinTimers(); Teleduino.shiftRegisterTimers(); Teleduino.shiftRegisters(); lastRefresh = millis(); }
// Check to see if reset has been requested Teleduino.checkReset(); }ar el codigo , tiene solucion? o no puedo usar este codigo
|
|
|
|
|
6
|
International / Documentación / Re: probando ethernet
|
on: November 05, 2012, 08:32:30 am
|
|
He intentado usar este código pero da muchos errores y no lo he llegado a cargar
// unicarlos.dyndns.org:88 (ip de mi router que se actualiza automaticamente // y funciona con la configuracion del router de abrir puerto e ip // y se puedan encender y apagar leds (Pines digitales del 2 al 9). // Pines 10,11,12 y 13 los usa para comunicarse con la ethernet
#include <SPI.h> #include <WString.h> #include <Ethernet.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFF, 0xEE}; // direccion MAC de tu Ethernet byte ip[] = {192, 168, 10, 15}; // ip que le pones dentro de tu red como fija y configurada en tu router Server server(88); // 88 puerto por el accedemos al servidor. Normalmente seria la 80
int dig[] = {2,3,4,5,6,7,8,9}; // pines digitales a usar. No uso 0 y 1 que son de transmisin serie // Tampoco uso el 10,11,12 y 13 ya que los uso para la ethernet int digTotal = 8; // Numero de pines a usar int vdig[] = {0,0,0,0,0,0,0,0}; // valores iniciales (Tantos como pines usemos) int pin; int nivel; String cad = String(100);
void setup() { Ethernet.begin(mac, ip); // inicio la Ethernet server.begin(); // inicio el servidor Serial.begin(9600); // inicio el serial monitor for (int i=0; i < digTotal; i++) { pinMode(dig, OUTPUT); // inicializo los pines digitales como salida digitalWrite(dig,vdig); // los pongo a nivel bajo LOW=0 } }
void loop() { cad = ""; // inicializo la cad donde almaceno los datos recibidos Client cliente = server.available(); if (cliente) { while(cliente.connected()) { if(cliente.available()) { char c = cliente.read(); cad = cad + c; Serial.print(c);
if(c == '\n') { if (cad.lastIndexOf("dig") > -1) // si la variable cad contiene 'dig' hacer ... { pin = pinElegido(cad); int posicionPin; for (int i=0; i <digTotal; i++) { if (dig == pin) { posicionPin = i; break; } } nivel = nivelElegido(cad); vdig[posicionPin] = nivel; Serial.print(pin); // comprobamos que el pin elegido es el correcto Serial.println(" pin. -- "); Serial.print(nivel); // comprobamos su nivel 0=LOW y 1=HIGH Serial.println(" nivel "); digitalWrite(pin, nivel); // activamos o desactivamos el pin elegido } // ... hasta aqui 'dig' if (cad.lastIndexOf("apaga") > -1) // si la variable cad contiene 'apaga' ejecuta { // la funcion apagaTodos() apagaTodos(); } if (cad.lastIndexOf("encender") > -1) // si cad contiene 'encender' ejecuta { // la funcion enciendeTodos() enciendeTodos(); } // Comienza la transmision de datos desde el servidor al cliente cliente.println("HTTP/1.1 200 OK"); cliente.println("Content-Type: text/html"); cliente.println();
for (int i=0; i < digTotal; i++) { cliente.print("Digital "); cliente.print(dig); cliente.print(" "); if (vdig==1) { cliente.println("<font color='green'>ON</font>"); cliente.print("<form method=get><input type=hidden name=dig"); cliente.print(dig); cliente.print(" value=0><input type=submit value=OFF></form>"); } if (vdig==0) { cliente.println("<font color='grey'>OFF</font>"); // cliente.println("<td>"); cliente.print("<form method=get>"); cliente.print("<input type=hidden name=dig"); cliente.print(dig); cliente.print(" value=1>"); cliente.print("<input type=submit value=ON>"); cliente.print("</form>"); } } cliente.print("<form method=get><input type=hidden name=apaga"); cliente.println(" value=1><input type=submit value=APAGA_TODOS></form>"); cliente.println("<form method=get><input type=hidden name=encender"); cliente.println(" value=1><input type=submit value=ENCENDER_TODOS></form>"); cliente.stop(); } } } } }
////////////// FUNCIONES /////////////////7 // Funcion: Extrae el pin del array cad (contiene la lectura de lo que el cliente devuelve) int pinElegido(String cad) {
int pos_dig = cad.lastIndexOf("dig"); int pos_igual = cad.lastIndexOf("="); String vpin1 = cad.charAt(pos_dig+3); String vpin2 = cad.charAt(pos_dig+4); if (vpin2 != '=') { vpin1 += vpin2; } int pinElegido = vpin1.toInt(); return pinElegido; } // Funcion: Extrae en nivel de la cadena cad int nivelElegido(String cad) { int pos_igual = cad.lastIndexOf("="); String v = cad.charAt(pos_igual+1); if (v == 0) return 0; if (v == 1) return 1; } // Funcion para apagar todos los leds al tiempo void apagaTodos() { for (int i=0; i < digTotal; i ++) { vdig = 0; digitalWrite(dig, vdig); } } // Funcion para encender todos los leds al tiempo void enciendeTodos() { for (int i=0; i < digTotal; i ++) { vdig = 1; digitalWrite(dig, vdig); } }
|
|
|
|
|
7
|
International / Documentación / Re: probando ethernet
|
on: November 05, 2012, 07:51:30 am
|
|
Bueno lo de android , ya sabes esta en el AppStore de Google y luego te mandan el código por correo , pero no necesito que sea de android me serviría controlar los led desde una web con HTML , pero estoy atascado , le cargo el código de webserver y me muestra el estado de los pines , todo Okl , pero como sería el código si quisiese encender un led gracias y perdona mi ignorancia
|
|
|
|
|
8
|
International / Documentación / Re: probando ethernet
|
on: November 04, 2012, 04:51:39 pm
|
|
Si redirecciono al puerto 80 la ip de aurdino 192.168.0.110 y luego entro desde el navegador en la que le asigna internet al router 14.34.56.158 :80 por ejemplo desde otra red, y con el código webserver cargado va bien indicándome en la página web los valores de los pines , el problema es cuando quiero hacerlo con el código de la aplicación domomaster de android , el caso es que sí lo hago en red local poniendo la ip local funciona bien. Por eso me gustaría un código similar para encender aunque sólo sea un led y luego ir ampliandolo con más funciones, gracias
|
|
|
|
|
9
|
International / Software / Re: Arduino Ethernet Shield ?
|
on: November 04, 2012, 03:20:47 pm
|
|
todo muy bien ya estoy haciendo algunos avances , pero aun me queda mucho me he descargado una aplicacion en android "DomoMaster" con un codigo que va muy bien en red local , pero falla en internet , por eso estoy buscando algun codigo para encender y apagar un led por web , gracias
|
|
|
|
|
10
|
International / Documentación / probando ethernet
|
on: November 04, 2012, 02:36:47 pm
|
|
perdonar algun codigo para encender y apagar un LED a traves de internet , en red local me funciona bien uno que te envian al instalar en android una aplicacion que se llama "DomoMaster" pero cuando lo quiero ejecutar en internet no pita , quiza no le doy tiempo al navegador , pero con el mismo sistema y la libreria "webServer" va como un tiro , gracias.-
|
|
|
|
|
13
|
International / Hardware / UNO r3 se calienta cuando tiene acoplada la Eternet shield ????? SOLUCIONADO
|
on: October 27, 2012, 05:02:08 am
|
|
Cuando conecto la palca aurdino con un alimentador a 12 v. 1200 mA sin la placa Eternet Shield insertada , no se calienta , cuando lo hago a traves del puerto USB y la placa Eternet Shield colocada en su sito, tampoco se calienta , el problema es cuando conecto el alimentador a la placa con el modulo Eternet Shiel colocado , se calienta mucho , que hago mal es que tendria que tener el cable de red conectado? , algun puente para indicarle que voy a usar la entrada de alimentacion y no el USB , muchas gracias y un saludo.-
|
|
|
|
|