Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Компоненты и материалы

Arduino UNO × 1
ESP8266 ESP-01 × 1
Датчик температуры и влажности DHT22 × 1
DS18B20 (для почвы, 1-Wire) × 1
Фоторезистор (LDR) × 1
Модуль 2-канального реле 5 В × 1

Приложения и онлайн-сервисы

О проекте

Цель: собирать данные с локального блока и отправлять их в интернет. Пользователь где угодно просматривает данные и отправляет команды исполнительным механизмам. В качестве «центра» используется ThingSpeak.com. Локальный блок (UNO + ESP-01) читает датчики и статус исполнительных механизмов, записывает в Status Channel на ThingSpeak, и читает команды из Actuator Channels.

Android-приложение (MIT App Inventor) читает Status Channel для отображения и пишет в Actuator Channels для управления.

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor
Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Шаг 1: Введение

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Собираемые данные датчиков:

Исполнительные механизмы (2 реле):

Логика управления (пользователь решает на основе данных):

Шаг 2: Спецификация (BOM)

Шаг 3: Аппаратная часть

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Рекомендуемая последовательность:

  1. Установить и протестировать датчики локально
  2. Настроить ESP-01 (BareMinimum)
  3. Переключить ESP-01 в рабочую конфигурацию
  4. Создать Status Channel на ThingSpeak
  5. Загрузить код отправки данных на Arduino
  6. Разработать первое Android-приложение (мониторинг)
  7. Установить исполнительные механизмы (LED, реле)
  8. Создать Actuator Channels на ThingSpeak
  9. Загрузить код с управлением исполнителями
  10. Финализировать Android-приложение

Шаг 4: Подключение датчиков

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Необходимые библиотеки и начальная конфигурация:

// DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
int soilTemp = 0;

// DHT22
#include "DHT.h"
#include <stdlib.h>
int pinoDHT = 11;
int tipoDHT = DHT22;
DHT dht(pinoDHT, tipoDHT);
int airTemp = 0, airHum = 0;

// LDR
#define ldrPIN 1
int light = 0;

// Влажность почвы
#define soilHumPIN 0
int soilHum = 0;

void setup() {
  Serial.begin(9600);
  DS18B20.begin();
  dht.begin();
}

void loop() {
  readSensors();
  displaySensors();
  delay(10000);
}

void readSensors() {
  airTemp = dht.readTemperature();
  airHum = dht.readHumidity();
  DS18B20.requestTemperatures();
  soilTemp = DS18B20.getTempCByIndex(0);
  soilHum = map(analogRead(soilHumPIN), 1023, 0, 0, 100);
  light = map(analogRead(ldrPIN), 1023, 0, 0, 100);
}

void displaySensors() {
  Serial.print("airTemp (oC): "); Serial.println(airTemp);
  Serial.print("airHum (%): "); Serial.println(airHum);
  Serial.print("soilTemp (oC): "); Serial.println(soilTemp);
  Serial.print("soilHum (%): "); Serial.println(soilHum);
  Serial.print("light (%): "); Serial.println(light);
  Serial.println();
}
Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Шаг 5: Начальная настройка ESP-01

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

ESP-01 работает как Serial-бридж (AT-команды). Заводская скорость часто 115200 бод, нужно 9600.

  1. Подключите ESP-01 к Arduino (RX→TX, TX→RX, CH_PD→3.3V, RST→D8, VCC→3.3V, GND→GND).
  2. Загрузите в Arduino пустой скетч (BareMinimum), чтобы освободить Serial.
  3. Откройте монитор порта на 115200, отправьте AT → ожидайте OK.
  4. Смените скорость: AT+UART_DEF=9600,8,1,0,0.
  5. Переключите монитор на 9600, проверьте AT → OK.
  6. Режим Station (клиент): AT+CWMODE=1.
  7. Подключение к Wi-Fi: AT+CWJAP="SSID","PASSWORD".
  8. Успех: WIFI CONNECTED, WIFI GOT IP.
  9. Узнать IP: AT+CIFSR.

Шаг 6: Тестирование ESP-01

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Переподключите ESP-01 к рабочим пинам: RX→D7, TX→D6, CH_PD→3.3V, RST→D8, VCC→3.3V, GND→GND.

Тестовый скетч для прозрачного моста:

#include <SoftwareSerial.h>
SoftwareSerial esp8266(6,7); // Rx=6, Tx=7
#define speed8266 9600
void setup() {
  esp8266.begin(speed8266);
  Serial.begin(speed8266);
  Serial.println("ESP8266 Setup test - use AT commands");
}
void loop() {
  while(esp8266.available()) Serial.write(esp8266.read());
  while(Serial.available()) esp8266.write(Serial.read());
}

Проверьте команды: AT, AT+RST, AT+GMR, AT+CWMODE?, AT+CWLAP, AT+CIFSR.

Функция автоподключения при сбросе:

