Show Posts
Pages: 1 ... 49 50 [51] 52 53 54
751  International / Français / Re: automate pour aquarium on: April 27, 2011, 12:08:31 pm
Yep!

Ton projet est tout à fait réalisable. Mais il est trop dispersé pour que nous puissions te recommander tel ou tel materiel.
Je pense que pour le noyau principal de ton projet, gestion eclairage+ph+temperature, des ressources existent déjà. Tu as dû le constater.

Dans un premier temps, il te faut établir la liste du materiel requis, en partant du noyau de ton projet et en l'étandant jusqu'à sa finalité. Peser le pour et le contre des differentes solutions (coût, facilité d'implantation, maintenance, etc), et choisir l'arduino/shield qui aura la faculté de gérer l'ensemble de ton projet.
Ce qui détermine géneralement le choix du materiel se situe au niveau de la connectique. Même si, au demeurant, elle semble presque illimitée avec une arduino mega par exemple, l'envergure d'un projet va quelquefois à contrario.

Je ne pense pas que quelqu'un te proposera une solution clé en main.

@+

Zoroastre.
752  International / Français / Re: Thermistance on: April 27, 2011, 05:54:50 am
Yep!

Tu as vu ce lien ?

http://arduino.cc/forum/index.php/topic,59304.0.html

L'equation y est donnée smiley-wink

Code:
Temperature in Kelvin = 1 / {A + B[ln(R)] + C[ln(R)]^3}

Quant à A, B et C : "A, B et C sont les coefficients de Steinhart–Hart (donnés par le constructeur ou obtenus expérimentalement avec trois mesures de référence) qui sont des constantes caractéristiques du composant valides à toute température;"

Je rajouterai ceci : http://fr.wikipedia.org/wiki/Relation_de_Steinhart-Hart

Bon calcul smiley-wink

@+

Zoroastre.
753  International / Français / Re: RS232 (PC) Arduino Mega (Serial1) on: April 26, 2011, 12:28:57 am
Yep!

Je ne vois pas de problème particulier sur ce que tu nous as fournis...Le souci doit se situer entre le pc et l'arduino, tu devrais déjà contrôler ce que l'arduino te repond !!!

Petite remarque également, le seriel pc n'est pas identique au niveau tension au seriel ttl de l'arduino. Comme tu ne détailles pas en amont, je suppose que tu utilises un max232 et un convertisseur de tension en sortie pc ???

@+

Zoroastre.
754  International / Français / Re: RS232 (PC) Arduino Mega (Serial1) on: April 25, 2011, 12:46:53 pm
Yep!

Tu as essayé en hexadecimal ???

@+

Zoroastre.
755  International / Français / Re: RS232 (PC) Arduino Mega (Serial1) on: April 23, 2011, 06:35:17 pm
Yep!

Un schema détaillé et un bout de code pourrait nous aider à comprendre ton problème.

@+

Zoroastre.
756  International / Français / Re: Algo de compression pour transmission de données ? on: April 15, 2011, 06:01:11 pm
Yep!

L'ideal serait une compression adaptive.

Celui-ci est un classique :

http://fr.wikipedia.org/wiki/Lempel-Ziv-Welch

@+

Zoroastre.
757  International / Français / Re: Enregistrer sur mon disque les T° de 5 sondes DS18B20 on: April 10, 2011, 05:09:49 pm
Yep!

Si tu es embêté avec tes ports usb qui changent tout le temps, tu peux ajouter à ton script quelque-chose comme çà :

Code:
locations=['/dev/ttyUSB0','/dev/ttyUSB1','/dev/ttyUSB2','/dev/ttyUSB3',
'/dev/ttyS0','/dev/ttyS1','/dev/ttyS2','/dev/ttyS3']

for device in locations:
    try:
  print "Trying...",device
  arduino = serial.Serial(device, 9600)
  break
    except:
  print "Failed to connect on",device

smiley-wink

@+

Zoroastre.
758  International / Français / Re: Enregistrer sur mon disque les T° de 5 sondes DS18B20 on: April 10, 2011, 05:02:10 pm
Yep!

Beau résultat !
Je trouve ta page de contrôle trés bien pensé, bravo smiley-wink

Je me demande de plus en plus si on ne devrait pas créer un site dédié domotique, tant cette technicité me semble avoir de l'avenir...

@+

Zoroastre.
759  International / Français / Re: Moteur pas a pas on: April 02, 2011, 09:23:10 am
Yep!

J'ai trouvé ça en esperant que cela puisse t'aider...

http://www.betasix.net/electronics/arduino/connecting-a-unipolar-stepper-to-arduino/

Les moteurs unipolaires se pilotent de la même manière que les bipolaires...à priori, ce code devrait fonctionner.

@+

Zoroastre.
760  International / Français / Re: Moteur pas a pas on: April 02, 2011, 08:09:27 am
Yep!

En suivant le lien ebay précité, un acheteur potentiel a posé cette question :

Quote
Q : Hello, At the output shaft, how many steps for one revolution? Thank you Art
R : Dear Art It's five steps for one revolution. Best regards Emartee

Ce qui signifie 5 pas pour une révolution sur l'arbre de sortie (=output shaft).

As-tu essayé dans le sens inverse, en diminuant ta valeur de pas ???

Je remarque aussi que le nombre de pas de ton moteur est de 64 et non 48 ???

Je précise que je n'ai jamais joué non plus avec ce type de moteur...



@+

Zoroastre.
761  International / Français / Re: Enregistrer sur mon disque les T° de 5 sondes DS18B20 on: March 28, 2011, 10:32:23 pm
Yep!

De mieux en mieux smiley-wink

Sous Debian, j'utilise la version 2.6 de Python.

Imaginons que tu veuilles enregistrer tes données dans un fichier texte.


Code:
import serial

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

file = open('logs.txt', 'w')
file.write('date : xx/xx/20xx, begin : xxhxx, end :')
file.write('\n')
file.close()

while 1:

    line = ser.readline()

    print line
    
    a = open('logs.txt', 'a')
    a.write(line[:-2] + '\n')
    a.close()

Pour créer le fichier texte, on utilise l'option 'w' pour write, l'option 'a' quant à elle, correspond à append.
Pour insérer des lignes dans notre fichier log, on appelle la variable contenant le fichier et on utilise a.write(quelquechose).

Il est possible également d'adjoindre la date à tout cela grace à la bibliothèque time de python, quelques exemples de manipulations ici :

Code:
#! /usr/bin/env python
# -*- coding:iso-8859-1 -*-

import time

tic = time.time() + time.daylight*3600
tics = '\377' + str(tic)[0:10]

print time.time()
print time.daylight
print tic
print time.strftime("%d%b%Y", time.gmtime())
print time.strftime("%d %b %Y %H:%M |", time.gmtime())
print time.strftime("%d %b %Y %H:%M |", time.localtime())

Ainsi avant d'écrire ton enregistrement dans le fichier log (que tu peux renommer en fonction de la date, jour, semaine, mois,etc), tu peux y adjoindre la date comme ceci :

Code:
fichier = strftime("%d%b%Y", gmtime()) + '.txt'
logs = strftime("%d %b %Y %H:%M |", gmtime()) + line[:-2] + '\n'
enregistre(fichier, logs)

Avec une petite fonction 'enregistre' qui prend en arguments : (le_nom_du_fichier, le_log_formaté)

Code:
def enregistre(fichier, logs) :
    try :
file = open(fichier, 'a')
file.write(logs)
file.close()
    except :
        pass

Le code complet :

Code:
#! /usr/bin/env python
# -*- coding:iso-8859-1 -*-

import serial, time

is_serial = 0

def comm1() :
    if serial.Serial('com1', 9600) >= 1 :
  return serial.Serial('com1', 9600)
#er = serial.Serial('/dev/ttyUSB0',9600)
    else :
  is_serial = 1

def enregistre(fichier, logs) :
    try :
file = open(fichier, 'a')
file.write(logs)
file.close()
    except :
        pass

def update_time() :
    time.sleep(0.1)
    pic = time.time() + time.daylight*3600
    pics = '\377' + str(pic)[0:10]
    ser.write(pics)

def program() :
    while 1 :
        if is_serial == 1 :
            break;
        else :
            log = ser.readline()
            if log[0:6] == "MSG001" :
                update_time()
                time.sleep(0.1)
                log = log + '_GET ' + data1

            fichier = strftime("%d%b%Y", gmtime()) + '.txt'
            logs = strftime("%d %b %Y %H:%M |", gmtime()) + log + '\n'

            enregistre(fichier, logs)

ser = comm1()
update_time()
program()

Je ne m'en rappelle plus trop, mais ne tiens pas compte de la fonction update_time(), elle me servait si je ne me trompe à mettre à jour l'horloge (Biblio Time) de l'Arduino. Plus à jour d'ailleurs...

Je te laisse faire ta soupe smiley-wink

Fais nous un petit retour pour la communauté !

@+

Zoroastre.
762  International / Français / Re: Enregistrer sur mon disque les T° de 5 sondes DS18B20 on: March 28, 2011, 11:04:29 am
Yep!

Pour ma part, je travaille sous linux Debian smiley-wink

Python + Python-serial, le code extremement simplifié pour lire des lignes provenant de l'arduino :

Code:
import serial

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

while 1:

    line = ser.readline()
    print line

Pour génerer les graphs, j'utilise GnuPlot. Je t'ai retrouvé le code de base qui pourrait te servir de referentiel.


Code:
# Access Arduino data from SheevaPlug
# Graph data and serve as web pages
#
# Copyright 2009 Ken Shirriff
# http://arcfn.com
import os
import serial
import threading
import time

from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

GNUPLOT_CMD = """\
set xdata time
set format x "%m/%d"
set xtic 86400
set timefmt "%m/%d/%Y %H:%M"
set terminal png xeeeeee x000000 size 500, 500
set output 'graph.png'
set xlabel "Date"
set ylabel "Light"
set title "Illumination"
plot "/tmp/data" using 1:3 title "" with lines
"""

GRAPH_HTML = """<html>
<head>
<link rel="stylesheet" type="text/css" href="/plug.css">
<title>Graph of light in my room</title>
</head>
<body>
<h1>Graph of light in my room</h1>
The following data is obtained by a SheevaPlug accessing an Arduino.
<img src="/graph.png">
<br>
Note: the light is in arbitrary units 0-1023
<p>
For more details see <a href="http://arcfn.com">http://arcfn.com</a>.
</body>
</html>"""

# The web server.  Supports /graph (page containing the graph)
# and static web pages
class MyHandler(SimpleHTTPRequestHandler):
  def do_GET(self):
    if self.path == '/graph':
      return self.graph()
    # Static file
    return SimpleHTTPRequestHandler.do_GET(self)

  # Generate and display the graph
  def graph(self):
    g = os.popen('gnuplot', 'w')
    print >>g, GNUPLOT_CMD
    self.send_response(200)
    self.send_header('Content-type', 'text/html')
    self.end_headers()
    self.wfile.write(GRAPH_HTML)

# Read data from Arduino serial port a line at a time
# and dump to file with timestamps
class Arduino(threading.Thread):
  def run(self):
    f = open('/tmp/data', 'a')
    # Port may vary from /dev/ttyUSB1
    self.ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=10)
    self.ser.flushInput()
    old_timestamp = None
    while 1:
      data = self.ser.readline().strip()
      if data:
        timestamp = time.strftime("%m/%d/%Y %H:%M", time.localtime())
        if timestamp != old_timestamp:
        # Only log once per minute
            print >>f, timestamp, data.strip()
            old_timestamp = timestamp
            f.flush()

