Difference between revisions of "Sensorino"

From Wiki Makespace Madrid
Jump to: navigation, search
(Avances:)
(Avances:: algunas mejoras sobre los problemas de los 8MHz)
Line 113: Line 113:
  
 
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.
 
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.
Para ir probando la comunicación con el nrf24L01 hemos cargado un sketch para usar . Es posible bajar la librería para el chip Nordic [http://airspayce.com/mikem/arduino/NRF24/index.html aquí], parece que hay otra pagina de la misma librería [http://maniacbug.github.io/RF24/index.html aquí] y es posible descar 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. 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 cargar el sketch en el ATmega hemos utilizado un cable FTDI y NO HA FUNCIONADO.
+
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.
 
Entonces hemos usado el Arduino SIN MCU y HA FUNCIONADO.
Hemos conectado el nrf24L01 según [http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo este esquema], cuidado con ahcer 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);
 +
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:
 
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
+
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.
Parece que [https://groups.google.com/forum/#!topic/NRF24-arduino/Uj3XPGdoiOM no]
+
El chip puede comunicar hasta 10 Mhz en el bus SPI. En la libreria vemos tenemos SPI.setClockDivider(SPI_CLOCK_DIV4);
+
Entonces con un un atmega328 @ 8 Mhz, 8/4 = 2 mbs. No hay problema
+
  
  
 
Roberto: se encarga de ver los sockets e intenta programar el ATMega con el cable FTDI
 
Roberto: se encarga de ver los sockets e intenta programar el ATMega con el cable FTDI
  
Resolver el problema de los 8MHz.
+
Todos: resolver el problema de los 8MHz. Comprar socket para los chips. Construir primer prototipo.
Comprar socket para los chips.
+
Construir primer prototipo.
+
  
 
====Recopilación de plataformas existentes====
 
====Recopilación de plataformas existentes====

Revision as of 21:34, 26 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 <10€)


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 Atmega328p 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

caracteristicas del Atmega328p:

  • 8-bit AVR RISC-based microcontroller
  • 32KB ISP flash memory
  • 1024B EEPROM
  • 2KB SRAM
  • 23 general purpose I/O lines
  • 32 general purpose working registers
  • three flexible timer/counters with compare modes
  • internal and external interrupts
  • serial programmable USART
  • a byte-oriented 2-wire serial interface
  • SPI serial port
  • a 6-channel 10-bit A/D converter
  • programmable watchdog timer with internal oscillator
  • five software selectable power saving modes
  • 1.8-5.5 volts

pines del ATmega328p: http://wiki.attie.co.uk/w/images/9/90/Atmega168PinMap2.png


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 una buena libreria de control del chip radio llamada RF24.

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. 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 aquí, o parece que hay otra pagina de la misma librería aquí y es posible descargar el codigo de github aquí pero comparando las fechas de los ficheros parece que el primer enlace es mas reciente.

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.

Recopilación de plataformas existentes

PanStamp:

Precio placa base (1 unidad): 18.55$

tecnologías: Atmega328p + CC1101 IC alance teórico: 200 metros en espacio abierto 8 pines ADC, 10 pines digitales, PWM, I2C

  • pequeño
  • bajo consumo
  • compatible Arduino
  • disponibilidad de soportes
  • disponibilidad de cajas
  • disponibilidad de un SW de recogida datos (Lagarto)
  • disponibilidad de un shield para Raspberry PI


Arduino BT:

Precio placa base (1 unidad): 40 US$

tecnologías: ATmega328 y Bluegiga WT11 alcance teórico: 100 metros en espacio abierto 6 pines analógicos y 14 pines digitales con PWM, I2C, SPI

  • Arduino oficial
  • comunicación estandar compatible con móviles
  • disponibilidad de shields (todos los compatibles Arduino)
  • chipset BT conocido y programable con muchos perfiles


Flutter:

Precio placa base (1 unidad): 20US$ (proyecto todavía no maduro)

tecnologías: Atmel SAM3s Atmel ATSHA204 TI CC1101


  • largo alcance (1Km)
  • compatible Arduino
  • criptografia integrada 256-bit AES


RFDuino:

Precio placa base (1 unidad): 20 US$

tecnologías: Nordic 32 bit ARM Cortex-M0 Bluetooth 4 Low Energy alcance teórico: 50 metros en espacio abierto 7 GPIO configurables como: Digital IO, Analog ADC, SPI, I2C, UART and PWM

  • comunicación estándar (compatible con moviles ultima generacion y PCs)
  • pequeño
  • bajo consumo
  • disponibilidad de soportes
  • disponibilidad de (algunos) shields

^* compatible Arduino


Nota: he visto que RaspberryPi suporta BTLE, ver este y este


ZWave:

