Mostrando entradas con la etiqueta raspbian.. Mostrar todas las entradas
Mostrando entradas con la etiqueta raspbian.. Mostrar todas las entradas

miércoles, 7 de septiembre de 2016

MPL3115A2 sensor (GCC), Linux MySQL/postgreSQL

MPL3115A2 (Language C) Linux MySQL (Banana Pi/Raspberry Pi)

The MPL3115A2 is a compact piezoresistive absolute pressure sensor with an I2C interface. MPL3115A2 has a wide operating range of 20 kPa to 110 kPa, a range that covers all surface elevations on earth. The fully internally compensated MEMS in conjunction with an embedded high resolution 24-bit equivalent ADC provide accurate pressure (Pascals)/altitude (meters) and temperature (°C) data.(see DataSheet, AN4481, AN4519)

Direct reading:

— Pressure: 20-bit measurement (Pascals)
— Altitude: 20-bit measurement (meters)
— Temperature: 12-bit measurement (°C)

MPL3115A2
Simple test MPL3115A2 with a BananaPi. Using the I2C library functions (WiringPi), we communicate with the sensor, then the data is stored in MySQL/postgreSQL database.


CREATE DATABASE sensor;


CREATE TABLE sensor.samples(
 sampleId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 sampleDate DATE,
 sampleTime TIME,
 sampleTemperature DOUBLE,
 sampleAltitude DOUBLE,
 samplePressure DOUBLE) default character  set utf8;

Download source code


   MYSQL *conn;
   MYSQL_RES *res;
   //MYSQL_ROW fila;

   char *server = "localhost";
   char *user = "sydbernard";
   char *password = "secreto";
   char *database = "sensor";
   
   conn = mysql_init(NULL);
   
   // Connect to database //
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      exit(1);
   }

   ...

   /* send SQL query */
   if (mysql_query(conn, buffer)) {
       fprintf(stderr, "%s\n", mysql_error(conn));
       exit(1);
   }
    

To Compile:

$ gcc -Wall -c main.c MPL3115A2.c
$ gcc -Wall -o mpl main.o MPL3115A2.o -l wiringPi -lmysqlclient

wiringBPi



Table MySQL


MySQL

PostgreSQL

PostgreSQL is an object-relational SQL database management system.

Header files and static library for compiling C programs to link with the libpq library in order to communicate with a PostgreSQL database backend.

sudo apt-get install libpq-dev
____________________________

create table samples(
 sampleId SERIAL PRIMARY KEY,
 sampleTemperature DOUBLE precision,
 sampleAltitude DOUBLE precision,
 samplePressure DOUBLE precision
);

PGresult *res;
PGconn *pgConn = PQconnectdb("dbname=sensor hostaddr=127.0.0.1 \
                               user=sydbernard password=snoopy");
if (PQstatus(pgConn) != CONNECTION_OK)
{
   fprintf(stderr, "Connection to database failed: %s",
   PQerrorMessage(pgConn));
}

...

sprintf(buffer,"INSERT INTO samples (sampleTemperature,sampleAltitude,samplePressure) \
VALUES (%.2f, %.2f, %.2f);",temperature, altitude, pressure);

/* send SQL query */
res = PQexec(pgConn, buffer);
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
 fprintf(stderr, ">%s", PQerrorMessage(pgConn));
 PQclear(res);
       
}
 
Source Code Download
 
postgreSQL

domingo, 10 de julio de 2016

Banana PI – WiringPi TFT touch 320x240


Banana PI – WiringPi TFT 320x240

Banana PI + WiringPi (WiringBpi) + RPI 2.8 TFT Add-on (Display TFT 320x240 [ILI9323DS])


Consiste en leer archivos BMP RGB888 (24 bits) y convertirlos a RGB565 (16 bits) para presentarlos en un Display TFT 240x320 (Raspberry PI 2.8 TFT Add-on)
con controlador ILI9323DS. El Display se controla mediante los pines GPIO de la BananaPi/RaspberryPi.

La librería de Seeed technologies inicialmente trabajaba para AVR/Arduino pero aqui fue modificada para funcionar conjuntamente con WiringPi.

El proyecto consiste de cuatro archivos tft.c, tft.h, font.h y main.c. El proyecto lo compilamos con gcc:

$ gcc -Wall -c main.c tft.c
$ gcc -o tftb main.o tft.o -l wiringPi
$ rm main.o tft.o

o creando un archivo makefile:

tftbin: tft.o main.o
           gcc -o tftbin main.o tft.o -l wiringPi
tft.o: tft.c
         gcc -Wall -c tft.c
main.o: main.c
             gcc -Wall -c main.c
clean:
          rm main.o tft.o

 Descargar Código fuente
 Descargar Archivos BMP (RGB888)
 Descargar WiringBpi


FormatoBMP: Un archivo BMP es un archivo de mapa de bits, es decir, un archivo de imagen de gráficos, con píxeles almacenados en forma de tabla de puntos que administra los colores como colores reales o usando una paleta indexada.
La estructura de un mapa de bits es la siguiente:
  • Encabezado del archivo
  • Encabezado de información del mapa de bits (también llamado encabezado de información).
  • Paleta (opcional)
  • Cuerpo de la imagen 
Encabezado del archivo
El encabezado del archivo proporciona información acerca del tipo de archivo (mapa de bits) y su tamaño, así como también indica dónde comienza realmente la información de la imagen.
El encabezado comprende cuatro campos:
La firma (en 2 bytes), que indica que se trata de un archivo BMP con dos caracteres BM (42 4D en hexadecimal) que indica que se trata de un mapa de bits de Windows
El tamaño total del archivo en bytes (codificado en 4 bytes)
Un campo reservado (en 4 bytes)
El desajuste de la imagen (en 4 bytes), es decir, la ubicación del comienzo de la
información de la imagen en relación con el comienzo del archivo


Archivo .bmp visto en GHEX
Firma: BM
Tamaño: 0x38436
Reservado: 0
Inicio del campo de datos: 0x36

Encabezado de información del mapa de bits
proporciona información acerca de la imagen, en especial las dimensiones y los colores.
El tamaño del encabezado de información del mapa de bits en bytes (codificado en 4 bytes). Los siguientes valores hexadecimales son posibles según el tipo de formato BMP: 28 para Windows 3.1x, 95, NT
El ancho de la imagen (en 4 bytes), es decir, el número de píxeles contados de forma horizontal
La altura de la imagen (en 4 bytes), es decir, el número de píxeles contados de forma vertical
El número de planos (en 2 bytes). Este valor es siempre 1
La profundidad del modelo de color (en 2 bytes), es decir, el número de bits usados para codificar el color. Este valor puede ser equivalente a 1, 4, 8, 16, 24 ó 32
El método de compresión (en 4 bytes). Este valor es 0 cuando la imagen no está
comprimida.

 

Encabezado: 0x28
Ancho: 0xF0 (240)
Largo:0x140 (320)
Planos: 0x01
Bits: 0x18 (24)
Compresión: 0x00
 
El tamaño total de la imagen en bytes (en 4 bytes).
La resolución horizontal (en 4 bytes), es decir, el número de píxeles por metro contado de forma horizontal.
La resolución vertical (en 4 bytes), es decir, el número de píxeles por metro contado de forma vertical.
El número de colores de la paleta (en 4 bytes).




Tamaño: 0x38400
Resolución H: 0x0B13
Resolución V: 0x0B13
Paleta: 0x0
El número de colores importantes de la paleta (en 4 bytes). Este campo puede equivaler a 0 cuando todos los colores son importantes. 
Todo lo demás son los Datos.