Оглавление:

ДАТАЛОГЕР ESP32 ADXL345 С GPS_EXT RAM_EXT_RTC: 8 шагов
ДАТАЛОГЕР ESP32 ADXL345 С GPS_EXT RAM_EXT_RTC: 8 шагов

Видео: ДАТАЛОГЕР ESP32 ADXL345 С GPS_EXT RAM_EXT_RTC: 8 шагов

Видео: ДАТАЛОГЕР ESP32 ADXL345 С GPS_EXT RAM_EXT_RTC: 8 шагов
Видео: Как связать несколько плат ESP8266 и передать данные другим ESP 2024, Июль
Anonim
ДАТАЛОГЕР ESP32 ADXL345 С GPS_EXT RAM_EXT_RTC
ДАТАЛОГЕР ESP32 ADXL345 С GPS_EXT RAM_EXT_RTC
ДАТАЛОГЕР ESP32 ADXL345 С GPS_EXT RAM_EXT_RTC
ДАТАЛОГЕР ESP32 ADXL345 С GPS_EXT RAM_EXT_RTC
ДАТАЛОГЕР ESP32 ADXL345 С GPS_EXT RAM_EXT_RTC
ДАТАЛОГЕР ESP32 ADXL345 С GPS_EXT RAM_EXT_RTC

Для тех из вас, кто играет с доской Wemos 32 LOLIN, я подумал, что начну документировать некоторые мои выводы.

Текущий проект - это интерфейс с акселерометром ADXL345, и, как показано на фото выше, я успешно подключил его к лолину и настроил ADXL как датчик удара.

Регистры ADXL были настроены как прикрепленный PDF-файл, а прерывание, которое я настроил в коде, выводит код на последовательный порт при обнаружении удара.

Я также настроил регистр неактивности как прерывание и после проверки, какое прерывание было запущено, выплюнул те же данные.

Я использую порт I2c на LOLIN, и вы увидите, что у меня есть процедура для вывода регистров на ADXL, чтобы я мог проверить конфигурацию во время отладки. Эта функция запускается в функции таймера с использованием библиотеки тикеров. Это полезная функция, которую можно настроить для отладки и проверки регистров на случай, если вы напишете в них что-то, что таинственным образом заставляет данные делать какие-то странные вещи.

Я нормализовал данные комплиментов 2 в LOLIN и отформатировал их, чтобы их можно было импортировать в Excel.

Взгляните на прикрепленный PDF-файл с некоторыми данными, которые я импортировал, и я построил график в Excel, показывающий некоторые нажатия на ADXL, которые запускаются прерыванием в регистре триггера с использованием режима FIFO.

Режим FIFO - полезная функция, которая не связывает микроконтроллер и сохраняет 32 выборки на триггере. Еще раз посмотрите на мои дампы данных, и вы увидите, где мы начинаем с нуля, а последняя выборка находится на 9,8 мс или около того. Линия X на графике показывает время в микросекундах, увеличивающееся слева направо.

ПРИМЕЧАНИЕ. Я ИЗМЕНИЛ ПОСЛЕДНЮЮ ГРАФИКУ, ЧТОБЫ ПОКАЗАТЬ ВРЕМЯ ОТ МИНУС 9800 микросекунд. Первое всплывающее окно FIFO - это самые ранние данные, остальные старше. Просмотр должен быть справа налево.

Обратите внимание на три провода к плате ADXL. SDA / SCL и INT из INT 1. Опять же, если вы посмотрите на настройки регистра и перекрестные ссылки на лист данных, это будет иметь смысл.

Выборка данных составляет 3200 сэмплов, что дает 3125 мксек между сэмплами и предварительный захват 4 сэмплов. Посмотрите на PDF-файл данных с устройства в Excel и на каждый из построенных мной графиков, показывающих, как я перемещаю окно захвата.

Я выложу код конфига и прерываю, если кому интересно.

Для I2C я использую библиотеку проводов и написал несколько функций для этого.

Обратите внимание на небольшой сниффер данных, который я подключил к SDA / SDL и с помощью Sigrok могу декодировать шину I2C в реальном времени.

Следующим шагом будет сохранение на диск SAN, хотя я уже доказал, что это работает. Как только это будет сделано, я подключусь к беспроводной сети и загрузю на веб-сайт.

Я буду добавлять к этому по мере расширения проекта.

СНОСКА:

Для наблюдателей вы заметите большую вмятину на корпусе, защищающую микросхему esp, и перемычку на плате. Это произошло из-за местного кокер-спаниеля, который проверил почту и решил прогрызть доску, прежде чем позволить мне получить к ней доступ. Я думаю, она не фанат эспрессифа !.

Конечно, как всегда, я всегда готов ответить на вопросы, поэтому задавайте их.

Шаг 1: СИГРОК И ПУЛЬСЕВЬЮ

СИГРОК И ПУЛЬСЕВЬЮ
СИГРОК И ПУЛЬСЕВЬЮ
СИГРОК И ПУЛЬСЕВЬЮ
СИГРОК И ПУЛЬСЕВЬЮ

Сразу упоминание о pulseview и sigrok.

Это бесплатное программное обеспечение из сети, а небольшая интерфейсная плата с 8 логическими входами стоит недорого на ebay и др. Вы заметите пару изображений, которые я взял с шины во время работы ADXL, и это снова так полезно для отладки, поскольку это имеет встроенный декодер для I2C.

Прицел отлично подходит для проверки уровней сигнала, но ручное декодирование I2c в лучшем случае утомительно, хотя я уже настроил цикл и отлаживал вручную. Вы должны понимать, что на уровне порта я работал над битами, что я делал во многих проектах с рисунком, но это требует много времени и подвержено ошибкам… особенно ночью !!

Спасибо ребятам, написавшим это приложение. Его бог посылает для проектов в i2c, Обратите внимание на линию D4, которая контролирует линию прерывания от ADXL.

Шаг 2: добавление к датчику удара

Добавление к датчику удара
Добавление к датчику удара
Добавление к датчику удара
Добавление к датчику удара
Добавление к датчику удара
Добавление к датчику удара
Добавление к датчику удара
Добавление к датчику удара

Хорошо, здесь я добавил некоторые периферийные устройства к датчику удара для подтверждения концепции.

А пока извините за крысиное гнездо, как только оно заработает, я спроектирую плату, которая соединит все компоненты и поместит все это в красивую коробку. Все прикрепленные элементы, кроме SD-карты, работают на i2c, который находится на шине spi.

Осталось прикрепить модуль GPS, который является WIP, но я надеюсь найти решение к концу этой недели.

Итак, текущий проект состоит из:

Плата ESP32 LOLIN с беспроводной связью.

Часы реального времени PCF. Отслеживает текущую дату и время. Я грубо припаял старую доску проекта, которую выгравировал ранее.

Внешняя вспышка. Помимо прочего, хранит данные настройки для акселерометра. Емкость 132 КБ и может выгружать на него некоторые веб-данные для облегчения работы с меню и т. Д.

SD-карта SPI для хранения файлов данных и журналов акселерометра. 8 ГБ, но можно расширить.

OLED-дисплей для отображения меню и некоторых других вещей.

Вот что он [в конечном итоге] сделает

Отслеживайте удары и активность, выходящие за рамки фона.

Зарегистрируйте разряды на SD-карту с указанием времени и даты на бортовых часах.

Отметьте местоположение с GPS на SD-карту, если это возможно

Используя точку доступа, загрузите данные на веб-сервер для анализа данных… это может быть мобильный телефон.

| Сканирование точек доступа - это возможность LOLIN32, поскольку он размещает веб-сервер для команд, а затем подключается в качестве клиента к облачному веб-серверу. Вы всегда можете просто отключить SD-карту и загрузить ее!

Еще многое предстоит сделать, но он идет дальше.

Шаг 3: ADXL-АДРЕС

АДРЕС ADXL
АДРЕС ADXL

А теперь забавная вещь. Я купил микросхему ADXL 345 как небольшую плату, потому что это было дешевле, чем приобретение микросхемы самостоятельно….. как это работает? В любом случае после этого я начал подключать его к шине i2c и обнаружил, что у меня конфликт с eeprom с адресами, которые фактически начинаются с 0x53, что переводится в запись в A6 и чтение в A7.

Итак, читая бумф, оказывается, что если вы возьмете SDO / ALT ADDRESS HIGH, вы можете принудительно установить его на 1D

Оказывается, моя маленькая плата жестко заземлена на выводе 12 ADXL, несмотря на вывод SDO, который выглядит так, как будто вы можете тянуть его высоко. Не пытайтесь делать это дома без источника питания с ограничением по току … К счастью, у меня возникла проблема, из-за которой мне пришлось вынуть мультиметр и проверить контакт на землю. [Мертвое короткое замыкание], что означает, что вам нужно перерезать дорожку и перемычку с 12 на 3,3 В. Это работает и избавляет вас от столкновения на выпускном вечере. К счастью, они не сделали короткое замыкание под чипом, иначе меня бы обманули, и мне пришлось бы удалить чип из платы. EEprom, который у меня был запасной, устроен как две страницы по 64 КБ с адресами 0x52 и 53. Как только я сделал это, моя проблема была решена.

При повторном чтении веб-страницы он говорит, что установлен на 0x53, но он напечатан мелким шрифтом, так что будьте осторожны!

Шаг 4: схематические распечатки печатной платы

Вот краткий обзор схемы и компонентов. Это в значительной степени мой дизайн и все еще WIP [Работа в процессе]. Схема была разработана, а затем преобразована в иллюстрации для дорожек. Я проверил, что все компоненты функционируют должным образом, используя мое крысиное гнездо приближается, и теперь я собираю на доске, которая поместится в небольшую коробку [Подробности ниже]

Ссылаясь на shocker.pdf.

Плата состоит из 8 основных компонентов

  1. ХРАНЕНИЕ SD-КАРТЫ
  2. АКСЕЛЕРОМЕТР ADXL
  3. ДИСПЛЕЙ OLED
  4. 3,3 В REG
  5. МОДУЛЬ GPS1
  6. EEPROM
  7. ТАЙМЕР RTC
  8. ЧИП ESP32 LOLIN С БЕСПРОВОДНЫМ ИНТЕРФЕЙСОМ RF

Все зависит от акселерометра.

ADXL настроен для прерывания процессора на INT1, который направлен на вывод 14 процессора. Код в микроконтроллере настроен на перехват этого прерывания и установку флага, который используется в основной подпрограмме. Я добавлю код. описание регистрации процедуры прерывания и функции обратного вызова позже.

ADXL поддерживает прерывания в различных состояниях, таких как шок или бездействие, а также в некоторых других. Вы можете замаскировать те, которые вызывают у вас удовольствие, в зависимости от того, что вы пытаетесь сделать. ADXL работает в режиме FIFO, поэтому он хранит 32 выборки. чтобы зафиксировать событие удара как XYZ [96 значений]

Дисплей ADXL RTC и EEPROM управляются от I2C. SD-карта подключена к входу / выходу SPI, а модуль GPS подключен к последовательным портам на LOLIN с маркировкой X12 X11.

Последовательность действий следующая: Постоянно захватывайте данные 232 из GPS-устройства и фильтруйте. Пока у вас есть действительное время GPS, обновляйте RTC через заданные интервалы. При прерывании сохраняйте переменные на SD-карту, такие как время / Lat_Lng / Скорость / Высота / Сохранение регистров ADXL в необработанный формат 2 дополняет и не дополняет до двух. Все данные разделяются запятыми.

Вы также заметите, что есть контакт сброса, который подключен к контакту 13. Этот контакт запускает встроенный веб-сервер, позволяющий подключиться к конфигуратору для настройки точки доступа, которая хранится в EEPROM. При перезагрузке процессор подключится к точке доступа и получит доступ к Интернету для загрузки файлов с SD-карты. Если нет данных и нет точки подключения, тогда устройство просто выполняет свой процесс регистрации данных на SD-карту, которую вы можете запросить, используя программа [ShockerView.exe] [WIP] На сервере данные хранятся в базе данных SQL и отображаются [WIP]

Отпечатки печатной платы прикреплены сверху и снизу.

Шаг 5: Прототип гравировки художественного произведения

Прототип художественного травления
Прототип художественного травления
Прототип художественного травления
Прототип художественного травления
Прототип художественного травления
Прототип художественного травления

Вот как я делаю свои прототипы плат

Распечатайте рисунок на толстой кальке. Я использую 63 GSM от кузнецов, дешево и сердито. Принтер здесь ключевой. Вы хотите быть как можно более непрозрачным и максимально чистым. Мой лазерный принтер сейчас работает, но он годится для печати до 10 тысяч, меньше этого вам нужно специальное оборудование, так как волокно кальки начинает мешать. Вы можете купить специальную бумагу, но, эй, это слишком хорошо для таких, как я. В любом случае, я постоянно совершенствую свой дизайн, так что это будет слишком дорого для маленького меня. Если вам нужна подходящая доска, попросите экспертов сделать это.

Обычно я делаю прототипы своих плат по частям, а затем делаю финальный вариант с герберами для интернет-компании. Прототип устраняет все эти ошибки и упущения, прежде чем вкладывать реальные деньги.

После того, как вы напечатали изображения на двух отдельных листах формата А4, вырежьте их так, чтобы они наложились друг на друга и склеили их на месте. оставьте достаточно места для двухсторонней платы, чтобы она могла втиснуться между слоями, и убедитесь, что печатная сторона прилегает к печатной плате. Сделайте пару прорезей, чтобы вы могли вставить платы и временно скотчем. Если вы будете осторожны, вы можете перекрыть скотч, чтобы вы могли оторвать его, не разрушая изображения.

Положите доску в УФ-бокс одной стороной вниз. NB. Я сделал свой, используя четыре новых УФ-лампы мощностью 13 Вт и несколько старых ПРА, и сделал коробку с прозрачной стеклянной панелью. Интервал был экспериментальным. Крышка защелкивается и выдавливает пену на заднюю часть доски, прижимая маску к стеклу. Если вы этого не сделаете, свет будет подрезать резист травления. Включите доску и выставьте ее на 1 минуту 40 секунд с каждой стороны. Используйте свои часы. На самом деле я должен модифицировать это с таймером на нем … о, нет другого проекта … возможно, я куплю один … вы знаете, что не будет! Платы, которые я покупаю у Mega Electronics, - это дешевые прототипы плат с травлением. Резист травления иногда бывает немного неоднородным, но у меня есть несколько плат, которые я имел в течение четырех лет, и они до сих пор производят хорошие платы для прототипирования !!

Будьте осторожны, переворачивая доску, не позволяйте ей выскользнуть, иначе у вас будет мусор.

Теперь подготовьте своего разработчика. Я использую 2 колпачка с соотношением 18: 1, так что это 2 колпачка проявителя и 36 колпачков чистой чистой водопроводной воды. Проявитель выпускается в виде флакона или порошка, срок службы флакона обычно составляет около 6 лет !!. Смешайте его в контейнере для мороженого И НАДЕВАЙТЕ ПЕРЧАТКИ. Не засовывайте в него пальцы, иначе смазка повлияет на него. Зимой может возникнуть проблема с температурой. Держите воду при температуре 20 градусов или около того, это не критично, но если она холодная, результаты могут быть непредсказуемыми. Я проделал это в январе в своем гараже с чайником, так что вы можете компенсировать это.

Аккуратно переместите контейнер из стороны в сторону, как только вы положили в него плату. Если вы все сделали правильно, вы увидите, как с меди удаляется поток пурпурного резиста к травлению, открывая прекрасную блестящую медь между дорожками. Переверните ее в перчатках, чтобы проверить другую сторону. Обычно этот процесс занимает около минуты, поэтому по завершении выньте доску и тщательно промойте в теплой воде. Если это скучно, скорее всего, он потерпел неудачу.

У меня было это пару раз, но обычно это происходит из-за того, что я не надевал перчатки, или температура была слишком низкой, или я испортил время экспозиции из-за какого-то отвлечения… почему они делают это посреди чего-то важного….

Покажи мне свои гравюры

Итак, теперь у вас есть доска с красивыми зелеными дорожками, защищенными травлением, и теперь вам нужно приготовить хлорид железа. Теперь я использую тот же контейнер для мороженого, чтобы минимизировать отходы и перемешивать в соответствии с примечаниями на упаковке. Я покупаю хлорид железа в пакетах с шариками, которые вы взвешиваете и растворяете в растворе. Сделайте достаточно, чтобы заполнить контейнер для мороженого примерно на 1/3. Если вы восполните достаточно для работы, вы можете перелить его в пластиковый контейнер, и он будет храниться в течение длительного времени.

ВЫ ДОЛЖНЫ НОСИТЬ ПЕРЧАТКИ … не из-за жира и т. Д., А потому, что в противном случае ваши руки будут ярко-оранжевыми в течение двух недель. Однажды я сделал это перед важной встречей в Лондоне, и это выглядело так, как будто меня танго танго. Однако знайте, что все это неприятно вокруг чего-нибудь медного … и вообще чего угодно. Носите старую одежду, потому что, если она попадет на нее, она испортится. Он прикрепляется к мойкам из нержавеющей стали и, как правило, загрязняет все. Делайте это на улице или в надворной постройке, вдали от всего. Не сливайте остатки в канализацию, это отлично убивает бактерии, которые водные власти не хотели бы продвигать в своих септических резервуарах. Для некоторых властей это также незаконно, так что не делайте этого.

Когда вы впервые окунете свою доску в раствор, она приобретет красивый красно-бронзовый цвет, так как медь подвергнется атаке. Если этого не произошло, то, возможно, у вас все еще есть слой резиста для травления, который мешает работе травителя, или ваше решение неверно. Если это так, то вернемся к чертежной доске, я боюсь, но вряд ли ваш травитель неправильный, если вы следовали за разрушениями.

В любом случае, если все в порядке, у вас есть несколько идеальных дорожек, защищенных травлением.

Обычно на этом этапе профессионал должен использовать набор масок для проявления вокруг отверстий и контактных площадок и создания сквозных медных переходов, а также использовать шелкографию для рисования номеров компонентов и т. Д. К сожалению, у меня нет времени или желания сделать свои переходные отверстия используя медную проволоку от слоя к слою… очевидно, что многослойность не подходит для этого метода. Если я в настроении, я кропотливо добавлю номера компонентов к слою для печати, чтобы вы также вытравили номера компонентов. Это может сэкономить время при сборке, но зависит от того, насколько загружена плата.

Теперь я выставляю дорожки еще на 2 минуты или около того на каждую сторону и окунаю в проявитель, чтобы удалить весь резист травления.

Теперь я просверливаю переходные отверстия и любые сквозные отверстия, залуживаю все дорожки и проверяю целостность с помощью мультиметра. Эта деталь вызывает затруднения, и вы обычно не сделаете этого для профессиональных плат с настоящими переходными отверстиями, но это стоит сделать, чтобы избежать переходных проводов. быть припаянным только с одной стороны… столько раз случалось!

Шаг 6: Сборка платы

Сборка платы
Сборка платы
Сборка платы
Сборка платы
Сборка платы
Сборка платы

Хорошо, теперь у меня есть готовая плата, и я просверлил все переходные отверстия и сквозные отверстия.

Оберните все переходные отверстия проволокой и припаяйте с обеих сторон. Мне нравится покрывать все дорожки оловом, так как защита не обязательна, но предотвращает окисление меди.

Я прикрепил SD-карту, которая монтируется на поверхность, и добавил две площадки, чтобы нанести на нее припой, плюс у нее есть пара контактов на нижней стороне, чтобы закрепить ее.

Затем добавил ADXL EEPROM и т. Д.

Что касается мощности, план состоит в том, чтобы взять 5 В от USB или внешнего аккумулятора и пропустить его через регистр 3,3 В на плате. У меня есть небольшой регистр, который я купил на Ebay, который собран в виде модуля и рассчитан на 800 мА … это 300 гр. чем USB может предоставить. Я еще не проводил никаких измерений мощности, так как могу настроить программное обеспечение…..могу использовать прерывание НЕАКТИВНОСТЬ от ADXL для решения этой проблемы. [WIP]

… Нужно добавлять изображения по мере сборки.

Шаг 7: КОДИРОВКА

Хорошо, я не буду перебирать все настройки Arduino, поскольку кто-то другой сделал это намного лучше в другом месте.

По ходу дела я просто выберу уместные части, которые можно использовать в собственном проекте.

Эта работа все еще продолжается, поскольку рассматривается возможность загрузки на веб-сайт, но давайте рассмотрим часть кода.

Идея состоит в том, что обычная функциональность - это инициализация устройств, которые состоят из GPS / дисплея / SD-карты / часов реального времени / ext_flashmemory и акселерометра.

После этого мы входим в цикл, ожидая нажатия клавиши прерывания sw. Если это так, перейдите в меню конфигуратора, чтобы настроить сеть Wi-Fi для автоматического входа на устройство, указанное в качестве входа для конфигуратора веб-страницы. Сначала он сканирует все устройства на предмет ssid, а затем позволяет вам выбрать одно и сохранить его во флеш-памяти. с флагом, указывающим, что при следующей загрузке загрузите настройки из флеш-памяти. Вы всегда можете изменить это, введя ipaddress и набрав / killbill, чтобы начать очистку флэш-памяти и загрузить значение по умолчанию.

вот функция прерывания, определенная в коде для акселерометра adxl, и переход к конфигуратору на двух отдельных контактах. Мы используем прерывание ADXL для прерывания по событию SHOCK. Для обоих прерываний мы устанавливаем флаг, который сбрасывается в основном «цикле». вот как это выглядит:

посмотрите прикрепленный код

Шаг 8: поиск контактов SDA SCL

используйте этот код:

Serial.println (SDA);

Serial.println (SCL);

печатает контакты, настроенные в настоящее время в ESP для SDL и SCL

Существует файл, который используется для сопоставления контактов с такими функциями, как последовательные порты в ESP32.

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