Show Posts
Pages: 1 ... 49 50 [51] 52 53 54
751  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.
752  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.
753  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.
754  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.
755  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.
756  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.
757  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.
758  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.
759  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.
760  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.
761  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.
762  International / Français / Re: Enregistrer sur mon disque les T° de 5 sondes DS18B20 on: March 26, 2011, 02:56:03 pm
Yep!

Je te confirme que cela est tout à fait possible. Soit tu passes par le shell, soit par l'intermédiaire d'un script en python, php, etc...

Si personne ne daigne te répondre, c'est que les réponses existent déjà au fil du forum...FAUT CHERCHER UN PEU MAN !!!

Par exemple, ce topic situé à deux rue du tiens... http://arduino.cc/forum/index.php/topic,55784.0.html
évoque la communication entre un pc et une Arduino.

Du côté de l'arduino, il s'agit des comandes Serial. Le port USB en est un.

@+

Zoroastre.
763  International / Français / Re: Ecran tactile on: March 25, 2011, 04:51:25 am
Yep!

Le problème est comme je l'ai indiqué précedement se situe au niveau de la connectique, une dalle tactile occupe 4 ports analogiques, un ecran confortable, entre 10 et 16 ports (aussi bien digital et analogique).
Sur des cartes Uno ou duemilanove, il te resterait peu de place pour envisager une extension possible ou même une communication vers l'exterieur.
Il te faut faire tout d'abord le bilan des connectiques indispensables en fonction des ecrans tactiles et cartes microcontroleurs.

Pour mon projet, je possedais déjà une arduino mega et une dueminalove. Sur cette dernière, presque toutes les connectiques sont utilisées me laissant peu d'organes supplémentaires à brancher. 6 analogiques et 14 digitales, réduites à 13 en utilisant une alimentation externes, çà fait encore beaucoup sachant que la partie tactile n'est pas encore câblée...(+4)

C'est la raison pour laquelle il me semble peu concevable d'envisager xbee+écran tactile sans une arduino mega au minimum...(Rappel sur l'arduino mega : http://arduino.cc/en/Main/ArduinoBoardMega )

Pour information, tu peux trouvé des arduino mega 1280 pour une 30ène d'euros sur ebay (favoriser l'Angleterre pour la qualité)

@+

Zoroastre.
764  International / Français / Re: Ecran tactile on: March 25, 2011, 01:00:06 am
Yep!

J'ai moi même fait l'acquisition d'un ecran tactile à base de s1d13700 (voir le lien e-bay de B@tto). Il me permet d'afficher des temperatures mesurées via des sondes Dallas. Il est necessaire pour un projet conséquent de posséder à minima une arduino mega. Le problème principal ne se situe pas vraiment au niveau programmation (quoique!) mais plutôt au niveau connectique...Comme tu ne détailles pas vraiment ton projet et les données que tu désires afficher, il est difficile de te conseiller.

Les afficheurs qui semblent être les mieux supportés sont à base de KS0108, et rien ne t'empêche d'y adjoindre ensuite une dalle tactile genre nintendo ds.

Pour revenir à mon afficheur, il existe une bibliothèque : http://www.cafelogic.com/download/s1d13700_arduino_documentation/

Il est cependant indispensable afin d'y afficher des graphiques ou des caractères à taille "humaine", de manipuler certaines ressources de programmations...ç'est là où je bloque aujourd'hui.

@+

Zoroastre.
765  Forum 2005-2010 (read only) / Français / Re: Dancefloor Disco on: January 18, 2011, 03:59:22 pm
Yep!

Wahou !!! 1024 leds...c'est relativement impressionant !

Comment se passe la communication avec les drivers ??? Chaque led a une coordonnée de type x,y, est-ce que les équations sont de type des afficheurs graphiques ? Chaque driver doit avoir également son id, comment gérer un tel projet ?

La partie connectique ok, mais qu'en ait-il de la programmation et des temps de réponse ? D'autres solutions que l'I2C ?

Cà m'interresse !!!

@+

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