⠀⠀⠀⠀ Loading…
10%
█▒▒▒▒▒▒▒▒▒
30%
███▒▒▒▒▒▒▒
50%
█████▒▒▒▒▒
80%
███████▒▒▒
100%
▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
【BIENVENIDO】
▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
▎▒ ☆INDICE☆ ▒ ▎
➊_Presentación
➋_Primeras ideas antes de empezar
➌_Desarrollo del micro-proyecto
➍_Diagrama de flujo
➎_Pequeños inconvenientes
➏_Conclusión
➐_Ensamblamiento de los
componentes
❽_Bibliografía
❽_Bibliografía
Presentación
Hola a todos, espero que este sea un buen día para que lean un blog de una persona que está intentando ser un bloguero bueno puede que aveces lo haga, pero eso nadie lo sabe más que yo. Muy bien esta presentación tiene la idea de que los lectores se familiaricen con el narrador o como quieran llamarme, en este pequeño pero un tanto extenso blog se explicará los diferentes procesos por lo que mi compañero y yo pasamos para lograr que un sensor de presión atmosférica y temperatura lograra funcionar para luego ser escrito en una pequeña pantalla lcd. Sin más que decir, que comience el blog!!
》════════════════════════════════~◈~════════════════════════════════《
Primeras ideas antes de empezar
Claramente como estaba pensado, este micro-proyecto realizado para la materia
de programación de sistemas, tenía un único fin el cual era sensar la presión atmosférica luego más adelante al saber más sobre el funcionamiento de
dicho sensor pudimos saber que este también permitía obtener la temperatura. Con
ambos datos obtenidos nos sería posible mostrar la presión atmosférica y temperatura exacta de un entorno. Como dice el titulo una de las ideas que teníamos
era dar un aviso de cuando la presión era baja o alta, pero al saber más sobre
la presión atmosférica pudimos concluir que tal cosa no era posible debido a que el valor no varía mucho a no ser que las mediciones se hagan a una altura considerable. Dicha de esta forma, lo mejor fue pensar en cómo podríamos mostrar el valor
aproximado de la presión y dar una alerta de cuando la temperatura era baja o alta según un valor de referencia.
》════════════════════════════════~◈~════════════════════════════════《
》════════════════════════════════~◈~════════════════════════════════《
Desarrollo del micro-proyecto
Llegando a este punto, en esta sección se detallara cada paso que nos tomo realizar tanto el código como el funcionamiento de los componentes y herramientas utilizadas. Si lo que realmente destaca de este micro-proyecto es la implementación de un sensor barométrico junto con una pantalla lcd con su respectiva interfaz i2c pero iremos paso a paso viendo cada detalle y cada proceso que fue necesario realizar. De esta forma el desarrollo se puede fácilmente resumir en solo cinco bloques principales, dicho de esta manera veremos cada bloque y sus principales características, funcionalidad y aplicaciones.
- ➤ Arduino Mega: En este primer bloque fue necesario la utilización de un arduino ya que
este microcontrolador es el cerebro de todo el proyecto permitiendo la conexión
de los diferentes módulos, componentes y con el sensor utilizado. Para entender
un poco mas, arduino es una plataforma abierta que facilita la programación de
un microcontrolador siendo lo más usados serian el Atmega168, etc. el hardware
de Arduino consiste en una placa con un microcontrolador con puertos de comunicación
y puertos de entrada/salida. Por otro lado, arduino nos proporciona un software
con un entorno de desarrollo (IDE) de manera que la principal característica
del software y del lenguaje de programación es su facilidad de uso. En nuestro
caso utilizamos un arduino mega, aunque ciertamente con un arduino uno bastaba
ya que la cantidad de pines usados no eran demasiados, pero decidimos usarlo
porque lo teníamos en nuestra disposición en un anterior proyecto en el cual lo
utilizamos.

