Съдържание:

Преносим генератор на функции за WiFi и Android: 10 стъпки
Преносим генератор на функции за WiFi и Android: 10 стъпки

Видео: Преносим генератор на функции за WiFi и Android: 10 стъпки

Видео: Преносим генератор на функции за WiFi и Android: 10 стъпки
Видео: 8 ПРИЛОЖЕНИЙ на Андроид, которые необходимо УДАЛИТЬ прямо сейчас! 2024, Юли
Anonim
Преносим генератор на функции за WiFi и Android
Преносим генератор на функции за WiFi и Android
Преносим генератор на функции за WiFi и Android
Преносим генератор на функции за WiFi и Android
Преносим генератор на функции за WiFi и Android
Преносим генератор на функции за WiFi и Android
Преносим генератор на функции за WiFi и Android
Преносим генератор на функции за WiFi и Android

В края на 20 век се появяват различни технологични иновации, особено в областта на комуникациите; но не само. За нас потребителите, потребителите и инженерите излязоха на бял свят бързото разработване на електронни устройства, които могат да направят живота ни много по -лесен: интелигентни часовници, интелигентни домове, смартфони и др.

Тъй като в днешно време всичко може да бъде „умно“, реших да проектирам супер полезно устройство, което да бъде част от основното електронно лабораторно оборудване - преносим генератор на функции, управляем от смартфон, базиран на Android OS чрез WiFi директно или WiFi локална мрежа (WLAN)).

Защо трябва да изградим това устройство?

По -голямата част от тестовото оборудване в наши дни е доста скъпо. И понякога тези устройства не са преносими. Като решение за високи цени, липса на преносимост и липса на достъп до мрежата на устройството, устройството осигурява двуканален генератор на вълнова форма, който наистина е преносим и има неограничен достъп до мрежата - интернет или локален.

И разбира се, устройството трябва да бъде изградено поради ентусиазъм, спазвайки принципите „направи си сам“- Понякога просто трябва да правим нещата сами, за да се чувстваме правилно:)

Основни функции

Захранване

  • USB конектор тип A, както за захранващи системи, така и за програмиране
  • Пълна система за управление на Li -Ion батерии - Зареждане и стабилни режими
  • Изпълнение на Smart Switch - няма нужда от превключвател за превключване на захранването
  • Двойно захранване: +3.3V и -3.3V за генериране на вълна на симетрично напрежение

Генериране на форма на вълна

  • Внедряване на DC ниво на изходната каскада - отклонена форма на вълната между границите на напрежението
  • DDS базирано 4 -тип генериране на форма на вълна - синус, триъгълник, квадрат и DC
  • Поддръжка на честота до 10MHz
  • Изходен ток до 80mA с 500mW максимална налична мощност
  • Отделни канали за генериране на форма на вълна - разделени схеми, базирани на AD9834

Комуникация

  • Внедряване на ESP32 - Приложими WiFi възможности
  • Пълна поддръжка на TCP/IP от генераторно устройство и смартфон с Android
  • Възможност за съхраняване на потребителски параметри за всеки цикъл на устройството
  • Мониторинг на състоянието - и двете системи са наясно със състоянието на една друга: FuncGen (да го наречем така отсега нататък) и смартфон.

Потребителски интерфейс

  • 20 x 4-символен LCD дисплей с прост 4-битов интерфейс за данни
  • Приложение за Android - пълен потребителски контрол върху устройството FuncGen
  • Звукова верига - звукова обратна връзка към потребителя

Стъпка 1: Блокова диаграма - Хардуер

Блокова диаграма - Хардуер
Блокова диаграма - Хардуер
Блокова диаграма - Хардуер
Блокова диаграма - Хардуер

Микроконтролерен модул - ATMEGA32L

Микроконтролерът е програмируем чип, който се състои от цялата функционалност на компютъра, която се намира в един електронен чип. В нашия случай това е "мозъкът" и централен компонент на системата. Целта на MCU е да управлява всички периферни системи, да управлява комуникацията между тези системи, да контролира работата на хардуера и да осигурява пълна поддръжка за потребителски интерфейс и взаимодействието му с действителен потребител. Този проект е базиран на ATMEGA32L MCU, който може да работи на 3.3V и честота 8MHz.

Комуникационен SoC - ESP32

