Bonjour quelqu’un pourrait m’aider j’ai un soucis pour écrire des données dans une base de donnée avec arduino . j’ai presque mis toute les choses en place c’est à dire la partie code , montage et resaux tout fonctionction bien , mais seul le arduino n’ecrire pas dans la base de donnée les donnée de mon capteur dans la base de donnée. Vous trouverez si dessous les différents code . php arduino . pour le code php/
************** <?php try { // connection à la base de données // On se connecte à MySQL $bdd = new PDO(’mysql:host=localhost;dbname=test’, ’root’, ’’); } catch(Exception $e) { die(’Erreur : ’.$e->getMessage()); // En cas d’erreur, on affiche un message et on arrête tout }
if (isset($_GET[’temp1’])) // test si la variable existe { $_GET['temp1'] = floatval($_GET[’temp1’]); // force le type float pour la variable echo (’donnee ’ .$_GET["temp1"]. ’ en cours d'ecriture</br>’); $bdd->exec('INSERT INTO temp (valeur) VALUES('.$_GET["temp1"].’)’); echo (’donnee ’ .$_GET[’temp1’]. ’ ecrite!’); } ?>
et pour mon arduino :
**************#include <SPI.h>
include <Ethernet.h> //Inclure la bibliothèque Ethernet
// Adresse MAC du shield (ici choisie par défaut), l’adresse IP dépend de votre réseau local byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x15, 0x15 }; //90-A2-DA-0F-15-15 //L’adresse MAC du shield est associée à une adresse IP réseau IPAddress ip(192,168,1,62); //192.168.1.62 à choisir sur votre réseau local int CAPTEUR_TEMP_PIN = 4; // adressage du capteur de temperature (PIN) // int temp = 0; //définition de la variable entière (integer) // float temperature = 0; // variable temperature en flottant // float const_can = 0.0048828; // constante du convertisseur // EthernetClient client; String data; String stringVal;
EthernetServer server(80); //Initialise le serveur Ethernet, port 80 par défaut pour HTTP
//function to extract decimal part of float long getDecimal(float val) { int intPart = int(val); long decPart = 1000(val-intPart); //I am multiplying by 1000 assuming that the foat values will have a maximum of 3 decimal places //Change to match the number of decimal places you need if(decPart>0)return(decPart); //return the decimal part of float number if it is available else if(decPart<0)return((-1)decPart); //if negative, multiply by -1 else if(decPart=0)return(00); //return 0 if decimal part of float number is not available }
void setup() { Serial.begin(9600); //Affichage écran du PC Ethernet.begin(mac, ip); //Démarer la connexion Ethernet et le serveur analogRead(CAPTEUR_TEMP_PIN); }
void loop()
{
temp = analogRead(CAPTEUR_TEMP_PIN); // lecture du capteur de température //
temperature = (((tempconst_can)1000)-500)/10; //calcul//
//
if (client.connect("192.168.1.78",80)) { // remplacer par l’adresse IP de votre serveur-ordi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | client.print( "GET /projet_kane/add.php?"); client.print("temp1="); client.print(temperature); client.println( " HTTP/1.1"); client.println( "Host: 192.168.1.78" ); client.println( "Content-Type: application/x-www-form-urlencoded" ); client.println( "Connection: close" ); client.println(); client.println(); while (client.connected()){ while (client.available()){ char c = client.read(); Serial.print(c); } } client.stop(); Serial.print("donnee ecrite"); Serial.println(temperature); } else { Serial.println("problème de connection"); } if (client.connected()) { client.stop(); // DISCONNECT FROM THE SERVER } delay(30000); // attente en millisecondes |
} ************* et dans le moniteure serie il me montre le messa d’eureur suivant .
**************<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don’t have permission to access /projet_kane/add.php on this server.<br /> </p> <hr> <address>Apache/2.4.23 (Win64) PHP/5.6.25 Server at 192.168.1.78 Port 80</address> </body></html> donnee ecrite-21.19***************
merci de m’aider sil vous plait.