Это разделенный дисплей на базе ESP32, сделанный своими руками, оптимизированный для простой сборки дома в небольших количествах, но с возможностью масштабирования до больших доступных дисплеев.
Новейшие автоматически сгенерированные (непроверенные!) артефакты.
Инструкция: руководство по сборке v2
Размеры модуля:
Новейшие автоматически сгенерированные (непроверенные!) артефакты.
Примечание
Для небольших дисплеев (до 3 модулей) вы можете не использовать специальные платы контроллера и использовать готовые модули драйверов ULN2003A, подключенные к Arduino Uno. Это частично описано в вики, но может потребоваться дополнительная доработка, чтобы заставить его работать. Требуется помощь: если вы хотите помочь улучшить эти инструкции, обратитесь на сервер Discord, спасибо!
Электронная система «Chainlink» предназначена для поддержки длинных цепочек плат драйверов для управления средними/большими дисплеями (до 100+ модулей с раздельными клапанами). Его также можно легко и дешево заказать в предварительно собранном виде или собрать самостоятельно, особенно в больших количествах, благодаря простой спецификации и компонентам для поверхностного монтажа.
Чтобы построить дисплей, вам понадобятся 3 разных электронных компонента:
Каждому модулю необходим датчик Холла для калибровки при запуске и мониторинга неисправностей.
Более старые датчики для версии 0.7 и более старое оборудование с лазерной резкой можно найти в отмеченном выпуске датчика.
Эти старые датчики несовместимы с аппаратным обеспечением v2, изготовленным лазером.
Новые датчики для аппаратного обеспечения v2, изготовленного методом лазерной резки. В них используются компоненты для поверхностного монтажа, и они оптимизированы для сборки печатных плат в компании JLCPCB. Эти новые датчики несовместимы с оборудованием версии 0.7 и более старыми, изготовленными лазером.
Пакеты из 6 датчиков доступны в основном в собранном виде в магазине Bezek Labs и поставляются с необходимыми вам прямоугольными штыревыми разъемами и магнитами. Закупки поддерживают дальнейшее развитие этого проекта.
Новейшие автоматически сгенерированные (непроверенные!) артефакты.
Ключевые особенности:
Платы драйверов Chainlink доступны в основном в собранном виде в магазине Bezek Labs и поставляются с необходимыми дополнительными разъемами и шлейфами. Закупки поддерживают дальнейшее развитие этого проекта.
Дополнительную информацию о создании и использовании драйверов Chainlink можно найти в Руководстве пользователя драйвера Chainlink.
Или, если вы хотите заказать их непосредственно на заводе, эта конструкция оптимизирована для сборки на JLCPCB, и там автоматически генерируются файлы для заказа собранных печатных плат. Или, если вы хотите собрать эту доску самостоятельно, а не платить за сборку, вы можете просмотреть интерактивную спецификацию/инструмент размещения.
В зависимости от наличия на складе JLCPCB вам может потребоваться вручную изменить файл спецификации для использования альтернативных компонентов или повторно создать файлы самостоятельно с помощью export_jlcpcb.py
и указать одно или несколько имен полей LCSC_ALT_*
, чтобы использовать предварительно выбранный альтернативный номер детали. См. схему доступных предварительно выбранных альтернатив (проверьте свойства/поля символа).
Новейшие автоматически сгенерированные (непроверенные!) артефакты.
Chainlink Buddy [T-Display] — это удобный способ подключения платы T-Display ESP32 (рекомендуемый микроконтроллер) к цепочке драйверов Chainlink.
Ключевые особенности:
Платы Chainlink Buddy [T-Display] доступны в магазине Bezek Labs и поставляются с необходимыми дополнительными разъемами. Закупки поддерживают дальнейшее развитие этого проекта.
Новейшие автоматически сгенерированные (непроверенные!) артефакты.
Chainlink Buddy [макетная плата] позволяет легко подключить драйвер Chainlink к макетной плате для создания прототипов. Вы можете использовать 5 проводов DuPont и создать беспорядочное крысиное гнездо, или вы можете использовать один ленточный кабель и эту гладкую коммутационную плату.
Платы Chainlink Buddy [макетные] доступны в магазине Bezek Labs и поставляются с необходимыми дополнительными разъемами. Закупки поддерживают дальнейшее развитие этого проекта.
Новейшие автоматически сгенерированные (непроверенные!) артефакты.
Для дисплеев большего размера вам следует принять дополнительные меры, чтобы сделать оборудование более устойчивым к потенциальным сбоям. Chainlink Base — это экспериментальная (но неподдерживаемая) конструкция контроллера, которая добавляет некоторые дополнительные функции. Это было протестировано и, похоже, работает, но не рекомендуется для общего использования.
Базовая плата Chainlink — это дополнительная альтернатива Chainlink Buddy, предназначенная для особенно больших дисплеев. Он содержит ESP32 и добавляет дополнительные возможности подключения (клеммы для последовательного порта UART и RS485) и распределения питания (каналы питания с независимым контролем для нескольких «зон» плат драйверов).
Ключевые особенности:
Новейшие автоматически сгенерированные (непроверенные!) артефакты.
Классическая плата драйвера устарела и не поддерживается.
Плата контроллера Classic была разработана для подключения к Arduino как щит и могла управлять четырьмя шаговыми двигателями. До 3 плат драйверов можно объединить вместе, чтобы получить до 12 модулей, управляемых одним Arduino.
Драйвер использует 2 драйвера сдвиговых регистров нижнего плеча MIC5842 со встроенными диодами подавления переходных процессов для управления двигателями и сдвиговый регистр 74HC165 для считывания данных с 4 магнитных датчиков исходного положения на эффекте Холла. Имеются дополнительные светодиоды RGB WS2812B, которые можно использовать для индикации состояния каждого из 4 каналов.
Если вы хотите распечатать свои собственные клапаны или вырезать виниловые наклейки с буквами, проект включает в себя скрипт для создания файлов векторного дизайна, который легко настраивается:
ЗАДАЧА: закончить документирование и отрендерить несколько примеров изображений...
Если вы хотите использовать одну лицевую панель для нескольких модулей (вместо того, чтобы каждый модуль имел собственную лицевую поверхность), репозиторий включает сценарий для создания комбинированной лицевой панели для лазерной резки или фрезерования/фрезерования с ЧПУ.
Вы можете изменить:
Для резки на станке с ЧПУ сценарий поддерживает рендеринг векторного файла, оптимизированного для более толстого материала (например, МДФ толщиной 6 мм), где сквозные отверстия будут прорезаны только для болтов. В этом режиме прорези для верхней/нижней части корпуса можно вырезать в виде карманов размером ~4 мм, чтобы они не были видны с передней панели. Скрипт автоматически генерирует формы собачьих костей для этих вырезов карманов.
ЗАДАЧА: закончить документирование и отрендерить несколько примеров изображений...
Проект также включает в себя ряд дополнительных 3D-печатных конструкций, упрощающих сборку. К ним относятся:
Все эти проекты являются параметрическими и настраиваются в OpenSCAD. Чтобы распечатать их, откройте соответствующий файл в OpenSCAD и используйте File -> Export -> Export as STL
, чтобы визуализировать дизайн в виде файла STL для вашего слайсера.
Это вряд ли будет полезно, если вы не планируете производить десятки или сотни плат драйверов Chainlink, но тестер драйверов Chainlink представляет собой полноценный испытательный стенд для плат драйверов Chainlink в том виде, в каком они собираются производителем PCBA.
В настоящее время это находится в стадии очень активной разработки.
Ключевые особенности:
Новейшие автоматически сгенерированные (непроверенные!) артефакты.
Прошивка драйвера написана с использованием PlatformIO с платформой Arduino и доступна по firmware/
.
В микропрограмме реализован контроллер с обратной связью, который принимает буквы в качестве входных данных через последовательный порт USB и управляет шаговыми двигателями, используя заранее рассчитанную рампу ускорения для плавного управления. Прошивка автоматически калибрует положение золотника при запуске, используя магнитный датчик Холла, и автоматически выполняет повторную калибровку, если когда-либо обнаруживает, что положение золотника рассинхронизировано. Если ожидается, что заданное вращение приведет золотник к исходному положению, это подтвердит, что датчик срабатывает ни слишком рано, ни слишком поздно; в противном случае он будет искать «исходную» позицию для синхронизации, прежде чем перейти к нужной букве.
Чтобы компьютер мог обмениваться данными с разделенным клапаном, он отображается как последовательное USB-устройство.
Однако использование Serial
Arduino строго запрещено, и вместо этого предоставляется абстракция logger
для отправки базовых текстовых журналов отладки. Остальные данные передаются структурированным способом, описанным ниже.
Это обеспечивает гибкость формата данных, передаваемых по последовательному порту, и фактически разделенный клапан обеспечивает два разных режима последовательного порта, которые служат разным целям.
По умолчанию он запускается в режиме «открытого текста», который удобен для разработчиков, и вы, вероятно, знакомы с ним, если открывали последовательный монитор с подключенным разделенным клапаном:
{"type":"init", "num_modules":6}
Однако это не подходит для программной настройки или получения обновлений от разделенного клапана, поэтому вместо этого прошивка предлагает программный интерфейс, использующий двоичный протокол, основанный на стандарте Google Protobuf.
Двоичный последовательный режим на основе protobuf — это компактный и гибкий способ передачи структурированных данных с главного компьютера на разделенный клапан и наоборот.
protobuf предоставляет несколько преимуществ по сравнению с другими механизмами кодирования, такими как JSON:
Вот почему Splitflap по умолчанию работает в режиме открытого текста, чтобы упростить базовую проверку/отладку.
Сообщения Protobuf кодируются в двоичном формате с добавлением контрольной суммы CRC32. Затем вся эта двоичная строка кодируется COBS в пакет и ограничивается/обрамляется 0 (NULL) байтами при отправке по последовательному каналу. Это обеспечивает базовый пакетный интерфейс с проверкой целостности (вместо необработанного потокового интерфейса последовательного соединения).
Splitflap автоматически переключается в режим двоичного protobuf, когда получает нулевой байт.
Дисплеем можно управлять с помощью компьютера, подключенного к ESP32 через последовательный порт USB. Если вы создали дисплей и хотите его протестировать, посмотрите здесь веб-демонстрацию, которая подключается к вашему дисплею через USB — никаких приложений и установки не требуется!
Прошивка поддерживает последовательный режим с открытым текстом (включен по умолчанию) для упрощения тестирования, а также двоичный режим на основе protobuf, используемый программными библиотеками для расширенного программного управления и обратной связи.
Вы можете найти примеры библиотек Typescript и Python в папке software/chainlink
.
Хотите внести некоторые изменения или поиграться с дизайном на своем локальном компьютере? Прыгайте прямо! Обратите внимание, что все скрипты и средства автоматизации разработаны для Ubuntu. Поддержка Mac OS запланирована, но на данный момент не реализована (но не стесняйтесь открывать PR, если хотите помочь!).
Основной файл проекта — 3d/splitflap.scad
Вам понадобится последняя версия OpenSCAD (например, 2015-03), которую, возможно, потребуется установить через PPA: sudo add-apt-repository ppa:openscad/releases
Как правило, твердые объекты, такие как стенки корпуса или компоненты катушки, создаются из 2D-примитивов, а затем выдавливаются до необходимой толщины для 3D-рендеринга, а не с использованием 3D-примитивов. Это упрощает дизайн, не теряя при этом выразительности; перпендикулярный луч лазерной резки в любом случае не позволяет выполнять резы, которые различаются по размеру Z.
Обратите внимание: хотя проект параметризован и многие значения могут быть изменены, в настоящее время проверка ошибок на наличие недопустимых параметров или комбинаций параметров не осуществляется. Пожалуйста, позаботьтесь о проверке проекта, если вы измените какие-либо параметры. Например, хотя большая часть дизайна будет адаптирована к измененному значению num_modules
, определенные значения могут привести к тому, что некоторые элементы будут пересекаться с другими элементами или выступать за пределы ожидаемых размеров.
Дизайн можно преобразовать в 2D для лазерной резки, запустив 3d/scripts/generate_2d.py [--panelize <number>]
, который выводит данные в 3d/build/laser_parts/combined.svg
. Необязательный аргумент --panelize
позволяет отображать панель модулей в одном SVG для объемной лазерной резки.
Внутри проекта используется модуль projection_renderer
( 3d/projection_renderer.scad
), который принимает для рендеринга список дочерних элементов и в зависимости от render_index
визуализирует по одному дочернему элементу за раз. Он также добавляет материал к каждой форме, чтобы учесть прорезь, которая будет вырезана лазером.
generate_2d.py
взаимодействует с модулем projection_renderer
, сначала используя его для определения количества подкомпонентов для рендеринга, а затем запускает OpenSCAD для экспорта каждого компонента в файл SVG. Он выполняет некоторую постобработку выходных данных SVG (в частности, добавляет «мм» к размерам документа), а затем объединяет все компоненты в один выходной combined.svg
.
После создания combined.svg
вам необходимо еще раз проверить, нет ли лишних линий разреза, которые являются общими для нескольких соседних частей, чтобы сэкономить время и затраты при резке. Они должны быть обнаружены автоматически (и выделены красным на изображении выше), но перепроверить не помешает. В Inkscape выберите инструмент «Редактировать пути по узлам» и выберите ребро для удаления — конечные точки должны стать синими. Затем нажмите «Удалить сегмент между двумя узлами, не являющимися конечными точками», и повторите это для всех остальных лишних линий разреза.
Дизайн можно преобразовать во вращающийся 3D-анимированный gif (см. выше), запустив 3d/scripts/generate_gif.py
, который выводит результат в 3d/build/animation/animation.gif
generate_gif.py
запускает несколько экземпляров OpenSCAD параллельно для рендеринга дизайна на 360 градусов в отдельные кадры png, которые затем объединяются в окончательную анимацию gif. В рамках создания анимации generate_gif.py
визуализирует дизайн с несколькими конфигурациями (непрозрачный корпус, прозрачный корпус, отсутствие корпуса и клапанов), устанавливая переменные render_enclosure
и render_flaps
.
Дизайн можно преобразовать в серию файлов STL (по одному на каждый цвет, используемый в модели), чтобы отобразить его в интерактивном веб-средстве 3D-просмотра. Подобно projection_renderer
используемому для рендеринга отдельных компонентов для лазерной резки, ColoredStlExporter определяет все цвета, используемые в модели, и визуализирует их один за другим в отдельные файлы STL вместе с манифестом, который сопоставляет каждый файл STL с его цветом RGB. . Файлы STL и манифест загружаются с помощью Three.js для отображения интерактивной модели на веб-сайте с использованием WebGL. Дополнительную информацию о том, как работают экспорт и средство визуализации Three.js, можно найти в этой публикации в блоге: «Приемы рендеринга OpenSCAD, часть 3: веб-просмотрщик».
Вся электроника разработана с использованием KiCad 5. Панельизация обеспечивается KiKit, а создание Gerber/BOM обеспечивается KiBot.
Визуализации механических и электрических проектов и ссылки выше автоматически обновляются при каждом коммите с использованием последней версии. Более подробную информацию о том, как это работает, можно найти в этой публикации в блоге: Автоматический KiCad, рендеринг OpenSCAD с использованием Travis CI.
Макет печатной платы можно преобразовать в формат svg или png (см. выше), запустив electronics/scripts/generate_svg.py file.kicad_pcb
. При этом используется API сценариев Python от KiCad для рендеринга нескольких слоев в отдельные файлы svg, манипулирования ими для применения настроек цвета и непрозрачности, а затем объединения их в один svg. Дополнительные сведения см. в этой записи блога: Сценарии экспорта KiCad Pcbnew.
Для проверки проекта можно создать pdf-пакет с информацией о меди, шелкографии и сверлении, запустив electronics/scripts/generate_pdf.py file.kicad_pcb
.
Файлы Gerber для изготовления можно экспортировать, запустив electronics/scripts/generate_gerber.py file.kicad_pcb
. При этом создаются файлы Gerber и файл детализации Excellon с соглашениями об именах Seeed Studio, а также создается .zip
файл, который можно отправить на изготовление.
EESchema нелегко использовать в сценариях, поэтому для экспорта схемы electronics/scripts/export_schematic.py
запускает X Virtual Frame Buffer (Xvfb) и открывает графический интерфейс eeschema
на этом виртуальном дисплее, а затем отправляет серию жестко запрограммированных нажатий клавиш через xdotool
для взаимодействуйте с графическим интерфейсом и просматривайте диалоговые окна. Это очень хрупко, но, похоже, сейчас работает нормально. Дополнительные сведения см. в этой записи блога: Использование автоматизации пользовательского интерфейса для экспорта схем KiCad.
Я хотел бы услышать ваши мысли и вопросы об этом проекте и буду рад включить любые ваши отзывы в эти проекты! Пожалуйста, не стесняйтесь (и поощряйте) открывать вопросы GitHub, пишите мне напрямую, обращайтесь в Twitter и участвуйте в разработке открытого исходного кода, и давайте продолжим общаться и строить вместе!
Этот проект распространяется под лицензией Apache v2 (см. LICENSE.txt).
Copyright 2015-2024 Scott Bezek and the splitflap contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.