Този SoC (System on Chip) осигурява пълна комуникационна поддръжка за FuncGen - Достъп до WiFi възможности, включително директна, локална или интернет комуникация. Предназначението на устройството е:

  • Управление на предаването на данни между приложението Android и устройството FuncGen
  • Управление на съобщения за контрол/данни
  • Поддръжка на непрекъсната TCP/IP конфигурация клиент-сървър

В нашия проект SoC е espressif ESP32, който е твърде популярен, за да го разширим още повече:)

Система за управление на литиево-йонна батерия

За да превърнем нашето устройство в преносимо, устройството съдържа проектирана верига за зареждане на Li-Ion батерия. Веригата е базирана на MC73831 IC, с контролируем ток на зареждане чрез регулиране на стойността на един програмен резистор (Ще разгледаме тази тема в стъпка Схеми). Входът за захранване на устройството е USB Type-A конектор.

Интелигентна верига за превключване

Схемата за управление на захранването на интелигентното устройство осигурява пълен софтуерен контрол върху последователността на изключване на устройството и липса на необходимост от външен превключвател за изключване на напрежението на батерията на устройството. Всички операции по захранването се извършват чрез натискане на бутон и софтуера на MCU. В някои случаи ще трябва да изключите системата: Ниско напрежение на батерията, високо входно напрежение, комуникационна грешка и т.н. Интелигентният превключвател е базиран на микросхема за интелигентен превключвател STM6601, която е евтина и много приятелска за игра.

Основен блок за захранване

