Diferencia entre revisiones de «Proyectos:Archivo/Estacion de Muestreo de Sensores EMMA»

De Hacklab La Paz - r00thouse
(agreagado repositorio gitorious)
 
(No se muestran 16 ediciones intermedias de 2 usuarios)
Línea 13: Línea 13:
== Descripción del diagrama ==
== Descripción del diagrama ==


= Hardware usado =
= Diagrama esquemático =


== Microcontroladores ==
== atmega32 DIP ==


Usando microcontroladores (no placas de desarrollo como arduino por su
[[File:EMMA_m32_dip.png]]
alto costo), los microcontroladores AVR de la serie ATMEGA
(ATMEGA16/32/64) son fuertes candidatos.


=== Razones para escoger AVR ATMEGA 8/16/32/64 ===
'''Obs.-''' Los componentes fijos están definidos, (RTC, adpatador de memoria SD, conexión serial). Esta versión plantea que se puedan conectar varios sensores y deja pines libres para ser usados por otros dispositivos.
Es necesario escribir drivers para nuevos dispositivos usando los pines libres mostrados arriba como terminales libres.


==== Pros ====
= Hardware usado =


* De 8 a 64 KB flash
== Microcontroladores ==
* Al 8 pines ADC (Analog digital converter)
* 1 a 2 UARTs
* SPI, I2C [http://www.atmel.com/Images/2503S.pdf "Atmega32
datasheet"]
* Hasta 53 pines entrada/salida
* Empaquetado DIP (ATMEGA8/16/32) (ATMEGA64 TQFP puede adaptarse a
DIP)


=== Cons ===
=== ATMEGA32  ===


* Solo 8 bits de procesamiento
http://www.atmel.com/Images/2503S.pdf
* Hasta 16 MIPS


=== Razones para escoger LPCxx ARM Cortex based ===
Microcontrolador 8 bits 32 KiB flash.


==== Pros ====
== RTC ==


* 32 bits procesamiento
=== DS3231 ===
* MIPS superior
* desde 8 KB flash
* al menos 2 UARTS
* Hasta 8 ADC
* Hasta 8 KB RAM


==== Cons ====
http://datasheets.maximintegrated.com/en/ds/DS3231.pdf


* Dificil conseguir en empaquetado DIP
Se usa este reloj en tiempo real para tener registro del tiempo.
* Menos pines entrada/salida.


== Sensores ==
== Sensores ==


=== Sensor de temperatura ===
=== dht11 ===


Opciones:
{|
|
http://www.robotshop.com/media/files/pdf/dht11.pdf (Sensor de temperatura y humedad realtiva)
|
[[Archivo:Dht11.jpeg]]
|}


De buena respuesta:
=== si7021 (falta probar driver) ===
* DS18


De bajo costo:
https://www.silabs.com/Support%20Documents%2fTechnicalDocs%2fSi7021-A20.pdf (Sensor de temperatura y humedad relativa, de alta precisión)


* LM35
== Módulos de memoria ==


== Módulos de memoria ==
* Memoria SD controlada por SPI, actualmente se usa uno como este:


* Memoria SD controlada por SPI
http://www.ebay.com/itm/2PCS-SD-Card-Module-Slot-Socket-Reader-For-Arduino-ARM-MCU-Read-And-Write-/170895501953?pt=LH_DefaultDomain_0&hash=item27ca2a6a81


== Módulos de comunicación ==
== Módulos de comunicación ==
No se ha utilizado ningún módulo, la comunicación y configuración de la placa es enteramente por interfaz serial, sin embargo algunas opciones de comunicación con la placa pueden ser:


Opciones:
Opciones:
Línea 85: Línea 75:
http://www.geeetech.com/wiki/index.php/2.4Ghz_nRF24L01_RF_Transceiver_Module
http://www.geeetech.com/wiki/index.php/2.4Ghz_nRF24L01_RF_Transceiver_Module


 
* HopeRF12/69 Creo que la mejor relacion calidad-precio. ~4 USD, dicen que hasta 500m con ~30Kb/s http://www.hoperf.com/


== Circuitos analógicos usados ==
== Circuitos analógicos usados ==
Línea 91: Línea 81:
= Desarrollo del software =
= Desarrollo del software =


Ya puedes clonar la primera version de este proyecto en
Ya puedes clonar el desarrollo de este proyecto en
 
<pre>
<pre>
git@gitorious.org:emma_project/emma_project.git
git@notabug.org:strysg/emma.git
</pre>
</pre>
El link:
https://notabug.org/strysg/EMMA


== Qué se necesita ==
== Qué se necesita ==
Línea 106: Línea 101:
* La herramienta '''gnumake'''
* La herramienta '''gnumake'''


Algo más de info sobre estas herremientas http://chwnku.tuxfamily.org/cont/HerrSoft.html
Algo más de info sobre estas herremientas  
http://chwnku.tuxfamily.org/cont/HerrSoft.html


== Construir el programa ==
== Construir el programa ==
Línea 112: Línea 108:
Una vez descargado el proyecto hay que hacer:
Una vez descargado el proyecto hay que hacer:


  en el directorio del principal del proyecto:
En el directorio del principal del proyecto:
   cd src/Build
   cd src/Build
 
como se tiene instalada la herramienta gnumake basta con:
  # como se tiene instalada la herramienta gnumake basta con:
 
  # para generar el archivo .hex que debe ir al microcontrolador
   make all
   make all
 
para borrar todo archivo binario
  # para borrar todo archivo binario
   make clean
   make clean
Asi cada que se modifique el programa al hacer ''make all'' este se
volverá a construir y los binarios (ejecutables para el microcontrolador) a actualizar.


Asi cada que se modifique el programa al hace ''make all'' este se volverá a construir y los binarios a actualizar.
== Grabar el programa en el microcontrolador ==


== Grabar el programa el microcontrolador ==  
=== Con AVRDUDE ===


Guia rapida http://chwnku.tuxfamily.org/cont/HerrSoft.html#AVRDUDESS
Guia rapida http://chwnku.tuxfamily.org/cont/HerrSoft.html#AVRDUDESS


Adicionalmente se puede grabar el programa una vez se tenga instalado
'''avrdude''' y un ''grabador para avr'' como
http://chwnku.tuxfamily.org/cont/HerrHard.html#GrabUSBASP


Adicionalmente se puede grabar el programa una vez se tenga instalado '''avrdude''' y un ''grabador para avr'' como http://chwnku.tuxfamily.org/cont/HerrHard.html#GrabUSBASP


 
# cd hasta el directorio '''src/Build''' del directorio principal donde esta el proyecto
1. cd hasta el directorio '''src/Build''' del directorio principal donde esta el proyecto
# ejecutar el comando:
 
2. ejecutar el comando:
<source lang="bash">
<source lang="bash">
sudo avrdude -c usbasp -p m16 -u -U flash:w:main.hex
sudo avrdude -c usbasp -p m32 -u -U flash:w:main.hex
</source>
</source>


Actualmente el proyecto viene siendo construido en el atmega16 para el atmega32 por ejemplo el comando es
=== Usando make ===
 
El Makefile en la carpeta src/Build contiene una regla para programar le atmega32 usando el grabador USBasp


# cd hasta el directorio '''src/Build''' del directorio principal donde esta el proyecto
# ejecutar el comando:
<source lang="bash">
<source lang="bash">
sudo avrdude -c usbasp -p m32 -u -U flash:w:main.hex
sudo make program_usbasp
</source>
</source>


= Diseño del PCB =
= Diseño del PCB =
Una versión inicial del diseño para PCB.
Para imprimir en proporciones reales se recomienda abrir con gimp y enviar a imprimir. La resolución de la imagen es de 400 dpi (el tamaño original de la placa es 25% el tamaño de la imagen)
[[file:EMAE m32 dip bot.png|frameless|720px]]
----
lado de los componentes y puentes, listo para impimirse (volcado horizontalmente)
[[file:EMAE m32 dip top.png|frameless|720px]]
El diseño pcb y el esquemático está en https://notabug.org/strysg/EMMA/src/master/Docu/circuit/EMMA_m32_dip/EMMA_m32_dip.pcb y puede ser editado con [http://www.geda-project.org/ geda].


= TODO list =
= TODO list =
* Agregar sensores al sistema
* Implementar la interfaz para configurar el logeo via puerto serial
* Analizar agregación de módulo ethernet.
* Realizar pruebas


= Observaciones =
= Observaciones =


= Referencias =
* Crear carpeta independiente para sensores en src/ para tener el códgo más ordenado, para eso hay que modificar el Makefile para hacer la construcción recursivamente o usar Makefiles independientes para cada nueva carpeta de código fuente
 
{{reflist}}

Revisión actual - 16:32 21 ene 2024

Una estación de muestreo automática para registrar fenómenos físicos. El objetivo es construir y diseñar un dispositivo fiable, de bajo costo, fácil manejo e instalación y escalable para diversos sensores e interfaces de comunicación.

Diagrama de bloques

EMMA bloques.png

Diagrama de bloques inicial

Descripción del diagrama

Diagrama esquemático

atmega32 DIP

EMMA m32 dip.png

Obs.- Los componentes fijos están definidos, (RTC, adpatador de memoria SD, conexión serial). Esta versión plantea que se puedan conectar varios sensores y deja pines libres para ser usados por otros dispositivos. Es necesario escribir drivers para nuevos dispositivos usando los pines libres mostrados arriba como terminales libres.

Hardware usado

Microcontroladores

ATMEGA32

http://www.atmel.com/Images/2503S.pdf

Microcontrolador 8 bits 32 KiB flash.

RTC

DS3231

http://datasheets.maximintegrated.com/en/ds/DS3231.pdf

Se usa este reloj en tiempo real para tener registro del tiempo.

Sensores

dht11

http://www.robotshop.com/media/files/pdf/dht11.pdf (Sensor de temperatura y humedad realtiva)

Dht11.jpeg

si7021 (falta probar driver)

https://www.silabs.com/Support%20Documents%2fTechnicalDocs%2fSi7021-A20.pdf (Sensor de temperatura y humedad relativa, de alta precisión)

Módulos de memoria

  • Memoria SD controlada por SPI, actualmente se usa uno como este:

http://www.ebay.com/itm/2PCS-SD-Card-Module-Slot-Socket-Reader-For-Arduino-ARM-MCU-Read-And-Write-/170895501953?pt=LH_DefaultDomain_0&hash=item27ca2a6a81

Módulos de comunicación

No se ha utilizado ningún módulo, la comunicación y configuración de la placa es enteramente por interfaz serial, sin embargo algunas opciones de comunicación con la placa pueden ser:

Opciones:

  • Transmisor y receptor 433Mhz (barato pero propenso a errores de

comunicación) link.- http://rurandom.org/justintime/index.php?title=Cheapest_ever_433_Mhz_transceiver_for_PCs

  • Transmisor y receptor NRF24L01 2.4Ghz (controlado por SPI, fiable y

de buen alcance) link.- http://www.geeetech.com/wiki/index.php/2.4Ghz_nRF24L01_RF_Transceiver_Module

  • HopeRF12/69 Creo que la mejor relacion calidad-precio. ~4 USD, dicen que hasta 500m con ~30Kb/s http://www.hoperf.com/

Circuitos analógicos usados

Desarrollo del software

Ya puedes clonar el desarrollo de este proyecto en

git@notabug.org:strysg/emma.git

El link:

https://notabug.org/strysg/EMMA

Qué se necesita

  • El compilador para AVR llamado avr-toolchain y se compone de:
    • avr-libc
    • binutils-avr
    • avrdude
    • avr-gcc
  • La herramienta gnumake

Algo más de info sobre estas herremientas http://chwnku.tuxfamily.org/cont/HerrSoft.html

Construir el programa

Una vez descargado el proyecto hay que hacer:

En el directorio del principal del proyecto:

 cd src/Build

como se tiene instalada la herramienta gnumake basta con:

 make all

para borrar todo archivo binario

 make clean

Asi cada que se modifique el programa al hacer make all este se volverá a construir y los binarios (ejecutables para el microcontrolador) a actualizar.

Grabar el programa en el microcontrolador

Con AVRDUDE

Guia rapida http://chwnku.tuxfamily.org/cont/HerrSoft.html#AVRDUDESS

Adicionalmente se puede grabar el programa una vez se tenga instalado avrdude y un grabador para avr como http://chwnku.tuxfamily.org/cont/HerrHard.html#GrabUSBASP


  1. cd hasta el directorio src/Build del directorio principal donde esta el proyecto
  2. ejecutar el comando:
sudo avrdude -c usbasp -p m32 -u -U flash:w:main.hex

Usando make

El Makefile en la carpeta src/Build contiene una regla para programar le atmega32 usando el grabador USBasp

  1. cd hasta el directorio src/Build del directorio principal donde esta el proyecto
  2. ejecutar el comando:
sudo make program_usbasp

Diseño del PCB

Una versión inicial del diseño para PCB.

Para imprimir en proporciones reales se recomienda abrir con gimp y enviar a imprimir. La resolución de la imagen es de 400 dpi (el tamaño original de la placa es 25% el tamaño de la imagen)

EMAE m32 dip bot.png


lado de los componentes y puentes, listo para impimirse (volcado horizontalmente) EMAE m32 dip top.png

El diseño pcb y el esquemático está en https://notabug.org/strysg/EMMA/src/master/Docu/circuit/EMMA_m32_dip/EMMA_m32_dip.pcb y puede ser editado con geda.

TODO list

  • Agregar sensores al sistema
  • Implementar la interfaz para configurar el logeo via puerto serial
  • Analizar agregación de módulo ethernet.
  • Realizar pruebas

Observaciones

  • Crear carpeta independiente para sensores en src/ para tener el códgo más ordenado, para eso hay que modificar el Makefile para hacer la construcción recursivamente o usar Makefiles independientes para cada nueva carpeta de código fuente