Оглавление:

Портативный генератор функций на WiFi и Android: 10 шагов
Портативный генератор функций на WiFi и Android: 10 шагов

Видео: Портативный генератор функций на WiFi и Android: 10 шагов

Видео: Портативный генератор функций на WiFi и Android: 10 шагов
Видео: 😱Хакерская SDR Прослушка На Xiaomi 🔥 2024, Июль
Anonim
Портативный генератор функций для Wi-Fi и Android
Портативный генератор функций для Wi-Fi и Android
Портативный генератор функций для Wi-Fi и Android
Портативный генератор функций для Wi-Fi и Android
Портативный генератор функций для Wi-Fi и Android
Портативный генератор функций для Wi-Fi и Android
Портативный генератор функций для Wi-Fi и Android
Портативный генератор функций для Wi-Fi и Android

Ближе к концу 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 и спецификация материалов

Детали, инструменты, IDE и спецификация материалов
Детали, инструменты, IDE и спецификация материалов
Детали, инструменты, IDE и спецификация материалов
Детали, инструменты, IDE и спецификация материалов
Детали, инструменты, IDE и спецификация материалов
Детали, инструменты, 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, входящие в состав устройства:

    1. Ц / А для контроля амплитуды - канал A
    2. D / A для контроля амплитуды - канал B
    3. Устройство AD9834 - канал А
    4. Устройство AD9834 - Канал B
    5. Ц / А для контроля напряжения смещения - канал A
    6. D / A для контроля напряжения смещения - канал B
    7. Цифровой потенциометр для настройки яркости / контрастности ЖК-дисплея
  • Поддержка ЖК-дисплея - поскольку ЖК-дисплей является стандартным дисплеем 20 x 4 символа, мы используем 4-битный интерфейс (строки D7: D4), выводы управления (строки RS, E) и регулировку яркости / контрастности (строки V0 и анод).
  • Поддержка светодиодов RGB - этот модуль не является обязательным, но есть общий катодный разъем для светодиодов RGB с соответствующими резисторами, подключенный к MCU.
  • Управление питанием - MCU выполняет мониторинг системы электропитания в режиме реального времени и обрабатывает все необходимые события электропитания:

    1. VBAT_ADC - Контроль напряжения аккумулятора и определение его состояния (канал ADC0)
    2. PWR_IND - Индикация подключения внешнего источника питания (канал ADC1)
    3. PS_HOLD - Первичная линия включения питания для всех определенных систем. Когда MCU получает низкий уровень, устройство отключается.
    4. Терминал прерывания интеллектуального переключателя - мониторинг состояния кнопки
  • Управление сетью 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
Аппаратное обеспечение - модуль ESP32

ESP32 используется как внешний модуль для основной платы. Связь с устройством основана на AT-командах, которые доступны в стандартной прошивке устройства.

В этом дизайне особо нечего расширять, но есть несколько замечаний по дизайну:

  • Для устранения сбоев при использовании правильного модуля UART ESP32 я подключил три резистора выбора для линий TX и RX. (По 0 Ом на каждую). Для стандартной конфигурации используется модуль UART2 для AT-команд (R4, R7 должны быть припаяны)
  • Устройство имеет 4-строчный выход - VCC, GND, TX, RX.
  • Контакты IO0 и EN оценивают работу устройства и должны быть спроектированы так, как показано на схемах.

Все особенности печатной платы мы рассмотрим на следующем шаге.

Шаг 6: компоновка печатной платы

Макет печатной платы
Макет печатной платы
Макет печатной платы
Макет печатной платы
Макет печатной платы
Макет печатной платы

Цели проектирования печатной платы

  1. Создайте встроенную систему для всех интегральных схем на одной плате
  2. Повышение производительности устройства за счет проектирования единой основной печатной платы
  3. Снижение затрат - если вы хотите узнать цены, недорогие конструкции ДЕЙСТВИТЕЛЬНО низкие цены.
  4. Минимизируйте размер электронной платы
  5. Легко устранять неполадки - мы можем использовать 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 корпус
3D корпус

