В данной статье мы подключим к плате Arduino датчик температуры и влажности DHT11 и будем передавать считываемые с него данные на сервер MySQL (базу данных phpmyadmin).
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Arduino Ethernet Shield 2. Вместо шилда Ethernet можно использовать Ethernet модуль W5100.
- Датчик температуры и влажности DHT11 (купить на AliExpress).
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Установка сервера MySQL
В данном проекте мы в качестве сервера MySQL будем использовать XAMPP server, который можно использовать в операционных системах Windows и Linux. Сервер XAMPP можно скачать по следующей ссылке.
Если же у вас операционная система Ubuntu или подобная ей, то в этом случае вам в качестве сервера MySQL необходимо использовать сервер LAMP. Для его установки выполните следующую последовательность шагов:
1. Установите Apache: Sudo apt-get install apache2.
2. Установите MySQL: sudo apt-get install mysql-server.
3. Установите PHP: sudo apt-get install php5 libapache2-mod-php5.
4. Перезапустите сервер: sudo /etc/init.d/apache2 restart.
5. Проверьте Apache http://localhost/. При переходе по данной ссылке у вас должна открыться страница apache. Если она у вас не открывается, значит во время установки описанных компонентов произошла какая то ошибка.
В данном проекте мы будем использовать PHPMYADMIN, которая представляет собой веб-интерфейс сервера MySQL. Для ее установки используйте команду:
1 |
sudo apt-get install phpmyadmin |
Arduino Ethernet Shield
Данный шилд (плата расширения) для платы Arduino позволяет подключать плату Arduino к сети интернет через Ethernet соединение. Для этого необходимо всего лишь одеть сверху данный шилд на плату Arduino и подключить к нему кабель RJ45. Подключение Arduino к сети интернет с помощью данного шилда достаточно просто и в сети можно найти много ресурсов, описывающих данных процесс.
Также вместо данного шилда для подключения платы Arduino к сети интернет через Ethernet соединение можно использовать модуль W5100, на нашем сайте вы можете прочитать подробную статью про подключение данного модуля к плате Arduino и последующее ее соединение с сетью интернет.
Датчик DHT11
Датчик DHT11 способен измерять температуру и влажность окружающей среды и передавать эту информацию по цифровому выходы. Датчик отличается высокой стабильностью работы, быстрым откликом на изменения условий среды и устойчивостью помехам. Его очень просто подключить к плате Arduino и на нашем сайте вы можете посмотреть следующие проекты с применением данного датчика:
- измерение температуры и влажности с помощью Arduino и датчика DHT11;
- мониторинг температуры и влажности через Интернет с помощью Arduino;
- логгер данных температуры и влажности на SD карту и компьютер с помощью Arduino;
- логгер данных с датчика температуры DHT11 на основе MATLAB и Arduino.
Но некоторых радиолюбителей не устраивает датчик DHT11 по причине не очень высокой точности измерения температуры, в этом случае вместо него вы можете использовать более точный и также очень популярный датчик DS18B20. На нашем сайте можно прочитать статью о его подключении к плате Arduino.
Схема проекта
Схема проекта передачи данных температуры и влажности из платы Arduino на сервер MySQL представлена на следующем рисунке.
Вам необходимо одеть сверху на плату Arduino шилд Ethernet и подключить датчик DHT11 как показано на представленной схеме.
Исходный код программы (скетча)
Все необходимые файлы для этого проекта можно скачать по следующей ссылке.
Здесь приведу только код скетча для Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
#include "DHT.h" #include <SPI.h> #include <Ethernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Setting MAC Address #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN,DHTTYPE); float humidityData; float temperatureData; char server[] = "<Your Local IP>"; IPAddress ip(192,168,0,177); EthernetClient client; /* Setup for Ethernet and RFID */ void setup() { Serial.begin(9600); dht.begin(); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); Ethernet.begin(mac, ip); } delay(1000); } //------------------------------------------------------------------------------ /* Infinite Loop */ void loop(){ humidityData = dht.readHumidity(); temperatureData = dht.readTemperature(); Sending_To_phpmyadmindatabase(); delay(30000); // interval } void Sending_To_phpmyadmindatabase() //CONNECTING WITH MYSQL { if (client.connect(server, 80)) { Serial.println("connected"); // Make a HTTP request: Serial.print("GET /testcode/dht.php?humidity="); client.print("GET /testcode/dht.php?humidity="); //YOUR URL Serial.println(humidityData); client.print(humidityData); client.print("&temperature="); Serial.println("&temperature="); client.print(temperatureData); Serial.println(temperatureData); client.print(" "); //SPACE BEFORE HTTP/1.1 client.print("HTTP/1.1"); client.println(); client.println("Host: <Your Local IP>"); client.println("Connection: close"); client.println(); } else { // if you didn't get a connection to the server: Serial.println("connection failed"); } } |
Видео, демонстрирующее работу проекта
К сожалению, автор проекта никакого текстового описания непосредственно процесса передачи данных от платы Arduino на сервер MySQL не привел, но зато он снял очень подробное видео на эту тему, которое я здесь и привожу. Надеюсь, оно поможет вам разобраться в сути этих процессов.
4 038 просмотров
Уважаемые студенты ЦАТЭК, прошу вас уважать автора данного пособия и не писать комментарии все изучаемых тем. А я, в свою очередь, приношу извинения автору за некорректные комментарии.
А каким образом ваш ВУЗ связан с нашим интернет-ресурсом?
Обязательно при этом модуль ардуино и пк, на котором находится сервер быть подключены к одной секти?
ЦАТЭК *****
Сдать данные через phpmyadmin - это ужасно ))
Ну не самое ужасное из того что может случиться в этой жизни ))