- ➤Sensor BMP180: El sensor de presión barométrica BMP180 está diseñado para leer la presión atmosférica y de esa forma estimar indirectamente la altura sobre el nivel del mar. La presión atmosférica es la fuerza que ejerce el aire sobre la determinada área. La presión atmosférica varia con el clima, principalmente con la temperatura ya que esta hace cambiar la densidad del aire, la cual se ve reflejado en un cambio de peso y por siguiente un cambio de presión. Lo ventajoso de este sensor fue las características que posee ya que es capaz de comunicarse con el protocolo i2c con tan solo dos pines, su rango de alimentación es desde 1.8 a 3.6 volts y sus líneas de interfaz toleran hasta 5 volts, haciendo lo ideal para conectarse con microcontroladores de 5 volts como pic y arduino.

- ➤Sensor BMP180: El sensor de presión barométrica BMP180 está diseñado para leer la presión atmosférica y de esa forma estimar indirectamente la altura sobre el nivel del mar. La presión atmosférica es la fuerza que ejerce el aire sobre la determinada área. La presión atmosférica varia con el clima, principalmente con la temperatura ya que esta hace cambiar la densidad del aire, la cual se ve reflejado en un cambio de peso y por siguiente un cambio de presión. Lo ventajoso de este sensor fue las características que posee ya que es capaz de comunicarse con el protocolo i2c con tan solo dos pines, su rango de alimentación es desde 1.8 a 3.6 volts y sus líneas de interfaz toleran hasta 5 volts, haciendo lo ideal para conectarse con microcontroladores de 5 volts como pic y arduino.
- ➤Pantalla lcd + interfaz i2c: Esta pantalla posee 16
caracteres y 2 líneas, compatible con el controlador HD44780 de Hitachi, tiene
una iluminación de fondo azul con letras blancas, el chip controlador es
extremadamente común y el código necesario es fácilmente encontrado en
internet. Su aplicación es nada más y menos para visualizar contenidos o información
de forma grafica mediante caracteres, símbolos o pequeños dibujos. Debido a que
posee 16 pines resulta un poco complicado conectarlo ya que usuaria como mínimo
6 pines del arduino mas dos de alimentación es por eso que en nuestro proyecto surgió
la necesidad de utilizar una interfaz i2c porque los recursos de pines en
Arduino son limitados. Este modulo tiene la capacidad de simplificar las
cantidades de pines que usa la pantalla por tan solo 2 hilos evitando
inconveniente a diferencia de estando utilizando demasiado cables, además de
poseer un potenciómetro que hace sencillo poder regular la iluminación de la
pantalla y sin olvidar que este modulo utiliza el protocolo de comunicación i2c
que permite controlar a la vez varios o múltiples módulos de forma que con la
pantalla lcd convierte datos en serie i2c a datos paralelos que se utilizan
para la respectiva pantalla.
- ➤Leds y resistencias: Básicamente este bloque no
necesita mucha explicación ya que estos componentes fueron utilizados para dar
una alerta en lo que se refiere a la programación, ya de por si usando un led
blanco se logró indicar si la temperatura era alta y en caso de que esta
magnitud fuera relativamente baja se activaría un led rojo el cual indicaría la
presencia de una temperatura inferior.
- ➤Desarrollo del código: En este bloque final se procedió a crear el código para dicho proyecto, aunque realmente a la hora de programar no es
como si hubiéramos hecho el código desde cero ya que al ser común la
utilización de estos módulos fácilmente se pudo encontrar en internet
diferentes ejemplos para el funcionamiento individual de cada componente. Para
el sensor bmp180 hubo varias alternativas para elegir el código correcto porque
no siempre funcionan y a veces resultan en algunas fallas, cabe destacar que
para el sensor fue necesario incluir la librería #include
<SFE_BMP180.h> la cual no es ni más ni menos un trozo de terceros que son de mucha
utilidad dentro del sketch. Otras librerías usadas fueron #include
<Wire.h> que
permite la comunicación con dispositivos I2C/TWI y #include <LiquidCrystal_I2C.h que es la librería de la pantalla
lcd incluida con la i2c.
En general las variables que
se utilizaron fueron char
status la cual es
una variable del tipo carácter, doublé que
se trata de otra variable pero que establece un tipo de dato (números reales) y
int, la cual establece un tipo de
dato entero. Dentro del void setup() (códigos
que se ejecutan una sola vez y para configuración) se pueden encontrar las
siguientes instrucciones principales:
- SensorPresion.begin(): Indica que se utilizara una comunicación serial.
- lcd.init(): Inicia la pantalla lcd.
- lcd.backlight(): Enciende la luz del fondo.
- lcd.clear(): Limpia la pantalla lcd.
- pinMode: Establece el pin que se usara como
salida.
- Dentro del void loop() donde se encuentra la programación principal se pueden
encontrar las siguientes instrucciones las cuales resultan ser las principales
para el correcto funcionamiento del sensor y para que sea posible imprimir el
texto en la pantalla lcd:
- Status = sensorPresion.startTemperature(): status comprueba (en este caso) el sensor de temperatura, inicia el envió del pulso para leer la temperatura.
- Delay(status): Genera un retardo, delay de protección por posibles problemas.
- SensorPresion.getTemperature(tem): Obtención de la temperatura.
- SensorPresion.getPressure(presion,tem): Obtención de la presion.
- lcd.setCursor: Posiciona el cursor donde se mostrara el texto.
- lcd.print: Imprime el texto en la pantalla lcd.
- if: Condicional.
- digitalWrite: Le asigna un valor alto o bajo al pin correspondiente.
》════════════════════════════════~◈~════════════════════════════════《
Diagrama de flujo
Pequeños inconvenientes:
- Necesidad de
soldar la IC2 a la pantalla LCD.
- Errores al
momento de escribir al código.
Conclusión
Lo que pudimos aprender de este proyecto fue que la
presión atmosférica varía dependiendo la altura a la que se encuentre el sensor
(además del clima y la densidad del aire) y que si se utiliza únicamente con
este fin no tiene una utilidad real en esta zona debido a que no habría
variaciones de presión.
Ensamblamiento de los componentes
Bibliografia:
https://naylampmechatronics.com/blog/43_Tutorial-sensor-de-presi%C3%B3n-barom%C3%A9trica-BMP180.html
https://www.geekfactory.mx/tienda/sensores/bmp180-sensor-de-presion-atmosferica/
https://aprendiendoarduino.wordpress.com/2016/12/11/que-es-arduino-2/
https://www.geekfactory.mx/tienda/pantallas-lcd/pantalla-lcd-de-16x2-hd44780-azul-blanco/
https://www.taloselectronics.com/blogs/tutoriales/display-lcd-16-2-hd44780
http://dinastiatecnologica.com/producto/interfaz-lcd-i2c/
https://teslabem.com/nivel-intermedio/fundamentos-del-protocolo-i2c-aprende/
https://es.wikipedia.org/wiki/Presi%C3%B3n_atmosf%C3%A9rica
http://www.eneka.com.uy/robotica/modulos-comunicacion/m%C3%B3dulo-interfaz-serail-i2c-detail.html
http://panamahitek.com/sensor-de-presion-atmosferica-el-bmp180/
Autores: Fernando Gutierrez, Julian Simkus.
- ➤Pantalla lcd + interfaz i2c: Esta pantalla posee 16 caracteres y 2 líneas, compatible con el controlador HD44780 de Hitachi, tiene una iluminación de fondo azul con letras blancas, el chip controlador es extremadamente común y el código necesario es fácilmente encontrado en internet. Su aplicación es nada más y menos para visualizar contenidos o información de forma grafica mediante caracteres, símbolos o pequeños dibujos. Debido a que posee 16 pines resulta un poco complicado conectarlo ya que usuaria como mínimo 6 pines del arduino mas dos de alimentación es por eso que en nuestro proyecto surgió la necesidad de utilizar una interfaz i2c porque los recursos de pines en Arduino son limitados. Este modulo tiene la capacidad de simplificar las cantidades de pines que usa la pantalla por tan solo 2 hilos evitando inconveniente a diferencia de estando utilizando demasiado cables, además de poseer un potenciómetro que hace sencillo poder regular la iluminación de la pantalla y sin olvidar que este modulo utiliza el protocolo de comunicación i2c que permite controlar a la vez varios o múltiples módulos de forma que con la pantalla lcd convierte datos en serie i2c a datos paralelos que se utilizan para la respectiva pantalla.
- ➤Leds y resistencias: Básicamente este bloque no necesita mucha explicación ya que estos componentes fueron utilizados para dar una alerta en lo que se refiere a la programación, ya de por si usando un led blanco se logró indicar si la temperatura era alta y en caso de que esta magnitud fuera relativamente baja se activaría un led rojo el cual indicaría la presencia de una temperatura inferior.
- ➤Desarrollo del código: En este bloque final se procedió a crear el código para dicho proyecto, aunque realmente a la hora de programar no es como si hubiéramos hecho el código desde cero ya que al ser común la utilización de estos módulos fácilmente se pudo encontrar en internet diferentes ejemplos para el funcionamiento individual de cada componente. Para el sensor bmp180 hubo varias alternativas para elegir el código correcto porque no siempre funcionan y a veces resultan en algunas fallas, cabe destacar que para el sensor fue necesario incluir la librería #include <SFE_BMP180.h> la cual no es ni más ni menos un trozo de terceros que son de mucha utilidad dentro del sketch. Otras librerías usadas fueron #include <Wire.h> que permite la comunicación con dispositivos I2C/TWI y #include <LiquidCrystal_I2C.h que es la librería de la pantalla lcd incluida con la i2c.
En general las variables que
se utilizaron fueron char
status la cual es
una variable del tipo carácter, doublé que
se trata de otra variable pero que establece un tipo de dato (números reales) y
int, la cual establece un tipo de
dato entero. Dentro del void setup() (códigos
que se ejecutan una sola vez y para configuración) se pueden encontrar las
siguientes instrucciones principales:
- SensorPresion.begin(): Indica que se utilizara una comunicación serial.
- lcd.init(): Inicia la pantalla lcd.
- lcd.backlight(): Enciende la luz del fondo.
- lcd.clear(): Limpia la pantalla lcd.
- pinMode: Establece el pin que se usara como salida.
- Dentro del void loop() donde se encuentra la programación principal se pueden encontrar las siguientes instrucciones las cuales resultan ser las principales para el correcto funcionamiento del sensor y para que sea posible imprimir el texto en la pantalla lcd:
- Status = sensorPresion.startTemperature(): status comprueba (en este caso) el sensor de temperatura, inicia el envió del pulso para leer la temperatura.
- Delay(status): Genera un retardo, delay de protección por posibles problemas.
- SensorPresion.getTemperature(tem): Obtención de la temperatura.
- SensorPresion.getPressure(presion,tem): Obtención de la presion.
- lcd.setCursor: Posiciona el cursor donde se mostrara el texto.
- lcd.print: Imprime el texto en la pantalla lcd.
- if: Condicional.
- digitalWrite: Le asigna un valor alto o bajo al pin correspondiente.
》════════════════════════════════~◈~════════════════════════════════《
Diagrama de flujo
Pequeños inconvenientes:
- Necesidad de soldar la IC2 a la pantalla LCD.
- Errores al momento de escribir al código.
Conclusión
Lo que pudimos aprender de este proyecto fue que la
presión atmosférica varía dependiendo la altura a la que se encuentre el sensor
(además del clima y la densidad del aire) y que si se utiliza únicamente con
este fin no tiene una utilidad real en esta zona debido a que no habría
variaciones de presión.
Ensamblamiento de los componentes
Bibliografia:
https://naylampmechatronics.com/blog/43_Tutorial-sensor-de-presi%C3%B3n-barom%C3%A9trica-BMP180.html
https://www.geekfactory.mx/tienda/sensores/bmp180-sensor-de-presion-atmosferica/
https://aprendiendoarduino.wordpress.com/2016/12/11/que-es-arduino-2/
https://www.geekfactory.mx/tienda/pantallas-lcd/pantalla-lcd-de-16x2-hd44780-azul-blanco/
https://www.taloselectronics.com/blogs/tutoriales/display-lcd-16-2-hd44780
http://dinastiatecnologica.com/producto/interfaz-lcd-i2c/
https://teslabem.com/nivel-intermedio/fundamentos-del-protocolo-i2c-aprende/
https://es.wikipedia.org/wiki/Presi%C3%B3n_atmosf%C3%A9rica
http://www.eneka.com.uy/robotica/modulos-comunicacion/m%C3%B3dulo-interfaz-serail-i2c-detail.html
http://panamahitek.com/sensor-de-presion-atmosferica-el-bmp180/
Autores: Fernando Gutierrez, Julian Simkus.





podias poner el codigo en lugar de una foto
ResponderEliminar