User avatar
ruzzine
Posts: 95
Joined: Wed Nov 28, 2012 2:20 pm
Location: Italy
Contact: Website

Pluviometro (Rain Gauge) lettura errata?

Tue Aug 18, 2015 7:16 pm

Salve,
posto qui un dilemma che forse a qualcun'altro e' successo!
Ho un pluviometro semi professionale che utilizza i reed switch per segnare quando la paletta scarica la quantità di acqua.
Seguendo un esempio trovato su internet ho creato un mio script python che mi inserisce dentro un db mysql una riga con l'ora aggiornata al momento in cui la palettina scarica l'acqua.
Il contatto dei reed switch e' collegato in modo da avere un filo sul pin bcm 27 e l'altro su GND.

Code: Select all

import RPi.GPIO as GPIO
from time import sleep
import MySQLdb as mdb

# Pluvio Parameters
rainPin = 27
#bucket = 0.20

# Mysql Parameters
mysql_host = "localhost"
mysql_db = "miodb"
mysql_user = "miouser"
mysql_password = "miapass"

# Initialization Parameters
Rain = 0
Changestate = 0
GPIO.setmode(GPIO.BCM)
GPIO.setup(rainPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# Functions

def mysqlconnect(rain):
	con = mdb.connect(mysql_host, mysql_user, mysql_password, mysql_db);
	cur = con.cursor()
	cur.execute("INSERT INTO `miodb`.`pluvio_record` SET `Rain`='%f'" % rain)
	con.commit()
	con.close()

###############################################################################

try:

	while True:
		reading = GPIO.input(rainPin)
		#print "Valore di reading %d " % reading

		if reading == 1:

			if Changestate == 0:
				#Rain += bucket
				#print "Rain is %f " % Rain
				mysqlconnect(Rain);
				Changestate = 1
				sleep(0.1)
		else:

			Changestate = 0

finally:
	GPIO.cleanup()
Effettivamente..se avvio il programma e metto un bicchiere d'acqua nel pluviometro, contando le volte che la paletta bascula il tutto coincide con lo script e i conteggi sono esatti.
Il fatto e' che accade una cosa strana..e' da un giorno che lo script e' avviato..e noto che ogni ora..intorno alle ore xx.50 (esempio: 20.50 21.52 etc) mi fà un inserimento nel db..quindi vuol dire che GPIO.input(rainPin) dovrebbe aver dato 1 come valore...eppure non piove..e non ci sono altri inserimenti subito successivi..
Mi chiedo..perche' accade questo? Come mai sempre a quell'orario più o meno? Ho controllato crontab, cron.daily, montly etc.. e non ci sono script almeno così ho visto che in quell'orario magari mandano in tilt il rasp..
Cosa può essere?
Bye.
Ruzzine

User avatar
ruzzine
Posts: 95
Joined: Wed Nov 28, 2012 2:20 pm
Location: Italy
Contact: Website

Re: Pluviometro (Rain Gauge) lettura errata?

Fri Aug 28, 2015 2:30 pm

UPDATE:
Forse sono arrivato a conclusione che essendo il cavo lungo più di 3 metri fino al pluviometro vero e proprio, il fatto di usare il gpio 27 in pull up, i 3,3v forse erano troppo pochi e mi ritrovavo una caduta di tensione o interferenze forse alte e ogni tanto il rasp leggeva il gpio in pull up anche quando il reed switch non era chiuso.
Per il momento stò provando con un optoisolatore dove il lato emettitore led alimentato dal 5v del rasp con in serie il contatto del reed switch e il lato ricevitore collegato al gpio 27 e al gnd.
Vediamo se và o se continua a leggermi a caso ogni tanto il gpio in pull up

Return to “Italiano”