Show Posts
Pages: [1] 2
1  International / Français / Re: Communication en ip avec une centrale de commande on: February 15, 2013, 11:50:45 am
Ok je vais essayer je te remerci  smiley-wink
2  International / Français / Re: Communication en ip avec une centrale de commande on: February 13, 2013, 08:31:18 am
Bonjour,

Quote
Quote from: jehuty47 on February 12, 2013, 05:25:33 PM
Donc je voudrais comprendre comment fonctionne l'arduino dans ce cas, qu'est ce qui lui dit qu'elle est bien connectée à l'ip demandée?
Grâce au "3-Way Handshake" du protocole TCP (SYN,SYN-ACK,ACK) :
http://fr.wikipedia.org/wiki/Transmission_Control_Protocol#.C3.89tablissement_d.27une_connexion

Quote from: jehuty47 on February 12, 2013, 05:25:33 PM
Alors peut être que c'est ça qui fais planter ma carte... Je ne sais pas...
C'est pas ça qui pose problème, dés la connexion ouverte la carte peut envoyer autant de données quelle veut, si ça dépasse la taille du buffer interne du chipset ethernet ça écrase les anciennes données.

Merci pour les infos  smiley

Quote
- la shied ethernet -> officiel ou non ?

Elle est tout ce qui a de plus officiel

Quote
- le Ethernet.begin() -> IP static ou dynamique ? Avec ou sans Gateway ?
- la configuration réseau physique (câbles croisé, droit, ...)

C'est un ip static sans gateway, je ne pense pas que c'est un problème réseau vu que j'arrive à piloter d'autres appareils en ip avec la même commande.
Je ne sais plus quoi essayer d'autre...  smiley-sad
3  International / Français / Communication en ip avec une centrale de commande on: February 12, 2013, 12:25:33 pm
Bonjour,

J'aimerais savoir, si quelqu'un peut m'expliquer, comment fonctionne réellement l'arduino lorsque j'utilise cette commande:

Quote
  if ("EthernetClient".connect("IPAdress", "port")) {
    Serial.println("connected");
  }
  else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }

Je m'explique, j'essaie de me connecter à une centrale de commande Extron IPL250 pour la piloter en IP.
Seulement le problème est que l'arduino refuse de se connecter à la centrale avec cette commande alors que j'arrive à me connecter à d'autres appareils de la même manière.

Donc je voudrais comprendre comment fonctionne l'arduino dans ce cas, qu'est ce qui lui dit qu'elle est bien connectée à l'ip demandée?
Parce qu'à la différence des autres appareils auxquels je me suis connecté, la centrale envoie un message dès la connection, par exemple:

Quote
(retour à la ligne)
(c) Copyright 2009, Extron Electronics, IPL 250, V1.15, 60-1026-81
Tue, 12 Feb 2013 17:52:37

Alors peut être que c'est ça qui fais planter ma carte... Je ne sais pas...
4  International / Français / Re: [résolu rapidement] branchement des bornes + et - sur le jack ? on: December 29, 2012, 12:21:28 pm
J'suis tombé au bon moment  smiley-wink
5  International / Français / Re: question facile : branchement des bornes + et - sur le jack ? on: December 29, 2012, 12:06:11 pm
Le + est au centre  smiley-wink
6  International / Français / Re: Arduino Uno en 3.3V on: December 29, 2012, 12:03:47 pm
Hello

Tu peux utiliser un transistor pour envoyer le 3.3V de l'arduino en activant une sortie 5V

voici un exemple sur cette page tu as juste à remplacer le relais par ton BLE et le +12 par le 3.3V de l'arduino

http://sebarduino.blogspot.fr/2011/04/relais.html

Dans ce cas tu passes la sortie 13 en HIGH pour alimenter ton BLE en 3.3V et en LOW pour l'éteindre
7  International / Français / Re: OBD2 vers Arduino uno on: December 29, 2012, 11:28:47 am
Me revoila avec mon projet  smiley
Cependant j'ai encore un soucis...  smiley-confuse
Je vous explique:

Après avoir démonter mon boitier elm327 pour me brancher avant la partie "USB" je me suis rendu compte que plus rien ne marchait... (ce qui était à prévoir me direz vous)

