La Météo avec Python (language de programmation)

Bonjour, dans le cadre de mon tfe, je dois réaliser un programme en python. J'ai choisit de travailler avec une station météo WS3500 (73.99€ livraison comprise). Je vais y récupere les données, les stocker dans une base de donnée pour ensuite en faire des graphiques, jauges, ...

Le programme sera aussi capable d'allumer au d'éteindre 2 prises électriques. Il suffira d'y programmer quand il faut qu'elle s'allume (EX entre 25° et 100° pour un airco) et l'autre pour un déshumidificateur. Outre le projet scolaire, je compte me servir de ce logiciel pour réguler l'humidité dans ma couveuse frigo.

 

Par la suite (si j'y arrive) les données seront publier sur le web en direct accompagner d'une webcam

 

Première étape:

 

Comme la plus part des pc ne disposent plus du port Series (RS232) notament à l'école, j'ai été obliger de bricoler dés le début car la sation mété fonctionne en rs232 !! Vous alles donc me dire commment-as-tu fait ? je suis aller chez mon fournisseur de matériel informatique et il m'a trouver un cable usb ==> rs232. Sauf que moi, je programme en python et que je parle au port rs232 et non usb eureusement linux a tout prévu ==> il suffit de taper un commande dans le terminal et hop toute ce que j'envoi au port rs232 (virtuel) est traduit en usb (pour faire simple). La seul différence est que dans mon programme python, je dois envoyer les données à ttyUSB0 et no pas ttyS0!!!

 

Voici le code pour allumer ou éteindre les 2 relais (pour les futures prises):

 

 


Code :

#-*- coding:Utf8 -*-
from Tkinter import *
import serial



def relais_1_on():
    message.configure(text=" le relais est ON ", fg= 'blue')
    ser.setDTR(1)
    
    
def relais_1_off():
    message.configure(text=" le relais est OFF", fg= 'red')
    ser.setDTR(0)
    

def relais_2_on():
    message2.configure(text=" le relais est ON ", fg= 'blue')
    ser.setRTS(1)
    
def relais_2_off():
    message2.configure(text=" le relais est OFF", fg= 'red')
    ser.setRTS(0)

fen1 = Tk()
fen1.title('cFranssen')

message = Label(text=" le relais est ON ",fg="blue")
message.grid(row=1, column=3, columnspan=2)
message2 = Label(text=" le relais est ON ",fg="blue")
message2.grid(row=2, column=3, columnspan=2)

ser = serial.Serial('/dev/ttyUSB0', 19200)

bou1 = Button(fen1,text='relais 1 ON',state="normal", command=relais_1_on)
bou1.grid(row=1 , column=1)

bou2 = Button(fen1,text='relais 1 OFF',state="normal",command=relais_1_off)
bou2.grid(row=1 , column=2)

bou3 = Button(fen1,text='relais 2 ON',state="normal",command=relais_2_on)
bou3.grid(row=2 , column=1)

bou4 = Button(fen1,text='relais 2 OFF',state="normal",command=relais_2_off)
bou4.grid(row=2 , column=2)

bou5 = Button(fen1, text='   Quitter   ', command = fen1.quit)
bou5.grid(row=4, column=1)


fen1.mainloop()
fen1.destroy()         
ser.close()


 

pour installer le module pour le cable usb ==> rs232, il suffit de taper dans le terminal (en tant que root) un "modprobe pl2303" si ça ne vous dit rien c'est que c'est bon tapez alors "lsmod" et vous devriez avoir cela:

 

 


 

Code :
Module                  Size  Used by
nls_iso8859_1 4633 1
nls_cp437 6351 1
vfat 10866 1
fat 55350 1 vfat
usb_storage 49961 1
pl2303 17918 0
usbserial 39131 1 pl2303
nls_utf8 1421 1
isofs 33399 1
cryptd 8116 0
aes_x86_64 7912 1
aes_generic 27607 1 aes_x86_64
binfmt_misc 7960 1
ppdev 6375 0
snd_hda_codec_realtek 279040 1
joydev 11072 0
snd_hda_intel 25773 2
snd_hda_codec 85759 2 snd_hda_codec_realtek,snd_hda_intel
snd_hwdep 6924 1 snd_hda_codec
snd_pcm_oss 41394 0
snd_mixer_oss 16299 1 snd_pcm_oss
snd_pcm 87946 3 snd_hda_intel,snd_hda_codec,snd_pcm_oss
snd_seq_dummy 1782 0
snd_seq_oss 31191 0
snd_seq_midi 5829 0
snd_rawmidi 23420 1 snd_seq_midi
snd_seq_midi_event 7267 2 snd_seq_oss,snd_seq_midi
snd_seq 57481 6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_timer 23649 2 snd_pcm,snd_seq
snd_seq_device 6888 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
arc4 1473 2
snd 71251 16 snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
fbcon 39270 71
tileblit 2487 1 fbcon
font 8053 1 fbcon
bitblit 5811 1 fbcon
softcursor 1565 1 bitblit
ath9k 329117 0
mac80211 238896 1 ath9k
ath 9723 1 ath9k
video 20623 0
output 2503 1 video
uvcvideo 62595 0
videodev 40518 1 uvcvideo
v4l1_compat 15495 2 uvcvideo,videodev
v4l2_compat_ioctl32 11764 1 videodev
cfg80211 148725 3 ath9k,mac80211,ath
psmouse 64576 0
serio_raw 4918 0
sdhci_pci 6700 0
sdhci 17928 1 sdhci_pci
soundcore 8052 1 snd
snd_page_alloc 8500 2 snd_hda_intel,snd_pcm
ricoh_mmc 3416 0
nvidia 10832442 40
asus_laptop 20584 0
led_class 3764 3 ath9k,sdhci,asus_laptop
vga16fb 12757 1
vgastate 9857 1 vga16fb
sis190 17173 0
mii 5237 1 sis190
sis_agp 4959 0
lp 9336 0
parport 37160 2 ppdev,lp
ohci1394 30260 0
sata_sis 4448 2
ieee1394 94771 1 ohci1394

 


 

Deuxième étape:

 

Faire le montabe électronique pour les 2 relais: (source)

 

 

Le montage utilise directement les lignes de commande du port RS232 pour commander 2 relais avec les signaux DTR et RTS. La commande "de puissance" des relais est assurée par des transistors NPN. Les 4 signaux en entrée DCD, DSR, CTS et RI sont actif à 12V et permettent le raccordement de 4 capteurs ou contacts.

Le schéma

 

Le circuit est à l'égal du schémas, tout aussi simple et d'ailleurs, si vous n'avez pas la possibilité de graver ce circuit, sa réalisation sur plaquette d'essais ne devrait elle même pas poser trop de problème.
Les relais sont de type DIL à 2 RT de 20x10mm d'encombrement pour lesquels il existe de nombreuses références, d'autant que vous pouvez choisir indifféremment entre des relais non polarisés (de type FBR244 ou équi) ou, des relais polarisés (de type FBR240 ou équi) et dans ce cas, les diodes D1 et D2 seront inutiles.
Résistances
R1 - R6 : 4,7K
Semis conducteurs
Q1 , Q2 BC547B
D1 , D2 1N4001 à 4007
Divers
J1 DB9 FEM
J2 - J7 Borniers 3x3,5
J8 Borniers 2x3,5
RL1, RL2 Relais DIL 12V/2RT


 

Le typhon L'implantation

 

 

Petite vidéo des premiers tests à venir

J'ai reçus ma station météo !!!!
Je l'ai connecter au pc via l'USB et les données que j'obtiens sont totalement faux mais je cherche en attendant je l'ai connecter sur un autre pc via rs232 et voici le résultat:


19/11/2010
0 Poster un commentaire

A découvrir aussi


Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour