1 Ekim 2017 Pazar

MySQL ve ESP8266 Veritabanı Tasarımı ve Gösterimi

MySQL ve ESP8266 Veritabanı Tasarımı ve Gösterimi
Bu yazım da hep merak ettiğim HTML kod kullanarak web sayfası ve PHP kodu kullanarak veritabanı tasarımı üzerine ESP8266'yı kullanarak basit bir çalışma yapacağım.

Bu çalışmadaki amaç şu olacak; ESP8266 bir wifi'ye bağlanarak istediğim bir web url'sine sürekli sensörlerden alinan dataları gönderecek. Bunlar  sicaklık, nem ve gaz sensörleri olabilir ama ben bu projede sabit değerler göndereceğim. Daha sonra gönderilen datalar XAMPP programı kullanarak tasarladığım bir veritabanın da datalarım kaydedilecek. Son olarak kaydedilen datalar ise tasarladığım bir web sayfasında tablo halinde gösterilecektir.

XAMPP programını kullandığım için yani bir web sayfası satın almadığım için internete bağlı olacak cihazlar aynı wifi modeme bağlı olamalılar. Yoksa işe yaramaz. Genelde bu tür projeler ilk önce xampp ile sanal bir sayfa üzerinde yapılır daha sonra gerçek bir url için ayarlanır.

Yapılması gereken adımlar: 


1. ADIM: XAMPP kullanarak ilk önce veri tabanında tablo oluşturulur.

2. ADIM: Veritabanına bağlantı yapacak PHP kod düzenlenir.
KOD:

<?php
$usuario = "root";
$senha = "";
$host ="localhost";
$baglimi= mysqli_connect($host,$usuario,$senha);
$select_bd=mysqli_select_db($baglimi,'esp8266_veritabani');
?>

3.ADIM: Veritabanına veri gönderecek ara sayfa için php kod yazılır.

<?php
include ("baglanti.php");

$sensor1=$_GET['sensor1'];
$sensor2=$_GET['sensor2'];
$sensor3=$_GET['sensor3'];

$sql_gonder="insert into tablo (sensor1,sensor2,sensor3) values ('$sensor1','$sensor2','$sensor3')";

mysqli_query($baglimi,$sql_gonder);


if($sql_gonder)
{
echo "GIRIS YAPILDI";
}
else
{
echo "GIRIS YAPILAMADI";

}
?>

4.ADIM: Veritabından gönderilen dataları göstermek için bir ön sayfa hazırlanır. Biz Bu sayfayı görürüz. Arka tarafı görmeyiz. Bunun için HTML koddan yararlanılır.

<!DOCTYPE html>
<html>
<head>
<meta charset ="utf-8">
<title> HAKAN AYDIN MYSQL </title>
</head>
<body>
<h1> HAKAN AYDIN MYSQL </h1>
<table width="750" border="7" cellspacing="8" cellpadding="7" >
<tr>
<td><b>SAYAC </b></td>
<td><b>ZAMAN </b></td>
<td><b>SENSÖR 1 </b></td>
<td><b>SENSÖR 2 </b></td>
<td><b>SENSÖR 3 </b></td>
</tr>
<?php
include ("baglanti.php");
$sqlget="select * from  tablo";
$result = mysqli_query($baglimi,$sqlget);
while($row= mysqli_fetch_array ($result,MYSQLI_ASSOC))
{
echo "<tr>";
echo "<td>".$row['sayac']."</td>";
echo "<td>".$row['time']."</td>";
echo "<td>".$row['sensor1']."</td>";
echo "<td>".$row['sensor2']."</td>";
echo "<td>".$row['sensor3']."</td>";
echo "</tr>";
}
mysqli_free_result($result);
?>
</table>
</body>
</html>

5. ADIM: http://localhost/ESP8266/gonder.php?sensor1=5.0&sensor2=10.0&sensor3=15.0 url'si girilerek tasarlanan veritabanına veri gönderimi sağlanır ve eğer data veritabanına kaydedildiyse olumlu sonuç geri döner.

6.ADIM: Veri tabanına veri göderecek olan esp8266 kodu ayarlanır. Bu kod belli süre boyunca yukarıdaki url' adresine sürekli aynı datayı gönderir.

#include <ESP8266WiFi.h>

const char* ssid     = "SİZİN WİFİ ADRESİNİZ";
const char* password = "ŞİFRENİZ";

const char* host = "SİZİN IP ADRESINIZ";
const char* streamId   = "....................";
const char* privateKey = "....................";

void setup() {
  Serial.begin(115200);
  delay(10);

  // We start by connecting to a WiFi network

  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());
}

int value = 0;

void loop() {
  delay(5000);
  ++value;

  Serial.print("connecting to ");
  Serial.println(host);

  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

  // We now create a URI for the request
  String url = "/ESP8266/gonder.php?sensor1=5.0&sensor2=10.0&sensor3=15.0";


  Serial.print("Requesting URL: ");
  Serial.println(url);

  // This will send the request to the 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;
    }
  }

  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }

  Serial.println();
  Serial.println("closing connection");
}


7.ADIM: ESP8266'ya kod yüklenir ve sistem çalıştırılır. Datalar veritabınan düşer, aşağıdaki resimde de görülür bu.



Düşen datalar tasarladığımız bizim web sayfamızda görülür. Buraki url adresimiz: http://localhost/ESP8266/sayfa.php



İlerde bir WEB adersi satın alırsanız veritabanınız oraya taşırsınız ve ordaki dataları görmek için şu url kullanırsınız. WWW."SIZIN ADRESINIZ/ESP8266/sayfa.php.COM"

Hiç yorum yok:

Yorum Gönder