Difference between revisions of "Sensorino"

From Wiki Makespace Madrid
Jump to: navigation, search
m (Ideas para el SW)
(Avances:)
Line 119: Line 119:
 
[[File:ArduinoMicroWSN prototipo1.jpg|thumb|Primer prototipo]]
 
[[File:ArduinoMicroWSN prototipo1.jpg|thumb|Primer prototipo]]
  
Para ir probando la comunicación con el [[nRF24L01]] hemos cargado un sketch para usar el chip Nordic. Es posible bajar la librería para el chip Nordic [http://airspayce.com/mikem/arduino/NRF24/index.html aquí], o parece que hay otra pagina de la misma librería [http://maniacbug.github.io/RF24/index.html aquí] y es posible descargar el codigo de github [https://github.com/maniacbug/RF24 aquí] pero comparando las fechas de los ficheros parece que el primer enlace es mas reciente.
+
Para ir probando la comunicación con el [[nRF24L01]] hemos cargado un sketch para usar el chip Nordic.
 +
Hemos utilizado la librería de maniacbug [http://maniacbug.github.io/RF24/index.html aquí] y el codigo de ejemplo GettingStarted.
  
 
Para cargar el sketch en el ATmega hemos utilizado un cable FTDI y NO HA FUNCIONADO, no sabemos porqué.
 
Para cargar el sketch en el ATmega hemos utilizado un cable FTDI y NO HA FUNCIONADO, no sabemos porqué.
Line 125: Line 126:
 
Hemos conectado el [[nRF24L01]] según [http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo este esquema], cuidado con hacer el mapeado entre los pines de Arduino y los del Atmeg328 (ver [http://wiki.attie.co.uk/w/images/9/90/Atmega168PinMap2.png aquí]!
 
Hemos conectado el [[nRF24L01]] según [http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo este esquema], cuidado con hacer el mapeado entre los pines de Arduino y los del Atmeg328 (ver [http://wiki.attie.co.uk/w/images/9/90/Atmega168PinMap2.png aquí]!
  
El Atmega ve el chip y es capaz de enviar paquetes pero no de recibirlos. No sabemos porqué pero sospechamos que es por tener el clock a 8MHz en lugar de 16.[https://groups.google.com/forum/#!topic/NRF24-arduino/Uj3XPGdoiOM Hay indicios de que afecta de alguna manera]. El chip puede comunicar hasta 10 Mhz en el bus SPI. En la libreria tenemos SPI.setClockDivider(SPI_CLOCK_DIV4);
+
El Atmega ve el chip y es capaz de enviar paquetes pero no de recibirlos.
 +
No sabemos porqué pero sospechamos que es por tener el clock a 8MHz en lugar de 16.[https://groups.google.com/forum/#!topic/NRF24-arduino/Uj3XPGdoiOM Hay indicios de que afecta de alguna manera]. El chip puede comunicar hasta 10 Mhz en el bus SPI. En la libreria tenemos SPI.setClockDivider(SPI_CLOCK_DIV4);
 
Entonces con un un atmega328 @ 8 Mhz, 8/4 = 2 mbs , no debería haber problema. Otra posible causa pueden ser los delays().
 
Entonces con un un atmega328 @ 8 Mhz, 8/4 = 2 mbs , no debería haber problema. Otra posible causa pueden ser los delays().
  

Revision as of 13:54, 30 September 2013

Nombre proyecto

ESTADO: PRIMERAS PRUEBAS

Miembros: User:Dario_Salvi, User:Bozo, User:Roberto Zabala


Objetivo

construir una red de sensores compatibles con el IDE de Arduino y que cuesten menos que 5 € con todo incluido.

Motivación

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

Hay muchos proyectos para redes de sensores y productos comerciales, pero ninguno hasta ahora verdaderamente barato (es decir <5€), ver Plataformas IOT.

El proyecto mas parecido al nuestro de momento es este, quitandole quizas los LEDs para ahorrar. Otro proyecto muy parecido es este.

Métodos y técnicas utilizadas

Requisitos:

  • cada nodo tiene una MCU y una conexión RF
  • el nodo base tiene que ser muy barato: < 5€
  • se tiene que poder programar con el IDE de Arduino
  • 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.

Detalles

Ideas para el Hardware

De momento nos centramos en un ATmega328 y en el chip nRF24L01 de Nordic. El coste de los dos puede llegar a ser inferior a 1 €. Placas micro compatibles Arduino (de donde poder copiar el diseño): femtoduino, Arduino mini pro

Asignación de pines:

  • PD2 -> IRQ
  • PB0 -> CS
  • PB5 -> SCK
  • PB4 -> MISO
  • PB3 -> MOSI
  • GND -> GND
  • VCC -> VCC


Alternativas son, para la MCU, 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.

Ideas para el SW

Queremos la compatibilidad con Arduino, por eso nos centramos en chips AVR. Hay unas cuantas librerías para controlar el chip radio:

Y unos posts sobre el tema:


A esto podemos añadir:

Del lado "servidor" o sea el colectore de todas las medidas y generador de aplicaciones domoticas se puede usar:

Avances:

Reunion 14/9/2013

Hemos testeado 4 modulos nRF24L01 con dos Arduinos, uno ha fallado, pero los otros tres se ha conectado netre si. Hemos los codigos de ejemplo de la libreria RF24 que parece ser la mejor hecha. Hemos probado la conexion estrella y ha funcionado.

Decisiones: para la semana que viene vamos a intentar conectar un Atmega328p directamente a un modulo nRF24L01 en una placa de prototipado. Queremos producir 4 nodos e ir haciendo experimentos. Experimentos posibles:

  • mejor tipo de baterias, 2 AA? 1 de moneda de 3V ?
  • aguante de baterias
  • alcance de la comunicacion
  • ir haciendo pruebas con el SW

objetivo final que hemos visualizado: una placa integrada con modulo radio y atmega, super pequeña, de bajo coste (<5€), con un kit de SW para redes de sensores. Como SW se considera incluso hacer un porting del stack 6loWPAN.


Pruebas 26/9/2013:

Hemos montado el Atmega328p en la breadboard. Para programar el ATMega desde Arduino hemos seguido este tutorial. Hay dos fases: en una cargas el bootloader en el ATmega virgen. Para ello se necesita un Arduino que envíe el firmware por los pines del SPI. RECORDAR de cargar el sketch Arduino as ISP de la carpeta de los ejemplos !

En la segunda fase puedes cargar tus sketch, en este caso se usa el puerto serie, y se puede usar un Arduino quitandole el chip O un cable USB-to-serial (FTDI chip) si lo hay.

Primer prototipo

Para ir probando la comunicación con el nRF24L01 hemos cargado un sketch para usar el chip Nordic. Hemos utilizado la librería de maniacbug aquí y el codigo de ejemplo GettingStarted.

Para cargar el sketch en el ATmega hemos utilizado un cable FTDI y NO HA FUNCIONADO, no sabemos porqué. Entonces hemos usado el Arduino SIN MCU y HA FUNCIONADO. Hemos conectado el nRF24L01 según este esquema, cuidado con hacer el mapeado entre los pines de Arduino y los del Atmeg328 (ver aquí!

El Atmega ve el chip y es capaz de enviar paquetes pero no de recibirlos. No sabemos porqué pero sospechamos que es por tener el clock a 8MHz en lugar de 16.Hay indicios de que afecta de alguna manera. El chip puede comunicar hasta 10 Mhz en el bus SPI. En la libreria tenemos SPI.setClockDivider(SPI_CLOCK_DIV4); Entonces con un un atmega328 @ 8 Mhz, 8/4 = 2 mbs , no debería haber problema. Otra posible causa pueden ser los delays().


Pasos a seguir:

Dario: va a enviar un correo al creador de la librería RF24 preguntandole cual es la mas actualizada y si el ve algún problema en tener un Arduino a 8MHz en lugar de 16Mhz.


Roberto: se encarga de ver los sockets e intenta programar el ATMega con el cable FTDI

Todos: resolver el problema de los 8MHz. Comprar socket para los chips. Construir primer prototipo.