Това устройство се състои от две захранващи вериги, задвижвани от батерии - +3.3V за всички цифрови / аналогови захранващи вериги и -3.3V за симетричен изход FunGen спрямо потенциал 0V (т.е. генерираната форма на вълната може да бъде зададена в [-3.3V: 3.3V] регион.

  • Основната захранваща верига се основава на линеен регулатор на напрежение LP3875-3.3 LDO (ниско отпадане) 1A.
  • Вторичната захранваща верига е базирана на IC LM2262MX, която извършва преобразуване на DC-DC отрицателно напрежение чрез кондензатор-зареждаща помпа-система, на която е базирана IC.

Система за генератори на вълнови форми

Системата е проектирана с акцент върху отделни DDS (директен цифров синтез) интегрални схеми, които позволяват пълно управление на генерирането на форма на вълната чрез SPI (сериен периферен интерфейс) на MCU. Схемите, използвани при проектирането, са Analog Devices AD9834, които могат да предоставят различни видове форми на вълната. Предизвикателствата, с които трябва да се справим, докато работим с AD9834, са:

  • Фиксирана амплитуда на формата на вълната: Амплитудата на формата на вълната се контролира от външен DAC модул
  • Без значение за нивото на компенсиран DC: Изпълнение на сумиращи схеми с желани стойности на DC компенсиране
  • Отделни изходи за квадратна вълна и триъгълник/синусоида: Реализация на високочестотна комутационна верига, така че всеки един отделен изход на канал може да осигури цялата желана форма на вълна: синус, триъгълник, квадрат и DC.

Дисплей с течни кристали

LCD е част от потребителския интерфейс (потребителски интерфейс) и целта му е да позволи на потребителя да разбере какво прави устройството в режим на реално време. Той взаимодейства с потребителя във всяко състояние на устройството.

Звуков сигнал

Проста схема на генератор на тон за допълнителна обратна връзка от устройство към потребител.

Интегриран ISP програмист

Съществува постоянен проблем за всеки инженер, когато става въпрос за процес на програмиране: Винаги има най -лошата нужда да разглобите продукта, за да го препрограмирате с нов фърмуер. За да се преодолее това неудобство, AVR ISP програмистът е прикрепен към устройството отвътре, докато USB данните и захранващите линии са свързани към USB съединителя тип A на устройството. В тази конфигурация просто трябва да включим нашия FuncGen чрез USB кабел за програмиране или зареждане!

Стъпка 2: Блокова диаграма - работа в мрежа

Блокова диаграма - работа в мрежа
Блокова диаграма - работа в мрежа

Генератор на двуканални функции

Основно устройство. Тази, която разгледахме в предишната стъпка

ESP-WROOM-32

Интегрирана система на чип с WiFi и BLE възможности. SoC е прикрепен към основната платка (Ще разгледаме това в стъпка със схеми) чрез UART модул и действа като предавател на съобщения между основното устройство и смартфона с Android.

WiFi локална мрежа

Смартфонът и устройството ще комуникират чрез WiFi директна или локална мрежа, въз основа на TCP сървър/клиентска конфигурация. Когато устройствата се разпознават по WiFi, основното устройство създава TCP сървър с подходящи параметри и е в състояние да изпраща/получава съобщения. Устройството действа като вторично за смартфона. Устройството Android, от друга страна, се свързва с TCP сървъра като клиентско мрежово устройство, но се счита за първичен предавател на съобщения - смартфонът е този, който инициира пълния комуникационен цикъл: Изпращане на съобщение - получаване на отговор.

Смартфон Android

Устройство за смартфон, базирано на Android OS, което работи с приложението FuncGen

Стъпка 3: Части, инструменти, IDE и материал

Части, инструменти, IDE и материал
Части, инструменти, IDE и материал
Части, инструменти, IDE и материал
Части, инструменти, IDE и материал
Части, инструменти, IDE и материал
Части, инструменти, IDE и материал

Сметка за материали (вижте приложената XLS таблица)

Потребителски интерфейс и системни връзки

  • 1 x 2004A Char-LCD 20x4 синьо
  • 1 x USB Type B конектор
  • 1 x 10 комплекта Mini Micro JST XH 2,54 mm 4 Pin
  • 1 x 6 бр. Моментален SW

Поръчка на печатни платки (според Seeed Studio)

Основен материал FR-4

Брой слоеве 2 слоя

Количество на печатни платки 10

Брой различни дизайни 1

Дебелина на печатни платки 1,6 мм

Цветна платка Синя

Повърхностно покритие HASL

Минимална язовирна маска за запояване 0.4 мм ↑

Тегло на медта 1 унция

Минимален размер на отвора за пробиване 0,3 мм

Ширина на следите / Разстояние 6/6 мили

Покрити полудупки / Кастелирани дупки No.

Контрол на импеданса No.

Инструменти

  • Пистолет за горещо лепило
  • Пинсети
  • Фреза
  • ~ 22AWG проводник за отстраняване на неизправности
  • Поялник/станция
  • Калай за запояване
  • SMD преработвателна станция (по избор)
  • 3D принтер (по избор)
  • Екструдиране на файл
  • AVR ISP програмист
  • USB към сериен конвертор (по избор, за отстраняване на грешки)

Интегрирана среда за разработка (IDE) и софтуер

  • Autodesk EAGLE или Cadence Schematic Editor / Allegro PCB Editor
  • OpenSCAD (по избор)
  • Ultimaker Cura (по избор)
  • Saleae Logic (За отстраняване на неизправности)
  • Atmel Studio 6.3 или по -нова версия
  • Android Studio или Eclipse IDE
  • Docklight Serial Monitor / Друг софтуер за мониторинг на COM порта
  • ProgISP за AVR ATMEGA32L флаш програмиране

Стъпка 4: Дизайн на хардуера - Главна платка

Хардуерен дизайн - Главна платка
Хардуерен дизайн - Главна платка
Хардуерен дизайн - Главна платка
Хардуерен дизайн - Главна платка
Хардуерен дизайн - Главна платка
Хардуерен дизайн - Главна платка

Верига за управление на батерията

Веригата за зареждане на батерията е базирана на IC MCP7383 IC, което ни позволява да изберем желания ток на зареждане за Li -Ion батерия - 3.7V с капацитет 850mAh. Зареждащият ток се задава чрез програмиране на стойността на резистора (R1) в нашия случай

R1 = 3KOhm, I (заряд) = 400mA

USB напрежението VBUS се филтрира от π-филтър (C1, L3, C3) и действа като източник на захранване за зареждаща верига.

Схемата на разделителя на напрежение (R2, R3) позволява на MCU да показва дали външно USB захранване е свързано или не, като осигурява следното напрежение към AU/D канала на MCU:

V (индикация) ~ (2/3) V (BUS)

Тъй като нашият A/D на ATMEGA32L е 12-битов, можем да изчислим цифровия диапазон:

A / D (обхват) = 4095V (индикация) / V (REF).

A/D ∈ [14AH: FFFH]

Захранващ блок Smart Switch

Схемата позволява на системата да контролира захранването на всеки проектиран блок както от бутон, така и от софтуер на MCU и се основава на STM6601 Smart-Switch с опция POWER вместо RESET. Терминалите, които искаме да разгледаме, са следните:

  • PSHOLD - Входна линия, която определя състоянието на устройството: ако се издърпа НИСКО, устройството деактивира всички вторични захранващи блокове (+3.3V и -3.3V). Ако се държи ВИСОКО - устройството поддържа ВКЛЮЧЕНО състояние.
  • nSR и nPB - Входни линии. Клеми с бутони. Когато на тези щифтове се открие падащ ръб, устройството се опитва да влезе в режим на включване / изключване на захранването
  • nINT - Изходен ред. Издърпва се LOW всеки път, когато се натисне бутон
  • BG - Изходна линия, използва се като разрешаване на захранването за вторичните захранващи блокове. Докато се държи НИСКО, и двете вторични захранвания са деактивирани

Има няколко важни бележки, преди да преминем към окончателния дизайн:

  • PSHOLD трябва да бъде изтеглен до 3.3V, защото има случаи, когато MCU принуждават всички входове/изходи да са в състояние HIGH-Z. В този случай състоянието на PSHOLD от MCU е неизвестно и може драматично да повлияе на процеса на програмиране на устройството.
  • STM6601 трябва да се поръча с опция за регулиране на EN при продължително натискане, вместо с опция RESET (попаднах в тази).

Захранващ блок: +3.3V

Основно захранване за всички системи в нашия проект. Когато линията +3.3V се държи на ниво GND (т.е. няма напрежение), всички IC, с изключение на интелигентния превключвател, са деактивирани. Веригата се основава на LDO LP-3875-3.3 IC, с възможност за управление чрез EN терминал и осигуряване на ток до 1A.

Източникът на захранване за тази верига е напрежението на акумулатора, с прикрепен A/D индикатор за откриване на VBAT в конфигурация, подобно на VBUS сензорната верига. В този случай изчисленията леко се различават;

V (батерия към A/D) = 0,59 V (батерия); A/D (обхват) ∈ [000H: C03H]

Захранващ блок: -3.3V

Захранващата верига с отрицателно напрежение ни позволява да генерираме симетрични форми на вълни с DC фактор 0V (т.е. средната стойност на формата на вълната може да бъде 0V). Тази схема се основава на LM2662MX IC - DC/DC преобразувател, който работи по метод "зареждаща помпа". Максималният изходен ток на веригата е 200mA, което е достатъчно за нашите проектни изисквания - ние сме ограничени с 80mA изходен ток от канала на всяко устройство.

IC извършва цялата необходима работа, така че само частите, които трябва да прикачим, са два електролитни кондензатора: C33 за превключване и C34 за байпас на линията -3.3V (съображения за намаляване на шума). Честотата на превключване е незначителна по дизайн, ако поставяме веригата достатъчно далеч от частите за генериране на форма на вълната (Ще я обсъдим на стъпка PCB Layout).

Микроконтролерен модул - MCU

Това е мениджърът и главният изпълнителен директор на нашата система - контрол, работа с мрежа, предаване на съобщения и поддръжка на потребителския интерфейс - всичко е от MCU.

Избраният MCU е Atmel ATMEGA32L, където L означава работа на поддържано напрежение ∈ [2.7V: 5.5V]. В нашия случай работното напрежение е +3.3V.

Нека разгледаме основните операционни блокове, които са необходими за разбиране, работещи с MCU в нашия дизайн:

  • Външен осцилатор - е незадължителен компонент, тъй като се интересуваме от 8MHz работна честота
  • Периферно управление, SPI мрежа - Всички периферни устройства (с изключение на ESP32) комуникират с MCU чрез SPI. Има три споделени линии за всички устройства (SCK, MOSI, MISO) и всяка периферна верига има своя специална линия CS (Chip Select). SPI устройствата, които са част от устройството:

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

    1. VBAT_ADC - Контрол на напрежението на акумулатора и определяне на неговото състояние (канал ADC0)
    2. PWR_IND - Индикация за външно захранване (ADC1 канал)
    3. PS_HOLD - Първична линия за разрешаване на захранване за всички дефинирани системи. Когато е намален от MCU, устройството се изключва
    4. Прекъсващ терминал на интелигентен превключвател - Контрол на състоянието с бутон
  • Управление на WiFi мрежа - ESP32: MCU комуникира с ESP32 чрез UART интерфейс. Тъй като 8MHz ни позволява да внедрим скорост на предаване от 115200 с относително малка грешка, можем да използваме ESP32 във веригата без предварително дефиниране на промените в скоростта на предаване.

AVR ISP програмист

Нашето MCU е програмирано чрез SPI с линия за нулиране (/RST) трябва да бъде издърпана ВИСОКО за правилна работа (ако не - MCU ще се окаже в състояние на нулиране завинаги).

За да позволя програмирането и зареждането на устройството чрез USB, прикачих AVR ISP програмист (продукт с малък размер, закупен от eBay). За да поддържате пълната USB поддръжка на устройството, е необходимо да свържете USB терминали тип A (D+, D-, VBUS и GND) с AVR ISP устройство.

Верига за генериране на форма на вълна

Ядрото на устройството са тези схеми. AD9834 е DDS устройство с ниска мощност, което ни предоставя всички форми на вълната, които бихме искали да извлечем от системата. Схемите съдържат две независими интегрални схеми AD9834 с отделни външни 50 MHz осцилатори (както може да се види на схемите). Причината за отделения осцилатор са съображенията за намаляване на шума на цифровите схеми, така че решението беше да се обработят подходящи 50MHz линии с осцилатори, разположени в непосредствена близост до 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 [Hz]

Интегралните схеми AD9834 осигуряват аналогов токов изход за триъгълник/синусоида (IOUT терминал) и цифров изход за квадратна вълна (клема SIGN_OUT). Използването на битов знак е малко сложно, но ние можем да се справим с него - всеки път, когато DDS премине прага на сравнителната стойност, SIGN_OUT се държи съответно. Към изхода на всеки канал е прикрепен резистор от 200 Ома, така че изходното напрежение ще има значими стойности:

I (единичен канал) = V (изход) / R (избор на напрежение); V (изход) = R (VS)*I (SS) = 200I (SS) [A]

Електрически вериги за контрол на амплитудата (D/A)

Според листа с данни на AD9834, неговата амплитуда може да се регулира чрез подаване на ток към системата за пълна скала на DDS, така че с помощта на двойна D/A IC можем да контролираме амплитудата на изходния сигнал, като регулираме този ток. Още веднъж малко математика:

I (пълен мащаб) = 18 * (V_REF - V_DAC) / R_SET [A]

Според схеми и поставяне на някои числа в уравнение:

I (пълен мащаб) = 3,86 - 1,17 * V_DAC [A]

D/A модулът, използван при проектирането, е 12-битов MCP4922, когато токът е в диапазона от [0mA: 3.86mA], а линейната амплитудна функция е:

V (избор на амплитуда) = 1 - [V (D / A) / (2^12 - 1)]

Мултиплексираща схема на вълнова форма

Изходите за генериране на квадратна вълна и синус/триъгълник са разделени на AD9834, поради което трябва да използваме високоскоростна мултиплексираща верига за двата изхода, за да можем да извлечем всички желани форми на вълни от един отделен канал. IC мултиплексорът е аналогов превключвател ADG836L с много ниско съпротивление при включване (~ 0.5Ohm).

Таблицата за избор, която MCU използва за изходите, както е:

Избор на режим [D2: D1] | Изходен канал A | Изходен канал B

00 | Синус/триъгълник | Синус/триъгълник 01 | Синус/триъгълник | Квадрат 10 | Квадрат | Синус/триъгълник 11 | Квадрат | Квадрат

Схеми за управление на напрежението при отклонение (D/A)

Една от основните характеристики на генератора на форма на вълна е да контролира стойността на постояннотока. В този дизайн това се прави чрез задаване на желаното D/A напрежение за всеки канал и тези напрежения на отклонение се сумират с мултиплексирани изходи, които обсъдихме малко по -рано.

Напрежението, извлечено от D/A, е в диапазона [0V: +3.3V], така че има схема, базирана на операционен усилвател, която картографира D/A диапазона до [-3.3V: +3.3V], което позволява на устройството да осигури пълен обхват на желания DC компонент. Ще пропуснем досадната аналитична математика и просто ще се съсредоточим върху крайните резултати:

V_OUT (канал B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (канал A) = V_BIAS_A (+) - V_BIAS_A (-)

Сега обхватът на DC компонентите се намира в диапазон [-3.3V: +3.3V].

Сумиращи схеми - DC компоненти и изходи на формата на вълната

В този момент имаме всичко необходимо за правилния изход на устройството - Bias Voltage (DC компонент) в пълния диапазон на напрежение и мултиплексирани AD9834 изходи. Ще направим това с помощта на сумиращ усилвател - оп -усилвателна конфигурация

Нека пропуснем математиката още веднъж (вече обхванахме много математически подходи) и запишем крайния резултат от сумиращия изход на усилвателя:

V (изход на устройството) = V (положително отклонение) - V (отрицателно отклонение) - V (мултиплексиран изход) [V]

Следователно:

V_OUT = ΔV_BIAS - V_AD9834 [V]

Изходните конектори от тип BNC са свързани с резистори за избор (R54, R55; R56, R57). Причината за това е, че в случай, че дизайнът може да е нефункционален, все още можем да изберем дали искаме да използваме сумиращ усилвател.

Важна забележка: Резисторните мрежи на крайните сумиращи усилватели могат да бъдат регулирани от дизайнер, за да се промени максималната амплитуда, която може да бъде извлечена от устройството. В моя случай всички усилватели имат еднаква печалба = 1, като по този начин максималната буферирана амплитуда е 0.7Vpp за триъгълна/синусоидна вълна и 3.3Vpp за квадратна вълна. Специфичният математически подход може да бъде намерен сред приложените изображения на стъпка.

ESP32 като външен модул

MCU комуникира с ESP32 чрез UART интерфейс. Тъй като исках собствена печатна платка за ESP32, има 4 терминала на разположение за свързване: VCC, RX, TX, GND. J7 е интерфейсен конектор между печатни платки, а ESP32 ще бъде разпределен като външен модул вътре в устройството.

Потребителски интерфейс - LCD и високоговорител

Използваният LCD дисплей е общ дисплей с размери 20 x 4 знака с 4 -битов интерфейс. Както може да се види от дизайна, има цифров потенциометър SPI, прикрепен към LCD терминалите "A" и "V0" - неговата цел е да регулира яркост и контраст на LCD модула програмно.

Високоговорителят осигурява звуков изход за потребителя чрез просто генериране на квадратни вълни от MCU. BJT T1 контролира тока през високоговорителя, който може да бъде само в две състояния - ON / OFF.

Стъпка 5: Хардуерен дизайн - ESP32 модул

Хардуерен дизайн - ESP32 модул
Хардуерен дизайн - ESP32 модул

ESP32 се използва като външен модул за основна печатна платка. Комуникацията на устройството се основава на AT команди, които са налични във фърмуера на общото устройство.

Няма много за разширяване на този дизайн, но има някои бележки за дизайна:

  • За справянето с неуспехите при използване на подходящ UART модул на ESP32, прикачих три резистора за избор както за TX, така и за RX линии. (0Ohm за всеки). За стандартна конфигурация, модулът UART2 се използва за AT команди (R4, R7 трябва да бъдат запоени)
  • Устройството има 4 -редов изход - VCC, GND, TX, RX.
  • Щифтовете IO0 и EN оценяват работата на устройството и трябва да бъдат проектирани така, както е предвидено в схемите

Всички функции на печатни платки ще разгледаме в следващата стъпка.

Стъпка 6: Разположение на печатни платки

Разположение на печатни платки
Разположение на печатни платки
Разположение на печатни платки
Разположение на печатни платки
Разположение на печатни платки
Разположение на печатни платки

Целите на проектирането на печатни платки

  1. Създайте вградена система за всички интегрални схеми на една и съща платка
  2. Подобрете производителността на устройството чрез проектиране на една основна печатна платка
  3. Намаляване на разходите - ако искате да потърсите цените, нискотарифните дизайни са наистина НИСКИ
  4. Минимизирайте размера на електронната платка
  5. Лесен за отстраняване на неизправности - Можем да използваме ТП (тестови точки) за всяка възможна неизправност на линия.

Технически параметри

И двете печатни платки: основната и ESP32 платката споделят едни и същи характеристики за производствения процес - ниска цена и работа за нашите цели. Нека ги видим:

А - Главен съвет

  • Размер: 10см x 5.8см
  • Брой слоеве: 2
  • Дебелина на печатни платки: 1,6 мм
  • Минимално пространство за проследяване/ширина: 6/6mil
  • Минимален диаметър на отвора: 0,3 мм
  • Мед до ръба на печатни платки минимално разстояние: 20mil
  • Повърхностно довършване: HASL (Доста добре изглеждащ евтин тип сребрист цвят)

Б - Главен съвет

  • Размер: 3см х 4см
  • Брой слоеве: 2
  • Дебелина на печатни платки: 1,6 мм
  • Минимално пространство за проследяване/ширина: 6/6mil
  • Минимален диаметър на отвора: 0,3 мм
  • Мед до ръба на печатни платки минимално разстояние: 20mil
  • Повърхностно довършване: 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 устройство: Директна WiFi или WLAN мрежова комуникация - тези данни се съхраняват в EEPROM. На този етап потребителят може да предефинира типа сдвояване на устройства с Android.

Директно сдвояване на устройства с Android

Този тип сдвояване се основава на създаването на WiFi мрежа от устройството FuncGen. Той ще създаде AP (точка за достъп) и TCP сървър на IP на локално устройство със специфичен SSID (име на WiFi мрежа) и определен номер на порт. Устройството трябва да държи състоянието - отворено за връзки.

Когато устройството с Android е свързано с FuncGen, MCU влиза в АКТИВЕН режим и отговаря в съответствие с инструкциите на потребителя от устройството с Android.

Сдвояване с WLAN

За да комуникира в локална WiFi мрежа, MCU трябва да предостави команди за ESP32 да създаде AP, да комуникира с устройство с 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 е необходим само за правилното WiFi сканиране на мрежи).

Главно меню

След като приложението се стартира, на екрана ще се появят четири бутона. Действие на бутоните:

  1. ДИРЕКТНО ВРЪЗКА: Инициализиране на връзка към AP на FuncGen от SSID на IOT_FUNCGEN. Ако връзката е успешна, устройството влиза в основния режим на потребителския интерфейс.
  2. WIFI ВРЪЗКА: Устройството проверява дали има запаметени параметри на данни в паметта: wifi.txt, mac.txt. Ако няма съхранени данни, устройството ще отхвърли заявката на потребителя и ще предостави изскачащо съобщение, че първо трябва да се направи сдвояване с WLAN.
  3. СЧИТВАНЕ: Комуникацията с FuncGen по същия начин като DIRECT CONNECTION, но вместо непрекъснат обмен на съобщения, има едно ръкостискане. Устройството с Android проверява дали вече е свързано с WiFi мрежата и иска от потребителя да въведе парола. Ако повторното свързване е успешно, устройството с Android съхранява SSID и парола във файла wifi.txt. След успешна комуникация с FuncGen, той съхранява получения MAC адрес във файл mac.txt.
  4. Изход: Стига казано:)