void connectWiFi() {
  sendData("AT+RST\r\n", 2000, 0);
  sendData("AT+CWJAP=\"YOUR_SSID\",\"YOUR_PASS\"\r\n", 2000, 0);
  delay(3000);
  sendData("AT+CWMODE=1\r\n", 1000, 0);
  sendData("AT+CIFSR\r\n", 1000, 0);
  Serial.println("8266 Connected");
}
String sendData(String command, const int timeout, boolean debug) {
  String response = "";
  EspSerial.print(command);
  long int time = millis();
  while ((time + timeout) > millis()) {
    while (EspSerial.available()) {
      char c = EspSerial.read();
      response += c;
    }
  }
  if (debug) Serial.print(response);
  return response;
}

Шаг 7: Датчики + ESP-01 вместе

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Шаг 8: ThingSpeak

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Создайте канал Status с полями:

Сохраните Write API Key.

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Шаг 9: Отправка статуса в облако

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Отправка GET-запросом в 3 этапа:

  1. AT+CIPSTART="TCP","184.106.153.149",80
  2. AT+CIPSEND=116 (длина)
  3. GET /update?api_key=YOUR_KEY&field1=pump&field2=lamp&field3=airTemp&field4=airHum&field5=soilTemp&field6=soilHum&field7=light&field8=spare

Полный код отправки (функции writeThingSpeak(), startThingSpeakCmd(), sendThingSpeakGetCmd(), EspHardwareReset()) доступен на GitHub (файл SendingStatusTS_EXT.ino).

Шаг 10: Android-приложение (часть 1 — мониторинг)

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Интерфейс: метки для каждого датчика, индикатор WebSocket. Каждые 2 сек (Clock1) вызывается процедура readArduino, которая делает GET к Status Channel ThingSpeak, парсит JSON, обновляет глобальные переменные и отображает. Значения 0/1 реле преобразуются в OFF/ON. Процедура Alarm проверяет пороги почвы (temp < 10°C, hum < 60%) и мигает сообщением (Clock2 каждую сек).

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Файл проекта: ArduFarmBot_Status_App_EXT.aia на GitHub.

Шаг 11: Установка исполнительных механизмов (LED и реле)

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Реле с оптопарой и Low Level Trigger. Питание реле 5 В отдельно от Arduino (GND реле не соединять с GND Arduino для снижения шумов).

Шаг 12: Настройка Actuator Channels на ThingSpeak

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Два канала (по одному на актуатор), используем только Field 1:

Шаг 13: Код Arduino с чтением команд

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Чтение последнего значения Field 1 каждые 10 сек: GET /channels/CHANNEL_ID/fields/1/last. Функция readThingSpeak(channelID) возвращает 0, 1 или 9 (ошибка). Код: ReadingCommandTS_EXT.ino на GitHub.

Шаг 14: Тест команд через браузер

Включить насос: https://api.thingspeak.com/update?api_key=ACT1_WRITE_KEY&field1=1

Выключить насос: ...&field1=0

Аналогично для лампы (ACT2_WRITE_KEY).

Шаг 15: Финал Android-приложения (управление)

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Добавлены пары кнопок ON/OFF для каждого актуатора. Нажатие пишет 1 или 0 в соответствующий Actuator Channel через Web-компонент. Цвет текста кнопки меняется (ON=синий, OFF=красный). Файл: ArduFarmBot_V1_EXT.aia.

Шаг 16: Объединение всего в один скетч

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Итоговый код периодически читает и пишет в ThingSpeak, проверяет связь с ESP-01 (AT-командой) и при необходимости делает аппаратный сброс. Полный код: ArduFarmBot_Light_EXT.ino на GitHub.

Шаг 17: Заключение

Простые IoT-проекты на Arduino UNO, ESP-01, ThingSpeak и MIT App Inventor

Много возможностей для IoT с Arduino Uno и ESP8266-01. Следите за новыми уроками MJRoBot!

GitHub: ArduFarmBot_Light

Блог: MJRoBot.org

Схемы

Электрическая схема (Fritzing): GitHub

Производственный процесс

  1. Сборка параллельного C++17 SYCL кода на Raspberry Pi 4B+ IoT платах
  2. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  3. Веб-сервер на Arduino Uno WiFi: управление LED через браузер
  4. Простой калькулятор на Arduino UNO — базовый проект для начинающих
  5. Сборка портативного дисплея на основе эффекта сохранения изображения с Arduino UNO и ATtiny85
  6. Бесконтактный термометрический шлюз для быстрого и точного скрининга
  7. Arduino UNO + WiFi Shield: реальный график температуры в вебе через Serial
  8. Метеостанция на Arduino и ThingSpeak: температура и влажность в облаке
  9. Использование термистора: пошаговое руководство для Arduino
  10. Система управления бассейном на Azure IoT: умные датчики и удаленный мониторинг