Qu'à cela ne tienne j'ai du temps à perdre et je me suis donc attelé à fabriquer mon propre montage avec un vrai Elm327 et après avoir corrigé plusieurs erreurs du schéma que j'avais trouvé sur internet mon montage s'est enfin mis à fonctionner !!  smiley-grin
Du coup je programme mon arduino pour faire afficher les km/h et les tr/min sur un 'tit écran lcd juste pour commencer avec un code que j'ai trouvé sur le site de sparkfun qu'ils utilisent pour leur adaptateur "tout fait" mais le probleme est que ça me disait que je roule à plus de 200km/h à 15000 tr/min sans meme avoir branché la prise obd à ma voiture (et ça fait pareil lorsqu'elle est branchée voiture arrêtée ou en route).
J'ai essayé avec d'autres codes mais ça faisait pareil...

Qu'à cela ne tienne n°2 : J'achète l'adaptateur obd-ii-uart de chez sparfun, après avoir vu plusieurs vidéo de gens qui l'utilisaient et avec seulement 1Rx/Tx je me suis dis que cette foi tout devrait fonctionner parfaitement !

3 semaines plus tard... Je reçois mon petit colis rouge sparkfun  smiley-cool

Je le branche, reprends mon code sur le site sparkfun, et... toujours pareil... je reçois des valeurs toutes bêtes...
je ne sais plus quoi faire, si quelqu'un à une idée d'où viendrait le problème je suis preneur  smiley-wink

Pour info j'ai tout vérifier: mon câble, les codes arduino, mon arduino elle même et mon écran lcd mais tout est impeccable...

Voici le code pour ceux que ça intéresse :

Code:
#include <NewSoftSerial.h>

//Create an instance of the new soft serial library to control the serial LCD
//Note, digital pin 3 of the Arduino should be connected to Rx of the serial LCD.
NewSoftSerial lcd(2,3);

//This is a character buffer that will store the data from the serial port
char rxData[20];
char rxIndex=0;

//Variables to hold the speed and RPM data.
int vehicleSpeed=0;
int vehicleRPM=0;

void setup(){
  //Both the Serial LCD and the OBD-II-UART use 9600 bps.
  lcd.begin(9600);
  Serial.begin(9600);
 
  //Clear the old data from the LCD.
  lcd.print(254, BYTE);
  lcd.print(1, BYTE); 
 
  //Put the speed header on the first row.
  lcd.print("Speed: ");
  lcd.print(254, BYTE);
  //Put the RPM header on the second row.
  lcd.print(128+64, BYTE);
  lcd.print("RPM: ");
 
  //Wait for a little while before sending the reset command to the OBD-II-UART
  delay(1500);
  //Reset the OBD-II-UART
  Serial.println("ATZ");
  //Wait for a bit before starting to send commands after the reset.
  delay(2000);
 
  //Delete any data that may be in the serial port before we begin.
  Serial.flush();
}

void loop(){
  //Delete any data that may be in the serial port before we begin. 
  Serial.flush();
  //Set the cursor in the position where we want the speed data.
  lcd.print(254, BYTE);
  lcd.print(128+8, BYTE);
  //Clear out the old speed data, and reset the cursor position.
  lcd.print("        ");
  lcd.print(254, BYTE);
  lcd.print(128+8, BYTE);
  //Query the OBD-II-UART for the Vehicle Speed
  Serial.println("010D");
  //Get the response from the OBD-II-UART board. We get two responses
  //because the OBD-II-UART echoes the command that is sent.
  //We want the data in the second response.
  getResponse();
  getResponse();
  //Convert the string data to an integer
  vehicleSpeed = strtol(&rxData[6],0,16);
  //Print the speed data to the lcd
  lcd.print(vehicleSpeed);
  lcd.print(" km/h");
  delay(100);
 
  //Delete any data that may be left over in the serial port.
  Serial.flush();
  //Move the serial cursor to the position where we want the RPM data.
  lcd.print(254, BYTE);
  lcd.print(128 + 69, BYTE);
  //Clear the old RPM data, and then move the cursor position back.
  lcd.print("          ");
  lcd.print(254, BYTE);
  lcd.print(128+69, BYTE);

  //Query the OBD-II-UART for the Vehicle rpm
  Serial.println("010C");
  //Get the response from the OBD-II-UART board
  getResponse();
  getResponse();
  //Convert the string data to an integer
  //NOTE: RPM data is two bytes long, and delivered in 1/4 RPM from the OBD-II-UART
  vehicleRPM = ((strtol(&rxData[6],0,16)*256)+strtol(&rxData[9],0,16))/4;
  //Print the rpm data to the lcd
  lcd.print(vehicleRPM);
 
  //Give the OBD bus a rest
  delay(100);
 
}

