Go Down

Topic: Proyecto con Arduino Tesis AYUDA! (Read 5002 times) previous topic - next topic

vdalessio

Jul 12, 2012, 02:00 pm Last Edit: Jul 20, 2012, 01:41 pm by vdalessio Reason: 1
Hola

Para mi tesis necesito trabajar con arduino pero no tengo ni idea por donde empezar.
Mi idea es hacer un control remoto para equipos de un estudio de grabación. Que puedas apagar y prender todo sin necesidad de levantarte de la silla.
Pensaba hacerlo por Wifi, y hacer una aplicacion de Ipad para poder controlar todo desde ahi.

Lei sobre los modulos wifi, que me imagino que tendre que poner en cada equipo del estudio, para que la aplicacion los reconozca y reciba la señal para prenderlos o apagarlos.

A ver si alguien me puede ayudar!

Cheyenne

Hola vdalessio.
La forma de empezar es sencilla, cómprate una Arduino Uno y empieza a realizar los ejemplos del IDE y que también tienes explicados en el playground. Cuando te funcionen empieza a hacer modificaciones sobre los mismos para ir familiarizándote con la programación y saber programar las cosas que quieres que haga Arduino.
Cuando lleves mucho practicado pasa a plantearte tu proyecto. Según veo necesitarás un Arduino para controlar todos los equipos. Claro está que depende de cuántos sean y cómo se controlen necesitarás un modelo u otro de Arduino.
Para la conexión inalámbrica puedes poner un shield wifi al Arduino o puedes poner un shield ethernet que conectarás por cable al router del estudio. Y si no hay también puedes ponerlo. Hay mucha gente que prefiere la opción del router antes que la del shield wifi.
http://cuadricopterodiyarduino.blogspot.com/

Obakemono

Y como me imagino que los aparatos de estudio funcionarán conectados a tomas de corriente alterna (las de toda la vida), seguramente necesitarás relés, arduino conectado a los equipos mediante relees, y conectado con el mundo vía wifi o ethernet.

Pero como te han dicho, empieza la casa por los cimientos, y ánimo!!

vdalessio

Gracias a los dos!

por otro foro me comentaron que eligiera el Arduino Mega, pero la verdad es que deberia empezar desde cero con la programacion y luego seguir con mi idea.
La verdad es que prefiero que sea Wifi,  que no haya cables de por medio. Asi es mucho más practico a la hora de instalarlo, etc.

Gracias!!

Obakemono

En efecto debes de comenzar con la programación, pero la forma mas amena es con un arduino en la mano y probando y entendiendo los ejemplos.
Lo normal para comenzar es un UNO, pero para tu proyecto probablemente si te vaya a hacer falta un Mega (dependerá principalmente de la cantidad de aparatos a controlar) así que tampoco es descabellado aprender con Mega, solo hay que tener en cuenta que a veces cambia el uso de un pin por otro en los ejemplos, muchas veces viene indicado.

Conceptos básicos, de como funcionan los pines y de como están compuestos los programas
http://arduino.cc/es/Tutorial/Foundations

Referencia del lenguaje
http://arduino.cc/es/Reference/HomePage

vdalessio

Si pues me comprare el mega y aprendere con ese. Asi luego ya lo tengo listo y lo se manejar bien para mi proyecto.

Muchas Gracias!

obednunez

#include <EEPROM.h>
#include <SPI.h>
#include <Ethernet.h>

// ethernet configuration
byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };
IPAddress ip(192, 168, 0, 5); // P1 --> { 10, 1, 1, 5 };
byte subnet [] = { 255, 255, 255, 0 };

EthernetServer server(80);              // port 80 is default for HTTP

// initial
int PIRC1 = 3;          // led is connected to digital pin 3
int PIRSF = 2;          // PIR sensor is connected to digital pin 2
int cuarto1 = 5;
int alarma = 6;
int celular = 7;
int cuarto2 = 22;
int cuarto3 = 23;
int lamparaF = 25;
int lamparaP = 46;
int banio = 47;
int Pbanio = 48;
int sala = 49;
int comedor = 24;
int cocina = 27;
int respaldo = 26;

//Variables para la memoria eeprom
byte ee_valor1;
byte ee_valor2;

int estadodealarma = 0;
int estadodecelular = 0;
int estadodecuarto1 = 0;
int estadodecuarto2 = 0;
int estadodecuarto3 = 0;
int estadodelamparaF = 0;
int estadodelamparaP = 0;
int estadodePbanio = 0;
int estadodebanio = 0;
int estadodesala = 0;
int estadodecomedor = 0;
int estadodecocina = 0;
int PIRSFstate = 0;     // variable for PIR sensor status
int PIRC1state = 0;
int estadoderespaldo = 0;

char c = 0;           // received data
char command[2] = "\0";  // command

void setup()
{
  Serial.begin(9600);  // Inicializa el puerto serial
  Ethernet.begin(mac, ip);
  server.begin();

  ee_valor1 = EEPROM.read(1);
  ee_valor2 = EEPROM.read(2);

  pinMode(PIRC1, INPUT);
  pinMode(PIRSF, INPUT);
  pinMode(alarma, OUTPUT);
  pinMode(celular, OUTPUT);
  pinMode(cuarto1, OUTPUT);
  pinMode(cuarto2, OUTPUT);
  pinMode(cuarto3, OUTPUT);
  pinMode(lamparaF, OUTPUT);
  pinMode(lamparaP, OUTPUT);
  pinMode(banio, OUTPUT);
  pinMode(Pbanio, OUTPUT);
  pinMode(sala, OUTPUT);
  pinMode(comedor, OUTPUT);
  pinMode(cocina, OUTPUT);
  pinMode(respaldo, OUTPUT);

  if (ee_valor1 == 1) {
    digitalWrite(respaldo, HIGH);
  }
  if (ee_valor1 == 0) {
    digitalWrite(respaldo, LOW);
  }
}

