esp-wroom-02 からphpに値を送りブラウザに表示させてみた

・目的

 esp-wroom-02 から値をphpに送り、

    受け取った値をテキストファイル

    に保存して、ブラウザに表示させる。イメージ図を図1に示した。

f:id:shangtian:20170611074749p:plain

図1:イメージ図

 

・使用したもの

 Raspberry pi 3(os: raspbian ; apache2 PHP)

    esp-wroom-02

 mac mini

    usbシリアル変換モジュール

・方法

  (1)回路作成

    回路図は図2に示した。

    

f:id:shangtian:20170616223236p:plain

図2:回路図

 

    (2)esp-wroom-02側のコード

  今回はセンサの値を送るわけでは無く、指定した値をphpに送信する。

        以下にサーバに接続し値を送る部分のコードを示した。

         サーバーに接続したら実行する

  if(client.connect(サーバのアドレス, ポート番号'今回は80')){}

   

  if文の中のコードは以下

 

  client.print(); でサーバに文字列や変数を送信

  client.println();で改行して送信

  client.write(); は文字列しか送れないので使う時は注意

 client.print("GET phpファイルがあるファイルパス?変数名=値 HTTP/1.1\r\n");

  値 HTTP/1.1の間は1つ開けること

  また\r\nは改行コード

  値を複数送る場合は

  ?変数名=値&変数名=値&変数名=値 HTTP/1.1

client.println("HOST: 192.168.2.110");

    client.println("Connection: close");
    client.println();

 

   全体のコードを図3に示した

#include <ESP8266WiFi.h>
#include  <WiFiClient.h>
const char* ssid = "*********";
const char* password = "********";
//サーバーのアドレス const char* server = "192.168.2.110"; 
//WiFiClient をclientで定義 WiFiClient client;
//関数の宣言 void connectWiFi(); void connectServer(); void setup() {
//シリアル通信を9600bpsで開始 Serial.begin(9600); connectWiFi(); } void loop() { connectServer(); delay(5000); } //アクセスポイントに接続 void connectWiFi() { Serial.println(); Serial.println(); Serial.println("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password);  //もしWiFiに接続してなかったら繰り返す while (WiFi.status() != WL_CONNECTED){ delay(500); Serial.print("."); } Serial.println ( "" ); Serial.print ( "Connected to " ); Serial.println ( ssid ); } //サーバーに接続し値を送る void connectServer() { if(client.connect(server, 80)){ Serial.println("connected to server"); client.print("GET /samplePhp/sample2.php?val=11 HTTP/1.1\r\n"); client.println("HOST: 192.168.2.110"); client.println("Connection: close"); client.println(); } }     

       図3:esp-wroom-02_php

 

*サーバー側でphpファイルを図4のように配置したので

  client.println("GET **********?val=11 HTTP/1.1\r\n);

    の*******は/samplePhp/sample2.php となる。

  

f:id:shangtian:20170616221112p:plain

  

図4:ファイルの配置

 

(3)php側のコード

   php側のコードを図5に示した。  

<?php
$text = $_GET["val"]; //valの値を受け取り変数に格納
//val.txtに値を上書き保存 $A = file_put_contents('/var/www/html/samplePhp/val.txt',$text,FILE_APPEND);
//val.txtの値を読み込み変数$sに格納
$s = file_get_contents('/var/www/html/samplePhp/val.txt');
print($s); ?>

図5:samplePhp.php

 

・結果

 うまく表示させることができたが、ブラウザに表示させた時に

 数字が改行されずに表示されるため見にくい。

 

shangtian.hatenablog.com

 

 

<参考文献>

projects : Biotope: Arduinoで計測した値を指定のwebサーバに送信、保存する

【Intel(R)Edison × Arduino】WiFi接続してArduinoでデータ送信しPHPで受け取る | 意識低い系女と高い系男の一年戦争

建築農業工作ゼミ2009-2010: Arduinoで計測した値を指定のwebサーバに送信、保存する