У меня есть эта полная система, которая считывает транспортное средство или объект, используя ультразвуковой датчик и модуль ESP8266 NodeMCU.Программа полностью работает, я не хочу отображать статус book
при статусе базы данных, если book
.Но каждый раз, когда код в моем коде Arduino не обнаруживает какой-либо автомобиль, он говорит, что он доступен.Похоже, он не переходит к условию if else в коде arduino, который представляет собой status1, равен book.
Здесь условие состояния, каждый раз, когда датчик обнаруживает объект, он обновляетсостояние базы данных до occu
и avail
, если нет автомобиля.Я пробовал этот код в другом случае, если else if(status1=="Book"
) this should update the
status1 to book already. But why is it ending in the else condition where
status` равно в наличии?
if ((sensor < 10) && (sensor2 < 10))
{
sensor = 1;
status1 = "Occu";
digitalWrite(LEDRED,LOW);
digitalWrite(LEDGREEN,HIGH);
}
else if (status1 == "Book") {
sensor = 0;
status1 ="Book";
}
else
{
sensor = 0;
status1 ="Avail";
digitalWrite(LEDGREEN,LOW);
digitalWrite(LEDRED,HIGH);
}
Я не знаю почему, состояние базы данных всегдаобновление до avail
, хотя у меня это условие выше:
else if (status1 == "Book") {
sensor = 0;
status1 ="Book";
}
// Я подключаю NodeMCU, используя этот доступ Wi-Fi, и он полностью работает, моя единственная проблема - status1
не обновляет базу данныхbook
.
Полный код ARDUINO
#include<ESP8266WiFi.h>
#define TRIGGER 5
#define ECHO 4
#define TRIGGER2 13
#define ECHO2 15
#define LEDRED 14
#define LEDGREEN 12
const char* ssid = "sample";
const char* password ="sample";
const char* host ="192.168.254.77";
String status1;
//String parking_lot;
long sensor;
long sensor2;
void setup(){
pinMode(LEDRED,OUTPUT);
pinMode(LEDGREEN,OUTPUT);
pinMode(sensor, INPUT);
pinMode(sensor2, INPUT);
delay(1000);
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
delay(1000);
Serial.begin(115200);
delay(10);
pinMode(TRIGGER2, OUTPUT);
pinMode(ECHO2, INPUT);
delay(1000);
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
Serial.print("connecting to ");
Serial.println(ssid);
WiFi.begin(ssid,password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("wifi connected");
Serial.println("ip address: ");
Serial.println(WiFi.localIP());
}
void loop() {
long duration;
long duration2;
delay(5000);
digitalWrite(TRIGGER, LOW);
delayMicroseconds(10);
digitalWrite(TRIGGER2, LOW);
delayMicroseconds(10);
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER2, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER, LOW);
duration = pulseIn(ECHO, HIGH);
digitalWrite(TRIGGER2, LOW);
duration2 = pulseIn(ECHO2, HIGH);
sensor = ((duration/2) / (29.1));
sensor2 = ((duration2/2) / (29.1));
if ((sensor < 10) && (sensor2 < 10))
{
sensor = 1;
status1 = "Occu";
digitalWrite(LEDRED,LOW);
digitalWrite(LEDGREEN,HIGH);
}
else if (status1 == "Book") {
sensor = 0;
status1 ="Book";
}
else
{
sensor = 0;
status1 ="Avail";
digitalWrite(LEDGREEN,LOW);
digitalWrite(LEDRED,HIGH);
}
Serial.println("connecting to");
Serial.println(host);
WiFiClient client;
const int httpPort = 80;
if(!client.connect(host,httpPort)){
Serial.println("connection failed");
return;
}
String url = "/sampleparking/sampleparking.php?parking_lot=S1&";
url += "status=";
url += status1;
Serial.println("Requesting URL");
Serial.println(url);
//-------------request send to server
client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available()== 0){
if(millis() - timeout > 5000){
Serial.println("CLIENT TIMEOUT");
client.stop();
return;
}
}
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
delay(10000);
}
Пример php парковки - это то, с чего начинается запрос на обновление и отображение всех парковочных мест в области.
Здесь я получаю статус парковки:
$status = (isset($_GET['status']) ? strip_tags($_GET['status']) : '');
sampleparking.php
<?php
session_start();
include "includes/connection.php";
// get the data from arduino uno and pass it to server
$status = (isset($_GET['status']) ? strip_tags($_GET['status']) : '');
$parking_lot = (isset($_GET['parking_lot']) ? strip_tags($_GET['parking_lot']) : '');
// update status once there is vehicle detected
$sql = $connection->prepare("UPDATE samplepark SET status = '$status' WHERE parkname ='$parking_lot'");
$sql-> execute();
$sql = $connection->prepare('SELECT parkid, parkname, status FROM samplepark');
$sql->execute(); // execute query
$result = $sql->get_result(); // fetch result
if ($result->num_rows > 0) {
echo "<tr><th>Parking Slots</th><th>Status</th><th>Action</th></tr>";
while($row = $result->fetch_assoc()) {
$bookparking = $row["status"] == 'Avail' ? "<a class='bookparking' href='bookparkingslot.php?did=".$row['parkid']."'>Book</a>" : "";
echo "<tr><td>" .$row["parkname"]. "</td><td>" .$row["status"]. "</td><td>" .$bookparking. "</td></tr>";
}
}
?>
Load sampleparking.php
в id displayparking
с использованием ajax
<div class="container">
<div class="usercontainer">
<div class="floors">
<div class="contentparkingslots">
<table class="viewparkingslots" id="displayparking">
</table>
</div>
</div>
</div>
</div>
AJAX LOader
ajax.js
// View Users
setInterval(function () {
$.ajax({
method: "post",
url: "sampleparking.php",
data: $('#displayparking').serialize(),
dataType: "html",
success: function (response) {
$("#displayparking").html(response);
}
});
}, 1000);