Go Down

Topic: Arduino + Raspberry pi (Read 5844 times) previous topic - next topic

madmax55

Apr 30, 2013, 03:49 pm Last Edit: May 05, 2013, 07:05 pm by madmax55 Reason: 1
Bonjours a tous  , j'ai un petit soucie dans mon projet .  :smiley-red:
Le projet : je veut avoir les données d'un accéléromètre a signal analogique sur un Fichier html de ma raspberry pi , or je passe par l'intermédiaire d'une carte arduino .
Voici les programmes que j'ai trouver sur le web :

Programme arduino :
Code: [Select]

------------------------------domotique.ino

// Speak to arduino with PHP
// CC BY-NC-SA 2012 lululombard
// Made to work with statebeta.php and serial.sh
// Not yet commented, it's beta !

void setup() {
 Serial.begin(115200);
 for (byte i = 2; i <= 13; ++i)
   pinMode(i, OUTPUT);  
 }

void loop() {
 if (Serial.available()) {
   byte cmd = Serial.read();
   switch (cmd) {
   case '1':
     Serial.println();
     for (byte i = 2; i <= 13; ++i){
       Serial.print(digitalRead(i));
       if (i != 13)
       Serial.write(';');
     }
     break;
   case '2':
     for (byte i = 0; i <= 25; ++i){
       Serial.println("BOOT FILLING LINES FOR SCREEN");
     }
     break;

   case 'a'...'l': // GCC only (Not C standard)
     byte pin = cmd - 'a' + 2;
     if (digitalRead(pin) == LOW)
       digitalWrite(pin, HIGH);
     else
       digitalWrite(pin, LOW);
     break;
   }
 }
}


Php et fichier sh pour la raspberry pi :
Code: [Select]
---------------------statebeta.php

<?php
// Speak to arduino with PHP
// CC BY-NC-SA 2012 lululombard
// You need serial.sh with chmod 777 in /var/www to use this. 
// You need to disable terminal on /dev/ttyAMA0 : "nano /boot/cmdline.txt", and delete "console=ttyAMA0,115200 kgdboc=ttyAMA0,115200".  CTRL+X to save.
// Then, "nano /etc/inittab", go to the last line and add "#" in front of "2:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100"
// Made to work with "domotique.ino", with ardunio connected to rx/tx of the GPIOs
// Not yet commented, as the name says, it's beta !

        
$screen_name "arduino";
        
$user "www-data";

        
$list shell_exec("ls /var/run/screen/S-".$user);
        if (
strpos($list$screen_name) == FALSE) {
                
exec('screen15
 
                -dmS arduino /dev/ttyAMA0 115200'
);
                
sleep(1);
                
exec('screen -S arduino -X height 1');
                
exec('/var/www/serial.sh 2');
                
header('Location: '.$_SERVER['PHP_SELF']);
        }
        elseif (
$_GET['pin']) {
                
$allowed = array("a""b""c""d""e""f""g""h""i""j""k""l");
                if (
in_array($_GET['pin'], $allowed)) {
                        
exec('/var/www/serial.sh '.$_GET['pin']);
                        
header('Location: '.$_SERVER['PHP_SELF']);
                }
                else {
                       echo 
"Caractere non pris en charge.<br />";
                }
        }
         else {
         
exec('/var/www/serial.sh 1');
         
exec('screen -S arduino -X hardcopy /var/www/status.txt');
         
$serial exec('tail -1 /var/www/status.txt');
         
$status explode(";"$serial);
 
         
$on="ON";
         
$off="OFF";
         
$checked_pin 0;
         foreach (
$status as $actual_pin) {
                if(
$actual_pin == 1){$text[$checked_pin]=$off;}else{$text[$checked_pin]=$on;}
                
$checked_pin++;
        }
        
$pin 2;
        
$checked_pin 0;
        
$pins_order = array("a","b","c","d","e","f","g","h","i","j","k","l");
        foreach (
$text as $actual_pin) {
                echo 
"PIN ".$pin.": ".$status[$checked_pin]." <a href=\"?pin=".$pins_order[$checked_pin]."\">"$actual_pin ."</a><br />";
                
$checked_pin++;
                
$pin++;
         }
         }
?>


-------------------------------serial.sh


#!/bin/bash
# Made to work along with statebeta.sh

if [ $# = 0 ]
then
echo Usage : $0 *data*
else
screen -S arduino -X eval "stuff $1"
echo screen -S arduino -X eval "stuff $1"
fi


Voila maintenant la question est comment avoir les données sur un HTML , je voudrais comprendre comment sa marche et que mettre en place pour que cela fonctionne car je débute dans le milieux :smiley-sweat: . Un grand merci pour vos réponses   XD

marcha

Salut,

Si je te suis bien, tu aimerais faire un serveur web sur ton raspberry qui affiche l'état de ton accéléromètre sur une page web ?

Si oui, est-ce que tu as déjà mis en place le serveur web et affiché une page html classique ?

madmax55

Oui j'ai déjà mis en place un serveur apache et fait un html+css . Or j'ai trouver sur internet les .ino , .php et .sh qui en théorie fait en sorte de recevoir les données de l'accéléromètre brancher a l'arduino , or mon serveur ne veut pas lire le .php

marcha

Tu as quoi comme distribution sur ton raspberry ? une mini debian ?
Est-ce que tu as installé php ? (qui s'installe séparément d'apache)
Que te donne le résultat d'une page index.php avec
Code: [Select]
<?php
  phpinfo
();
?>


madmax55

Alors j'ai comme distribution debian , je ne suis pas sur d'avoir installer le php , par contre je veut bien la ligne de code  :smiley-sweat: Merci . Enfaite ton index.php répond a toute les questions ^^

marcha

Bon, alors apache et php fonctionnent :-)

pour installer php c'était apt-get install php5

Est-ce que ton application fonctionne ? ou ça coince encore qq part ?

madmax55

Non il doit avoir une couille dans le programme car en essayant d'afficher le fichier statebeta.php , voila ce qui m'affiche sa  =(

marcha

Essaie de placer la commande

die("OK");

tout en haut de ta page php. Die interrompt le script et t'affiche ok

si tu vois le OK alors déplace le plus bas dans le code petit à petit cela
te permettra de voir jusqu'ou le script s'exécute correctement et de
trouver la ligne qui provoque l'erreur.

Si d'entrée tu vois pas le OK c'est qu'il trouve pas ta page. essaie
alors d'affiche la page avec le phpinfo à nouveau en la plaçant de le
même dossier.

infobarquee

bonjour,
déjà ou as tu mis cette page? dans le /var/www/ ou dans un autre répertoire?
par ce que si tu as mis le dezip dans le même répertoire, ca doit se trouver dans /var/www/Arduino-IO-master donc à l'ip http://xxxx/Arduino-IO-master/statebeta.php

madmax55

Marcha : J'ai essaye de mettre die("OK"); mais en affichant la mage toujours la même page erreur :/

Infobarquee : Je suis dans le répertoire /var/www a la base  mais en essayant de mettre un dossier "Arduino-IO-master" comme tu peut le voir dans les images , ne marche pas plus ^^

infobarquee

tu as bien suivi les instruction?
Quote
// Speak to arduino with PHP
// CC BY-NC-SA 2012 lululombard
// You need serial.sh with chmod 777 in /var/www to use this.
// You need to disable terminal on /dev/ttyAMA0 : "nano /boot/cmdline.txt", and delete "console=ttyAMA0,115200 kgdboc=ttyAMA0,115200". CTRL+X to save.
// Then, "nano /etc/inittab", go to the last line and add "#" in front of "2:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100"
// Made to work with "domotique.ino", with ardunio connected to rx/tx of the GPIOs
// Not yet commented, as the name says, it's beta !


je vais tester sur mon rasp pour voir

infobarquee

#11
May 04, 2013, 01:02 pm Last Edit: May 04, 2013, 01:25 pm by infobarquee Reason: 1
bon alors, je viens de tester, il manque quelque chose.
dans les logs on retrouve ca
Quote
/var/www/serial.sh: line 8: screen: command not found
ls: cannot access /var/run/screen/S-www-data: No such file or directory
sh: 1: screen: not found
sh: 1: screen: not found
/var/www/serial.sh: line 8: screen: command not found
ls: cannot access /var/run/screen/S-www-data: No such file or directory
sh: 1: screen: not found
sh: 1: screen: not found
/var/www/serial.sh: line 8: screen: command not found
ls: cannot access /var/run/screen/S-www-data: No such file or directory
sh: 1: screen: not found
sh: 1: screen: not found
/var/www/serial.sh: line 8: screen: command not found
ls: cannot access /var/run/screen/S-www-data: No such file or directory
sh: 1: screen: not found


alors déjà comme dit plus haut, il manque des trucs
faire un
Quote
apt-get install screen

puis
Quote

chmod +x serial.sh
chown www-data:www-data statebeta.php
chown www-data:www-data serial.sh
visudo
ajouter à la fin du fichier
www-data ALL=(ALL) NOPASSWD: ALL

plus d'erreur de log après

madmax55

Après avoir fait toutes tes manipes , ça me donne toujours le même résultat :/ . Je vous envoie des photos de mon installations voir si elle est bonne ou pas

madmax55

Voila les photos .

madmax55

En essayant de compiler le php sous geany il m'affiche sa . Or je ne sais pas a quoi cela correspond , si quelqu'un peut m'aider :/

Go Up