Page 1 sur 2

Communication Arduino

Posté : 22 mars 2016, 17:46
par MrCrisis
Bonjour je suis actuellement en terminal STI2D et j'aurais besoin d'aide sur mon projet, avant de poser ma question je vais dejàs essayer de vous présenter mon projet.



Je dois faire une Papy Box, c'est une arduino couplet a un module gsm/gprs qui doit envoyé un sms l'orsqu'elle dépasse un périmètre donnée, la ou sa devient compliqué c'est que je dois configuré la papy box via une page HTML. Voila ce que donne les codes


Code : Tout sélectionner

<html> <head> <link rel="stylesheet" href="style.css" /> <title>Première instructions</title> </head> <body> <center><h2>Programmations de la boite a papy</h2></center><p> <form action="faktul.php" method="post"> <center> <p> <br><br><label>Numéro de la famille :</label> <input type="tel" name="Famille" placeholder="Ex : 06XXXXXXXX"> </center> <form action="faktul.php" method="post"> <center> <p><br> <label>Code PIN :</label> <input type="tel" name="PIN" placeholder="Ex : 1234"> </center> <form action="faktul.php" method="post"> <center> <p><br> <label>Périmètre maximum d'autonomie :</label> <input type="text" name="autonomie" placeholder="En Mètre"> </center> <form action="faktul.php" method="post"> <center> <p><br>Enregistrer adresse de la maison : <textarea name="Adresse" rows="6" cols="35" placeholder="Appartement 12 Cité du Nord 2 rue du port 99123 VILLENOUVELLE"></textarea> </center> <form action="faktul.php" method="post"> <center> <p><br><br><br> <input type="submit" Value="Envoyer"> </center> </body> </html>



En suivant des tuto sur le css et le html j'ai créé cette page.

Image

page configuration



la ou je coince c'est comment utiliser le php pour envoyer les donnée a l'arduino, je connais le php basique mais la sa dépasse mon niveau. j'ai trouvée ceci http://www.phpclasses.org/browse/file/17926.html

Normalement sa utiliserais les port windows seul soucis comment le configurer et comment faire en sorte qu'il envoie les donnée contenu dans le formulaire en appuyant sur envoyé.

Je précise que j'utilise WAMP qui fonctionnent parfaitement.

Cordialement

Re: Communication Arduino

Posté : 23 mars 2016, 10:11
par MrCrisis
Je précise que la arduino est branché en usb dont tout se fait en local.

Re: Communication Arduino

Posté : 23 mars 2016, 13:28
par @rthur
Bonjour,

La question, c'est comment tu envoies ces informations à ton Arduino ?

Si c'est via une URL en paramètre GET, tu peux simplement utiliser file_get_contents() en PHP pour fournir les paramètres.
Si c'est via une URL en paramètre POST, tu peux utiliser CURL via PHP
Si c'est via un protocole autre que du HTTP, regarde du côté des fonction de socket type fsockopen()

Re: Communication Arduino

Posté : 24 mars 2016, 09:21
par MrCrisis
Bonjour,

La question, c'est comment tu envoies ces informations à ton Arduino ?

Si c'est via une URL en paramètre GET, tu peux simplement utiliser file_get_contents() en PHP pour fournir les paramètres.
Si c'est via une URL en paramètre POST, tu peux utiliser CURL via PHP
Si c'est via un protocole autre que du HTTP, regarde du côté des fonction de socket type fsockopen()
En fait L'arduino est branché en usb au pc, elle a un programme a éxécuter mais elle attend que je lui envoie les donnée ccomme paramètre d'execution, je dois donc envoyer a l'arduino le contenu des formulaires (le code coté arduino n'est pas un soucis)

Donc sa ne passe pas par l'url ou autre sa doit passer directement par le cable USB. De ce que j'ai compris le seul moyen de parvenir a sa et d'utiliser http://www.phpclasses.org/browse/file/17926.html, cependant je ne vois pas comment l'utiliser comme je suis débutant au php.

Merci pour ton aide.

Re: Communication Arduino

Posté : 24 mars 2016, 15:40
par @rthur
Tu es sous Windows ou Linux ?
Si Linux, alors tu as une chance de t'en sortir facilement avec fopen et un tuto qui semble bien fait : http://www.instructables.com/id/Control ... /?ALLSTEPS

Pour la classe que tu veux utiliser, difficile de t'aider dessus car je ne la connais pas et le dialogue PHP <-> port COM n'est pas vraiment ma tasse de thé.

Re: Communication Arduino

Posté : 24 mars 2016, 20:15
par MrCrisis
Tout d'abord merci encore de ton aide, malheureusement je suis sur windows (enfin les pc de mon lycée le sont), j'étais tombé sur ce lien et effectivement sur linux c'est faisable. Mais après recherche et en fouinant ici
http://www.phpclasses.org/browse/file/17926.html (a noté que ces ce qui est utilisé dans le tuto cité par toi)

Il y a marqué : @thanks Aurélien Derouineau for finding how to open serial ports with windows

Last change: - Easy port configuration
- Works on both linux and windows
- Read/write for linux
- Write only for windows

Donc normalement c possible sur windows j'ai trouvé quelque exemple de code se rapprochant de ce que je veux faire dans le principe :

http://forum.arduino.cc/index.php?topic=65552.0.

De ce que je comprend avec windows on peut envoyé des donnée a l'arduino mais on ne peut pas lire des données de l'arduino or dans mon cas ce n'est pas gênant.

Seul problème je ne vois pas du tout comment mettre sa en place.

EDIT: http://benjamin-balet.info/developpemen ... t-arduino/, je viens de tomber sur sa tu en penses quoi ?

Re: Communication Arduino

Posté : 25 mars 2016, 03:59
par @rthur
Ah ça je suis sûr que c'est possible sous Windows, c'est juste un peu galère car c'est assez peu commun de communiquer via le port série avec PHP, mais c'est sûr que c'est faisable car je l'ai déjà fait pour un projet il y a 6 ou 7 ans mais impossible de me souvenir de la solution que j'avais utilisée.

Le dernier tuto a l'air bien fait, ça vaut le coup d'essayer.

Re: Communication Arduino

Posté : 25 mars 2016, 12:31
par MrCrisis
Ok je vais faire des test et je reviens vers toi si j'ai des soucis ce qui risque d’être le cas car je suis vraiment débutant en php et que ma tache sa ressemble vraiment pas a du php basique ^^.

Question peut etre stupide mais comment exécuter ce script. Avant de le modifié pour envoyé les caractère entrée, je vais déjà le test dans l'etat mais ma question est comment exécuter se script ?

Re: Communication Arduino

Posté : 25 mars 2016, 13:29
par @rthur
Question peut etre stupide mais comment exécuter ce script. Avant de le modifié pour envoyé les caractère entrée, je vais déjà le test dans l'etat mais ma question est comment exécuter se script ?
Ah oui effectivement, on part du début alors.
Il faut que tu installes sur ton ordi un serveur Apache+PHP.
Le plus simple vu que tu es sous Windows est d'installer un soft dédié, les 2 plus connus sont EasyPHP et Wampserver.
Je te recommande Wampserver qui est + stable selon mon expérience : https://www.google.fr/search?q=tutoriel ... wampserver

Re: Communication Arduino

Posté : 25 mars 2016, 13:44
par MrCrisis
Je possède déjà WAMP de configuré seul soucis je ne vois pas comment executer se script je l'ouvre comme une page classique ?


EDIT: ban ce que j'ai fais c que le code du mec je l'ai mis dans un fichier que j'ai renommé index.php c'est barbare mais sa marche seul soucis ma LED ne s'allume pas...... il m'affiche juste

LED on
LED off
Return =


Pas moyen d'avoir acces a des logs afin de savoir si le problèe viens du php ou de l'arduino UNO ?

Re: Communication Arduino

Posté : 29 mars 2016, 15:58
par MrCrisis
Bonjour, alors j'avance un petit peu ma page html étant fini j'essaye d'avancer sur le script php en faisant des test. J'essaye déjà pour commencer d'envoyer un simple message, voici mon code :

Code : Tout sélectionner

<?php include 'php_serial.class.php'; $serial = new PhpSerial; $serial->deviceSet("COM19"); $serial->confBaudRate(9600); $serial->confParity("none"); $serial->confCharacterLength(8); $serial->confStopBits(1); $serial->confFlowControl("none"); $serial->deviceOpen(); for (;1;) { $serial->sendMessage("Hello say!"); } echo "I've sended a message! \n\r"; ?>
J'ouvre mon code avec WAMP, cependant voici les erreur qu'il me renvoi

Image

Une idée d’où viens le problème ?

PS: j'utilise cette classe http://www.phpclasses.org/package/3679- ... nformation

Re: Communication Arduino

Posté : 29 mars 2016, 18:50
par @rthur
Le message d'erreur important, c'est le 1er car les autres ne sont que des conséquences du 1er.
Désactive ton firewall et antivirus au cas où et vérifie que tu ta configuration soit bonne (notamment le n° de port COM)

Re: Communication Arduino

Posté : 29 mars 2016, 19:15
par MrCrisis
Ok merci, je test sa dès demain a mon lycée

Re: Communication Arduino

Posté : 30 mars 2016, 18:32
par MrCrisis
Alors j'ai test sur un autre pc avec antivirus et firewall de désactivé, et la j’obtiens l'erreur suivante :

Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\test 1\php_serial.class.php on line 461


J'ai tester sous wamp et easy php il me renvoie la même erreur, une idée ?

Merci d'avance

EDIT: Après vérification sa marche je vois que mon arduino reçoit QQC, mais alors pourquoi a la fin ma page me renvoie une erreur au lieux de m'afficher le message de confirmation. Le message envoyé ne correspond pas au message voulu mon arduino m'affiche "-1", est-ce que cela viens du faites que le script ne se finit pas ?

Code : Tout sélectionner

for (;1;) { $serial->sendMessage("41"); } echo "I've sended a message! \n\r"; $serial->deviceClose(); ?>

Re: Communication Arduino

Posté : 31 mars 2016, 18:30
par @rthur
for (;1;), c'est une boucle infinie non ?
Les scripts PHP sont par défaut bloqués à 30 secondes d'exécution (d'où ton message d'erreur), justement pour éviter qu'un script mal codé avec une boucle infinie ne bloque tout le serveur.

Je ne sais pas pourquoi tu as mis for(;1;) mais il faut que tu ajoutes une condition de sortie de cette boucle