Оглавление:
- Шаг 1. Блок-схема - оборудование
- Шаг 2: Блок-схема - Сеть
- Шаг 3. Детали, инструменты, IDE и спецификация материалов
- Шаг 4: Проектирование оборудования - основная плата
- Шаг 5: Проектирование оборудования - модуль ESP32
- Шаг 6: компоновка печатной платы
- Шаг 7: 3D-корпус
- Шаг 8: Программная реализация - MCU
- Шаг 9. Внедрение программного обеспечения - приложение для Android
- Шаг 10: тестирование
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Ближе к концу 20 века появились различные технологические инновации, особенно в области связи; но не только. Для нас, пользователей, потребителей и инженеров, стало ясно, что быстро развиваются электронные устройства, которые могут значительно облегчить нашу жизнь: умные часы, умные дома, смартфоны и т. Д.
Поскольку в настоящее время все может быть «умным», я решил разработать сверхполезное устройство, которое станет частью основного электронного лабораторного оборудования - портативный генератор функций, управляемый смартфоном на базе ОС Android через прямой Wi-Fi или локальную сеть Wi-Fi (WLAN).).
Зачем нам делать это устройство?
Подавляющее большинство испытательного оборудования в настоящее время довольно дорогое. А иногда эти устройства непереносимы. В качестве решения для высоких цен, отсутствия портативности и отсутствия доступа к сети устройство обеспечивает двухканальный генератор сигналов, который действительно является портативным и имеет неограниченный доступ к сети - как в Интернете, так и в локальной сети.
И, конечно же, устройство должно быть построено на энтузиазме, в соответствии с принципами DIY - иногда нам просто нужно делать что-то самим, чтобы чувствовать себя хорошо:)
Ключевая особенность
Источник питания
- Разъем USB Type-A, как для систем питания, так и для программирования
- Полная система управления литий-ионным аккумулятором - зарядка и стабильные режимы
- Реализация Smart Switch - нет необходимости в переключателе питания
- Двойной источник питания: + 3,3 В и -3,3 В для генерации симметричного сигнала напряжения
Генерация сигнала
- Реализация уровня постоянного тока на выходном каскаде - форма волны смещения между границами напряжения
- Генерация сигналов четырех типов на основе DDS - синус, треугольник, квадрат и постоянный ток
- Поддержка частоты до 10 МГц
- Выходной ток до 80 мА с максимальной доступной мощностью 500 мВт
- Разделенные каналы для генерации сигналов - разделенные схемы на базе AD9834
Коммуникация
- Внедрение ESP32 - Применимые возможности Wi-Fi
- Полная поддержка TCP / IP устройством-генератором и смартфоном Android
- Возможность сохранять пользовательские параметры для каждого цикла устройства
- Мониторинг состояния - обе системы осведомлены о состоянии друг друга: FuncGen (теперь будем называть это так) и смартфон.
Пользовательский интерфейс
- ЖК-дисплей 20 x 4 символов с простым 4-битным интерфейсом данных
- Приложение Android - полный контроль пользователя над устройством FuncGen
- Схема зуммера - звуковая обратная связь с пользователем
Шаг 1. Блок-схема - оборудование
Блок микроконтроллера - ATMEGA32L
Микроконтроллер - это программируемая микросхема, которая включает в себя все функции компьютера, заключенные в одном электронном чипе. В нашем случае это «мозг» и центральный компонент системы. Целью MCU является управление всеми периферийными системами, управление связью между этими системами, управление работой оборудования и обеспечение полной поддержки пользовательского интерфейса и его взаимодействия с реальным пользователем. Этот проект основан на микроконтроллере ATMEGA32L, который может работать от напряжения 3,3 В и частоты 8 МГц.
Коммуникационная SoC - ESP32
Эта SoC (система на кристалле) обеспечивает полную коммуникационную поддержку FuncGen - доступ к возможностям WiFi, включая прямую, локальную или интернет-связь. Назначение устройства:
- Обработка передачи данных между приложением Android и устройством FuncGen
- Управление сообщениями контроля / данных
- Поддержка непрерывной настройки TCP / IP клиент-сервер
В нашем проекте SoC - это espressif ESP32, который слишком популярен, чтобы расширять его еще дальше:)
Система управления литий-ионными аккумуляторами
Чтобы превратить наше устройство в портативное, в нем предусмотрена разработанная схема зарядки литий-ионного аккумулятора. Схема основана на микросхеме MC73831 с контролируемым зарядным током путем регулировки значения одного программирующего резистора (мы рассмотрим эту тему в шаге «Схема»). Вход питания устройства - разъем USB Type-A.
Схема интеллектуального переключателя
Схема управления питанием интеллектуального коммутатора обеспечивает полный программный контроль над последовательностью выключения устройства и отсутствие необходимости во внешнем переключателе для отключения напряжения аккумуляторной батареи устройства. Все операции с питанием выполняются нажатием кнопки и программного обеспечения MCU. В некоторых случаях может потребоваться выключение системы: низкое напряжение батареи, высокое входное напряжение, ошибка связи и т. Д. Интеллектуальный коммутатор основан на ИС интеллектуального коммутатора STM6601, который дешев и очень удобен в использовании.
Главный блок питания
Этот блок состоит из двух цепей питания с батарейным питанием - + 3,3 В для всех цепей цифрового / аналогового питания и -3,3 В для симметричного выхода FunGen относительно потенциала 0 В (т. Е. Генерируемая форма волны может быть установлена в диапазоне [-3,3 В: 3,3 В] область.
- Схема основного питания построена на линейном стабилизаторе напряжения LP3875-3.3 LDO (low dropout) 1A.
- Вторичная схема питания основана на ИС LM2262MX, которая выполняет преобразование отрицательного напряжения постоянного тока в постоянное с помощью конденсаторной накачки заряда - системы, на которой основана ИС.
Система генераторов сигналов
Система была разработана с упором на отдельные интегральные схемы DDS (прямой цифровой синтез), которые позволяют полностью контролировать генерацию сигналов с помощью SPI (последовательного периферийного интерфейса) MCU. В конструкции использовались схемы Analog Devices AD9834, которые могут обеспечивать различные типы сигналов. При работе с AD9834 нам необходимо решить следующие проблемы:
- Фиксированная амплитуда сигнала: амплитуда сигнала контролируется внешним модулем ЦАП
- Без учета смещения уровня постоянного тока: реализация схем суммирования с желаемыми значениями смещения постоянного тока
- Отдельные выходы для прямоугольных сигналов и треугольников / синусоид: реализация высокочастотной схемы переключения, таким образом, каждый отдельный выход канала может обеспечивать всю желаемую форму волны: синусоидальную, треугольную, квадратную и постоянный ток.
Жидкокристаллический дисплей
ЖК-дисплей является частью пользовательского интерфейса (пользовательского интерфейса), и его цель - позволить пользователю понять, что устройство делает в режиме реального времени. Он взаимодействует с пользователем в каждом состоянии устройства.
Зуммер
Простая схема тонального генератора для дополнительной обратной связи от устройства к пользователю.
Интегрированный программист ISP
Когда дело доходит до процесса программирования, у каждого инженера есть постоянная проблема: всегда есть худшая необходимость разобрать продукт, чтобы перепрограммировать его с помощью новой прошивки. Чтобы преодолеть это неудобство, программатор AVR ISP был подключен к устройству изнутри, тогда как USB-данные и линии питания привязаны к разъему USB Type-A устройства. В этой конфигурации нам просто нужно подключить наш FuncGen через USB-кабель для программирования или зарядки!
Шаг 2: Блок-схема - Сеть
Двухканальный генератор функций
Основное устройство. Тот, который мы рассмотрели на предыдущем шаге
ESP-WROOM-32
Интегрированная система на кристалле с возможностями WiFi и BLE. SoC подключается к основной плате (мы рассмотрим это на этапе схем) через модуль UART и действует как устройство передачи сообщений между основным устройством и смартфоном Android.
Локальная сеть WiFi
Смартфон и устройство будут обмениваться данными через прямой Wi-Fi или локальную сеть в зависимости от конфигурации TCP-сервер / клиент. Когда устройства распознают друг друга по Wi-Fi, основное устройство создает TCP-сервер с соответствующими параметрами и может отправлять / получать сообщения. Устройство действует как второстепенное по отношению к смартфону. Android-устройство, с другой стороны, подключается к TCP-серверу как клиентское сетевое устройство, но считается основным передатчиком сообщений - смартфон инициирует полный цикл связи: отправка сообщения - получение ответа.
Смартфон Android
Смартфон на базе ОС Android, работающий с приложением FuncGen
Шаг 3. Детали, инструменты, IDE и спецификация материалов
Спецификация материалов (см. Прилагаемую таблицу XLS)
Пользовательский интерфейс и системные подключения
- 1 x 2004A Char-LCD 20x4 Синий
- 1 x USB-разъем типа B
- 1 x 10 компл. Mini Micro JST XH 2,54 мм, 4 контакта
- 1 х 6 шт. Мгновенный SW
Заказ печатных плат (по данным Seeed Studio)
Базовый материал FR-4
Кол-во слоев 2 слоя
Количество печатных плат 10
Кол-во различных дизайнов 1
Толщина печатной платы 1,6 мм
Цвет печатной платы Синий
Поверхность HASL
Минимальная заслонка паяльной маски 0,4 мм ↑
Медный вес 1 унция
Минимальный размер сверления 0,3 мм
Ширина дорожки / интервал 6/6 мил
Пластинчатые полуотверстия / зубчатые отверстия Нет
Контроль импеданса Нет
Инструменты
- Пистолет для горячего клея
- Пинцет
- Резак
- Провод ~ 22AWG для устранения неисправностей
- Паяльник / станция
- Олово для пайки
- Паяльная станция SMD (опция)
- 3D-принтер (опционально)
- Экструзионный файл
- Программист AVR ISP
- Преобразователь USB в последовательный (необязательно, для целей отладки)
Интегрированная среда разработки (IDE) и программное обеспечение
- Autodesk EAGLE или редактор схем Cadence / редактор плат Allegro
- OpenSCAD (необязательно)
- Ultimaker Cura (необязательно)
- Saleae Logic (для устранения неполадок)
- Atmel Studio 6.3 или выше
- Android Studio или Eclipse IDE
- Docklight Serial Monitor / Другое программное обеспечение для мониторинга COM-портов
- ProgISP для программирования флэш-памяти AVR ATMEGA32L
Шаг 4: Проектирование оборудования - основная плата
Схема управления батареей
Схема зарядки аккумулятора построена на микросхеме MCP7383, что позволяет выбрать желаемый ток зарядки для литий-ионного аккумулятора - 3,7 В при емкости 850 мАч. В нашем случае зарядный ток задается программированием номинала резистора (R1).
R1 = 3 кОм, I (заряд) = 400 мА
Напряжение USB VBUS фильтруется π-фильтром (C1, L3, C3) и действует как источник питания для цепи зарядки.
Схема делителя напряжения (R2, R3) позволяет MCU указывать, подключен ли внешний USB-источник питания, путем подачи следующего напряжения на аналого-цифровой канал MCU:
V (индикация) ~ (2/3) V (шина)
Поскольку наш A / D ATMEGA32L 12-битный, мы можем вычислить цифровой диапазон:
A / D (диапазон) = 4095V (индикация) / V (REF).
A / D ∈ [14AH: FFFH]
Блок питания Smart Switch
Схема позволяет системе управлять питанием каждого спроектированного блока как с кнопки, так и программно на MCU и основана на интеллектуальном коммутаторе STM6601 с опцией POWER вместо RESET. Мы хотим рассмотреть следующие терминалы:
- PSHOLD - Входная линия, которая определяет состояние устройства: если вытянуть LOW, устройство отключает все вторичные блоки питания (+ 3,3 В и -3,3 В). Если удерживается HIGH - устройство остается включенным.
- nSR и nPB - Входные линии. Кнопочные клеммы. Когда на этих контактах обнаруживается задний фронт, устройство пытается перейти в режим повышения / понижения мощности.
- nINT - Выходная строка. Тянется НИЗКИЙ каждый раз при нажатии кнопки
- EN - Выходная линия, используется для включения питания вторичных блоков питания. Пока удерживается НИЗКИЙ уровень, оба вторичных источника питания отключены.
Прежде чем мы приступим к окончательному дизайну, сделаем несколько важных замечаний:
- PSHOLD следует подтянуть до 3,3 В, потому что бывают случаи, когда микроконтроллеры принудительно переводят все входы / выходы в состояние HIGH-Z. В этом случае состояние PSHOLD от MCU неизвестно и может существенно повлиять на процесс программирования устройства.
- STM6601 следует заказывать с опцией настройки EN при длительном нажатии вместо опции RESET (я попал в эту).
Блок питания: + 3,3 В
Электроснабжение всех систем в нашем проекте. Когда линия + 3,3 В удерживается на уровне GND (т.е. отсутствует напряжение), все ИС, кроме интеллектуального переключателя, отключаются. Схема основана на ИС LDO LP-3875-3.3, с возможностью управления через клемму EN и обеспечения тока до 1А.
Источником питания для этой схемы является напряжение батареи с прикрепленным аналого-цифровым индикатором для определения VBAT в конфигурации, аналогичной схеме измерения VBUS. В этом случае расчеты немного отличаются;
V (от аккумулятора к аналого-цифровому) = 0,59 В (аккумулятор); A / D (диапазон) ∈ [000H: C03H]
Блок питания: -3,3 В
Схема подачи отрицательного напряжения позволяет нам генерировать симметричные формы сигналов с коэффициентом постоянного тока 0 В (т.е. среднее значение формы сигнала может быть 0 В). Эта схема основана на преобразователе LM2662MX IC - DC / DC, который работает по методу «накачки заряда». Максимальный выходной ток схемы составляет 200 мА, что достаточно для наших проектных требований - мы ограничены выходным током 80 мА для каждого канала устройства.
IC выполняет всю необходимую работу, поэтому нам нужно подключить только два электролитических конденсатора: C33 для переключения и C34 для обхода линии -3,3 В (соображения снижения шума). Частота переключения незначительна при проектировании, если мы размещаем схему достаточно далеко от частей генерации сигналов (мы обсудим это на этапе компоновки печатной платы).
Блок микроконтроллера - MCU
Это менеджер и генеральный директор нашей системы - управление, обработка сети, передача сообщений и поддержка пользовательского интерфейса - все осуществляется MCU.
Был выбран микроконтроллер Atmel ATMEGA32L, где L означает поддерживаемое напряжение [2,7 В: 5,5 В]. В нашем случае рабочее напряжение + 3,3В.
Рассмотрим основные операционные блоки, которые необходимо понимать, работая с MCU в нашем дизайне:
- Внешний осциллятор - дополнительный компонент, поскольку нас интересует рабочая частота 8 МГц.
-
Периферийное управление, сеть SPI - все периферийные устройства (за исключением ESP32) обмениваются данными с MCU через SPI. Есть три общих линии для всех устройств (SCK, MOSI, MISO), и каждая периферийная цепь имеет свою выделенную линию CS (Chip Select). Устройства SPI, входящие в состав устройства:
- Ц / А для контроля амплитуды - канал A
- D / A для контроля амплитуды - канал B
- Устройство AD9834 - канал А
- Устройство AD9834 - Канал B
- Ц / А для контроля напряжения смещения - канал A
- D / A для контроля напряжения смещения - канал B
- Цифровой потенциометр для настройки яркости / контрастности ЖК-дисплея
- Поддержка ЖК-дисплея - поскольку ЖК-дисплей является стандартным дисплеем 20 x 4 символа, мы используем 4-битный интерфейс (строки D7: D4), выводы управления (строки RS, E) и регулировку яркости / контрастности (строки V0 и анод).
- Поддержка светодиодов RGB - этот модуль не является обязательным, но есть общий катодный разъем для светодиодов RGB с соответствующими резисторами, подключенный к MCU.
-
Управление питанием - MCU выполняет мониторинг системы электропитания в режиме реального времени и обрабатывает все необходимые события электропитания:
- VBAT_ADC - Контроль напряжения аккумулятора и определение его состояния (канал ADC0)
- PWR_IND - Индикация подключения внешнего источника питания (канал ADC1)
- PS_HOLD - Первичная линия включения питания для всех определенных систем. Когда MCU получает низкий уровень, устройство отключается.
- Терминал прерывания интеллектуального переключателя - мониторинг состояния кнопки
- Управление сетью WiFi - ESP32: MCU связывается с ESP32 через интерфейс UART. Поскольку 8 МГц позволяет реализовать скорость передачи 115200 бод с относительно небольшой ошибкой, мы можем использовать ESP32 в схеме без предварительного определения изменений скорости передачи.
Программист AVR ISP
Наш микроконтроллер программируется через SPI, при этом линия сброса (/ RST) должна быть переведена в ВЫСОКОЕ значение для правильной работы (в противном случае микроконтроллер навсегда останется в состоянии сброса).
Чтобы устройство можно было программировать и заряжать через USB, я подключил программатор AVR ISP (малогабаритный продукт, купленный на eBay). Для обеспечения полной поддержки USB устройством необходимо связать разъемы USB Type-A (D +, D-, VBUS и GND) с устройством AVR ISP.
Схема генерации сигнала
Ядро устройства - эти схемы. AD9834 - это устройство DDS с низким энергопотреблением, которое предоставляет нам все формы сигналов, которые мы хотели бы получить из системы. Схемы содержат две независимые микросхемы AD9834 с отдельными внешними генераторами 50 МГц (как это видно на схемах). Причина использования отдельного генератора - это соображения снижения шума цифровых схем, поэтому было решено обрабатывать правильные линии 50 МГц с генераторами, размещенными рядом с AD9834.
Теперь давайте посмотрим на математику:
Поскольку устройство DDS работает по технологии Phase Wheel с выходным значением, хранящимся в 28-битном регистре, мы можем описать генерацию сигнала математически:
dP (фаза) = ωdt; ω = P '= 2πf; f (AD9834) = ΔP * f (clk) / 2 ^ 28; ΔP ∈ [0: 2 ^ 28 - 1]
А согласно даташиту AD9834 с учетом максимальной частоты может быть получено разрешение по выходной частоте:
Δf = k * f (осциллятор) / f (максимум) = 0,28 * 50M / 28M = 0,187 [Гц]
ИС AD9834 обеспечивают аналоговый токовый выход для треугольника / синусоиды (клемма IOUT) и цифровой выход для прямоугольной волны (клемма SIGN_OUT). Использование знакового бита немного сложно, но мы можем справиться с этим - каждый раз, когда DDS преодолевает пороговое значение для сравнения, SIGN_OUT ведет себя соответствующим образом. К выходу каждого канала подключен резистор на 200 Ом, поэтому выходное напряжение будет иметь значимые значения:
I (одноканальный) = V (выход) / R (выбор напряжения); V (выход) = R (VS) * I (SS) = 200I (SS) [A]
Цепи контроля амплитуды (ЦАП)
Согласно таблице данных AD9834, его амплитуду можно регулировать, подавая ток на полномасштабную систему DDS, поэтому с помощью двойной D / A IC мы можем контролировать амплитуду выходного сигнала, регулируя этот ток. Еще раз немного математики:
I (полная шкала) = 18 * (V_REF - V_DAC) / R_SET [A]
По схемам и уравнению числами:
I (полная шкала) = 3,86 - 1,17 * V_DAC [A]
В конструкции использован 12-битный модуль D / A MCP4922, когда ток находится в диапазоне [0 мА: 3,86 мА], а функция линейной амплитуды:
V (выбор амплитуды) = 1 - [V (D / A) / (2 ^ 12 - 1)]
Схема мультиплексирования сигналов
Выходы генерации прямоугольной волны и синусоидальной / треугольной волны разделены в AD9834, поэтому мы должны использовать схему высокоскоростного мультиплексирования для обоих выходов, чтобы можно было извлекать все желаемые формы сигналов из одного разделенного канала. Микросхема мультиплексора представляет собой аналоговый переключатель ADG836L с очень низким сопротивлением в открытом состоянии (~ 0,5 Ом).
Таблица выбора, которую MCU использует для выходов, как есть:
Выбор режима [D2: D1] | Выходной канал A | Выходной канал B
00 | Синус / Треугольник | Синус / Треугольник 01 | Синус / Треугольник | Квадрат 10 | Площадь | Синус / Треугольник 11 | Площадь | Квадрат
Цепи управления напряжением смещения (Ц / А)
Одной из основных функций генератора сигналов является управление его величиной постоянного тока. В этой схеме это делается путем установки желаемого ЦАП для каждого канала, и эти напряжения смещения суммируются с мультиплексированными выходами, которые мы обсуждали немного ранее.
Напряжение, полученное от D / A, находится в диапазоне [0 В: + 3,3 В], поэтому существует схема на основе операционного усилителя, которая отображает диапазон D / A на [-3,3 В: + 3,3 В], что позволяет устройству обеспечивать полный диапазон. желаемой составляющей постоянного тока. Мы пропустим надоедливую аналитическую математику и сосредоточимся только на конечных результатах:
V_OUT (канал B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (канал A) = V_BIAS_A (+) - V_BIAS_A (-)
Теперь диапазон составляющих постоянного тока находится в диапазоне [-3,3 В: + 3,3 В].
Суммирующие схемы - компоненты постоянного тока и выходы сигналов
На данный момент у нас есть все необходимое для правильного вывода устройства - напряжение смещения (постоянная составляющая) во всем диапазоне напряжений и мультиплексированные выходы AD9834. Мы сделаем это с помощью суммирующего усилителя - конфигурация операционного усилителя.
Давайте еще раз пропустим математику (мы уже рассмотрели много математических подходов) и запишем окончательный результат на выходе суммирующего усилителя:
V (выход устройства) = V (положительное смещение) - V (отрицательное смещение) - V (мультиплексированный выход) [В]
Следовательно:
V_OUT = ΔV_BIAS - V_AD9834 [В]
К выходным разъемам типа BNC подключаются резисторы выбора (R54, R55; R56, R57). Причина этого в том, что в случае, если эта конструкция может оказаться неработоспособной, мы все равно можем выбрать, хотим ли мы использовать суммирующий усилитель.
Важное примечание: цепи резисторов оконечных суммирующих усилителей могут быть отрегулированы разработчиком для изменения максимальной амплитуды, которую можно получить с устройства. В моем случае все усилители имеют одинаковое усиление = 1, поэтому максимальная амплитуда буферизации составляет 0,7 В размах для треугольника / синусоиды и 3,3 В размах для прямоугольной волны. Конкретный математический подход можно найти среди прикрепленных изображений шага.
ESP32 как внешний модуль
MCU связывается с ESP32 через интерфейс UART. Поскольку мне нужна была собственная печатная плата для ESP32, для подключения доступны 4 клеммы: VCC, RX, TX, GND. J7 - это интерфейсный разъем между печатными платами, а ESP32 будет выделен как внешний модуль внутри устройства.
Пользовательский интерфейс - ЖК-дисплей и динамик
Используемый ЖК-дисплей представляет собой обычный дисплей 20 x 4 символов с 4-битным интерфейсом. Как видно из конструкции, к клеммам ЖК-дисплея «A» и «V0» прикреплен цифровой потенциометр SPI - его цель - регулировать яркость и контраст ЖК-модуля программно.
Динамик обеспечивает вывод звука для пользователя путем простой генерации прямоугольной волны от MCU. BJT T1 управляет током через динамик, который может находиться только в двух состояниях - ВКЛ / ВЫКЛ.
Шаг 5: Проектирование оборудования - модуль ESP32
ESP32 используется как внешний модуль для основной платы. Связь с устройством основана на AT-командах, которые доступны в стандартной прошивке устройства.
В этом дизайне особо нечего расширять, но есть несколько замечаний по дизайну:
- Для устранения сбоев при использовании правильного модуля UART ESP32 я подключил три резистора выбора для линий TX и RX. (По 0 Ом на каждую). Для стандартной конфигурации используется модуль UART2 для AT-команд (R4, R7 должны быть припаяны)
- Устройство имеет 4-строчный выход - VCC, GND, TX, RX.
- Контакты IO0 и EN оценивают работу устройства и должны быть спроектированы так, как показано на схемах.
Все особенности печатной платы мы рассмотрим на следующем шаге.
Шаг 6: компоновка печатной платы
Цели проектирования печатной платы
- Создайте встроенную систему для всех интегральных схем на одной плате
- Повышение производительности устройства за счет проектирования единой основной печатной платы
- Снижение затрат - если вы хотите узнать цены, недорогие конструкции ДЕЙСТВИТЕЛЬНО низкие цены.
- Минимизируйте размер электронной платы
- Легко устранять неполадки - мы можем использовать TP (контрольные точки) для каждой возможной неисправной линии.
Технические параметры
Обе печатные платы: основная и плата ESP32 имеют одинаковые характеристики для производственного процесса - низкая стоимость и работоспособность для наших целей. Посмотрим на них:
A - Основная плата
- Размер: 10 см x 5,8 см
- Количество слоев: 2
- Толщина печатной платы: 1,6 мм
- Минимальное расстояние / ширина следа: 6/6 мил
- Минимальный диаметр сквозного отверстия: 0,3 мм
- Минимальное расстояние от меди до края печатной платы: 20 мил
- Обработка поверхности: HASL (довольно красивый дешевый серебристый цвет)
B - Основная плата
- Размер: 3 см х 4 см
- Количество слоев: 2
- Толщина печатной платы: 1,6 мм
- Минимальное расстояние / ширина следа: 6/6 мил
- Минимальный диаметр сквозного отверстия: 0,3 мм
- Минимальное расстояние от меди до края печатной платы: 20 мил
- Обработка поверхности: HASL
Шаг 7: 3D-корпус
Я не разрабатывал его сам, потому что в то время я убеждал это устройство работать, поэтому я вообще не знал всех основ 3D-печати. Поэтому я использовал проект SCAD от Thingiverse и прикрепил к границам разные отверстия в соответствии со спецификациями моего устройства.
- Печатное устройство: Creality Ender-3
- Тип кровати: Стекло, толщина 5 мм
- Диаметр нити: 1,75 мм
- Тип нити: PLA +
- Диаметр сопла: 0,4 мм
- Начальная скорость: 20 мм / сек
- Средняя скорость: 65 мм / сек
- Поддержка: N / A
- Заполнение: 25%
-
Температура:
- Кровать: 60 (oC)
- Сопло: 215 (oC)
- Цвет нити: черный
- Общее количество отверстий: 5
-
Количество панелей корпуса: 4
- TOP Shell
- Нижняя оболочка
- Передняя панель
- Задняя панель
Шаг 8: Программная реализация - MCU
Ссылка GitHub на код Android и Atmega32
Программный алгоритм
Все операции, выполняемые MCU, описаны в прилагаемых блок-схемах. Вдобавок к этому прилагается код проекта. Рассмотрим спецификации программного обеспечения:
Включение
На этом этапе MCU выполняет все последовательности инициализации вместе с определением сохраненного типа связи с устройством Android: Прямая связь по сети Wi-Fi или WLAN - эти данные хранятся в EEPROM. На этом этапе пользователь может изменить тип сопряжения устройства Android.
Прямое сопряжение с устройством Android
Этот тип сопряжения основан на создании сети Wi-Fi устройством FuncGen. Он создаст AP (точку доступа) и TCP-сервер на IP-адресе локального устройства с определенным SSID (именем сети WiFi) и определенным номером порта. Устройство должно держать состояние - открыто для подключений.
Когда устройство Android подключено к FuncGen, MCU переходит в АКТИВНЫЙ режим и отвечает в соответствии с инструкциями пользователя с устройства Android.
Сопряжение с WLAN
Для связи в локальной сети Wi-Fi MCU должен предоставлять ESP32 команды для создания точки доступа, связи с устройством Android и обмена важными сетевыми данными:
- Android-устройство получает от FuncGen свой MAC-адрес, сохраняет его в памяти.
- Устройство FuncGen получает от устройства Android выбранные параметры WLAN: SSID, тип безопасности и пароль и сохраняет их в EEPROM.
Когда устройства действительно подключены к одной и той же WLAN, устройство Android будет искать FuncGen, сканируя все MAC-адреса устройств, подключенных к WLAN. Когда устройство Android определяет соответствие MAC, оно пытается установить связь.
Подключение и обработка состояния - MCU
Когда устройства обмениваются данными друг с другом, протокол (см. Предпоследний шаг) остается неизменным, и блок-схема остается той же.
Мониторинг состояния устройства
Синхронизированное прерывание предоставляет MCU необходимые данные для обработки состояния. Каждый цикл прерывания таймера обновляется следующий список параметров:
- Внешний источник питания - Вкл. / Выкл.
- Состояние напряжения батареи
- Обновление пользовательского интерфейса для каждой настройки
- Кнопка: нажата / не нажата
Шаг 9. Внедрение программного обеспечения - приложение для Android
Приложение для Android написано в стиле Java-Android. Я постараюсь объяснить это так же, как и предыдущие шаги - разделив алгоритм на отдельные блоки кода.
Последовательность включения питания
Первая последовательность устройства. Здесь представлен логотип приложения вместе с включенными модулями GPS и WiFi устройства Android (не волнуйтесь, GPS нужен только для правильного сканирования сетей Wi-Fi).
Главное меню
После загрузки приложения на экране появятся четыре кнопки. Действие кнопок:
- ПРЯМОЕ СОЕДИНЕНИЕ: Инициализация подключения к AP FuncGen с помощью SSID IOT_FUNCGEN. Если соединение установлено успешно, устройство переходит в основной режим пользовательского интерфейса.
- ПОДКЛЮЧЕНИЕ WIFI: устройство проверяет наличие в памяти параметров данных: wifi.txt, mac.txt. Если данные отсутствуют, устройство отклонит запрос пользователя и выдаст всплывающее сообщение о том, что сначала необходимо выполнить сопряжение WLAN.
- СОПРЯЖЕНИЕ: обмен данными с FuncGen таким же образом, как и ПРЯМОЕ СОЕДИНЕНИЕ, но вместо непрерывного обмена сообщениями используется одно рукопожатие. Устройство Android проверяет, подключено ли оно к сети Wi-Fi, и запрашивает у пользователя ввод пароля. Если повторное подключение прошло успешно, устройство Android сохранит SSID и ключ доступа в файле wifi.txt. После успешного взаимодействия с FuncGen он сохраняет полученный MAC-адрес в файле mac.txt.
- Выход: Достаточно сказано:)
Менеджер сканирования WiFi
Я хотел, чтобы приложение было полностью работоспособным и без дополнительных настроек. Итак, я разработал WiFi Scanner, который выполняет все необходимые операции для подключения к сети WiFi с известным ключом доступа и SSID.
Передача данных и TCP-связь
Это основной блок кода в приложении. Для всех модулей пользовательского интерфейса существует определенное сообщение в определенном формате (предпоследний шаг), которое заставляет FuncGen обеспечивать желаемый вывод для каналов. В действии есть три типа полей пользовательского интерфейса:
-
Полосы поиска: здесь мы определяем реальный диапазон выходных параметров FuncGen.
- Амплитуда
- Смещение постоянного тока
- Яркость ЖК-дисплея
- ЖК-контраст
- Редактирование текста: для того, чтобы целочисленные значения оставались четко определенными и точными, частотный ввод осуществляется через текстовые поля только с числами.
-
Кнопки: выбор параметров из доступных списков:
-
Тип сигнала
- Синус
- Треугольник
- ОКРУГ КОЛУМБИЯ
- Квадрат
- ВЫКЛЮЧЕННЫЙ
-
Получить информацию
- Состояние батареи (в процентах)
- Состояние переменного тока (внешний источник питания)
-
Вариант загрузки (для MCU FuncGen)
- Заводские настройки
- Рестарт
- Неисправность
- Прямой - перезагрузка в режиме прямого сопряжения
- WLAN - перезагрузка в режиме сопряжения с WLAN
- Выход в главное меню: все сказано:)
-