Show Posts
Pages: 1 [2] 3 4 ... 51
16  International / Français / Re: Communication série entre arduino et un programme java on: July 20, 2012, 02:02:57 pm
Apparemment je dirais que tu as un problème dans la configuration, dans les propriétés du projet tu déclares en point d'entrée la classe Main donc celui qui contiendra la méthode main (celle où tu instancies et manipule les méthodes de tes classes et ou tu joue avec ton entrée et sortie console, etc).
Hors apparemment tu l'as renommé, déplacé manuellement ou autre sans spécifié ce ou ses changements dans ta config (qui contient toute les donnée utile à la compilation ) donc normale que :

Code:
java.lang.NoClassDefFoundError: Main
et
Could not find the main class: Main. Program will exit.

! ce sont des informations d'erreur suite à la tentative de compilation d'après la config, donc si tu déclare dans cette config que ton point d'entrée (où ce situe la méthode main) est le fichier class Main et qu'il n'existe pas (puisque renommé) normal qu'il te dise qu'il ne le trouve pas lors de la compil ... et même si tu as la méthode main dans ta class SerialTest il l'ignore lui puisque non spécifié dans la config de compilation (le manifest doit être erroné également) ...
17  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: July 17, 2012, 11:57:22 am
Je vais étudier cela.
Par contre j'ai oublié de dire que j'aimerai aussi réaliser des courbes de température, donc dans ce cas j'ai pas le choix je dois passer par une BDD Sql ,l'arduino devra envoyé toute les 30 mn les infos dans la BDD en plus d'écouter d'éventuelle commande provenant de ma gestion des lampes.Comment gérer cela ? par TIMER peut etre?

Ici ce que tu peux faire c'est un peux l'inverse de la partie cmd, la requête se fera côté arduino vers une page php et non plus du navigateur à la page php.

Un post récent traitait des requête a partir d'un arduino, sauf que c'était pour gérer des mails ici toi ce sera une bdd.
http://arduino.cc/forum/index.php/topic,111896.0.html

Par contre il serait bien que ces données soit réalisé a heure fixe ex 13h 13h30 ...  c'est plus joli.
Suis je obligé de rajouter sur l'arduino un module RTC ou bien récupérer l'heure par d'autre moyen? et comment m'y prendre?

Pour l'heure etc, le module rtc reste quand même ce qu'il y a de plus fiable, maintenant si c'est juste pour inscription de l'heure de relevé de temp tu peux te servir du timestamp php au moment de l'inscription en bdd.
18  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: July 15, 2012, 03:24:42 pm
Par la suite je rajouterai des affichages des températures et taux d'humidité; je ne sais pas encore comment m'y prendre pour afficher les infos en temps réel

Pour les relevés de temps ou autres, j'envoyais une commande à intervalle régulier et je retournais via l'arduino les données en retour à la commande (requête).
Pour l'inscription en base de données le mieux c'est de parser au niveau socket php après récupération des données de retour "$buffer".
Niveau temps réel la vrai solution c'est les websocket je pense, parce qu'ici il y a une certaine latence à cause des différents traitements.  (enfin pour tout ce qui est relevé genre temp toute les minutes mini via ajax devrait être suffisamment raisonnable).
J'en reparle ici http://arduino.cc/forum/index.php/topic,80422.msg732055.html#msg732055.

Code:
function init()
{
setInterval("getStatut()", 60000);
}

function getStatut()
{
  var dataJSon = {"0":0x02,"1":0x12,"2":0x12 };
  send(dataJSon);
}

19  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: July 15, 2012, 12:00:53 pm
je cherche à comprendre le problème du Handshake car jusqu'a présent, tout semble fonctionner "je croise les doigts  smiley-lol"

Tu as testé la version websocket ou juste les simple requêtes http comme tu l'as mis plus haut ?  smiley-mr-green

Code:
jQuery(function()
    {
        jQuery( "#pwm" ).slider({ max: 255 },{ value: 0 },{step : 5}); //création du slider sur la balise id="pwm"
                                                                       //sa valeur maximum sera de 255
                                                                       //la valeur 0 par défaut au lancement de la page
                                                                       //pas minimum de valeur 5 entre deux déplacements du slider
    
        jQuery( "#pwm" ).delay(100).bind( "slide", function() //la fonction sera appelé à chaque déplacement du slider(delay de 100ms mini entre deux appels)
        {
            var value = jQuery( "#pwm" ).slider( "option", "value" ); //on récupère la valeur actuel du slider
            analogWrite(0x09, value, 0x00); //appel de la fonction analogWrite avec en param. la valeur (value) actuel du slider (0x00 pas de ack demandé pour une question de perf entre deux requêtes)        
        });
        
        jQuery( "#pwm" ).delay(500).bind( "slidestop", function() //au relâchement (souris) du slider (delay mini de 500 entre deux appel de la fonction)
        {
            var value = jQuery( "#pwm" ).slider( "option", "value" ); //on récupère la valeur actuel du slider
             analogWrite(0x09, value, 0x01); //appel de la fonction analogWrite avec en param. la valeur (value) actuel du slider  (0x01 ack demandé)
        });
    
    });

