ArduinoをphpMyAdminサーバーに正常に接続しようとしましたが、接続できませんでした。Arduinoには(距離を測定するために)いくつかの超音波センサーが接続されており、何らかの理由ですべての値がサーバーに送信されているわけではありません。私はそれほど複雑であるべきではありません。
したがって、各センサーには、独自のID、測定距離、およびセンサーが配置されているレベルがあります。
idはセンサーを識別するためのものです(duh!)が、何らかの理由で、この値に対して0しか得られません。これは、最初のセンサー(id 0)の値のみを読み取っているためだと思います。
コードをお見せしましょう。これは繰り返される方法です。各センサーから情報を分離し、最初の4つの値しか送信しないなど、私の間違いは情報を複数回送信できないことだと思います。それがそれです。データベースに表示されます。
void loop(){
int distance;
//=======
for (uint8_t i = 0; i < SONAR_NUM; i++) {
if( cm[i] > 10 || cm[i]==0){
distance = cm [i];//delete if no
}
else{
distance = cm[i];
//Serial.println(distance);
}
}
for (uint8_t i = 0; i < SONAR_NUM; i++) {
if (millis() >= pingTimer[i]) {
pingTimer[i] += PING_INTERVAL * SONAR_NUM;
if (i == 0 && currentSensor == SONAR_NUM - 1)
sonar[currentSensor].timer_stop();
currentSensor = i;
cm[currentSensor] = 0;
sonar[currentSensor].ping_timer(echoCheck);
}
//client.stop();
}
//===================================================
if(client.connect(serverName, 80) )
{
//Serial.println("Connected");
if (client.connected()){
delay(100);
//Serial.println("Client is available, CONNECTED!");
//client.print( "GET /add.php?distance=");
//////////////
int lvl = 0;
for (uint8_t i = 0; i < SONAR_NUM; i++) {
if(i<2)
lvl = 1;
else if (i>1 && i<3)
lvl =2;
else
lvl = 3;
Serial.print("SPOT: ");
client.print( "GET /sendfromarduino.php?sensorID=");
Serial.print(i);
client.print (i);
Serial.print(" DISTANCE: ");
Serial.print(cm[i]);
distance = cm[i];
client.print( "&value=");
client.print(distance);
Serial.print("cm ");
Serial.print(" LEVEL: ");
client.print( "&level=");
Serial.print (lvl);
client.print (lvl);
}
Serial.println();
//////////////////////////////////////
// Serial.print("Distance: ");
// client.print(distance);
// Serial.println(distance);
client.println( "HTTP/1.1");
client.println( "Host: test.testserver.com" );
client.println( "Content-Type: application/x-www-form-urlencoded" );
client.println();
client.println();
client.stop();
}
else
{
//Serial.println(distance);
Serial.println("Connection Failed");
}
}
delay(100);
}
次に、私の知識と過去の経験によれば、完全に問題ないはずのPHPファイルのコードを次に示します。
<?php
$db = new PDO('mysql:host=localhost;dbname=test_alpha;charset=UTF-8', 'test_alpha', 'testtest');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$sensorID = intval($_GET['i']);
//$time = CURRENT_TIMESTAMP;
$value = intval($_GET['distance']);
$level = intval($_GET['lvl']);
$sql = "INSERT INTO `pspace`(`sensorID`, `time`, `value`, `level`) VALUES ('$sensorID',CURRENT_TIMESTAMP,'$value','$level')";
$stmt = $db->query($sql);
//echo json_encode(array('spaces'=>$stmt->fetchAll(PDO::FETCH_ASSOC)));
?>
どんな助けでも大歓迎です!