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

IoT-устройство на ESP8266-01 и Arduino Nano: полное руководство по умному дому

Компоненты

Инструменты и ПО

Архитектура системы

Веб-панель (HTML/CSS/jQuery) → HTTP GET-запросы → ESP8266-01 (веб-сервер) → Serial (AT-команды) → Arduino Nano → управление нагрузкой (реле/светодиоды).

Настройка ESP8266-01

Пин-аут

Смена baud rate с 115200 на 9600

  1. Загрузите в Arduino пустой скетч.
  2. Соедините ESP TX→Arduino RX (0), ESP RX→Arduino TX (1) через делитель напряжения.
  3. Откройте Serial Monitor на 115200, «Both NL & CR».
  4. Отправьте AT → ответ OK.
  5. Отправьте AT+UART_DEF=9600,8,1,0,0 (или AT+CIOBAUD=9600).
  6. Смените монитор на 9600, проверьте AT → OK.
  7. Подключитесь к Wi-Fi: AT+CWJAP="SSID","PASSWORD" → WIFI CONNECTED, WIFI GOT IP.

Веб-интерфейс

HTML-страница с двумя кнопками (ON/OFF) для каждой нагрузки. jQuery отправляет GET-запрос на IP ESP с параметром pin=XYZ, где:

Пример: pin=111 → пин 11, HIGH; pin=110 → пин 11, LOW.

Код Arduino (основной)

#include <SoftwareSerial.h>
SoftwareSerial esp8266(2, 3); // RX, TX
#define BAUD 9600
#define DEBUG true

int blueLED = 11;
int redLED = 12;

void setup() {
  pinMode(blueLED, OUTPUT);
  pinMode(redLED, OUTPUT);
  digitalWrite(blueLED, HIGH);
  digitalWrite(redLED, LOW);

  Serial.begin(BAUD);
  esp8266.begin(BAUD);
  initWiFi();
  digitalWrite(blueLED, LOW);
}

void loop() {
  if (esp8266.available()) {
    if (esp8266.find("+IPD,")) {
      delay(1000);
      int connId = esp8266.read() - 48;
      esp8266.find("pin=");
      int pinNumber = (esp8266.read() - 48) * 10 + (esp8266.read() - 48);
      int pinState = esp8266.read() - 48;
      digitalWrite(pinNumber, pinState);

      String closeCmd = "AT+CIPCLOSE=" + String(connId) + "\r\n";
      sendData(closeCmd, 1000, DEBUG);
    }
  }
}

String sendData(String cmd, int timeout, bool debug) {
  String resp = "";
  esp8266.print(cmd);
  long t = millis();
  while ((t + timeout) > millis()) {
    while (esp8266.available()) {
      resp += (char)esp8266.read();
    }
  }
  if (debug) Serial.print(resp);
  return resp;
}

void initWiFi() {
  sendData("AT+RST\r\n", 2000, DEBUG);
  sendData("AT+CWJAP=\"YOUR_SSID\",\"YOUR_PASS\"\r\n", 5000, DEBUG);
  sendData("AT+CWMODE=1\r\n", 1500, DEBUG);
  sendData("AT+CIFSR\r\n", 1500, DEBUG);
  sendData("AT+CIPMUX=1\r\n", 1500, DEBUG);
  sendData("AT+CIPSERVER=1,80\r\n", 1500, DEBUG);
}

Подключение высоковольтной нагрузки

Используйте двухканальный релейный модуль: IN1 → D11, IN2 → D12. Нагрузку подключайте к контактам COM и NO (нормально открыто). Питание реле — 5 В от Arduino или отдельного источника.

Профессиональный PCB

Гербер-файлы открыты: PCBWay project. Заказать можно напрямую.

Траблшутинг

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

  1. TinyML-детектор языка на Arduino Nano 33 BLE Sense с Edge Impulse
  2. Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
  3. Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
  4. Создание ультразвукового левитатора на Arduino: пошаговое руководство
  5. Умный вольтметр на Arduino и смартфоне — простое DIY-проект
  6. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  7. Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
  8. Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
  9. Бесшовное управление яркостью светодиодов с помощью Bolt IoT и Arduino UNO
  10. Управление телевизором через Alexa и Arduino IoT Cloud — пошаговое руководство
ПинНазначение
VCC3.3 В (не 5 В!)
GNDЗемля
CH_PDEnable (HIGH)
RSTСброс (LOW)
GPIO0, GPIO2GPIO
TX→ RX Arduino (через делитель 1к/2.2к)
RX← TX Arduino (SoftwareSerial)