Toute les options.
http://docs.jquery.com/UI/Slider

Edit: avait oublier de mettre le lien  smiley-sweat
20  International / Français / Re: [Serial] Débit maximum compatible avec PC/OS on: July 12, 2012, 12:42:20 pm
Yop Yop,
Juste aux cas ou,pour le crc16 la lib avr est déjà pourvu de fonctions optimisés pour nos µc, je l'utilise sans problème dans mon projet.
http://www.nongnu.org/avr-libc/user-manual/group__util__crc.html#ga95371c87f25b0a2497d9cba13190847f

Code:
/** \ingroup util_crc
    Optimized CRC-16 calculation.

    Polynomial: x^16 + x^15 + x^2 + 1 (0xa001)<br>
    Initial value: 0xffff

    This CRC is normally used in disk-drive controllers.

    The following is the equivalent functionality written in C.

    \code
    uint16_t
    crc16_update(uint16_t crc, uint8_t a)
    {
int i;

crc ^= a;
for (i = 0; i < 8; ++i)
{
    if (crc & 1)
crc = (crc >> 1) ^ 0xA001;
    else
crc = (crc >> 1);
}

return crc;
    }

    \endcode */

static __inline__ uint16_t
_crc16_update(uint16_t __crc, uint8_t __data)
{
uint8_t __tmp;
uint16_t __ret;

__asm__ __volatile__ (
"eor %A0,%2" "\n\t"
"mov %1,%A0" "\n\t"
"swap %1" "\n\t"
"eor %1,%A0" "\n\t"
"mov __tmp_reg__,%1" "\n\t"
"lsr %1" "\n\t"
"lsr %1" "\n\t"
"eor %1,__tmp_reg__" "\n\t"
"mov __tmp_reg__,%1" "\n\t"
"lsr %1" "\n\t"
"eor %1,__tmp_reg__" "\n\t"
"andi %1,0x07" "\n\t"
"mov __tmp_reg__,%A0" "\n\t"
"mov %A0,%B0" "\n\t"
"lsr %1" "\n\t"
"ror __tmp_reg__" "\n\t"
"ror %1" "\n\t"
"mov %B0,__tmp_reg__" "\n\t"
"eor %A0,%1" "\n\t"
"lsr __tmp_reg__" "\n\t"
"ror %1" "\n\t"
"eor %B0,__tmp_reg__" "\n\t"
"eor %A0,%1"
: "=r" (__ret), "=d" (__tmp)
: "r" (__data), "0" (__crc)
: "r0"
);
return __ret;
}
21  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: July 12, 2012, 12:32:59 pm
Yop Yop,

Le programme FormRequestAjax.html sert d’interface web :
Il fait appel à deux programmes javascript :
-   jquery.min.js : je ne sais pas à quoi cela correspond, j’ai rapidement jeté un œil sur le lien http://api.jquery.com/jQuery.post/ fourni par Osaka, pour l’instant je n’ai pas compris grand chose, mais il va falloir que je m’y intéresse  plus en détail.
-   webAjax.js : qui si j’ai bien compris sert à envoyer les données fournies dans le formulaire lors de l’appui sur la touche « On ».

En fait "jquery.mins.js" c'est une librairie javascript "JQuery", c'est pareil que d'ajouter (#include) la librairie ethernet ou autre dans ton code arduino.
Le fichier "webAjax.js" lui utilise une des fonctions de cette librairie "jQuery.post(...)" qui fabrique (avec les données du formulaire) la requête et l'envoie  à destination de "socket.php" qui lui même se chargera de transmettre ses informations à l'arduino via socket.


Le programme socket.php est utilisé dans webAjax.js : je n’ai pas encore compris comment fonctionne les sockets, mais, là aussi, je ne désespère pas.

les sockets tu peux les comparer au port serie de l'arduino, tu as en premier la création du socket (avec le choix des divers protocoles tcp/ip, udp, ... utilisé dans une communication réseau), ensuite la connections avec les paramètres (ip, port) du destinataire , après ce n'est plus que du read-write sur les données échangées.

