viernes, 11 de noviembre de 2016

(IOT) Arduino/Thingspeak/1sheeld/Matlab(en construcción)




Objetivo general:

  • Desarrollar un prototipo de control, para controlar a distancia un invernadero en el desierto de Atacama.


Objetivos específicos:

  • Subir datos de temperatura y humedad a la nube de thingspeak.
  • Encender relevadores para activar electrovalvulas u otro con una solicitud HTTP.
  • Subir una foto al correo electronico.
  • Analizar los datos.

desarrollo:
El desarrollo de este prototipo tiene como fin implementarlo en un invernadero real, que a futuro se espera construirlo en el desierto de Atacama.

1) Creación de tres canales en Thingspeak: Temperatura, humedad y ON/OFF

2) Apertura de canales y creación de campos:



3) Capturamos las API's keys, de lectura y escritura.

4) El montaje electrónico comprende un sensor DHT22, la placa arduino, la placa 1sheeld y un smartphone, se utilizo este método pues en el lugar de instalación no existe red Wifi por lo cual se usa la red movil 3G local.



5) Básicamente el código de programación subirá los datos de temperatura y humedad a la plataforma de Thingspeak y realizará una solicitud de lectura del campo N°3 para que la placa determine si enciende el led o no.

code:
       
#define CUSTOM_SETTINGS
#define INCLUDE_INTERNET_SHIELD
#define INCLUDE_TERMINAL_SHIELD

#include <OneSheeld.h>
#include "DHT.h"
#define DHTPIN 2 
#define DHTTYPE DHT22  

DHT dht(DHTPIN, DHTTYPE);

char temperatura[10];
char humedad[10];
HttpRequest request("https://api.thingspeak.com/update");
HttpRequest solicitud("https://api.thingspeak.com/channels/aqui_va_el_canal/feeds.json?&results=1"); // put where 9 your channel number


int led = 10;
void setup()
{
  Serial.begin(9600);
 OneSheeld.begin();

 
  pinMode(led, OUTPUT); 
 request.addParameter("key","Xxxxxxxxxxxxxxxxxxxxxxxxxxxx"); //  key de escritura

   solicitud.setOnSuccess(&onSuccess);
  /* Subscribe to json value replies. */
  solicitud.getResponse().setOnJsonResponse(&onJsonReply);
  /* Subscribe to response errors. */
  solicitud.getResponse().setOnError(&onResponseError);
  /* Subscribe to Internet errors. */
  Internet.setOnError(&onInternetError);
  /* LED pin modes OUTPUT.*/
}

void loop()
{
  float h = dht.readHumidity(); 
  float t = dht.readTemperature();
  dtostrf(t, 3, 2, temperatura);            // convert from int to char array
  dtostrf(h, 3, 2, humedad);
  // add the value of the temperature as the other parameter for the URL
  request.addParameter("field1",temperatura);
  request.addParameter("field2",humedad);
  
  Internet.performGet(request);                // Perform get to the request
                      
//Serial.println(temperatura);
//Serial.println(humedad);
 solicitud.addParameter("key","4xxxxxxxxxxxxxxxxxxxxxxx");//key de lectura
 Internet.performGet(solicitud);
  OneSheeld.delay(10000);  
   
}

void onSuccess(HttpResponse & response)
{

  response["feeds"][0]["field3"].query(); 
  
  
  
  
}

void onJsonReply(JsonKeyChain & hell,char * output)
{
  /* 1Sheeld responds using text-to-speech shield. */
 // TextToSpeech.say(output);
  /* Check if the LED must turn ON. */
  //if (!strcmp("1",output)) //werkt bij 1 tm 4;
  if (!strcmp("1",output))
    blueRGB();
  
     /* Check if the LED must be OFF. */
  else if (!strcmp("0",output))
    off();
}


/* Set the pins of the blue LED to ON. */
void blueRGB()
{
  digitalWrite(led, HIGH);
  Terminal.println("on");
}

/* Set the pins of the blue LED to OFF. */

void off()
{
  digitalWrite(led, LOW);
  Terminal.println("off");

}

