Arduino + PHP и MSQL + DHT11

Целью этого проекта являлось: использовать Arduino для считывания данных с датчика и их дальнейшей передачи в интернет для хранения на веб-сервере и отображения.

В проекте используется плата Arduino Uno с Ethernet шилдом и цифровой датчик температуры и влажности DHT 11, который выполняет роль веб-клиента. Он отправляет POST запросы с данными измерений на веб-сервер, на котором развернута база данных и работает приложение, написанное на PHP.

PHP-приложение обрабатывает значения, когда приходит новый POST запрос, а также обеспечивает работу страницы, которая отображает информацию.

Arduino настроен на использование динамического IP адреса (Dynamic IP Address), что значительно сокращает количество конфликтов с IP и позволяет работать с большинством домашних сетей/роутеров.

PHP msql dht11 и Arduino

Проект был разделен на две основные части:

Часть 1:

- клиентское Web приложение для Arduino: считывает значения с датчика и отправляет их на веб-сервер;

- приложение PHP/MySQL: обрабатывает POST запросы, которые отправляются на сервер и обслуживает веб-страницу.

Часть 2 (не раскрыта в статье, но ниже приведены фотографии):

- визуализация данных: PHP приложение использует Javascript библиотеку D3.js для графического отображения данных, которые хранятся в базе данных. Предусмотрена возможность смотреть данные с датчика за предыдущие дни.

Javascript библиотека D3.js и Arduino Javascript библиотека D3.js и Arduino - второй скрин

Для проекта понадобятся

Электронные компоненты

  1. Arduino Uno
  2. Ethernet Shield
  3. Цифровой датчик температуры DHT 11
  4. Breadboard
  5. Резистор на 10 кОм
  6. USB кабель
  7. Ethernet кабель
  8. Провода
  9. Кусок акрила
  10. PCB коннекторы

Софт

Вам нужен доступ к веб-серверу (можно найти какой-то бесплатный хостинг) с поддержкой PHP приложений и возможностью создания базы данных (возможно, cPanel с phpMyAdmin).

Полезные ссылки

Arduino Web клиент + DHT11 сенсор

Скетч для Arduino очень простой, все важные моменты сопровождаются комментариями (на английском языке).

Схема подключения DHT11 к Arduino приведена на схеме и фото ниже.

DHT11 + Arduino DHT11 + Arduino 2 DHT11 + Arduino 3 DHT11 + Arduino схема подключения

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

PHP + Arduino

В этой части стоит дать краткое описание PHP приложения и базы данных. База данных используется для хранения значений, которые поступают от цифрового датчика температуры и Arduino. Впоследствии вы можете получить доступ к любому из сохраненных значений. Это простая база данных с одной таблицей из трех столбцов. В базе хранятся значения времени и соответствующие значения температуры и влажности.

CREATE TABLE tempLog (

timeStamp TIMESTAMP NOT NULL PRIMARY KEY,

temperature int(11) NOT NULL,

humidity int(11) NOT NULL,

);

PHP + mysql + Arduino

PHP приложение состоит из 3 файлов:

- connect.php: этот файл загружается каждый раз, когда нам нужен доступ к базе данных. Он загружается в чале практически каждого файла. Он содержит функцию, которая возвращает новое подключение, используемое PHP для доступа к базе данных. В этом файле вам надо настроить параметры вашей базы (hostname, database, user, password).

- add.php: когда Arduino отсылает POST запросы на сервер, они проходят через эту страницу. PHP получает значения, отправленные в запросе, и добавляет их в базу данных.

- index.php: это главная страница (landing page) сайта. На этой страница отображаются значения, которые хранятся в базе данных. Сейчас этой файл настроен таким образом, что все значения отображаются в одной HTML таблице. Визуальное отбражение данных выходит за рамки этой статьи. Но рекомендую использовать Javascript библиотеку D3.js, которая отлично подходит для графической визуализации измерянных данных.

php files.zip

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!