Le programme .ino qui tourne sur l’Arduino en mode client, reçoit les caractères envoyés par le serveur, les affiche sur le Serial Monitor, et compte le nombre de réquêtes du serveur (d’appuis sur la touche « On »).

Le programme arduino est plutôt en mode serveur il attend une ou plusieurs connexions socket, les données reçues sont affichés dans le monitor de l'ide ensuite une réponse à la requête est retournée avec le nombre de requête traité par l'arduino. (tu peux fermer ta page formulaire et la relancer, voir même dans un autre navigateur le nb de requête traitée sera définie par l'arduino).
 smiley-wink

@nadirovick : je te laisse découvrir comme tu as l'air de bien t'en sortir et puis c'est comme ça qu'on apprend.  smiley-mr-green
22  International / Français / Re: [résolu]Envoyer une requêt GET avec arduino vers une page php pour envois de mai on: July 09, 2012, 04:59:16 am
Une chose que tu peux faire, c'est ajouter côté php un signal de "fin de transmission", 0x04 ou '\4' en correspondance ASCII :

Code:
echo '\4';

Comme ça côté arduino tu boucles read temps que tu n'as pas reçu ce signal.

Code:
if ( client.available() )
{
    char c = 0;
    while(c != '\4')
    {
        c = client.read();
        Serial.print(c);
        .
        .
        .
    }
}

Évidement il faudrait ajouté un timeout aux cas ou ce signal ce serait perdu en chemin, ce qui ne devrait pas arrivé mais c'est on jamais perte de connexion ou autre.
23  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: July 08, 2012, 02:05:34 pm
*digitalPinMap[data[3]].port |= 1 << digitalPinMap[data[3]].bit; --------------------|
*digitalPinMap[data[3]].port &= ~(1 << digitalPinMap[data[3]].bit); ----------------|------->   Elles accomplissent quoi exactement
data[4] = *digitalPinMap[data[3]].port & (1 << digitalPinMap[data[3]].bit); --------|

Là d'après ce que je vois (parce que je ne me souviens plus de tout ce que j'avais fais  smiley-mr-green ), il s'agissait de manipuler les registres directement et non de passer pas la fonction digitalWrite() du core arduino.
La première ligne était pour mettre le bit du port correspondant à la pin arduino n°x à 1 (HIGH) en utilisant un tableau de correspondance, la deuxième pour mettre à 0 (LOW) et la troisième c'était pour connaître son état après action et ainsi l'intégré dans les infos de retour de la commande (si demandé). 
Bon ici c'était mes débuts sur la plate forme arduino et les µc donc pour certaine choses je ne le ferais peut être pas de la même façon aujourd'hui ...
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.PortManipulation
Pour mieux comprendre le pourquoi.
Sinon tu vas refaire la partie serveur, comme elle n'est sans doute plus valable avec la normalisation actuel ?

Je vous poserai certainement des questions, soit en cas de blocage ou pour valider ma progression !

Yop BriBri,
Concernant la discussion actuel sur le projet websocket à mon avis tu ne sera pas trop concerné comme c'est un projet assé globale mais datant et que j'ai plus ou moin abandonné.
Sinon pas de problème, tes questions sont toujours les bienvenues.  smiley-wink
24  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: July 08, 2012, 06:22:27 am
Je n’arrive pas à  trouver la fonction  sendCmdJsonReturn()  smiley-sad, j'ai cherché sur la librairie

C'est la première fonction après le constructeur dans les fichiers de la lib  smiley-mr-green .
25  International / Français / Re: [Conseil] Choix d'architecture et de carte pour échange via le web on: July 07, 2012, 04:26:40 am
Ça doit être le sujet le plus redondant sur le forum : la domotique et ou avec interface web.  smiley-mr-green

http://arduino.cc/forum/index.php/topic,111101.0.html
http://arduino.cc/forum/index.php/topic,111191.0.html
http://arduino.cc/forum/index.php/topic,80422.msg822716.html#msg822716
http://arduino.cc/forum/index.php/topic,33432.0.html
.
.
.

En cherchant bien tu devrais trouvé les infos qu'il te faut. smiley-wink
! Les socket sur du mutualisé faut pas compté dessus, ils sont soit désactivé niveau php soit au niveau des ports ou autres (logique d'un côté pour la sécurité on ne peux pas laisser la porte ouverte à tout), personne n'a réussi jusqu'à présent sans ce casser les dents.  smiley-sad
En fait à l'heure actuel je dirais qu'il n'y a pas énormément de possibilités sur le choix de l'architecture ...
Pour ma part j'ai choisi les websocket (je sais je me répète si tu observes les autres postes  smiley-mr-green) .

Pour l'adk ce n'est pas uniquement filaire ?
26  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: July 06, 2012, 12:04:47 pm
Yop Yop,

() Je travail maintenant sur l’autre topic que je le trouve fort intéressant

Il y a un problème sur mon ancien projet comme la normalisation des websocket à beaucoup changer depuis, donc la partie serveur php n'est plus valable : le handshake n'est plus en md5 mais en sah1 et il y a un mask en plus sur les donnée maintenant (unmasking à effectuer en plus pour retrouvé ses données d'origines)  smiley-confuse.
Donc c'est pour ses raisons que j'avais abandonné le projet comme la normalisation n'était et n'est toujours pas finalisé.
Bon maintenant il ne devrait plus y avoir trop de modif et elle devrait arrivé à terme donc je me suis refait un serveur de websocket mais en java cette fois ci (j'espère juste encore qu'on aura le choix du masking ou non une fois finalisé).

Les erreurs sont  pour le moment sur le sketch, je pense que c’est un problème de versionning
Sketch Arduino "je travail sur la version 1.0 de l'IDE":

J'avais du le faire avec une 0.22 ou ultérieure je crois.
27  International / Français / Re: Problème concaténation on: July 02, 2012, 11:48:58 am
Yop Yop,
Juste une dernière petite explication, il faut bien comprendre que tous le code que nous écrivons ne sont que des instructions destinés au compilateur et non à la machine directement, le code (machine) résultant est tout autres.
Le type de variable (qu'il peut retravailler pour optimiser, etc) et les noms à la déclaration par exemple ne sont que des "repères" qui seront traité et disparaitrons une fois compilé.
28  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: July 02, 2012, 11:28:13 am

Cette fonction récupère t’elle les  informations des client.print et/ou client.write ?
Code:
function(data) //data contiendra la ou les données en retour de la requête
   {
$("retour").innerHTML = data; // on integre dans la balise portant l'id "retour" les data de retour
   });

C'est tout à fais ça, ici la fonction JavaScript va intégrer "data" donc le retour de la requête envoyer via write ou print de l'arduino dans la balise "retour" html. (! les données transiteront entre le code arduino et JavaScript par php).

Pour mieux compreendre le cheminement des données.

requête :
html (onclick="send()") -> (send()) javascript (jQuery.post) -> ($msg = file_get_contents) php (socket_write(...,$msg,..)) -> (client.read) arduino

réponse :
arduino (client.write, ...) -> (socket_recv(...$buffer...)) php (echo $buffer) -> function(data) Javascript ($("retour").innerHTML = data) -> (<div id="retour">...data...</div>) html


Dans le cas positif, Ma question est si je peux exploiter la fonction ci-dessus pour faire une remontée d’information à ma page Web « client », avec enregistrement dans une table mysql ?

Donc oui c'est tout à fait possible, mais tu le feras plutôt à partir de php

Code:
...
socket_close($socket); //fermeture du socket

... envoie de donnée(s) ($buffer) à un fichier ou autre php qui ce chargera de l'enregistrement en bdd ...
?>

29  International / Français / Re: envoyer une requet post depuis arduino vers une page php on: July 01, 2012, 05:26:15 am
Je vois vraiment pas là  smiley-confuse, la connexion ce fait chez toi mais pas la requête ...,difficile à dire sans le voire de sois même.
Un problème avec le shield ?
Tu n'as rien d'autre sur les pin utilisé par celui-ci, etc ?
Les simples exemples genre WebServer, WebClient, etc, donnés par l'ide fonctionnent ?
30  International / Français / Re: envoyer un signal d'extinction a un pc on: July 01, 2012, 05:14:51 am
Dans l'idéal il faudrait un retour d'information pour être sur que l'ordi est éteint.

Cela permettrai de gérer les erreurs si jamais l'ordi ne s'éteint pas.

Je pense également que connêtre l'état réel du serveur est important comme le procédé ne garantit pas la bonne extinction de celui-ci, c'est pour ça que j'avais proposé un truc du genre (il y a sans doute mieux, voire avec les pros) :

Tu peux également te servir d'un 5V alim ou usb de ton (tes) pc('s) pour savoir s'il(s) est (sont) bien éteint(s), sinon forcer la coupure avec maintien long ?

Voire ajouter un shield gsm ou autres si l'extinction échoue et que ça fume ? ...
Avec 10 serveurs je suppose qu'il ne s'agit pas d'une solution amateur, mais de petite entreprise ou autre non ?
Pages: 1 [2] 3 4 ... 51