void onResponseError(int errorNumber)
{
  /* Print out error Number.*/
  Terminal.print("Response error:");
  switch(errorNumber)
  {
    case INDEX_OUT_OF_BOUNDS: Terminal.println("INDEX_OUT_OF_BOUNDS");break;
    case RESPONSE_CAN_NOT_BE_FOUND: Terminal.println("RESPONSE_CAN_NOT_BE_FOUND");break;
    case HEADER_CAN_NOT_BE_FOUND: Terminal.println("HEADER_CAN_NOT_BE_FOUND");break;
    case NO_ENOUGH_BYTES: Terminal.println("NO_ENOUGH_BYTES");break;
    case REQUEST_HAS_NO_RESPONSE: Terminal.println("REQUEST_HAS_NO_RESPONSE");break;
    case SIZE_OF_REQUEST_CAN_NOT_BE_ZERO: Terminal.println("SIZE_OF_REQUEST_CAN_NOT_BE_ZERO");break;
    case UNSUPPORTED_HTTP_ENTITY: Terminal.println("UNSUPPORTED_HTTP_ENTITY");break;
    case JSON_KEYCHAIN_IS_WRONG: Terminal.println("JSON_KEYCHAIN_IS_WRONG");break;
  }
}

void onInternetError(int requestId, int errorNumber)
{
  /* Print out error Number.*/
  Terminal.print("Request id:");
  Terminal.println(requestId);
  Terminal.print("Internet error:");
  switch(errorNumber)
  {
    case REQUEST_CAN_NOT_BE_FOUND: Terminal.println("REQUEST_CAN_NOT_BE_FOUND");break;
    case NOT_CONNECTED_TO_NETWORK: Terminal.println("NOT_CONNECTED_TO_NETWORK");break;
    case URL_IS_NOT_FOUND: Terminal.println("URL_IS_NOT_FOUND");break;
    case ALREADY_EXECUTING_REQUEST: Terminal.println("ALREADY_EXECUTING_REQUEST");break;
    case URL_IS_WRONG: Terminal.println("URL_IS_WRONG");break;
  }
}
 

6) datos en Thingspeak:


7) Para activar el led se introduce el siguiente link, variando el 0 o 1 para apagarlo o encenderlo respectivamente. Esta entrada analógica remota podría ser util para activar la cámara y obtener una imagen o para cortar el suministro eléctrico o resetear alguna placa. 

https://api.thingspeak.com/update?api_key=key_de_escritura&field3=1 

8) Desarrollo del análisis de los datos con MatLab:
En una primera instancia se recogen los datos para estudiarlos y establecer relaciones entre la diferentes variables que permitan optimizar el crecimiento de los cultivos en la zona desértica, muy en especial la Quinoa. Si se llegase a encontrar relaciones entre variables que logren este objetivo debería ser implementado en el algoritmo de MatLab, por lo tanto el programa automáticamente debería ejecutar acciones para esto MatLab debería tener la capacidad de escribir entradas digitales en thingspeak para que la placa arduino lea, interprete y ejecute las acciones.

desarrollo:

miércoles, 2 de noviembre de 2016

Catastro de la infraestructura con Fusion table/Google drive/AppInventor (en construcción)





Este proyecto es parte del concepto SMAC (social, mobile, analytics and cloud) y busca usar herramientas digitales para facilitar la recolección de datos en terreno.

Resumen:
Se crea una aplicación android con AppInventor que posea todos los parámetros a medir en el catastro. Al finalizar un catastro con un botón se guarda la información, y la aplicación automáticamente sube la información del catastro a los servidores de Google. En tiempo real la Fusion Table de Google interpreta estos datos para mostrar esta información mediante tablas, gráficos y mapas para que otro usuario pueda analizar o hacer controles de forma remota.


Desarrollo del proyecto:
1) Crear un proyecto en Fusion Table

2) Preparar la tabla con la información a medir:

3) Obtener la ID de la tabla creada: File/About this table:
4) Compartir el proyecto con permisos a usuarios que posean el link. Share/change
5) Obtener la URL de la tabla: Tools/Publish

6) Creación de usuario: crear proyecto en https://console.developers.google.com, habilitar las APIS, agregar la API de fusion tables, y crear credenciales.


7) Creación de la aplicación android con AppInventor

miércoles, 12 de octubre de 2016

Proyecto "Atacama domes"


Atacama domes

Objetivo
El proyecto tiene como fin proporcionar un espacio controlado para la agricultura en el desierto más árido del mundo.

Como pretende lograr su objetivo?
Se construirán domos en base a madera  con dimensiones entre 2.5[m] a 5[m] de diámetro cubiertos laminas de plástico PET, el mobiliario interno utilizará de madera reciclada e incluirá un sistema de tuberías para el riego por goteo controlado por software y hardware libres.

Problemas:

  • El clima desértico de la zona norte hace que el crecimiento de frutas y verduras tengo un alto riesgo de perdidas producto de las heladas.
  • Cambiar la arquitectura tradicional en la ciudad de Calama.

Oportunidades detectadas:
  • Tendencias hacia el autocultivo de alimentos, específicamente huertos urbanos.
  • Optimizar el recurso del agua en la zona.
  • Ley que promueve el reciclaje para la elaboración del mobiliario.
  • Aprovechar la geometría  para evitar conexiones metálicas.
  • Construcción prefabricada de rápido montaje
  • Proceso constructivo repetitivo, lo cual puede ser optimizado.
  • Aprovechar plataformas de programación abierta para automatizar procesos.
  • Aprovechar la energía solar de la zona para suplir gastos fijos de electricidad y fotosíntesis de las plantas.
Servicios a la comunidad
  • Proporcionar un servicio de riego tecnificado.
  • Prevenir robos de cultivos.
  • Servicios de diseños personalizados de construcción geodésica.
  • Trabajos en otras estructuras en base a maderas, como plataformas para estanques de agua, etc.
  • Mobiliario en base a materiales reciclados.
  • Venta del domo como bodega
  • Venta del domo para la crianzas de animales o para mascotas.
  • A futuro se espera vender domos para vivienda
Potencial de innovación?
  • Sistema de recirculación del agua.
  • Ahorrar costos en programadores de riego utilizando software y hardware abierto.
  •  Lineas de producción mas eficientes, por ejemplo incorporando sensores para contar elementos o incorporar energía solar en la fabricación de los domos.
  • Se aspira a integrar un sistema acuapónico al invernadero.

Digitalización de frecuencia, transporte urbano en Antofagasta



Problema???
Tiempo invertido en digitalizar la frecuencia del transporte urbano en la ciudad de Antofagasta.

Solución??
Crear aplicación en la se ingrese la patente y guarde esta información junto con la hora del registro todo de forma automática. Para ello se incorporó un botón que especifica el recorrido a frecuenciar y otro botón si es llegada o salida (SUR-NORTE/NORTE-SUR). Al final del trabajo con un botón se exporta los datos registrados a un archivo .CSV en casa solo se ordenan los datos.


En un día se registraron alrededor de 170 patentes lo que si se hubiera hecho con lápiz y papel hubieran sido 170x3=510 datos entre patentes y horas de llegadas y salidas que se digitalizarían del papel al computador. 

Code:
1) declaración de variables:

2) llenado de columnas

lunes, 3 de octubre de 2016

Catastro de infraestructura urbana.


cual es el problema????
En mi practica profesional hay que georeferenciar las observaciones vistas en la infraestructura urbana en la ciudad de Antofagasta, por lo que hay que estar constantemente anotando la ubicación, hora y código de la observación, luego llegar a casa y digitalizar todos estos datos.

solución????
Automatizar el procedimiento anterior mediante una aplicación android realizada en APPINVENTOR. La aplicación con un botón registra automáticamente la longitud, latitud, hora, código de la observación y la calle con su respectiva numeración. Luego después de haber tomado todas las muestras durante el día aprieto un botón que esta en la misma aplicación y genera automáticamente un archivo Excel, listo para ser exportado a Google Earth.

 Aplicación y algoritmo:




martes, 20 de septiembre de 2016

Security with GSM, gmail and photo.(IOT)/ con un llamado telefónico recibo un mail con foto.



The proyect consists in activate camera with a phone call or PIR sensor and the photo will be send to my gmail account.

Materials:


  • 1Sheeld
  • Arduino Mega 
  • Two smartphone:
  • PIR sensor
Video:




code:
       
#include <OneSheeld.h>

#define CUSTOM_SETTINGS
#define INCLUDE_PHONE_SHIELD
#define INCLUDE_CAMERA_SHIELD
#define INCLUDE_EMAIL_SHIELD

void setup()
{
  OneSheeld.begin();
}
void loop()
{  
Phone.setOnCallStatusChange(&myFunction);
OneSheeld.delay(1000);
}
void myFunction(bool isPhoneRinging ,String phoneNumber)
{
      String number1 = "+569XXXXXX44";
      String number2 = "+56XXXXXXX03";
      
     
      if(phoneNumber == number1 || phoneNumber == number2)
       {
    OneSheeld.delay(15000);
    Camera.setFlash(ON);
    Camera.rearCapture();
    OneSheeld.delay(15000);
    
String email = "rodrigo.abel212@gmail.com";
String subject = "segu";
String body = "pruebas";
Email.attachLastPicture(email ,subject ,body , 0 );
       }
}
 

