viernes, 9 de noviembre de 2007

Datalogger Parte I

Aqui le muestro una mescla de lenguajes, porque una mescla? bueno usamos python, MySQL y PHP para nuestro datalogger.
Funciona de la siguente manera: Python mediante el puerto serial le pide un byte del canal analogico del pic, cada segundo, este byte se guarda en una base de datos en MySQL el cual luego puede ser monitorizada via web.
En la entrada analogica del pic pueden poner cualquier tipo de señal entre 0-5V
como un LDR, potenciometro, sensor de temperatura (LM35) etc:
Le paso el codigo en python, recuerden la identacion:

#! /usr/bin/env python
import pygame, serial, sys, MySQLdb, time
dato = 0
running = 1
muestras = 0

#-----------------------------------------------------------------
def mysql_insertar(dato):
now = time.localtime(time.time())
fechahora = time.strftime("%Y-%m-%d %H:%M:%S", now)
aux = ((dato * 100) / 256)
DataLogger.executemany (
"""INSERT INTO Temperaturas (FechaHora, Temperatura )
VALUES (%s, %s)""",
[
(fechahora, aux)
] )

def mysql_mostrar():
DataLogger.execute("SELECT FechaHora, Temperatura FROM Temperaturas")
rows = DataLogger.fetchall()
for row in rows:
print "%s, %s" % (row[0], row[1])

print "Numero de filas: %d" % DataLogger.rowcount
#------------------------------------------------------------------
RS232 = serial.Serial('/dev/ttyUSB0', 19200, timeout=1, stopbits=1)
print RS232.portstr

db = MySQLdb.connect("localhost","python","python","Datos")
DataLogger = db.cursor()

cantidad = int(raw_input('Cantidad de Muestras:'))

while running:
muestras += 1
RS232.write("AA")
dato = ord(RS232.read())
print dato
mysql_insertar(dato)
pygame.time.wait(1000)
#mysql_mostrar()
if muestras >= cantidad:
running = 0


RS232.close()
db.close()

#Final

La base de datos que deven crear es la siguiente:
la base se llama Datos con una tabla Temperaturas(id,FechaHora,Temperatura)


No hay comentarios:

IRC

#freenode->#usljujuy

Seguidores

Eventos n_n

Tira Ecol Nano,Bilo y Luca

Archivo del blog