Editing Sensorino
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | |||
− | |||
− | |||
− | |||
= Sensorino = | = Sensorino = | ||
− | + | ESTADO: PRIMERAS PRUEBAS | |
Miembros: [[User:Dario_Salvi]], [[User:Bozo]], [[User:Roberto Zabala]], Andrew Zaborowski | Miembros: [[User:Dario_Salvi]], [[User:Bozo]], [[User:Roberto Zabala]], Andrew Zaborowski | ||
Line 14: | Line 10: | ||
construir una red de sensores compatibles con el IDE de Arduino y que cuesten menos que 5 € con todo incluido. | construir una red de sensores compatibles con el IDE de Arduino y que cuesten menos que 5 € con todo incluido. | ||
− | == Milestone 0 == | + | == Milestone 0== |
− | Fecha: 15 Mayo | + | Fecha: 15 Mayo |
* '''HW''': | * '''HW''': | ||
Line 57: | Line 53: | ||
= Motivación = | = Motivación = | ||
− | Hay muchas aplicaciones donde lo que queremos es simplemente un medio de enviar y recibir información sencilla sin tener | + | Hay muchas aplicaciones donde lo que queremos es simplemente un medio de enviar y recibir información sencilla sin tener pero que cablear toda el entorno. Un ejemplo es la casa, por ejemplo nos interesa saber que puertas o ventanas están abiertas, queremos apagar o encender tal luz o electrodoméstico etc. |
+ | |||
= Antecedentes = | = Antecedentes = | ||
Line 74: | Line 71: | ||
* se tiene que poder alimentar con una pila de tipo botón o dos AA por un año | * se tiene que poder alimentar con una pila de tipo botón o dos AA por un año | ||
+ | Estamos buscando alternativas, abajo hay una recopilación de posibilidades. | ||
− | + | ==Low power== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | == | + | |
− | + | ||
* https://www.sparkfun.com/tutorials/309 | * https://www.sparkfun.com/tutorials/309 | ||
* http://www.gammon.com.au/forum/?id=11497 | * http://www.gammon.com.au/forum/?id=11497 | ||
Line 100: | Line 79: | ||
** http://www.kerrywong.com/2012/02/19/atmega328-fuse-bit-setting-for-3-3v-vcc/ | ** http://www.kerrywong.com/2012/02/19/atmega328-fuse-bit-setting-for-3-3v-vcc/ | ||
** http://www.engbedded.com/fusecalc | ** http://www.engbedded.com/fusecalc | ||
+ | |||
* buck-boost | * buck-boost | ||
** http://www.ti.com/product/tps63036 | ** http://www.ti.com/product/tps63036 | ||
+ | ==Ideas para el Hardware== | ||
===MCU=== | ===MCU=== | ||
Line 113: | Line 94: | ||
* el ATtiny24 o 84 aunque sus capacidades son limitadas y no hay plena compatibilidad con Arduino. El precio de un Attiny24 es de medio euro. | * el ATtiny24 o 84 aunque sus capacidades son limitadas y no hay plena compatibilidad con Arduino. El precio de un Attiny24 es de medio euro. | ||
* Hay un [http://nerdralph.blogspot.ca/2014/01/nrf24l01-control-with-3-attiny85-pins.html tipo] que ha conseguido conectar un ATTiny85 dejando tres pins libres ! Perfecto para hacer llaveros o super mini sensores. | * Hay un [http://nerdralph.blogspot.ca/2014/01/nrf24l01-control-with-3-attiny85-pins.html tipo] que ha conseguido conectar un ATTiny85 dejando tres pins libres ! Perfecto para hacer llaveros o super mini sensores. | ||
− | |||
− | |||
===Radio=== | ===Radio=== | ||
Line 188: | Line 167: | ||
A esto podemos añadir: | A esto podemos añadir: | ||
− | * [http:// | + | |
− | * [http:// | + | * enrutamiento (VER [[Apuntes sobre enrutamiento con nrf24l01]]): |
+ | ** [http://cnm.tagus.inesc-id.pt/software/simple-ant-routing-algorithm-sara SARA] | ||
+ | ** [http://maniacbug.github.io/RF24Network/index.html algoritmo hecho para nrf24 de maniacbug] con [http://maniacbug.wordpress.com/2012/03/30/rf24network/ su entrada de blog] | ||
+ | ** [http://forum.arduino.cc/index.php?topic=187692.0 este otro] que parece mas prototipal | ||
+ | ** [https://github.com/mattibal/meshnet este] que parece muy bueno! | ||
+ | ** [http://www.atmel.com/tools/LIGHTWEIGHT_MESH.aspx?tab=overview la librería de ATmel?] | ||
* algoritmo de encriptación: [http://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm TEA] o su version mas avanzada [http://en.wikipedia.org/wiki/XTEA XTEA] | * algoritmo de encriptación: [http://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm TEA] o su version mas avanzada [http://en.wikipedia.org/wiki/XTEA XTEA] | ||
* IP en Arduino con [http://playground.arduino.cc/Code/SerialIP SLIP]? | * IP en Arduino con [http://playground.arduino.cc/Code/SerialIP SLIP]? | ||
Line 203: | Line 187: | ||
* [www.souliss.ne Souliss] aunque parece suportar solo Ethernet o Wifi | * [www.souliss.ne Souliss] aunque parece suportar solo Ethernet o Wifi | ||
− | |||
− | + | '''Funcionalidades que queremos:''' | |
− | * | + | |
− | * | + | * recibe mensajes de la red de sensores a través de un nrf24 (probablemente conectado a través de un Arduino) |
− | + | * almacena historial de datos (BBDD) | |
− | * | + | * permite controlar dispositivos actuadores (encender/apagar etc...) |
− | * | + | * lanza reglas del tipo if(...) then... mejor si definidas con un lenguaje alto nivel interpretado |
− | * | + | * almacena "escenarios de uso", por ejemplo: "escenario me voy de vacaciones": todo se apaga y se activa al alarma |
+ | * que se conecte a servicios web externos tipo "enviar SMS" o "hacer un tweet" | ||
+ | * la interfaz: | ||
+ | ** mejor si web, aunque se pueden pensar alternativas (movil, PC) etc. | ||
+ | ** que permita ver el estado de los dispositivos | ||
+ | ** que tenga gráficos para ver tendencias, explorar patrones etc. | ||
+ | ** que permita "actuar los actuadores" (pulso ON y se enciend la luz) | ||
+ | ** que permita crear escenarios de uso y activarlos | ||
+ | ** que permita definir reglas | ||
=Avances= | =Avances= | ||
Line 218: | Line 209: | ||
=== HW === | === HW === | ||
− | |||
− | |||
− | |||
− | |||
* crear la versión PL (power line) | * crear la versión PL (power line) | ||
** responsables: ? | ** responsables: ? | ||
Line 239: | Line 226: | ||
* crear luz RGB | * crear luz RGB | ||
− | + | * responsables: Dario | |
** estado: una versión ya existe, falta decidir si activarla con botón | ** estado: una versión ya existe, falta decidir si activarla con botón | ||
Line 557: | Line 544: | ||
* a 9m a traves de dos paredes fallaba en promedio en el momento de haber subido 30-40% del programa, que seria despues de haber transmitido ~150-200 paquetes sin fallo, o sea que la tasa de error todavia debe ser baja (~1%). | * a 9m a traves de dos paredes fallaba en promedio en el momento de haber subido 30-40% del programa, que seria despues de haber transmitido ~150-200 paquetes sin fallo, o sea que la tasa de error todavia debe ser baja (~1%). | ||
− | ===Pruebas 13/2/2014 | + | ===Pruebas 13/2/2014=== |
Estoy intentando poner el PIC a dormir y despertarlo con el watchdog o los interrupts externos. | Estoy intentando poner el PIC a dormir y despertarlo con el watchdog o los interrupts externos. | ||
Line 566: | Line 553: | ||
En principio podríamos llegar a tener un consumo de solo [https://www.sparkfun.com/tutorials/309 1uA] ! | En principio podríamos llegar a tener un consumo de solo [https://www.sparkfun.com/tutorials/309 1uA] ! | ||
− | '''Wakeup con watchdog''': hay | + | '''Wakeup con watchdog''': hay que programar una ISR |
− | + | ISR( WDT_vect ) { | |
− | + | //codigo aquí | |
+ | } | ||
+ | y habilitar el watchdog y su interrupción y que no resetee el PIC: | ||
MCUSR &= ~(1 << WDRF); | MCUSR &= ~(1 << WDRF); | ||
WDTCSR |= (1 << WDCE) | (1 << WDE); | WDTCSR |= (1 << WDCE) | (1 << WDE); | ||
− | WDTCSR = (1<< | + | WDTCSR = (1<< WDP0) | (1 << WDP3); |
WDTCSR |= _BV(WDIE); | WDTCSR |= _BV(WDIE); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
en la ISR conviene deshabilitar el watchdog para que no toque los huevos hasta que nos durmamos otra vez | en la ISR conviene deshabilitar el watchdog para que no toque los huevos hasta que nos durmamos otra vez | ||
Line 768: | Line 734: | ||
He cogido unas 150 muestras (una por segundo): | He cogido unas 150 muestras (una por segundo): | ||
− | + | Media: 38433.62 | |
− | + | STD: 309.20 que es el 0.8% de la media | |
[[File:atmega_temp_internal.jpg|thumb|Relación temperatura interna externa]] | [[File:atmega_temp_internal.jpg|thumb|Relación temperatura interna externa]] | ||
Line 793: | Line 759: | ||
Lo he conectado en configuración de divisor de tensión con un pin digital, por la resistencia de pull down he observado que cuanto mas grande la resistencia, mas sensible es la detección. Al final para mi foto transistor, y un Arduino UNO a 5V me he decantado para 560K. No se si valdría lo mismo con tensiones mas bajas. Si a alguno de vosotros se os ocurre la manera de calcularlo de hecho os doy un premio. | Lo he conectado en configuración de divisor de tensión con un pin digital, por la resistencia de pull down he observado que cuanto mas grande la resistencia, mas sensible es la detección. Al final para mi foto transistor, y un Arduino UNO a 5V me he decantado para 560K. No se si valdría lo mismo con tensiones mas bajas. Si a alguno de vosotros se os ocurre la manera de calcularlo de hecho os doy un premio. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |