Возможно я не совсем подробно(правильно) описал задачу:
комплектующие arduino micro(можно и другой), wifi модуль HLK-RM04, температурный датчик.
Вот скетч, который формирует строку http запроса и кидает ее в порт:
Код:
#include <dht.h>
DHT sensor = DHT();
void setup()
{
Serial1.begin(115200);
sensor.attach(A3);
delay(1000);
}
void loop()
{
sensor.update();
int h = sensor.getHumidityInt();
int t = sensor.getTemperatureInt();
String msg = "GET http://192.168.1.1/arduino.php?t="+ String(t) + "&h="+String(h);
Serial1.println(msg);
delay(9000);
}
При ввода в браузер строки 192.168.1.20:3333 (адрес моего wifi модуля), строки отображаюися в браузере.
Имеется web-server apache (адрес 192.168.1.1), с mysql и php.
скрипт php который отлавливает get запросы и производит запись в mysql:
PHP код:
<?php
//адрес хоста
$dbhost = 'localhost';
$dbuser = 'test';
$dbpass = 'password';
$dbname = 'test';
// сохраняем IP на всякий случай
$client_ip = $_SERVER['REMOTE_ADDR'];
// получение значения переменной температура
$temp = $_GET["t"];
// получение значения влажность
$hum = $_GET["h"];
//устанавливаем подключение к MySQL
$connect = mysql_connect($dbhost, $dbuser, $dbpass);
// Выбираем базу данных
mysql_select_db ($dbname, $connect);
//Отправляем данные в таблицу
$sql = "INSERT INTO sensor_data VALUES (NOW(), '$temp', '$hum', '$client_ip')";
// закрываем соединение с базой
mysql_close($connect);
?>
Соответственно если скопировать одну из строк, которые выводятся в браузер и вставить ее в адресную строку, то скрипт корректно отрабатывает и запись добавляется в базу.
Весь вопрос заключается в том как заставить arduino+wifi отправлять запрос в web-server, как например при использовании интернет шилда:
Код:
#include <DHT.h>
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4C, 0xFB };
byte ip[] = { 192, 168, 1, 30 };
//IP адрес сервера который будет собирать статистику
byte server[] = { 192, 168, 1, 20 };
EthernetClient client;
//Контакт к которому подключен датчик температуры и влажности
#define DHTPIN A0
// Вы бираем сенсор который используется у вас, у меня DHT11
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Ethernet.begin(mac, ip);
dht.begin();
// Для отладки включим отправку данных в COM порт
Serial.begin(9600);
}
void loop()
{
int h = dht.readHumidity();
int t = dht.readTemperature();
int l = analogRead(A0);
String msg = "GET /test.php?t="+ String(t) + "&h="+String(h);
// Для отладки включим отправку данных в COM порт
Serial.println(msg);
// Если это не требуется, то можно закомментировать
client.connect(server, 80);
client.println(msg);
//Ждем 2 сек.
delay (2000);
//потом отключаемся
client.stop();
//Данные будут отправляться каждые 10 сек, выше мы уже подождали 2 сек, подождем еще 8 сек.
delay (8000);
}
???
Или же такое в принципе через любой модуль wifi не возможно, или мой в частности??