Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
В 2016 году я уже публиковал эту инструкцию «Как создать собственный шлюз Wi-Fi для подключения Arduino к IP-сети». Так как я внес некоторые улучшения в код и все еще использую это решение.
Тем не менее, сейчас есть некоторые экраны ESP8266, которые позволяют делать то же самое без пайки, если вы не используете платы Micro или Nano.
В этом руководстве объясняется, как использовать эти экраны ESP82 в качестве последовательного шлюза UDP / IP.
Это часть глобальной инфраструктуры домашней автоматизации, которую вы можете посмотреть здесь
Больше информации о щите с этой инструкцией
Запасы
1 Arduino Mega (лучше всего иметь как минимум 1 Mega для разработки и 1 Uno для фазы запуска)
1 Rokoo ESP8266 ESP-12E UART WIFI Convertisseur
1 FTDI 3,3 В
2 макетных провода
Шаг 1. Как это работает?
Шлюз основан на модуле ESP8266
Этот модуль подключен с одной стороны последовательным каналом с другой стороны к IP-сети с помощью Wi-Fi.
Он действует как черный ящик. Пакеты данных, поступающие из последовательного канала, отправляются на порт IP / Udp и наоборот.
Вам просто нужно установить свою собственную конфигурацию (IP, WIFI…) при первом включении шлюза.
Он может передавать как необработанные ASCII, так и двоичные данные (без HTTP, JSON…)
Он предназначен для соединения объектов с серверным программным обеспечением домашнего производства, которым требуется быстрая и частая передача коротких пакетов данных.
Шаг 2. Каковы основные функции?
В основном это черный ящик, который конвертирует последовательные данные в пакет UDP обоими способами.
Но шлюз также может действовать самостоятельно, отправляя внутреннюю информацию на сервер и получая некоторые команды от сервера.
Arduino может отправлять и получать сообщения на / от сервера, подключенного через Интернет, просто распечатав / прочитав последовательную ссылку. Разработчику Arduino незачем беспокоиться о протоколе IP.
Вдобавок ко всему он предоставляет GPIO, который может использоваться Arduino для проверки правильности подключения шлюза к WIFI, а шлюз может автоматически переключаться между двумя разными SSID в случае сбоя.
Шлюз имеет 2 различных режима работы, которые выбираются путем установки GPIO.
Установите GPIO на землю, и шлюз войдет в режим конфигурации.
После установки GPIO шлюз перейдет в режим работы шлюза.
Кроме того, конфигурацию шлюза UDP / IP можно изменить удаленно.
Шаг 3: создание материала
Требуется очень немногое
1 ESP8266 Shield - я нашел этот модуль платы расширения последовательного WiFi Shield UNO R3 ESP8266 менее чем за 9 €
1 UNO, который является целевой целью Arduino
1 Mega - инструмент для разработки на Arduino (без него можно обойтись, но его довольно сложно отлаживать)
1 FTDI 3.3 / 5v для разработки
Некоторые провода
Шаг 4. Загрузите код шлюза
На этом этапе Arduino используется только для питания (от USB или другого источника питания) на плате ESP8266.
Подключите ESP8266 GPIO4 к земле (для входа в режим настройки)
Позаботьтесь о том, чтобы установить FTDI на 3,3 В в соответствии с требованиями экрана.
Подключите FTDI к шилду (от RX к TX)
Установите переключатель экрана в положение 1: выкл. 2: выкл. 3: вкл. 4: вкл.
Подключите USB-сторону FTDI к компьютеру.
Сбросьте щит с помощью кнопки ESP-RST
Загрузите код шлюза на GitHub
Откройте Arduino IDE
- Выберите порт монитора FTDI
- Откройте последовательный монитор IDE - установите скорость 38400
- Выберите стандартную плату модуля ES8266
- Обновите прошивку щита кодом шлюза
Установите переключатель 3: выключено 4: выключено
Откройте последовательный монитор IDE.
Сбросьте щит с помощью кнопки ESP-RST
На мониторе должны отображаться сообщения, начинающиеся с «Инициализация EEPROM» «Инициализация завершена»….
Пора заняться настройкой
Шаг 5: приступим к настройке шлюза
При первой загрузке кода шлюза ESP8266 Eeprom будет инициализирован со значениями по умолчанию. Вы увидите такие сообщения «установить параметр: x size: yy»
Вы можете найти эти значения в определении кода paramValue. Конечно, вы можете изменить эти значения по умолчанию перед загрузкой кода, но вы также можете настроить свою конфигурацию с помощью команды позже. Это лучше, если вы планируете использовать несколько шлюзов и хранить только одну версию кода.
Используйте последовательный порт монитора для отправки команды (установите NL и CR).
Поскольку SSID в настоящее время не определен, дождитесь сообщения «Не удалось подключиться к второму идентификатору повторной попытки: 5».
Затем автоматически начнется сканирование WIFI.
Пришло время установить ваши SSID с помощью следующих команд:
- SSID1 = ваш выбор1
- PSW1 = yourpsw1
- SSID2 = ваш выбор2
- PSW2 = yourpsw2
- SSID = 1 (чтобы выбрать, с какого SSID начинать)
- Перезагрузка Wi-Fi
Через несколько секунд вы можете проверить соединение с помощью команды «ShowWifi». Вы должны увидеть IP-адрес, который шлюз получил от вашего DNS-сервера. Если это так, пора идти дальше
Пришло время определить адрес вашего IP-сервера, введя 4 дополнительных адреса (сервер, на котором будет запущен тестовый код Java). Например:
- «IP1 = 192»
- «IP2 = 168»
- «IP3 = 1»
- «IP4 = 10»
Отправив пустую команду, вы увидите все поддерживаемые команды, которые вы можете использовать позже в соответствии с вашими требованиями. Все значения параметров хранятся в EEPROM и требуют перезагрузки.
Снимите провод конфигурации
Щит теперь работает как шлюз
Шаг 6: Загрузите пример кода Arduino
Сначала загрузите основной код Arduino на GitHub
Затем загрузите код Arduino, это определение команд и этот код последовательной ссылки в свои библиотеки.
Затем откройте основной код в новой среде разработки Arduino.
Выключите переключатели 1 и 2 экрана, чтобы освободить последовательный канал 0 Arduino для USB-подключения.
Сбросить щит
Подключите провода FTDI к Mega Serial 2 (TX FTDI к RX Mega и т. Д.)
Запустите новую IDE Arduino (или инструмент TTY), подключите FTDI Usb и начните отслеживать последовательную связь.
Загрузите код Arduino в Mega
Включите переключатель 1 и 2 экрана, чтобы подключить последовательный канал 0 Arduino.
Сбросить щит
Вы должны увидеть это сообщение "начать печать по USB" на мониторе.
Шаг 7: займемся серверной частью
Пример сервера - это программа на Java, которую вы можете скачать здесь, на GitHub.
Просто запустите его и посмотрите на консоль Java и посмотрите на монитор FTDI.
Вы увидите обмен данными между сервером и Arduino
Шаг 8: идти дальше
Этот пример кода Arduino основан на фреймворке моей инфраструктуры домашней автоматизации.
Если вас интересует эта инфраструктура, дайте мне знать. Я опубликую источники.
Если вы просто хотите использовать шлюз, вы можете упростить код Arduino.
После разработки и тестирования вашего кода на Arduino Mega вы можете легко заменить его на Uno!
Кроме того, вы можете подключить провод между Arduino GPIO 7 и ESP8266 GPIO 5, если вы хотите, чтобы ваш Arduino проверял соединение Wi-Fi.