Мениджър за сканиране на WiFi

Исках приложението да работи изцяло и без корекции извън приложението. И така, аз проектирах WiFi скенер, който изпълнява всички необходими операции за свързване към WiFi мрежата с известен парола и SSID.

Предаване на данни и TCP комуникация

Това е основният кодов блок в приложението. За всички единици на потребителския интерфейс има определено съобщение в определен формат (Предварителен етап), което принуждава FuncGen да осигури желания изход за каналите. В дейността има три типа полета на потребителския интерфейс:

  1. Търсене на ленти: Тук дефинираме реален диапазон от изходни параметри на FuncGen

    1. Амплитуда
    2. DC Offset
    3. Яркост на LCD дисплея
    4. LCD контраст
  2. Текстово редактиране: За да се запазят целочислените стойности добре дефинирани и точни, честотното въвеждане се извършва само чрез текстови полета само с цифри
  3. Бутони: Избор на параметри от наличните списъци:

    1. Тип на вълната

      1. Синус
      2. Триъгълник
      3. DC
      4. Квадрат
      5. ИЗКЛЮЧЕНО
    2. Получете информация

      1. Състояние на батерията (процент)
      2. AC състояние (външно захранване)
    3. Опция за зареждане (за FuncGen MCU)

      1. Фабрична настройка
      2. Рестартирам
      3. Изключвам
      4. Директно - Рестартирайте с режим на директно сдвояване
      5. WLAN - Рестартирайте с режим на сдвояване на WLAN
    4. Изход към главното меню: Достатъчно казано:)

Стъпка 10: Тестване

Препоръчано: