Show Posts
Pages: [1]
1  International / Français / Re: J'ai rien compris on: February 16, 2013, 09:37:46 am
Yo,

Je ne fais pas de pub et il semble que le règlement l'interdit smiley
Je t'ai transmit un message en privé.

Bonne journée,
2  International / Français / Re: communication avec un programme c on: February 16, 2013, 09:32:50 am
Vient de voir ton deuxième poste.

J'ai u le même problème en bash ... Je me retrouve avec un fichier de résultat en format "windows" avec des caractères de fin ligne comme ^M
juste changer le transcodage du résultat et je n'ai plus u de problème.


Donc oublie mes questions smiley vue que tu as trouver la solution toi même.
Bonne journée,
3  International / Français / Re: communication avec un programme c on: February 16, 2013, 09:29:07 am
Salut,

Perso, j'ai écris un script en bash qui va chercher les données sur le port COM.

En outre pour évité les problèmes de chariot et de config port COM, j'ai installer ser2net qui permet d'établir une communication TELNET/SSH sur un port locale(ou réseau) vers ton port COM.

Exemple en bash :
Tu déclare ta commande, évidement ici c'est un exemple, il est préférable de taper un case dans ton script.

Code:
$CHECK=T

Tu encapsule ta commande vers l'arduino et ensuite tu récupère le résultat.

Code:
{ sleep 2 ; echo "$CHECK"; sleep 3;} | telnet 127.0.0.1 > resultat.tmp

Il est préférable d'installer dos2unix pour changer le transcodage du fichier surtout en mode telnet.

Quote
dos2unix resultat.tmp

Du côtés arduino :
Code:
void setup() {
  Serial.begin(9600);
  if (Serial.available() > 0) {
    int command = Serial.read();
    Serial.println("Arduino Hello, please command ?");
    Serial.println("Ready !");
    switch(command) {
    case 'T':
      {
        Serial.println("Hello Word TEST ");
        setup();
      }
     default:
      Serial.println("Error");
      Serial.println("Unreconize command");
      setup();
    }
  }
}

En espérant que j'ai pu t'apporter quelques idées.
Quand tu indique que cela ne fonctionne pas soucis linux, tu as plus de détails ?
Tu arrive à le compiler et il ne fonctionne pas ?

Bonne journée,
 
4  International / Le bar / Re: Presentez vous on: February 16, 2013, 04:59:08 am
Bonjour,

Je me présente Onekid0 alias Sdnatcher. J'ai la 30ene d'années et je vie dans un petit pays la Belgique.
Je travaille dans le domaine IT et je n'ai pas honte de dire que je suis un "Geek". Je travaille comme Ingénieur IT et je gère des serveurs et une multitude de réseau, router ... BGP, routage, firewall, vpn sont mes domaines de prédilection. (attaque et sécurité) Fail2ban, proxy, reversproxy .... loadbalancing, failover ...

Dans mon bureau perso, je bricole sur Android mais aussi les récepteurs satellite Linux. 
Je me suis pencher sur l'Arduino pour un projet concret comme beaucoup d'entre vous.

J'ai de bonne base sur les systèmes embarqués Linux/FreeBSD sur ALIX, WRAP et aujourd'hui Raspberry Pi.
J'ai un bon backrounds en shell bash et j'aime ça donc je me suis rapprocher aussi du PHP et du Python. Enfin aujourd'hui, je découvre le C++ et ça me plait. Même si a chaque fois je me trompe avec ces satanés échappements qui change entre le Shell, le PHP et le C++ :-)

Bref, vous l’auriez compris j'aime bricolé et apprendre. Je n'ai aucun backrounds scolaire en programmation ou analyse mais j'assimile vite étant donnée que j'ai u mon premier ordinateur à l'age de 12ans (CPC Schneider).

Toujours près à donnée un coup de main, je suis à votre disposition.

Bonne journée,

5  International / Français / Re: J'ai rien compris on: February 16, 2013, 04:27:45 am
Salut,

J'ai été dans la même situation mais bon, il faut quand même comprendre quelques "base" en électronique et surtout en programmation.
Si tu sais ce que c'est une fonction, une variable ... alors déjà tu auras de quoi t'occuper.  Enfin, il est plus facile de t'aider sur un sujet ou problème en particulier.

Le kit dépends de tes projets et ton budget !
Après, il faut t'accrocher et lire, lire et encore lire smiley çac aide et ça permet de faire ces premières armes en Arduino.
Commence par des applications simple (Blink led ...) cela va te permettre de bien assimilé le langage.

Enfin, bon courage et surtout bonne amusement smiley


6  International / Français / Re: Cablage d'un hygromètre on: February 16, 2013, 04:20:01 am
Bonjour,

Ton sujet m'intéresse car je calcule aussi l’hydrométrie dans le cadre de mon projet.
J'utilise des capteurs de type DHT11 et DHT21.

Perso, je n'ai pas rencontrés touts ces problèmes, j'utilise les librairies DHT et cela fonctionne plutôt bien.

Voici le bout de code que j'utilise pour déterminer l'hydrométrie :

Code:
#include <dht11.h>

//Celsius to Fahrenheit conversion
double Fahrenheit(double celsius)
{
  return 1.8 * celsius + 32;
}

//Celsius to Kelvin conversion
double Kelvin(double celsius)
{
  return celsius + 273.15;
}

// dewPoint function NOAA
// reference: http://wahiduddin.net/calc/density_algorithms.htm
double dewPoint(double celsius, double humidity)
{
  double A0= 373.15/(273.15 + celsius);
  double SUM = -7.90298 * (A0-1);
  SUM += 5.02808 * log10(A0);
  SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
  SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
  SUM += log10(1013.246);
  double VP = pow(10, SUM-3) * humidity;
  double T = log(VP/0.61078);   // temp var
  return (241.88 * T) / (17.558-T);
}

// delta max = 0.6544 wrt dewPoint()
// 5x faster than dewPoint()
// reference: http://en.wikipedia.org/wiki/Dew_point
double dewPointFast(double celsius, double humidity)
{
  double a = 17.271;
  double b = 237.7;
  double temp = (a * celsius) / (b + celsius) + log(humidity/100);
  double Td = (b * temp) / (a - temp);
  return Td;
}

Bonne journée,
OnKid0

La Métrics box :
http://www.thednsstuff.com/metricsbox/presentationmetricsbox.html
7  International / Réalisations et Projets Finis / Re: [Info] K8000 velleman et arduino uno on: February 01, 2013, 09:27:24 pm
Bonjours à tous,

Très sympathique le projet, je ne me suis pas pencher plus que cela sur le code.
Cependant, j'ai aussi un projet "dom" en tête et je n'ai pas opté pour la couche ethernet de l'arduino ...

Simple ... c'est un peu limité sus la couche HTTP.
Une piste serais de faire comme moi smiley

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

Pour ma part, je récupère les valeurs sans problème.
Juste une piste qui contourne le problème ...

Merci pour tes infos,

8  International / Réalisations et Projets Finis / Avant la domotique, des bonnes mesures. on: February 01, 2013, 09:20:50 pm
Metricsbox

 

Bonjour,

Je suis vraiment tout frais en Arduino ... Et même en C++. Bref, comme beaucoup lu sur la toile ... Je me penche sérieusement sur l'Arduino afin de un outils d’analyser , alerté et qui émet des actions.

Après mur réflexion, je me suis lancer dans un petit projet qui consiste à d'abords disposer d'un système de mesure adaptable à chaque situation (domotique, agroalimentaire ...).

J'ai fais qu'un an d'électronique pendant mes classes et je suis totalement autodidacte. Je vous demande donc un peu d'indulgence smiley De plus, je réfléchie à la réalisation de celui-ci depuis peu de temps et je me suis mis au travaux pratique il y a un mois .... J'avoue être dans le mauvais sujet mais à bien regarder le projet est déjà opérationnel (il fonctionne).

Ce projet n'est pas encore totalement finaliser mais je me permet de vous faire partager afin de voir vos réactions et savoir si je suis sur la bonne voix.
Le projet fonctionne mais je n'ai pas encore finaliser le modèle. Il me reste encore quelques capteur à ajouter et mettre le tout dans une boite au propre.

Vous pourrez constater que non seulement nous récupérons les informations de la carte mais en plus il est possible de configurer ou interagir avec celle-ci via une page web.

Contexte :

A la base, comme peut être certain d'entre vous, j'essaye de trouver des solutions domotique pour rendre ma consommation plus écologique et économique. J'ai fait un grand tours d'horizon et je me suis lancer dans ce projet avec d'abord comme objectif d’obtenir des données cohérentes en tout temps.

Même si conceptuellement et techniquement, il peut déjà interagir sous forme de contrôle, je concentre mon travail sur la partie mesure et traitement de ceux-ci ...

Enfin, l'originalité du projet consiste à disposer d'une boite paramétrables avec 10 canaux sur le quel peut venir ce greffé plusieurs type de module :

6 Analogiques / Numériques
4 Uniquement numérique


Dans ces différents types de modules on retrouve :
Module 1 x relay
Module 2 x relay
Module de température et d’hydrométrie.
Module de détection de fumé ou de gas type butane, propane.
Module de détection infiltration d'eau.
Module de détection de lumière.
....
En gros tout module qui peut fonctionner avec un pin Analog ou une pin digitale ou avec les deux en même temps.

Je me base sur :
1 arduino nano
1 Raspberry Pi
1 SDCard 8g avec Rasbian (debian for Raspberry)

J'ai trouver une petite astuce pour communiquer avec le port serie en bash ou en php ... J'ai installer ser2net qui permet d'émuler une connexion telnet sur l'interface locale de la Raspberry.  Cela devient plus simple ...

Enfin comme préciser plus haut, il s'agit d'un projet multifonction, il peut donc tant pilotés 10 capteurs de températures ou 6 relais, 2 capteurs de lumière et un capteur d'infiltration d'eau par exemple.

Pour ne pas surcharger le poste, voici un lien vers une page vite fait de présentation.
De plus, je n'arrive pas à poster les liens videos ... Sur la page travaux pratique, il y a deux videos pour ce donnée une idée.


http://www.thednsstuff.com/metricsbox/presentationmetricsbox.html
9  International / Français / Re: J'ai une pt question au sujet de l'usage de "case/switch" on: January 27, 2013, 01:12:31 pm
Super,

merci en effet, il attends, mais c'est totalement ce que je cherche.

Bonne soirée,


10  International / Français / Re: J'ai une pt question au sujet de l'usage de "case/switch" on: January 27, 2013, 06:41:16 am
En effet, l'ajout du while à résolu le problème :-)
Cependant avec quelques effet toujours aussi "strange" il n'attends pas la seconde valeur ... va trop vite.
Du coup, j'ai ajouter des delay() et relancer le serial ... du coup il y a moyen de parser manuellement ou via script la commande.
A l'occurence, DN1 pour Fonction D mode numérique sur channel 1 (signifie pin N1).