Я не разрабатывал его сам, потому что в то время я убеждал это устройство работать, поэтому я вообще не знал всех основ 3D-печати. Поэтому я использовал проект SCAD от Thingiverse и прикрепил к границам разные отверстия в соответствии со спецификациями моего устройства.

  1. Печатное устройство: Creality Ender-3
  2. Тип кровати: Стекло, толщина 5 мм
  3. Диаметр нити: 1,75 мм
  4. Тип нити: PLA +
  5. Диаметр сопла: 0,4 мм
  6. Начальная скорость: 20 мм / сек
  7. Средняя скорость: 65 мм / сек
  8. Поддержка: N / A
  9. Заполнение: 25%
  10. Температура:

    • Кровать: 60 (oC)
    • Сопло: 215 (oC)
  11. Цвет нити: черный
  12. Общее количество отверстий: 5
  13. Количество панелей корпуса: 4

    • TOP Shell
    • Нижняя оболочка
    • Передняя панель
    • Задняя панель

Шаг 8: Программная реализация - MCU

Программная реализация - MCU
Программная реализация - MCU
Программная реализация - MCU
Программная реализация - MCU
Программная реализация - MCU
Программная реализация - 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
Программная реализация - приложение для Android
Программная реализация - приложение для Android
Программная реализация - приложение для Android
Программная реализация - приложение для Android
Программная реализация - приложение для Android
Программная реализация - приложение для Android
Программная реализация - приложение для Android

Приложение для Android написано в стиле Java-Android. Я постараюсь объяснить это так же, как и предыдущие шаги - разделив алгоритм на отдельные блоки кода.

Последовательность включения питания

Первая последовательность устройства. Здесь представлен логотип приложения вместе с включенными модулями GPS и WiFi устройства Android (не волнуйтесь, GPS нужен только для правильного сканирования сетей Wi-Fi).

Главное меню

После загрузки приложения на экране появятся четыре кнопки. Действие кнопок:

  1. ПРЯМОЕ СОЕДИНЕНИЕ: Инициализация подключения к AP FuncGen с помощью SSID IOT_FUNCGEN. Если соединение установлено успешно, устройство переходит в основной режим пользовательского интерфейса.
  2. ПОДКЛЮЧЕНИЕ WIFI: устройство проверяет наличие в памяти параметров данных: wifi.txt, mac.txt. Если данные отсутствуют, устройство отклонит запрос пользователя и выдаст всплывающее сообщение о том, что сначала необходимо выполнить сопряжение WLAN.
  3. СОПРЯЖЕНИЕ: обмен данными с FuncGen таким же образом, как и ПРЯМОЕ СОЕДИНЕНИЕ, но вместо непрерывного обмена сообщениями используется одно рукопожатие. Устройство Android проверяет, подключено ли оно к сети Wi-Fi, и запрашивает у пользователя ввод пароля. Если повторное подключение прошло успешно, устройство Android сохранит SSID и ключ доступа в файле wifi.txt. После успешного взаимодействия с FuncGen он сохраняет полученный MAC-адрес в файле mac.txt.
  4. Выход: Достаточно сказано:)

Менеджер сканирования WiFi

Я хотел, чтобы приложение было полностью работоспособным и без дополнительных настроек. Итак, я разработал WiFi Scanner, который выполняет все необходимые операции для подключения к сети WiFi с известным ключом доступа и SSID.

Передача данных и TCP-связь

Это основной блок кода в приложении. Для всех модулей пользовательского интерфейса существует определенное сообщение в определенном формате (предпоследний шаг), которое заставляет FuncGen обеспечивать желаемый вывод для каналов. В действии есть три типа полей пользовательского интерфейса:

  1. Полосы поиска: здесь мы определяем реальный диапазон выходных параметров FuncGen.

    1. Амплитуда
    2. Смещение постоянного тока
    3. Яркость ЖК-дисплея
    4. ЖК-контраст
  2. Редактирование текста: для того, чтобы целочисленные значения оставались четко определенными и точными, частотный ввод осуществляется через текстовые поля только с числами.
  3. Кнопки: выбор параметров из доступных списков:

    1. Тип сигнала

      1. Синус
      2. Треугольник
      3. ОКРУГ КОЛУМБИЯ
      4. Квадрат
      5. ВЫКЛЮЧЕННЫЙ
    2. Получить информацию

      1. Состояние батареи (в процентах)
      2. Состояние переменного тока (внешний источник питания)
    3. Вариант загрузки (для MCU FuncGen)

      1. Заводские настройки
      2. Рестарт
      3. Неисправность
      4. Прямой - перезагрузка в режиме прямого сопряжения
      5. WLAN - перезагрузка в режиме сопряжения с WLAN
    4. Выход в главное меню: все сказано:)

Шаг 10: тестирование

Рекомендуемые: