Unlam GalileoGen1 Project - temperaturgivare
Documentación - Proyecto Sistemas Embebidos
Conexión a la placa mediante el kabel USB-micro USB
Primero se procedió en hacer la conexión entre la placa y equipo värd mediante el kabel USB-micro USB.
UNA vez hecho esto se ejecutó el código que företrä la solución sugerida en la misma página de Intel, provista por la Cátedra para emular una consola de Linux mediante el Arduino IDE: el fattigmans Telnet (o "Telnet del hombre pobre").
UNA vez compilado y ejecutado este código, se ansluta sig ett verktyg -> Serial Monitor.
En este monitor se pueden ejecutar kommandosoldater de Linux que nos devolverán información de la Plaça. En este caso lo usamos para chequear cual es la IP adress que le fue asignada.
Configuración del nätverksbrygga para tener internet sv la Placa
Los siguientes pasos muestran la forma en que se configuró el equipo värd, haciendo FN bron entre el Adaptador de röda Ethernet y el Wi-Fi, para que la placa Intel Galileo pueda tener acceso en Internet.
Primero se procedió en hacer la conexión entre la placa y el equipo värd mediante el kabel de röda.
UNA vez hecho esto, desde el equipo värd se ingresó en de kontroll Panel -> Visa nätverksstatus och aktiviteter -> ändra inställningar adapter.
Luego, se fortsätta en seleccionar ambos adaptadores y con botón derecho seleccionar "brygganslutningar".
Al hacer esto el sistema comienza en generar el bro, esta operación demora unos minutos.
Al finalizar el Bridge, podemos ver como se agrega un nuevo Guillaume sv nuestras conexiones.
Lo siguiente es sacar el Wi-Fi del Bridge, como se ve sv la siguiente imagen.
Pero luego de hacer esto, debemos volver en incluirlo, para esto, lo que hacemos es hacer Klicka på con el botón derecho sobre Wi-Fi e ir en las propiedades y en esta ventana, ir a la solapa "Dela" y tildar el primer kryssrutan y seleccionar la opción "Nätverksbrygga" del combo.
Al terminar este procedimiento, veremos que tanto el adaptador Ethernet y el Wi-Fi están puenteados, pero además, este últimoen también aparece compartido ("delade").
Para finalizar la configuración, podemos chequear que haya conexión entre el equipo värd y la placa de la siguiente manera:
Primero abrimos una ventana kommandot sv el equipo värd y mediante el comando "ipconfig" chequeamos la IP-adress asignada al bro creado anteriormente.
Esto puede verificarse utilizando el Poor Man's Telnet como fue explicado con anterioridad.
Por ultimo mostramos como ingresando a la placa utilizando el Putty, se verifico que haya comunicación entre la placa y el equipo värd, utilzando el comando "ping".
De esta forma nos aseguramos que la placa está accediendo en internet mediante el kabel Ethernet cuyo adaptador esta puenteado al Wi-Fi.
Código Fuente
Bibliotecas Utilizadas:
#include < Wire.h >
ESTA biblioteca le permite comunicarse con dispositivos I2C / TWI y facilitar las funciones.
ESTA librería está incluida en el IDE de Arduino que utilizamos.
#include "rgb_lcd.h"
ESTA biblioteca permite interactuar con la pantalla LCD y teclas del sköld. Se encarga de traducir los kommandosoldater en través del puerto de expansión. ESTA biblioteca no está incluida en el IDE de arduino, Fue descargada desde este (https://github.com/Seeed-Studio/Grove_LCD_RGB_Backlight)
#include < ethernet.h >
ESTA biblioteca permite que la Plaça pueda conectarse en internet. Puede servir como un servidor, aceptar conexiones entrantes o de un cliente que realiza conexiones salientes. La biblioteca es kompatibel con hasta cuatro conexiones simultáneas (entrante o saliente o una combinación). ESTA librería está incluida en el IDE de Arduino.
#include < stdlib.h >
(standard bibliotek o biblioteca estándar)
ESTA es la biblioteca estándar, permite utilizar las funciones Aritméticas, de números aleatorios y conversión de cadenas básicas que se utilizan en todo el código. ESTA biblioteca se encuentra incluida sv el IDE de Arduino pero también se puede descargar desde el siguiente länk: http://fullversion-net.eu/descargar-libreria-stdl...
Variablerna Utilizadas:
Estas variabler se utilizan para colorear las pantalla conectada al sköld, específicamente se settean los colores que mostrará la misma.
int colorR = 255;
int colorG = 255;
int colorB = 0;
Las siguiente variabler son necesarias para la toma, parseo y cálculo específico del valor proveniente del sensor de temperatura.
CONST int b = 3975;
float resistens.
float temperatur;
Por últimoen estas variabler son utilizadas para la comunicación con la página webben, lectura, y envío de datos, conexión con internet.
String tempLimit = "";
flyta tempLimitFloat = 0;
lång previousMillis = 0;
osignerade långa currentMillis = 0;
långa intervall = 5000; INTERVALO DE LECTURA CADA 30 SEGUNDOS
Strängdata;
EthernetClient klient;
EthernetClient KLIENT2;
En esta parte del código determinó en los pines 6 y 7 como salidas del skiss, la velocidad de la conexión följetong e inicializo la pantalla LCD-con los colores respectivos.
void setup()
{
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
Serial.BEGIN(115200);
tag (!. Serial) {
; vänta för seriell port att ansluta. Behövs för native USB-porten endast
}
LCD.BEGIN (16, 2);
lcd.setRGB (colorR, colorG, colorB);
Delay(2000);
data = "";
}
Parte inicial del código dentro del loop;
Inicio el sträng tempLimit, donde se guardará el valor temperatura, que fue seteado desde la página Web.
Género la conexión con la variabel KLIENT2 que es un EthernetClient, en través de la función ansluta. Los parámetros son la dirección IP de la página destino y el puerto en utilizar para la comunicación.
UNA vez hecha la conexión, se lee mediante FN få el archivo donde esta el dato que se ingresó desde la página webben, como temperatura límite para el LCD
En caso que ingen se pueda conectar con el servidor se imprimirá sv consola, "anslutningen misslyckades"
void loop()
{
tempLimit = ""; Inicio el sträng
Serial.println("Connecting...");
om (client2.connect ("soa.hol.es", 80)) {Conecto con la direcion IP de la pagina y el puerto
Serial.println("Connected");
client2.println ("GET < en href =" http://soa.hol.es/temperatura.dat"rel ="nofollow"> http://soa.hol.es/temperatura.dat < /a > HTTP/1.1"); Få del archivo en leer
client2.println ("Host: soa.hol.es");
client2.println ("anslutning: Stäng");
client2.println();
} annat {
Serial.println ("Anslutning misslyckades");
}
En esta sección se lee el archivo temperatura.dat mediante un char (c) y se desestima el header que solo tiene caracteres informativos y solo se toma el valor entre "|" que es la temperatura que se seteo desde la página Web rektor. De esta forma queda la temperatura límite concatenada en la variabel tempLimit.
Luego se convierte este sträng sv flotante, con las ultimas tres Lineasen de esta porcion de codigo.
om (client2.available()) {
char c;
medan ((c = client2.read())! = ' |');
medan ((c = client2.read())! = ' |') {
tempLimit += c;
}
Serial.Print(tempLimit);
char floatbuf [32]; gör detta minst stort nog för hela strängen
tempLimit.toCharArray (floatbuf, sizeof(floatbuf));
tempLimitFloat = atof(floatbuf);
}
Finalizando la consulta sobre la temperatura límite seteada se debe finalizar la conexión de la siguiente manera:
En caso de que la conexión ingen havet livskraftig de conectar, se desconecta definitivamente y se para la conexión establecida por KLIENT2.
Y de todas formas en caso de que vuelva en conectar tambien se para la conexión con el server.
om (! client2.connected())
{
Serial.println();
Serial.println("disconnecting.");
client2.stop();
medan (sant);
}
om (client2.connected())
{
client2.stop(); Desconexión del servidor.
}
LCD.Clear();
int val = analogRead(pinTemp);
Resistance=(float)(1023-val) * 10000/val; Cálculo intermedio para la temperatura
temperatur = 1 / (log (motstånd/10000) /b+1/298.15)-273.15; Cálculo de la temperatura
SI la temperatura es menor que el valor ingresado por la página web se colorea el LCD-sv azul y se muestra FN: s mensaje. Caso contrario el LCD-se colorea sv rojo, muestra un mensaje y comienza en titilar FN ledde.
om (temperatur < tempLimitFloat)
{
digitalWrite (6, låg).
colorR = 0;
colorG = 0;
colorB = 255;
lcd.setRGB (colorR, colorG, colorB);
LCD.Print ("hare frio:");
LCD.Print(temperature);
}
annat
{
colorR = 255;
colorG = 0;
colorB = 0;
lcd.setRGB (colorR, colorG, colorB);
LCD.Print ("hare calor:");
LCD.Print(temperature);
digitalWrite (6, hög).
Sleep(1);
digitalWrite (6, låg).
Sleep(1);
}
Conversión de la variabel temperatur flyta en sträng.
String strEntero = String((int)temperature);
String strDecimal = String((int)((temperature-(int)temperature)*100));
data = "temp1 =" + strEntero + "." + strDecimal;
currentMillis = millis(); Retorna el tiempo faktiska sv milisegundos.
Se comprueba que la diferencia havet menor en un intervalo dado. En caso de ser verdadero se conecta al servidor. Luego le vamos pasando la temperatura que va tomando el sensor.
om (currentMillis - previousMillis > intervall)
{
previousMillis = currentMillis;
om (client.connect("soa.hol.es",80))
{
client.println ("POST /add.php HTTP/1.1");
client.println ("Host: soa.hol.es"); SERVER ADRESS HÄR OCKSÅ
client.println ("Content-Type: application/x-www-formuläret-urlencoded");
client.Print ("Content-Length:");
client.println(data.length());
client.println();
client.Print(data);
}
om (client.connected())
client.stop();
}
SERVIDOR WEB
Add.php
ESTA página recibe los datos enviados por la placa via POST e inserta el valor en una base de datos mysql alojada sv FN servidor web externo.
index.php
ESTA página es la encargada de mostrar la vista al viuario con la temperatura faktiska leída desde la bas de datos utilizando para esto AJAX, logrando así realizar consultas asíncronas y actualizar la temperatura cada cierto intervalo de tiempo synd refrescar la página.
Además de incluir un formulario por donde se puede establecer una temperatura máxima y la guarda sv un archivo de texto (temperatura.dat) para que posteriormente la Plaça pueda leer este valor y trabajar con el mismo.
Hårdvara y elementos Utilizados
Kingston MicroSD de 8gb, clase 10 que la utilizaremos para almacenar el SO recomendado por la cátedra que se puede descargar desde el siguiente länk:
https://Software.Intel.com/en-us/IOT/Hardware/Gali...
Kabeln de röda, para garantizar una conexión röda por el cual se montará FN-bron, anteriormente explicado, y así tener acceso en internet desde la placa Galileo gen 1.
Kabel USB - MicroUSB, este es usado para conectar la PC remota con la placa y de esta manera sobre esta conexión, poder compilar el código desde la IDE de Arduino sv la placa mediante FN skiss que utilizaremos.
Placa Intel Galileo gen 1, el corazón de este proyecto, en través de esta placa se ejecutan el skiss infinitamente y tiene los puertos para conectar los sensores y actuadores. También se utilizo el sköld.
Sköld Arduino, este circuito Joakim la estandarización de conexiones para sensores y actuadores, en este caso utilizaremos las conexión digitales (pantalla LCD, LED) y las conexiones analógicas (sensor de temperatura)
Sensor de Temperatura, (incluyendo kabel de conexión para la sköld). Este sensor tomará la temperatura del ambiente que utilizaremos para informar en la página Web.
Actuador LED(Incluido cable de conexión para shield, y el socket led) Este ledde se encenderá cuando la temperatura supere la temperatura límite, setteada desde la página Web. El-kabel permite conectar con la interfaz de la sköld y el uttaget es el intermediario entre este kabel el ledde.
Actuador pantalla lcd (la imagen incluye el kabel para conectar con la sköld) En esta pantalla se visualizará todo el tiempo la temperatura medida por el sensor. ESTA se encontrara de färg azul mientras la temperatura faktiska ingen supere la temperatura límite, sv caso de ser superada se verá de färg Rojo.
El proyecto fue realizado en la universidad nacional de la matanza (Argentina, Buenos Aires).
La materia sv la cual realizamos este proyecto es una materia de cuarto año de ingeniería informática llamada sistemas Operativos Avanzados. Los profesores que tuvimos para este proyecto son:
Sebastian Barillaro, Mariano Volker, Waldo A. Valiente, Carnuccio Esteban Andrés.
Integrantes del proyecto: Nicolas Guerrero, Manfred Camacho, Hernan Condori, Agustin Jose Leitao Pinheiro