def main():
  ard = Arduino()
  ard.start()
  server = HTTPServer(('', 80), MyHandler)
  print 'Starting server'
  server.serve_forever()

if __name__ == '__main__':
  main()

Python n'est pas un langage difficile à apprehender.

@+

Zoroastre.
763  International / Français / Re: Enregistrer sur mon disque les T° de 5 sondes DS18B20 on: March 28, 2011, 06:06:57 am
Yep!

Chez moi ça marche impéccable avec le langage de programation Python, je peux enregistrer, lire, écrire des données provenant de l'Arduino. Et ensuite créer des graphs, les intégrer à mon site web, etc.

Il est vrai que le php semble poser des problèmes dans certaines situations. Mais d'autres y sont arrivés...

Pas besoin de matos supplémentaire, tu vois bien que la communication se fait bien entre le pc et l'arduino, il te manque juste l'interfaçe adequat.

En regardant en arrière, est tu sûr de "tty.usbmodem5d11" ???

@+

Zoroastre.
764  International / Français / Re: Enregistrer sur mon disque les T° de 5 sondes DS18B20 on: March 27, 2011, 11:06:25 am
Yep!

Comme tu travailles sur Mac, tu devrais plutôt regarder le 3eme lien.

A savoir aussi, que certains langages, dont le php, ont besoins de bibliothèques, classes supplémentaires pour pouvoir communiquer avec des péripheriques séries. Pour php : PHP Serial class.

@+

Zoroastre.
765  International / Français / Re: Enregistrer sur mon disque les T° de 5 sondes DS18B20 on: March 27, 2011, 01:45:52 am
Yep!

Super! Effectivement, Chicore travaille en sens inverse du tien...

En cherchant vite fait, j'ai trouvé deux trois liens qui pouront te servir de base.

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1263875972
http://www.jfkreuter.com/?p=9
http://www.mydarkmaterials.co.uk/2008/11/30/interfacing-php-with-the-arduino/

@+

Zoroastre.
Pages: 1 ... 49 50 [51] 52 53 54