Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05
Сегодня я публикую здесь первое видео из серии о том, как смонтировать конечное устройство с ESP32, а затем отправить его в облачный сервис. В этом конкретном эпизоде я покажу вам, как отправлять информацию с датчика DHT22, используя протокол MQTT для IBM Watson.
Сначала мы представим MQTT - межмашинный протокол, используемый в IoT (Интернете вещей). Мы также отправим данные с датчика температуры и влажности, используя этот протокол, а затем сверим график с этими данными на веб-странице.
Шаг 1: Распиновка ESP32
Я разместил здесь распиновку ESP32, которую мы используем в нашем примере. Однако я хочу прояснить, что проект также работает с ESP8266, и даже с тем же исходным кодом.
Шаг 2: Распиновка NodeMCU
Шаг 3: MQTT
MQTT - это межмашинный протокол, используемый в IoT. Он был разработан, чтобы быть легким и быстрым. Он использует систему подписки / публикации, где устройство «подписывается» на тему с конкретной информацией, которая вас интересует, а затем получает информацию всякий раз, когда устройство публикует данные по этой теме.
Как и серверной программе, MQTT нуждается в программном обеспечении. Это называется брокером. В этом конкретном случае мы будем использовать IBM Bluemix IoT Service. Эта услуга бесплатна для тестирования конечных точек.
Далее нам понадобится сотовый телефон или планшет со стороной приложения, то есть в качестве MQTT-клиента. У нас также есть сторона устройства, то есть сторона ESP с термометром. Это отправляет данные о температуре и влажности в Bluemix, который затем отправляет эту информацию на сторону приложения.
Шаг 4: Сборка
Наша схема состоит из резистора 4,7 кОм между 3,3 В и выводом данных, а также DHT22, подключенного к GPIO4 ESP32 или NodeMCU. Таким образом, это наша конечная точка.
Шаг 5: Схема
Я покажу здесь несколько способов работы с локальным брокером MQTT. Я разместил две модели диаграмм. В видео я рассказываю, например, о ситуации с использованием Raspberry Pi для открытия ворот.
На изображении выше у нас есть первая архитектура, которая использует локальный брокер с постоянством, а вторая архитектура ниже, которая взаимодействует только с брокером в облаке.
Как показано на схеме, наш датчик затем отправляет данные о температуре и влажности в IBM Watson. Важно подчеркнуть, что IBM Watson не записывает данные в этом случае, поскольку они отображаются только в виде графиков. Это связано с тем, что в сегодняшнем примере мы не будем рассматривать какие-либо операции с базой данных, а только укажем доступ к странице быстрого запуска (https://quickstart.internetofthings.ibmcloud.com/), на которой будет отображаться состояние конечной точки. Схема проста и использует Wi-Fi для отправки данных.
Шаг 6: библиотеки
В среде Arduino IDE перейдите в меню Sketch -> Include Library -> Manage Libraries…
На открывшемся экране введите в поиске «DHT» и установите библиотеку «Библиотека датчиков DHT».
Затем введите «PubSubClient» и установите библиотеку «PubSubClient».
Шаг 7: Библиотека чтения температуры и влажности
Шаг 8: библиотека MQTT
Шаг 9: MQTT.ino
Мы начинаем исходный код, проверяя, какой ESP используется, и импортируем соответствующую библиотеку и WiFi. Мы по-прежнему включаем библиотеки MQTT и датчик температуры и влажности.
// Проверено, что ESP используется для отправки // и импортируется библиотека, соответствующая Wi-Fi # если определена (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include
Затем мы определяем следующее: интервал между отправкой данных, сервер MQTT, который будет использоваться, информацию для печати на диаграмме и идентификатор. Мы также указали, какой должна быть строка QUICK_START.
// Intervalo entre os envios # define INTERVAL 1000 // Substitua pelo SSID da sua rede #define SSID "TesteESP" // Substitua pela senha da sua rede #define PASSWORD "87654321" // Сервер MQTT que iremos utlizar #define MQTT_SER.messaging.internetofthings.ibmcloud.com "// Nome do tópico que devemos enviar os dados // para que eles apareçam nos gráficos #define TOPIC_NAME" iot-2 / evt / status / fmt / json "// ID que usaremos para conectar // QUICK_START разрабатывает постоянную строку с const String QUICK_START = "d: quickstart: arduino:";
На этом этапе мы определяем уникальный идентификатор. В этом примере мы используем MAC-адрес устройства, которое мы используем. Это будет служить идентификатором на сайте QuickStart. Здесь мы также связываем Quickstart ID с идентификатором нашего устройства.
// Нет DEVICE_ID voiceê deve mudar para um id único // Aqui nesse exemplo utilizamos o MAC Address // do dispositivo que estamos utilizando // Servirá como Identificação no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Concatemos o id do quickstart com o id do nosso // dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;
Затем мы настраиваем MQTT и WiFi, а также объекты и переменные, связанные со значениями температуры и влажности.
// Клиент WiFi для MQTT используется для этого conectarWiFiClient wifiClient; // Клиент MQTT, используется URL-адрес сервера, порт // клиентский канал WiFi PubSubClient client (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Задача реализации темы температуры и умения DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura float temperature = 0; // Variável para guardarmos o valor da umidade float влажность = 0;
MQTT.ino - настройка
В настройке мы инициализируем DHT и подключимся к сети Wi-Fi и серверу MQTT.
void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Подключить к сети WiFi setupWiFi (); // Подключение к серверу MQTT connectMQTTServer (); }
MQTT.ino - цикл
В цикле мы собираем данные датчиков для создания Json, который будет опубликован в теме, в которой IBM Watson ожидает сгенерировать график.
void loop () {// Tempos agora em milisegundos long now = millis (); // Se o tempo desde o último envio для maior que o intervalo de envio if (now - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu или último envio lastPublishTime = now; // Режим работы с температурой и умением readSensor (); Serial.print ("Опубликовать сообщение:"); // Преобразование json в enviaremos для сервера mqtt String msg = createJsonString (); Serial.println (сообщение); // Публикация не содержит описания сервера для получателя // Создание графического файла client.publish (TOPIC_NAME, msg.c_str ()); }}
MQTT.ino - настройкаWiFi
Здесь у нас есть функция, отвечающая за подключение к сети Wi-Fi.
// Функция откликается на изменение WiFivoid setupWiFi () {Serial.println (); Serial.print («Подключение к»); Serial.print (SSID); // Если нужно, чтобы восстановить настройки // сделать ssid e senha WiFi.begin (SSID, PASSWORD); // Вы можете установить соединение, пока (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Как это сделать, вы можете использовать Serial.println (""); Serial.println («WiFi подключен»); }
MQTT.ino - connectMQTTServer
На этом шаге мы используем функцию, отвечающую за подключение к серверу MQTT.
// Функция ответа сервера MQTTvoid connectMQTTServer () {Serial.println ("Подключение к серверу MQTT…"); // Укажите идентификатор, который определен if (client.connect (CLIENT_ID.c_str ())) {// Установите соединение с последовательностью Serial.println ("connected"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}
MQTT.ino - readSensor
В этой функции определяется считывание данных о температуре и влажности.
// Функционал, отвечающий за реализацию // температуры и ограничения void readSensor () {float value; // Установить значение температуры = dht.readTemperature (); // Значение имеет значение, если (! Isnan (значение)) {// Значение, новое значение, значение температуры, температура = значение; } // Укажите значение слова = dht.readHumidity (); // Доблесть для валида if (! Isnan (value)) {// Armazena o novo valor da umidade влажность = значение; }}
MQTT.ino - createJsonString
Здесь у нас есть функция, отвечающая за создание Json с прочитанными данными.
// Função responseável por criar // Um Json com os dados lidos String createJsonString () {String data = "{"; данные + = "\" д / ": {"; data + = "\" температура / ":"; data + = String (температура); данные + = ","; data + = "\" влажность / ":"; data + = String (влажность); данные + = "}"; данные + = "}"; вернуть данные; }
Шаг 10: Графика
Чтобы просмотреть график датчика, перейдите
на
В поле Device ID введите DEVICE_ID, который вы определили в коде.
- Важно изменить этот идентификатор устройства на уникальный идентификатор, который используется только во избежание конфликта с данными, отправленными другим лицом.
Наконец, примите условия и нажмите «Перейти».
В этом проекте мы протестировали нашу конечную точку на сервере IBM Watson. Это гарантирует, что наша программа Arduino правильно взаимодействует с платформой и что отправленные нами данные будут беспрепятственно получены облачной службой, если мы создадим учетную запись.
В следующем видео из этой серии я покажу вам, как войти в IBM Watson, а также сделать запись в банке данных того или иного облачного сервиса, такого как Google, Amazon и других.
Шаг 11: файлы
Загрузите файлы:
Я НЕТ
Рекомендуемые:
Безопасный доступ к вашему Pi из любой точки мира: 7 шагов
Безопасный доступ к вашему Pi из любой точки мира: у меня есть несколько приложений, работающих круглосуточно на Pi. Каждый раз, когда я выходил из дома, было очень трудно проверить здоровье и статус Пи. Впоследствии я преодолел небольшое препятствие, используя ngrok. Доступ к устройству извне дает
Как использовать шаговый двигатель в качестве поворотного энкодера и OLED-дисплея для шагов: 6 шагов
Как использовать шаговый двигатель в качестве поворотного энкодера и OLED-дисплея для шагов: в этом руководстве мы узнаем, как отслеживать шаги шагового двигателя на OLED-дисплее. Посмотрите демонстрационное видео. Авторство оригинального руководства принадлежит пользователю youtube " sky4fly "
Гидропоника Интернета вещей - использование IBM Watson для измерений PH и EC: 7 шагов (с изображениями)
Гидропоника IoT - использование IBM Watson для измерений PH и EC. В этом руководстве показано, как контролировать EC, pH и температуру гидропонной установки и загружать данные в службу IBM Watson. Watson бесплатен для начала. Есть платные планы, но бесплатного более чем достаточно для этого проекта
8-битные песни с использованием конечной темы Arduino / Zelda: 4 шага
8-битные песни с использованием Arduino / Zelda Ending Theme: Вы когда-нибудь хотели сделать такие подарочные карты или игрушки, которые воспроизводят песню, когда вы их открываете или сжимаете? С песней по вашему выбору? Может быть, даже песня, которую вы написали? Ну, это самая легкая вещь в мире, и она вам ни о чем не будет стоить
Как использовать Wiimote в качестве компьютерной мыши, используя свечи в качестве датчика !!: 3 шага
Как использовать Wiimote в качестве компьютерной мыши с использованием свечей в качестве датчика !!: это руководство покажет вам, как подключить Wii Remote (Wiimote) к компьютеру и использовать его в качестве мыши