На базе wi-fi модуля NodeMcu v3 с чипом ESP8266 (ESP-12e) можно сделать (для примера) термометр на цифровом датчике 18B20, информация об температуре при помощи GET запроса будет отправятся в базу данных MySQL.
Следующий скетч позволяет отправлять GET запросы на указанную страницу, в моем случае это test.php.
#include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #include <OneWire.h> #include <DallasTemperature.h> OneWire oneWire(14);// D5 вход датчика 18b20 DallasTemperature t(&oneWire); const char* ssid = "******"; // имя сети const char* password = "******"; // пароль сети int temper; void setup () { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting.."); } Serial.println("OK"); Serial.print("IP: "); Serial.println( WiFi.localIP().toString() ); t.begin(); t.setResolution(10);//10 бит 18B20 } void loop() { t.requestTemperatures(); temper = t.getTempCByIndex(0)*100; // опрос датчика 18B20 if (WiFi.status() == WL_CONNECTED) { Serial.print(WiFi.RSSI()); Serial.println(" dBm"); Serial.println(temper); HTTPClient http; http.begin("http://rcl-radio.ru/test.php/?temp=" + (String)temper); delay(10000); int httpCode = http.GET(); if (httpCode > 0) { Serial.print("HTTP "); Serial.print(httpCode); if(httpCode==200){Serial.println(" OK");}else{Serial.println(" Error");} } http.end(); } }
Файл test.php содержит следующий код:
<?php mysql_connect("localhost","имя_пользователя", "пароль") or die("Could not connect: " . mysql_error()); mysql_select_db("имя_базы_данных") or die("Could not select database"); mysql_query("SET NAMES utf8"); if(!empty($_GET["temp"])){ $temp = $_GET["temp"]/100; $query = "INSERT INTO test (temp) VALUES ('$temp')"; mysql_query($query); } ?>
Файл test.php позволяет записывать данные от температуре в базу данных каждые 10 секунд.
В сервере MySQL необходимо создать базу данных, далее создайте таблицу test, в ней будут всего два столбца, это id и test.
Столбцы содержат следующую структуру:
После создания таблицы столбцы будут заполнятся данными о температуре:
В мониторе порта можно увидеть следующую информацию:
Данные монитора порта содержать информацию об уровне сигнала, значение температуры и статус страницы.
На данном примере можно можно сконструировать уст-во которое будет передавать на сервер различную информацию с различных датчиков.