Code:
int incomingByte;
int incomingByted;
int incomingBytec;
int incomingByteca;
int incomingBytecn;
void loop()
{

while (Serial.available() > 0)  {
    Serial.println("H or h For Help command");
    Serial.println("Ready !");
    incomingByte = Serial.read();
    switch (incomingByte) {
case 'd':  
case 'D':
        delay(1000);
        Serial.begin(9600);
while (Serial.available() > 0)  {
Serial.print("DHT Fonction selected");
Serial.println(" -Select Channel Type");
incomingByted = Serial.read();
switch (incomingByted) {

case 'a':  
case 'A':
delay(3000);
            Serial.begin(9600);
Serial.print("D Analogique Fonction selected");
Serial.println(" - Select Channel number");
while (Serial.available() > 0)  {
incomingByteca = Serial.read();
switch (incomingByteca) {
case '1':
MaFonctionD(A1);
break;

case '2':
MaFonctionDA2);
break;

case '3':
MaFonctionD(A3);
break;

case '4':
MaFonctionD(A4);
break;

case '5':
MaFonctionD(A5);
break;

case '6':
MaFonctionD(A6);
break;

case '7':
MaFonctionD(A7);
break;

default:
Serial.println("Error Please select analogique channel 1 to 7");
break;
}
break;
}
break;

case 'n':  
case 'N':
delay(1000);
            Serial.begin(9600);
Serial.print("D Numerique Fonction selected");
Serial.println(" - Select Channel number");
while (Serial.available() > 0)  {
incomingBytecn = Serial.read();
switch (incomingBytecn) {
case '1':
MaFonctionD(30);
break;
case '2':
MaFonctionD(31);
break;
case '3':
MaFonctionD(3);
case '4':
MaFonctionD(4);
break;
case '5':
MaFonctionD(5);
break;
case '6':
MaFonctionD(6);
break;
case '7':
MaFonctionD(7);
break;
default:
Serial.println("Error Please select Numeric channel 1 to 7");
break;
}
break;
}
break;

default:
Serial.println(incomingByted);
Serial.println("Error please select N fo Numeric or A for analogique");
break;

}
break;
}
break;        

    case 'v':
case 'V':
      Serial.println(incomingByte);
      Serial.println("Nano - 1.0");
      break;

    case 'o':
    case 'O':
      Serial.println(incomingByte);
      OKLED();
      break;

    case 'n':
    case 'N':
      Serial.println(incomingByte);
      NOOKLED();
      break;

  case 'h':    
    case 'H':
      Serial.println(incomingByte);
      Serial.println("Internal Fonction:");  
      Serial.println("H Help");
      Serial.println("V Version");
      Serial.println("O Led Vert OK On");
      Serial.println("N Led Rouge ON");
      Serial.println("D Fonction menu");
    break;
default:
      Serial.println(incomingByte);
      Serial.print("Error:");
      Serial.println("Unreconize command");
      Serial.println("For all command please command H");
    break;
    }
  }
}  

Peut être qu'il y a plus simple ou plus propre ...
Merci et bon dimanche,
11  International / Français / Re: J'ai une pt question au sujet de l'usage de "case/switch" on: January 27, 2013, 05:22:24 am
Merci pour vos réponses réactive,

Etant dimanche, je me plonge sur vos solutions smiley
Concernant le break, oublier sur le case "D fonction", j'ai le même résultat avec et sans ... (viens d'essayer pour le pas dire de bêtises)

Donc, j'ai bien :
Quand j'appuis sur D, il semble rentrée dans le swtich car je vois :
Code:
Serial.print("D Fonction selected");
Serial.println(" - Select Channel Type ?");
Mais alors, il ne marque pas l'arrêt pour attendre le Serial.read(), il passe directement au default :
Code:
Serial.println("Error please select N fo Numeric or A for analogique");
Quand j'appuis sur N, il exectue N du premier switch ...

 
Code:
   case 'n':
  case 'N':
     Serial.println(incomingByte);
      NOOKLED();
      break;

Ce qui me laisse pensez, qu'il passe le Serial.read() du Case "D fonction" exécute le "default" et le break dans le default renvois vers le switch principal incomingByte ... Sauf quand supprimant le break dans default, il se rend quand même au swtich principal sur incomingBute ... comprend plus rien...

J'ai cru lire sur internet qu'il était "utile" de ne pas mettre certain break dans le cadre de case imbriqué.

Concernant la réponse de Fdunews, merci et en effet, je vais regarder maintenant pour ajouter un while  car je confirme qu'il n'attends pas de recevoir le second switch. Pour dé-bug, j'ai fait un print des valeurs et j’obtiens : -1 

Je reviens ...
Bonne journée et merci pour vos réponses,


12  International / Français / J'ai une pt question au sujet de l'usage de "case/switch" on: January 26, 2013, 07:19:06 am
Bonjour la communauté,