para una aplicación sencilla tipo domotica se pueden comprar productos ZWave ya hechos y listos dado que al final el precio va a ser el mismo o incluso menor. Lo único que puede costar mas en ZWave es la central de control, pero hay opciones para hacerse una casera con un PC con SW open source asociado e incluso una placa para RaspberryPi. Si ademas queremos crearnos un sensor o actuador que no esté disponible en el mercado hay módulos de comunicación compatibles con Arduino como [este http://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=90_92&products_id=2169]. Existe una placa Arduino compatible con ZWave integrado, hay un proyecto de Intel: Zarduino que parece que alguien se haya puesto a vender por esta casa.


SparkCore:

Precio placa base (1 unidad): 40 US$

tecnologías: WIFI: Texas Instruments SimpleLink CC3000, 802.11b/g STM32F103 microcontroller, ARM Cortex M3 8 digital I/O pins, 8 analog I/O pins 4 PWM pins; UART (Serial), SPI, I2C, and JTAG peripherals available 32-bit 72Mhz processor 128KB of Flash, 20KB of RAM 2MB of external flash


  • estandar Wifi
  • pequeño
  • compatible Arduino
  • programación on air (sin cables USB) !!!
  • plataforma de desarrollo de aplicaciones online (Spark Cloud) con API sencilla


BLEDuino:

Precio placa base (1 unidad): 34 US$

tecnologías: ATmega32u4 Supply Voltage - 5V GPIO Pins - 21 PWM Channels - 6 Analog Input Channels - 12 Serial Communication: UART, SPI, I2C Bluetooth 4.0 (BLE) - nRF8001 Dedicated controller for nRF8001 Expected BLE Range - at least 80ft (Currently testing)


  • estandar BLE
  • shields de adaptacion para shields estandar


DigiX:

Precio placa base (1 unidad): 59 US$

tecnologías: Arduino Due compatible Wifi and Mesh networking Audio USB OTG microSD 99 IO pins

  • potente
  • muchos pins
  • WIFI

nRF24L01:

siguiendo mis investigaciones sobre redes de sensores low cost compatibles con Arduino, he notado que el chip RF mas barato que hay ahora en venta es el nRF24L01+Module, añadido con un Arduino mini o quizas con un ATtiny84 igual se puede crear un nodo con comunicación wireless, de muy bajo consumo y por menos que 10 US$ ! Hay librerias para nRF24L01 compatibles con Arduino: http://maniacbug.github.io/RF24/ y https://github.com/aaronds/arduino-nrf24l01. Y si quieres juntarlo a una RaspberryPi no hay ningún problema. El chip te da la posibilidad de crear redes sencillas de tipo estrella.


Pinoccio

Precio unitario placa base: ??

tecnologías: Atmel ATmega256RFR2 with built-in radio, 1.8 - 3.3 volt power, 2.4GHz using 802.15.4, Wireless, over-the-air programming Web connectivity via the Wi-Fi Backpack 17 digital I/O pins, including four with PWM 8 analog input pins 2 hardware UART serial ports Hardware SPI port Dedicated I2C port Micro USB port for charging and programming


Contiki OS:

incluyes estandares IETF para redes de sensores: low-power IPv6 networking, 6lowpan adaptation layer, RPL IPv6 multi-hop routing protocol, y CoAP RESTful application-layer protocol y tiene buen porting a Arduino a traves de Contiki (https://github.com/contiki/contiki-arduino)


WigWag

Precio unitario placa base: dificil estimacion, digamos US$50

tecnologías: DeviceJS ties Javascript to the physical world, by providing hooks for protocols like IP, 6loWPAN, Bluetooth™, Zigbee™, RS-232, and devices such as the Belkin WeMo™ and Phillips Hue™ light bulbs.

  • plataforma cloud con sistema de reglas (IF-THEN)
  • nodos ya montados y con distintos sensores embebidos
  • protocolos estandares 6loWPAN


Nanode

Precio unitario placa base: 35€

tecnologías: WiNode features the same ATmega328P microcontroller with the following peripherals RFM12B wireless module – 868MHz 4 ADC channels with divider resistor arrays Compatible with Arduino shield footprints 4 high current (2A) driver outputs Real time clock calendar MicroSD Card Socket

  • compatible Arduino
  • admite shields Arduino


Electric Imp

Precio unitario placa base: 30US$ tecnologías: WiFi 802.11b/g/n WiFi WEP, WPA and WPA2 encryption Cortex-M3 core six pins UARTs, I2C, SPI, analog in and out, PWMs, GPIOs

  • programable online
  • WIFI
  • bajo consumo


RadioBlock

solo una board con chip radio


Microduino

una placa Arduino compatible super mini con un montón de shields guapas