Arduino + PHP и MSQL + DHT11
Целью этого проекта являлось: использовать Arduino для считывания данных с датчика и их дальнейшей передачи в интернет для хранения на веб-сервере и отображения.
В проекте используется плата Arduino Uno с Ethernet шилдом и цифровой датчик температуры и влажности DHT 11, который выполняет роль веб-клиента. Он отправляет POST запросы с данными измерений на веб-сервер, на котором развернута база данных и работает приложение, написанное на PHP.
PHP-приложение обрабатывает значения, когда приходит новый POST запрос, а также обеспечивает работу страницы, которая отображает информацию.
Arduino настроен на использование динамического IP адреса (Dynamic IP Address), что значительно сокращает количество конфликтов с IP и позволяет работать с большинством домашних сетей/роутеров.

Проект был разделен на две основные части:
Часть 1:
- клиентское Web приложение для Arduino: считывает значения с датчика и отправляет их на веб-сервер;
- приложение PHP/MySQL: обрабатывает POST запросы, которые отправляются на сервер и обслуживает веб-страницу.
Часть 2 (не раскрыта в статье, но ниже приведены фотографии):
- визуализация данных: PHP приложение использует Javascript библиотеку D3.js для графического отображения данных, которые хранятся в базе данных. Предусмотрена возможность смотреть данные с датчика за предыдущие дни.


Для проекта понадобятся
Электронные компоненты
- Arduino Uno
- Ethernet Shield
- Цифровой датчик температуры DHT 11
- Breadboard
- Резистор на 10 кОм
- USB кабель
- Ethernet кабель
- Провода
- Кусок акрила
- PCB коннекторы
Софт
Вам нужен доступ к веб-серверу (можно найти какой-то бесплатный хостинг) с поддержкой PHP приложений и возможностью создания базы данных (возможно, cPanel с phpMyAdmin).
Полезные ссылки
- Request Maker: очень полезный ресурс для проверки ваших PHP приложений. Вы можете симулировать POST запрос, который будет делать ваш Arduino и проверить все ли нормально отрабатывает.
- Библиотека DHT11 sensor library от Adafruit
- Arduino Web Client
- Arduino IDE
- Arduino Ethernet
Arduino Web клиент + DHT11 сенсор
Скетч для Arduino очень простой, все важные моменты сопровождаются комментариями (на английском языке).
Схема подключения DHT11 к Arduino приведена на схеме и фото ниже.




Приложение PHP/MySQL

В этой части стоит дать краткое описание PHP приложения и базы данных. База данных используется для хранения значений, которые поступают от цифрового датчика температуры и Arduino. Впоследствии вы можете получить доступ к любому из сохраненных значений. Это простая база данных с одной таблицей из трех столбцов. В базе хранятся значения времени и соответствующие значения температуры и влажности.
CREATE TABLE tempLog (
timeStamp TIMESTAMP NOT NULL PRIMARY KEY,
temperature int(11) NOT NULL,
humidity int(11) NOT NULL,
);

PHP приложение состоит из 3 файлов:
- connect.php: этот файл загружается каждый раз, когда нам нужен доступ к базе данных. Он загружается в чале практически каждого файла. Он содержит функцию, которая возвращает новое подключение, используемое PHP для доступа к базе данных. В этом файле вам надо настроить параметры вашей базы (hostname, database, user, password).
- add.php: когда Arduino отсылает POST запросы на сервер, они проходят через эту страницу. PHP получает значения, отправленные в запросе, и добавляет их в базу данных.
- index.php: это главная страница (landing page) сайта. На этой страница отображаются значения, которые хранятся в базе данных. Сейчас этой файл настроен таким образом, что все значения отображаются в одной HTML таблице. Визуальное отбражение данных выходит за рамки этой статьи. Но рекомендую использовать Javascript библиотеку D3.js, которая отлично подходит для графической визуализации измерянных данных.
Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!