Je suis tout nouveau .... Grâce à vos écris  XDje me débrouille jusqu'ici très bien ...  
Mais je cale avec les subtilités ou limites de l'usage de "case".

L'usage d'un simple case fonctionne parfaitement, maintenant, j'essaye de les imbriqués.
Le soucis, il semble qu'il rentre bien dans la sélection mais il break et reviens à l'attente de l'entrée principal.

Pour mieux comprendre :

Code:
int incomingByte;
int incomingByted;
int incomingBytec;
int incomingByteca;
int incomingBytecn;
void loop()
{
while (Serial.available() > 0)  {
    Serial.println("H or h For Help command");
    Serial.println("Ready !");
    incomingByte = Serial.read();
    switch (incomingByte) {
case 'd':  
case 'D':
Serial.print("D Fonction selected");
Serial.println(" - Select Channel Type ?");
incomingByted = Serial.read();
switch (incomingByted) {
case 'a':  
case 'A':
Serial.print("Analogique type selected");
Serial.println(" - Select Channel number");
incomingByteca = Serial.read();
switch (incomingByteca) {
case '1':
break;
// MaFonctionD(A1);
case '2':
break;
// MaFonctionD(A2);
case '3':
break;
// MaFonctionD(A3);
case '4':
break;
// MaFonctionD(A4);
case '5':
break;
// MaFonctionD(A5);
case '6':
break;
// MaFonctionD(A6);
case '7':
break;
// MaFonctionD(A7);
default:
Serial.println("Error Please select analogique channel 1 to 7");
break;
}


case 'n':  
case 'N':
delay(100);
Serial.print("Numerique Type selected");
Serial.println(" - Select Channel number");
incomingBytecn = Serial.read();
switch (incomingBytecn) {
case '1':
MaFonctionD(30);
break;
case '2':
MaFonctionD(31);
break;
case '3':
// MaFonctionD(3);
break;
case '4':
// MaFonctionD(4);
break;
case '5':
// MaFonctionD(5);
break;
case '6':
// // MaFonctionD(6);
break;
case '7':
// MaFonctionD(7);
break;
default:
Serial.println("Error Please select Numeric channel 1 to 7");
break;
}

default:
Serial.println(incomingByted);
Serial.println("Error please select N fo Numeric or A for analogique");
break;    
}
break;    

    case 'v':
case 'V':
      Serial.println(incomingByte);
      Serial.println("Nano - 1.0");
      break;

    case 'o':
    case 'O':
      Serial.println(incomingByte);
      OKLED();
      break;

    case 'n':
    case 'N':
      Serial.println(incomingByte);
      NOOKLED();
      break;

  case 'h':    
    case 'H':
      Serial.println(incomingByte);
      Serial.println("Internal Fonction:");  
      Serial.println("H Help");
      Serial.println("V Version");
      Serial.println("O Led Vert OK On");
      Serial.println("N Led Rouge ON");
      Serial.println("D Fonction menu");
    break;
default:
      Serial.println(incomingByte);
      Serial.print("Error:");
      Serial.println("Unreconize command");
      Serial.println("For all command please command H");
    break;
    }
  }
}    

Quand je presse O ou N pas de soucis, il s’exécute sans problème. Par contre quand je sélectionne D c'est comme si il passait       
Code:
incomingByted = Serial.read();
 Il affiche donc le message d'erreur par défaut mais en plus il break et renvois vers le case supérieur ...
Code:
Serial.println("Error please select N fo Numeric or A for analogique");

D'ailleurs, je n'arrive jamais à
Code:
switch (incomingByteca)
...

J'ai essayer en retirant les break des sous combinaisons sans résultat et si je retire tout les breaks pas mieux. ...  J'ai tenter plusieurs combinaisons avec ou sans break, mais le résultat n'est pas celui espérer !

Un Arduineur pour peut être m'éclairer ?
Ou je devrait peut être mixé if dans un case ?

Merci pour votre aide,
Bonne journée,
Pages: [1]