void loop()
{
// habilita el funcionamiento del sensor desde APP INVENTOR... LO QUE NECESITO HACER ES QUE (if !strcmp(command,"1") ES QUE CUENDO HABILITE EL FUNCIONAMIENTO DEL SENSOR DESDE EL APP Y SI REINICIO EL ARDUINO NO PIERDA EL ESTADO, LO QUE DECESITO ES QUE LO MEMORISE, CON EL ENCENDIDO DE LAMPARAS SI LO LOGRE FUNCIONAR PERO EN EL CASO DEL SENSOR ESTOY BATALLANDO.
  if (!strcmp(command, "1")) {
    digitalWrite(respaldo, HIGH);
    EEPROM.write(1, 1);
    int value = digitalRead(PIRSF);
    if (value == HIGH)
    {
      digitalWrite(alarma, HIGH);
      digitalWrite(celular, HIGH);
      delay(1000);
      digitalWrite(celular, LOW);
      delay(1000);
    }
    int value1 = digitalRead(PIRC1);
    if (value1 == HIGH)
    {
      digitalWrite(alarma, HIGH);
      digitalWrite(celular, HIGH);
      delay(1000);
      digitalWrite(celular, LOW);
      delay(1000);
    }
  }

  else if (!strcmp(command, "2")) {
    digitalWrite(alarma, LOW);
    digitalWrite(respaldo, LOW);
    EEPROM.write(1, 0);
  }

  EthernetClient client = server.available();
  boolean current_line_is_first = true;

  if (client) {
    boolean current_line_is_blank = true;
    while (client.connected())
    {
      if (client.available()) {
        char c = client.read();

        if (c == '\n' && current_line_is_blank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();



          if (!strcmp(command, "3"))
          {
            digitalWrite(celular, HIGH);
          }
          else if (!strcmp(command, "4"))
          {
            digitalWrite(celular, LOW);
          }

          if (!strcmp(command, "5"))
          {
            digitalWrite(cuarto1, HIGH);
          }

          else if (!strcmp(command, "6"))
          {
            digitalWrite(cuarto1, LOW);
          }
          if (!strcmp(command, "7"))
          {
            digitalWrite(cuarto2, HIGH);
          }

          else if (!strcmp(command, "8"))
          {
            digitalWrite(cuarto2, LOW);
          }

          if (!strcmp(command, "9"))
          {

            digitalWrite(cuarto3, HIGH);
          }

          else if (!strcmp(command, "A"))
          {

            digitalWrite(cuarto3, LOW);
          }

          if (!strcmp(command, "B"))
          {

            digitalWrite(lamparaF, HIGH);
          }

          else if (!strcmp(command, "C"))
          {

            digitalWrite(lamparaF, LOW);
          }

          if (!strcmp(command, "D"))
          {

            digitalWrite(lamparaP, HIGH);
          }

          else if (!strcmp(command, "E"))
          {

            digitalWrite(lamparaP, LOW);
          }
          if (!strcmp(command, "F"))
          {

            digitalWrite(banio, HIGH);
          }

          else if (!strcmp(command, "G"))
          {

            digitalWrite(banio, LOW);
          }

          if (!strcmp(command, "H"))
          {

            digitalWrite(Pbanio, HIGH);
          }

          else if (!strcmp(command, "I"))
          {

            digitalWrite(Pbanio, LOW);
          }

          if (!strcmp(command, "J"))
          {

            digitalWrite(sala, HIGH);
          }

          else if (!strcmp(command, "K"))
          {

            digitalWrite(sala, LOW);
          }
          if (!strcmp(command, "L"))
          {

            digitalWrite(comedor, HIGH);
          }

          else if (!strcmp(command, "M"))
          {

            digitalWrite(comedor, LOW);
          }
          if (!strcmp(command, "N"))
          {

            digitalWrite(cocina, HIGH);
          }

          else if (!strcmp(command, "O"))
          {

            digitalWrite(cocina, LOW);
          }

          if (!strcmp(command, "P")) {
            digitalWrite(cuarto1, HIGH);
            digitalWrite(cuarto2, HIGH);
            digitalWrite(cuarto3, HIGH);
            digitalWrite(lamparaF, HIGH);
            digitalWrite(lamparaP, HIGH);
            digitalWrite(banio, HIGH);
            digitalWrite(Pbanio, HIGH);
            digitalWrite(sala, HIGH);
            digitalWrite(comedor, HIGH);
            digitalWrite(cocina, HIGH);
          }
          else if (!strcmp(command, "Q"))
          {
            digitalWrite(cuarto1, LOW);
            digitalWrite(cuarto2, LOW);
            digitalWrite(cuarto3, LOW);
            digitalWrite(lamparaF, LOW);
            digitalWrite(lamparaP, LOW);
            digitalWrite(banio, LOW);
            digitalWrite(Pbanio, LOW);
            digitalWrite(sala, LOW);
            digitalWrite(comedor, LOW);
            digitalWrite(cocina, LOW);
          }

          break;
        }
        if (c == '\n')
        {
          // we're starting a new line
          current_line_is_first = false;
          current_line_is_blank = true;
        }
        else if (c != '\r') {

          current_line_is_blank = false;
        }

        if (current_line_is_first && c == '=') {
          for (int i = 0; i < 1; i++) {
            c = client.read();
            command = c;
          }
          PIRC1state = 0;
          PIRSFstate = 0;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    client.stop();
  }
}


LES ENVIO EL APP

EL USUARIO: USER
PASSWORD: 123456

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy