Arduino + Raspberry pi

Bonjours a tous , j’ai un petit soucie dans mon projet . :blush:
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 :

------------------------------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 :

---------------------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.
";
                }
        }
         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>
";
                $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 :sweat_smile: . Un grand merci pour vos réponses XD

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 ?

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

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

<?php
  phpinfo();
?>

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 :sweat_smile: Merci . Enfaite ton index.php répond a toute les questions ^^

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 ?

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

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.

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

Marcha : J’ai essaye de mettre die(“OK”); mais en affichant la mage toujours la même page erreur :confused:

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 ^^

Capture.PNG

tu as bien suivi les instruction?

// 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

bon alors, je viens de tester, il manque quelque chose. dans les logs on retrouve ca

/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

apt-get install screen

puis

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

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

Voila les photos .

IMG_20130504_141730.jpg

IMG_20130504_141735.jpg

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 :confused:

pourquoi le compiler? il suffit de regarder les logs apache pour voir les erreurs.

Ha ok :confused: Maintenant il m’affiche sa , pourquoi ?

c'est clair comme message pourtant. essaye avec FF pour voir.

C'est sur mais comment je fais pour règle ce problème ? Et sur firfox la meme =(

dans FF, préférences avancees/general decocher "prevenir lorsque........ou recharger la page"