void getResponse(void){
  char inChar=0;
  //Keep reading characters until we get a carriage return
  while(inChar != '\r'){
    //If a character comes in on the serial port, we need to act on it.
    if(Serial.available() > 0){
      //Start by checking if we've received the end of message character ('\r').
      if(Serial.peek() == '\r'){
        //Clear the Serial buffer
        inChar=Serial.read();
        //Put the end of string character on our data string
        rxData[rxIndex]='\0';
        //Reset the buffer index so that the next character goes back at the beginning of the string.
        rxIndex=0;
      }
      //If we didn't get the end of message character, just add the new character to the string.
      else{
        //Get the new character from the Serial port.
        inChar = Serial.read();
        //Add the new character to the string, and increment the index variable.
        rxData[rxIndex++]=inChar;
      }
    }
  }
}
8  International / Français / Re: OBD2 vers Arduino uno on: November 10, 2012, 04:48:57 pm
Ah j'savais bien qu'il y avait une arnaque dans cet USB...  smiley-confuse
Plus qu'à ouvrir le boitier et squeezer tout ça.

Je vous tiens aux news  smiley-wink

Merci pour ta reponse
9  International / Français / OBD2 vers Arduino uno on: November 10, 2012, 06:22:52 am
Bonjour,
Étant toujours, à la recherche d’expériences a mener je me suis maintenant attelé à l'OBD sur ma titine...
Voici mon projet, un adaptateur OBD/TTL relié à une arduino UNO qui retranscrit (pour l'exemple) le nombre de tr/min sur un moniteur video.

Jusque là, pas de soucis car j'ai trouver une librairie pour l'OBD et une pour la sortie video composite. Seulement, mon envie de vous faire partager mon projet terminée s'est vu coupée net au moment du premier test de mon adaptateur...

Je vous explique mon problème, j'ai acheté un adaptateur OBD/Usb. Je me suis renseigné sur internet et d'après ce que j'ai compris, ce n'est rien de plus qu'un convertisseur de tension avec un ELM327. Du coup (d'après mon raisonnement) vu que les tensions de l'arduino correspondent avec celles de l'usb, ça devait "surement" marché smiley-lol
Donc me voici lors du test avec mon pseudo raccord OBD/TTL relié à mon arduino qui envoie les infos par le port série à mon pc mais lorsque je branche le raccord à l'arduino, il m'envoie en permanence et toutes les 3 ou 4sec le message "atz" même s'il n'est pas connecté à la voiture...

De quoi pensez vous que cela puisse venir ?

Sinon pour les interessé voici le code (sans la fonction de sortie video):
Code:
#include <OBD.h>

COBD obd;

void setup()

  // start serial communication at the adapter defined baudrate
  Serial.begin(OBD_SERIAL_BAUDRATE); //38 400 Bauds
  // initiate OBD-II connection until success
  while (!obd.Init()); 
}

void loop()
{
  int value;
  if (obd.ReadSensor(PID_RPM, value)) {
    Serial.println(value);
  }
}

Voilou,

En espérant pouvoir un jour, vous présenter mon projet terminé et complet  smiley
10  International / Français / Re: Arduino Iphone interface graphique on: October 05, 2012, 02:36:34 pm
essaie avec tinywebserver, cette classe est très complète pour ce que tu veux faire mais parcontre pour ton webserver il te faudra programmer en html et java pour créer ta page ou tu auras la photo de ton meuble et tes boutons qui représentent les emplacements de tes objets
tu as un exemple dans cette librairie qui fait allumer une led en allant sur une page hébergée sur ton arduino, tu auras juste à faire quelques petits changements pour la mise en page de ta page web et pour rajouter des boutons, c'est comme ça que j'ai fait moi c'est très efficace mais je te conseil d'acheter une méga parce que les uno ne tiennent pas le coup point de vue RAM, chaque bouton prend beaucoup de ressources
11  International / Français / Re: Crash de l'arduino avec ardOSC on: September 17, 2012, 12:07:42 am
Hello,
J'ai trouvé d'où provient le soucis pour les crashs intempestifs  smiley
C'était en fait la micro SD que je me servait avant pour mon webserveur qui faisait planté  smiley-eek-blue

Si ça peut aider quelqu'un...
12  International / Français / Re: Crash de l'arduino avec ardOSC on: September 12, 2012, 01:46:06 am
Merci pour vos réponses cependant j'ai peut être mal compris mais mon code devrait ressemblé à ça en remplaçant "global_mes.flush()" par "while(global_mes.available()) { global_mes.read(); }"? Elle ne devrait pas plutôt se retrouver plus au-dessus ?

Code:
void func1(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val1 = (long)(value*255);
  //Serial.println(val1);
  switch (val1){
    case 0:
    digitalWrite(led1, LOW);
    break;
   
    case 255:
    digitalWrite(led1, HIGH);
    break;
  }
  while(global_mes.available()) { global_mes.read(); }
}

Et j'ai un autre soucis, lorsque je veux compiler le code la console me dit ça:

Code:
sketch_sep10a.cpp: In function 'void func1(OSCMessage*)':
sketch_sep10a:99: error: 'class OSCMessage' has no member named 'available'
sketch_sep10a:99: error: 'class OSCMessage' has no member named 'read'

J'ai aussi essayé de ne pas utiliser la méthode "flush()" vu que cela pourrait faire ralentir le code mais c'est pareil...
13  International / Français / Crash de l'arduino avec ardOSC on: September 10, 2012, 10:51:48 am
Bonjour,

Ayant découvert que l'on pouvait utiliser TouchOSC pour communiquer avec les cartes arduino, je me suis attelé à la tâche mais j'ai un petit soucis car ma carte crash lorsque j'utilise des faders sur mon interfaces.
Je pense qu'elle sature par l’afflux de données qu'elle reçoit mais je ne sais pas comment arranger ça.
J'ai mis une fonction flush mais ça ne fait rien, ça plante pareil donc si quelqu'un aurait une petite idée d'où cela pourrait provenir je suis preneur  smiley

Voici mon code pour ceux que ça interesse :

Code:
#include <SPI.h>
#include <Ethernet.h>

#include <ArdOSC.h>

byte myMac[] = { 0x90, 0xA2, 0xDA, 0x06, 0x00, 0xD2 };
byte myIp[]  = { 192, 168, 0, 36 };
int  serverPort  = 10000;

int destPort=12000;
// int ledPin =  12;

//int flag=0;

OSCServer server;
OSCClient client;
OSCMessage global_mes;
int led4 = 3;
int led2 = 5;
int led3 = 8;
int led1 = 9;
int led5 = 10;
int led6 = 14;


// initialize the stepper library on pins 8 through 11:


long val1 = 0;
long val2 = 0;
long val3 = 0;
long val4 = 0;
long val5 = 0;
long val6 = 0;
long val7 = 0;
long val8 = 0;
long val9 = 0;
long val10 = 0;




void setup(){
 
 Serial.begin(9600);
 Serial1.begin(9600);
 
 Ethernet.begin(myMac ,myIp);
 server.begin(serverPort);
 
 //set callback function & oscaddress
 server.addCallback("/2/red",&func1);
 server.addCallback("/1/green",&func2);
  server.addCallback("/2/blue",&func3);
   server.addCallback("/1/fpink",&func4);
    server.addCallback("/2/fred",&func5);
     server.addCallback("/1/pc1",&func6);
      server.addCallback("/1/pc2",&func7);
       server.addCallback("/1/autoset",&func8);
        server.addCallback("/1/LAN",&func9);
         server.addCallback("/1/mute",&func10);
 
 //pinMode(led6, OUTPUT);
 
 // pinMode(ledPin, OUTPUT); 
 // stepper.setSpeed(50);

 
}
 
void loop(){
 
  if(server.aviableCheck()>0){
 //    Serial.println("alive! ");
  }
  /*analogWrite(led1, val1);
  analogWrite(led2, val2);
  analogWrite(led3, val3);
  analogWrite(led4, val4);
  analogWrite(led5, val5);
  analogWrite(led6, val6);*/

 
}

//LED 9
void func1(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val1 = (long)(value*255);
  //Serial.println(val1);
  switch (val1){
    case 0:
    digitalWrite(led1, LOW);
    break;
   
    case 255:
    digitalWrite(led1, HIGH);
    break;
  }
  global_mes.flush();
}

//VP ON
void func2(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val2 = (long)(value*255);
  //Serial.println(val2);
  switch (val2){
    case 0:
    //Serial.println ("le bouton vert est désactivé");
    Serial1.println("PWR OFF");
    Serial1.println("PWR OFF");
    delay (500);
    Serial1.println("PWR OFF");
    Serial1.println("PWR OFF");
    delay (500);
    Serial1.println("PWR OFF");
    Serial1.println("PWR OFF");
    break;
   
    case 255:
    //Serial.println ("le bouton vert est activé");
    Serial1.println("PWR ON");
    Serial1.println("PWR ON");
    delay (500);
    Serial1.println("PWR ON");
    Serial1.println("PWR ON");
    delay (500);
    Serial1.println("PWR ON");
    Serial1.println("PWR ON");
    delay (500);
    Serial1.println("PWR ON");
    Serial1.println("PWR ON");
    break;
  }
  global_mes.flush();
}

//RELAIS LIGHT
void func3(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val3 = (long)(value*255);
  //Serial.println(val3);
  switch (val3){
    case 0:
    digitalWrite(led3, LOW);
    break;
   
    case 255:
    digitalWrite(led3, HIGH);
    break;
  }
  global_mes.flush();
}

//SON PC
void func4(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val4 = (long)(value*255);
  //Serial.println(val4);
  global_mes.flush();
}

//GRADA LIGHT
void func5(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val5 = (long)(value*255);
  //Serial.println(val5);
  global_mes.flush();
}

//PC1
void func6(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val6 = (long)(value*255);
  //Serial.println(val6);
  switch (val6){
    case 0:
    //Serial.println ("le bouton vert est désactivé");
    break;
   
    case 255:
    //Serial.println ("le bouton vert est activé");
    Serial1.println("SOURCE 11");
    Serial1.println("SOURCE 11");
    Serial1.println("SOURCE 11");
    Serial1.println("SOURCE 11");
    break;
  }
  global_mes.flush();
}

//PC2
void func7(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val7 = (long)(value*255);
  //Serial.println(val6);
  switch (val7){
    case 0:
    //Serial.println ("le bouton vert est désactivé");
    break;
   
    case 255:
    //Serial.println ("le bouton vert est activé");
    Serial1.println("SOURCE 21");
    Serial1.println("SOURCE 21");
    Serial1.println("SOURCE 21");
    Serial1.println("SOURCE 21");
    break;
  }
  global_mes.flush();
}

//AUTOSET
void func8(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val8 = (long)(value*255);
  //Serial.println(val6);
  switch (val8){
    case 0:
    //Serial.println ("le bouton vert est désactivé");
    break;
   
    case 255:
    //Serial.println ("le bouton vert est activé");
    Serial1.println("KEY 4A");
    Serial1.println("KEY 4A");
    Serial1.println("KEY 4A");
    Serial1.println("KEY 4A");
    break;
  }
  global_mes.flush();
}

//LAN
void func9(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val9 = (long)(value*255);
  //Serial.println(val6);
  switch (val9){
    case 0:
    //Serial.println ("le bouton vert est désactivé");
    break;
   
    case 255:
    //Serial.println ("le bouton vert est activé");
    Serial1.println("SOURCE 50");
    Serial1.println("SOURCE 50");
    Serial1.println("SOURCE 50");
    Serial1.println("SOURCE 50");
    break;
  }
  global_mes.flush();
}

//MUTE
void func10(OSCMessage *_mes){
  float value = _mes->getArgFloat(0);
  val10 = (long)(value*255);
  //Serial.println(val6);
  switch (val10){
    case 0:
    //Serial.println ("le bouton vert est désactivé");
    Serial1.println("MUTE OFF");
    Serial1.println("MUTE OFF");
    Serial1.println("MUTE OFF");
    Serial1.println("MUTE OFF");
    break;
   
    case 255:
    //Serial.println ("le bouton vert est activé");
    Serial1.println("MUTE ON");
    Serial1.println("MUTE ON");
    Serial1.println("MUTE ON");
    Serial1.println("MUTE ON");
    break;
  }
  global_mes.flush();
}
14  International / Français / Re: Possibilité de créer un selecteur USB 4 vers 1 ? on: July 06, 2012, 12:53:57 am
Merci pour vos réponses  smiley
Je pense que j'opterai pour les relais vu que je ne suis pas trop balèze en électronique et donc je n'ai rien pigé au datasheet du USB2513B-AEZG (on se moque pas  smiley-razz)

En tout cas merci
15  International / Français / Possibilité de créer un selecteur USB 4 vers 1 ? on: July 05, 2012, 12:02:25 pm
Bonjour,

Tout étant dans le titre je voulais me renseigner pour créer un sélecteur USB pilotable en IR

Je m'explique, j'ai une tablette pour 4 pc et j'ai besoin de switcher quel pc je veux piloter avec ce périphérique à l'aide de codes IR

Pour la partie IR c'est pas un problème je saurais gérer mais c'est la partie USB qui me fait du soucis, je n'ai pas encore commencer le code mais je pense que ça doit tourner un peu comme le serial

A mon avis ça devrait ressembler à ça:

Tu reçois "ça" sur le Rx1 donc tu envoies "ça" sur Tx3 si tu reçois 1111 en IR (et vice versa pour les retours d'informations)

Cela vous paraît-il possible ?
Pages: [1] 2