Proyecto para "Programa de Innovación Social Antofagasta"

                   

SOLAR BOTTLE / BOTELLA SOLAR
(Escritura, renders y prototipos realizados por Rodrigo Lobera)

¿cuales son los problemas y la solución que propone??????

Problemas detectados:

  • Contaminación producida por las botellas de plástico y de vidrio.
  • Emisiones de dióxido de carbono.
  • Basureros clandestinos en el desierto de Atacama

Solución:

  • Aprovechar los 4000 años que tarda la naturaleza en degradar la botella de vidrio para hacer capsulas en las que puedan ser incorporadas celdas solares fotovoltaicas.
¿en que consiste la solución ??????
Actualmente el panel solar esta compuesto de la celda solar, Etil-Vinilo-Acetato (EVA), una capa de TEDLAR, cristal y un marco de aluminio (figura 1).
.
Figura 1. Materiales en los paneles solares.

El proyecto propone encapsular la celda solar mediante dos capas de EVA e incorporarlas en botellas de vidrio recicladas. Un soporte circular que en este caso fue de MDF es necesario para que la celda solar tenga estabilidad dentro de la botella, este fue recubierto con plástico PET en su exterior para protegerlo de los agentes climáticos, figura 2 y 3.

Figura 2. Prototipo de idea, Botella solar.


Figura 3. Prototipo realizado de "Botella solar".

El prototipo realizado tiene como costos los materiales de EVA, celda solar y el aglomerado MDF, los otros materiales de momento son gratis, como el PET y la botella de vidrio, de esta manera se intenta reducir los costos del panel solar evitando el TEDLAR, marco de aluminio, y policarbonato transparente o lamina de cristal superior.

¿cuales son las dificultades técnicas de la botella solar??????
Las dificultades son:
  • .       El volumen que ocupa la geometría cilíndrica de las botellas, por lo que se debe desarrollar estructuras verticales en las cuales puedan aprovechar de mejor manera la superficie irradiada.
  • El corte realizado a la botella.
  • El encapsulamiento al vacío de la celda.
  • El tiempo empleado en los cortes del aglomerado MDF.
  • Requiere control en sus procesos.
¿como pretende implementar la solución en terreno ??????
Uno de los problemas es el espacio que ocupan estas botellas, por lo que las soluciones que se proponen son:

  •  Establecer estructuras verticales piramidales.

Figura 4. Render de estructura piramidal.


  • Cierres perimetrales.

Figura 5. Render de cierre perimetral.


  • Estructuras curvas 

  • Figura 5. Estructura curva.

  • Arboles solares
    • Parte de proyectos de paisajismo

    • Botella LED.
    • En los bordes de caminos o senderos
    • basureros solares

    ¿el dolor de la celda solar
    En su interior la capsula de vidrio generará elevadas temperaturas, algo que es perjudicial para la generación de electricidad de la celda solar, Sin embargo este aspecto podría reducirse incorporando una red húmeda en base a tuberías de cobre. Lo anterior tendría el beneficio que se podría calentar agua y generar electricidad a la vez.



    Registro de temperatura y humedad al interior de la botella por la parte trasera de la celda.(en base a las mediciones del sensor DHT22, arduino, 1sheeld y smatphone samsung)



    Incorporación de tuberías de cobre al interior de las botellas:




    ¿cuales son los beneficios ??????
    El proyecto busca reducir el costo de la energía fotovoltaica, intentando usar parcialmente los materiales tradicionales en un panel solar.
    Las externalidades positivas serían disminuir la contaminación generada por envases de vidrio y plástico, reducir el número de basureros clandestinos en los alrededores de Calama, reutilizar de manera eficiente los residuos y visibilizar la importancia del reciclaje con un producto concreto.

    ¿como la comunidad forma parte del proyecto????
    Este proyecto es de carácter circular, es decir los deshechos generados por la comunidad son parte de los insumos de la solución propuesta. Debido a lo anterior, la comunidad ve reducido el numero de basureros clandestinos en la zona, ademas satisface su demanda energética y fomenta el reciclaje.

    miércoles, 10 de agosto de 2016