Сообщество - Arduino & Pi

Arduino & Pi

1 480 постов 20 816 подписчиков

Популярные теги в сообществе:

67

Ответ на пост «Часы из часов на дисплее из дисплеев»1

Доброго времени суток Вам, уважаемые Пикабушники.

Почти три года назад Алекс Гайвер разработал безумно интересный и, на мой взгляд, самый недооцененный фанатами проект - "Часы из часов на дисплее из дисплеев!". Но, проект так и остался демонстрацией возможностей дисплея.

Со своими сыновьями собрали его, подшаманили скетч и часы получились (все исходники предоставлю в конце поста). Плюс, Часы научились показывать температуру на улице, температуру/влажность/давление в доме. Делюсь, вдруг кто-то захочет повторить это сам или со своими детьми. На момент сборки моим мальчишкам было 11 лет и они, вполне нормально управляются с паяльником, поэтому думаю, что с возраста 10+ детям будет интересно, тем более, что процесс сборки/пайки очень интересен, да и результат впечатлит. Также, думаю, что проект может быть интересен какому-нибудь школьному кружку Самоделкиных, если такие ещё остались в школах, т.к. часы собираются модульно и коллективное творчество тут вполне уместно. У меня остался комплект плат (9 шт. и одна прозапас), поэтому с радостью подарю их какому-нибудь школьному кружку - пишите.

Часы получают время и погоду из интернета, поэтому должны быть подключены к сети Wi-Fi.

Результат (часы, которые у вас получатся):

Вживую выглядят намного интереснее, чем на фото.

Вживую выглядят намного интереснее, чем на фото.

Видео работы часов.

В скетче символы "С" у температуры уже заменил на U (улица) и D (дом), но всё никак не перезалью в часы... (((

Ну и немного фото/видео сборки:

Нанесли паяльную пасту. Припаивал только крайние ножки микросхем, с остальными справлялись сыновья.

Собираем всё в кучу.

Первые тесты:

Исходники можно скачать ЗДЕСЬ. Там всё понятно и с комменатриями.

//

Что и у кого заказывал:

1) Печатные платы. Заказывал ЗДЕСЬ. Вы пишите продавцу. Отправляете ему архив SMD.zip из папки PCB, он считает и говорит, сколько это будет стоить. Для сборки проекта нужно 9 плат, но лучше заказать одну прозапас, мало ли что...

2) Дисплеи заказывал ЗДЕСЬ. Всего нужно 36 дисплеев.

3) NodeMCU (1 шт.) - заказывал ЗДЕСЬ.

А вот дальше товары, которые покупал - уже недоступны, поэтому просто ищу на али, но можете поискать и сами.

4) Конденсаторы 50 В, 10мкФ (нужно 18 шт.), но они продаются по 50, благо стоят недорого - ССЫЛКА

5) Драйвер max7219 (нужно 18 шт.) - ССЫЛКА

6) Резистор 10 кОм (нужно 18 шт.) - ССЫЛКА

7) Датчик температуры/влажности/давления BME 280 (1 шт.) - ССЫЛКА

8) Блок питания можно не покупать, а запитать часы от нормального зарядника для телефона (5 вольт и 3 ампера хватит с запасом).

В принципе всё. Всем добра!

Показать полностью 9 2
78

Своими разработками c нуля, решил тягаться с Rockwell Automation и Siemens в АСУ ТП

Готовлю мега-тестирование. STM32F407 (ARM) vs CH32v307( RISC V) vs ESP32 в выполнении LD программ для АСУ ТП (скорость выполнения инструкций в разных режимах) на разработаной IDE. А так же сравню с ПЛК брендов - Rockwell и Siemens.

Кто не читал прошлую статью о моем проекте: Своими разработками c нуля, решил тягаться с Rockwell Automation и Siemens в АСУ ТП

Многие встречали разные проекты под мкрокоетроллеры: мигание светодиодов, домашние сервера, умные дома и прочее.

Но как себя эти МК поведут если захотите стать предпринимателем, и на их (да и на любых других МК) базе создавать Промышленные контроллеры с топовой функциональностью? Замена кода отдельных задач в режиме реального времени без пепезагрузки ПЛК, и прочее, теперь с моей IDE все этр будет реально на обычных дешевых МК

Если интересно подписывайтесь.

Показать полностью
21

Метеостанция для ПК из Arduino Nano и датчика BMP280

Программу и скетч, можно скачать отсюда:
https://drive.google.com/file/d/12H66B1w_UmTzyOzoE2pynan7Sxe...

Для сборки будет нужно следующее:
Arduino Nano Atmega168 или 328
Датчик BMP280
Программа Arduino IDE
В программе Arduino IDE, установить библиотеку Adafruit BMP280 Library.
Установить драйвера CH340 на ПК.

Нужная библиотека в Arduino IDE.

Нужная библиотека в Arduino IDE.

Arduino Nano и датчик температуры, атмосферного давления и высоты BMP280.

Arduino Nano и датчик температуры, атмосферного давления и высоты BMP280.

Подключение датчика к Arduino Nano по I2C, используем 4 вывода.

Подключение датчика к Arduino Nano по I2C, используем 4 вывода.

Подключение:
VCC на датчике, к пину 3.3V на Arduino
GND на датчике, к пину GND на Arduino
ACL на датчике, к пину A5 на Arduino
CDA на датчике, к пину A4 на Arduino

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

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

После запуска программы, происходит расчёт нормального атмосферного давления (Калибровка), в зависимости от определившейся высоты, так как для разных высот, своя норма атмосферного давления.

После запуска программы, происходит расчёт нормального атмосферного давления (Калибровка), в зависимости от определившейся высоты, так как для разных высот, своя норма атмосферного давления.

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

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

Сравнение показаний с механическими/аналоговыми приборами.

Сравнение показаний с механическими/аналоговыми приборами.

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

Показать полностью 7
19

Метеостанция для ПК из Arduino Nano и датчика температуры/влажности DHT11

Программу и скетч можно скачать отсюда: https://drive.google.com/file/d/1cImgv90OoVMtq80NepYUtuHcWig...

Для сборки понадобится Arduino Nano с любым чипом 168/328. Программа Arduino IDE, в самой программе необходимо установить DHT sensor library из менеджера библиотек. Датчик температуры/влажности DHT11, стоит копейки.

Установка DHT sensor library в менеджере библиотек.

Установка DHT sensor library в менеджере библиотек.

Датчик температуры/влажности DHT11. Из описания, этот датчик имеет погрешность измерения температуры 1-2 градуса. Погрешность влажности ±5%.

Датчик температуры/влажности DHT11. Из описания, этот датчик имеет погрешность измерения температуры 1-2 градуса. Погрешность влажности ±5%.

Arduino Nano с 168 чипом.

Arduino Nano с 168 чипом.

Подключение датчика DHT11 к Arduino Nano. + на датчике, к пину 5V на Arduino, out на датчике, к пину D2 на Arduino, - на датчике, к пину GND на Arduino.

Подключение датчика DHT11 к Arduino Nano. + на датчике, к пину 5V на Arduino, out на датчике, к пину D2 на Arduino, - на датчике, к пину GND на Arduino.

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

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

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

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

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

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

Можно сохранить логи температуры/влажности, для дальнейшей обработки.

Можно сохранить логи температуры/влажности, для дальнейшей обработки.

Любое не пропорциональное значение температуры/влажности превышающее норму будет отображаться Дискомфорт.

Любое не пропорциональное значение температуры/влажности превышающее норму будет отображаться Дискомфорт.

Показать полностью 9
12

Pixel Quest 5D

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

А ещё делаем интеграцию цветного поворотного прожектора на потолок. Сможем акцентировать внимание игроков на важных моментах игры или ошибках. И всё это под соусом сценариев!

А ведь началось всё именно с Пикабу: тут я впервые увидел задорный ролик с пиксельным полом и решил собрать свой... А дальше всё, как у тумане, Pixel Quest давно уже не просто цветные плитки на полу.

Показать полностью
92

Как и зачем Согласовывать логические уровни Цифровых МИКРОСХЕМ

Зачем согласовывать логические уровни Микросхем

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

Казалось бы, что тут сложного — «логический ноль» это ноль, а «логическая единица» это единица. Но на практике всё не так просто.

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

Приглашаю всех на одноимённый Telegram канал и чат: Telegram Канал Азбука РадиоСхем

Что такое логические уровни?

Любая цифровая микросхема понимает только два состояния:

  • 0 (логический ноль) – низкий уровень напряжения.

  • 1 (логическая единица) – высокий уровень напряжения.

Но вот значения этих уровней зависят от технологии, в которой выполнен чип, и от его питания.

Например:

  • CMOS на 3.3 В:0 = 0…0.8 В
    1 = от 2.0 В и выше

  • TTL на 5 В:0 = 0…0.8 В
    1 = от 2.0 В и выше

Отсюда сразу видно: если подключить выход 3.3 В логики к входу 5 В микросхемы — скорее всего всё будет работать(но опять же , не всегда).

А вот наоборот — подача 5 В на вход, рассчитанный на 3.3 В, может его просто сжечь.

Параметры уровней напряжения для цифровых схем

Для цифровых входов:

•Uвх.0.мин. (VIL.min) – минимальное напряжение, воспринимаемое как «0»;

•Uвх.0.макс.(VIL.max) – максимальное напряжение, воспринимаемое как «0»;

•Uвх.1.мин.(VIH.min) – минимальное напряжение, воспринимаемое как «1»;

•Uвх.1.макс.(VIH.max) – максимальное напряжение, воспринимаемое как «1»;

•Uвх.п (VIT) – напряжение переключения (threshold voltage), значения выше которого воспринимаются как «1», а ниже – как «0».

Для цифровых выходов:

•Uвых.0 (VOL.typ) – типовое напряжение, которое устанавливается при выводе «0»;

•Uвых.0.мин.(VOL.min) – минимальное напряжение, которое может быть установлено при выводе «0»;

•Uвых.0.макс.(VOL.max) – максимальное напряжение, которое может быть установлено при выводе «0»;

•Uвых.1(VOH.typ) – типовое напряжение, которое устанавливается при выводе «1»;

•Uвых.1.мин.(VOH.min) – минимальное напряжение, которое может быть установлено при выводе «1»;

•Uвых.1.макс. (VOH.max) – максимальное напряжение, которое может быть установлено при выводе «1».

Зачем нужно согласование уровней?

  1. Защита микросхем – 3.3-вольтовые входы не выдержат прямой подачи 5 В.

  2. Корректная работа логики – микросхема может не «увидеть» единицу, если она недостаточно высока.

  3. Совместимость модулей – большинство современных датчиков, дисплеев и модулей Arduino работают на 3.3 В, а сами Arduino (UNO, Nano) – на 5 В.

Без согласования есть риск получить «мертвый» дисплей или датчик, а иногда и целую плату в утиль.

Подключение Дисплея GMT130-V1.0 (IPS 240×240, контроллер ST7789) к Arduino Nano

Основные способы согласования уровней

1. Делитель напряжения на резисторах

Самый простой вариант для сигналов в одну сторону (5 В → 3.3 В).
Формула простая: Vout=Vin⋅R2R1+R2V_{\text{out}} = V_{\text{in}} \cdot \frac{R2}{R1+R2}Vout=Vin⋅R1+R2R2

Например, при R1 = 2 кОм и R2 = 3.3 кОм из 5 В получаем примерно 3.3 В.
Минус

  • — не всегда это работает

  • – плохо подходит для высоких частот (SPI, I²C).

2. Специальные микросхемы-переводчики уровней

Существуют готовые чипы (например, TXB0108, 74LVC245), которые умеют переводить уровни в обе стороны и на высоких скоростях.
Это надёжный вариант для «серьёзных» проектов.

3. Транзисторные согласователи

Можно собрать схему на MOSFET или даже на биполярных транзисторах (например, на советских КТ315 или современных BC547).
Такой преобразователь работает быстро и позволяет согласовывать линии в обе стороны, включая шину I²C.

Ниже представлен пример схемы на биполярном транзисторе обратной проводимости. Транзисторы можно использовать различные.

Схема — это дублируется в зависимости от того сколько вам ножек одной микросхемы нужно согласовать с другой

Для этих целей также кроме биполярных микросхем очень хорошо а можно сказать даже идеально подходят и  mosfet.

Вот очередной пример такой схемы

Пример из практики

В одном из моих проектов я подключал дисплей на контроллере ST7789, работающий от 3.3 В, к Arduino Nano на 5 В. Сначала я сделал соединение напрямую – результат: один из дисплеев вышел из строя.

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

Это хороший пример того, что согласование уровней – не формальность, а необходимость.

Выводы

  • Никогда не соединяйте напрямую микросхемы, работающие на разных напряжениях.

  • Для односторонних медленных сигналов можно использовать резистивный делитель.

  • Для двусторонних и быстрых шин лучше ставить транзисторные согласователи или специализированные микросхемы.

  • Даже простая самодельная схема на старых транзисторах может спасти ваш модуль от поломки.

Показать полностью 5 2
80

Pixel Table: от идеи до реализации интерактивного пиксельного стола

Первый рабочий прототип

Первый рабочий прототип

Давайте знакомиться!

Меня зовут Анатолий, и я программист с инженерным бэкграундом. Помимо основной деятельности, бэкенд разработки на Go, меня часто тянет собрать что-нибудь эдакое электронно-светодиодное с использованием микроконтроллеров.

Этап 0: Как всё начиналось

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

Стол из интернета

Стол из интернета

Этап 1: Исследование существующих проектов

В интернете есть сотни проектов НЕинтерактивных (не реагирующих на касания) столов и матриц на адресных светодиодах, они предназначены исключительно для вывода красивых картинок. Вспомним тот же рюкзак с дисплеем от @AlexGyver:

Схемотехника у всех подобных проектов весьма простая: один контроллер + несколько сотен адресных светодиодов. Но для добавления игровых функций нужно как-то считывать нажатия.

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

  • Часть разработок не имеет обратной связи на нажатия, а выступают просто красивым светодиодным декором, а нам нужны интерактивные функции для игр и других эффектов. Это в разы усложняет разработку;

  • Все существующие проекты собраны на коленке и имеют огромные недочёты в плане трудозатрат на сборку: несколько сотен проводных соединений и точек пайки, десятки человекочасов работы. Такое нам не подходит, я слишком ленив, чтобы руками всё это паять, а значит нужны печатные платы без проводных соединений, разъём-в-разъём, плата-к-плате, side-by-side;

  • Конструкция корпуса зачастую тоже достаточно сложная, с вырезами/выпилами, с клеем или герметиком. Такое тоже не нравится, нужно что-то максимально простое из обычного мебельного ЛДСП, чтобы можно было заказать раскрой на ближайшем производстве;

Этап 2: Проектирование печатной платы

Изначально я решил сделать стол размера 25х15 пикселей, эдакий правильный прямоугольник со сторонами, кратными 5, т.е весь стол можно собрать из 15 плат размера 5х5, я называю их сегментами.

В качестве канала связи рассматривал RS485 и CAN:

  • RS485 подразумевает топологию master-slave, т.е нужно явно опрашивать все ведомые устройства, чтобы избежать коллизий, что будет сложно реализовать для такого количества пикселей;

  • А вот CAN позволяет организовать сеть равнозначных устройств и даже имеет аппаратный механизм арбитража коллизий. Идеальное решение для построения событийной модели обработки нажатий: есть клик – отправили, клика нет – молчим. Короче говоря, сообщения о нажатии отправляются в шину вне очереди, что позволит обрабатывать нажатия в кратчайшие сроки.

В качестве микроконтроллера был выбран самый популярный и дешёвый микроконтроллер с CAN шиной на борту – STM32F103, имеющий к тому же десятки китайских клонов на случай необходимости дальнейшей оптимизации по цене/наличию. Наверняка у каждого здесь есть завалявшаяся дома платка Blue Pill с подобным контроллером. Вот и у меня была.

В качестве светодиодов были выбраны обычные RGB адресные WS2812B. Тут всё очевидно – работают независимо при последовательном подключении:

В качестве датчика нажатия был выбран оптический сенсор VCNL36821S, комбинирующий в себе светодиод и фотодиод, работающие в ИК диапазоне длин волн 800..1000нм, а значит он не будет реагировать на RGB спектр светодиодов 400..700нм. С другой стороны, это не самое дешёвое решение, но точно одно из самых простых при автоматизированной сборке печатных плат. Один smd элемент и готово, никаких тебе емкостных сенсоров в виде улиток из проволоки (вспоминаем про желание избежать трудоемкости при сборке).

VCNL36821S

VCNL36821S

Сколько датчиков и светодиодов можно подключить к одному контроллеру STM32F103 в корпусе LQFP-48 без использования всякого рода расширителей портов? Все звёзды сошлись на размере сегмента 5х5 = 25 пикселей. В прототипе задействованы абсолютно все ноги контроллера, даже пришлось позаимствовать одну ногу SWD из разъёма для программирования.

Одна из сложностей при проектировании печатной платы заключалась в том, что у сенсора VCNL36821S отсутствует возможность задавать адрес I2C, а у микроконтроллера STM32F103 только две шины I2C. Как же быть? Ответ был найден на просторах Stackoverflow и заключался в коммутации линии SDA через диоды Шоттки. Гениально, как мне кажется:

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

Версия 1.0

Версия 1.0

Управлять столом будет обычная Raspberry Pi 4B+ вот с такой платой расширения для CAN шины:

Сами платы были заказаны в Китае на PcbWay с автоматизированной сборкой, т.е сам я ничего не паял.

Ну и затратная часть на платы:

  • Текстолит * 15 плат = 11 800 ₽

  • Компоненты * 15 плат = 29 600 ₽

  • Авто монтаж * 15 плат = 30 600 ₽

  • Доставка с Китая = 13 560 ₽

  • Итого: 85 560

Этап 3: Проектирование корпуса

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

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

  • Во-первых, такой отступ становится весьма неочевидным в играх, например пинг-понг, когда мячик отражается от невидимой стены;

  • Во-вторых, эстетически это смотрится весьма странно, когда поле светится не всё.

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

Оргстекло 3 мм нашел у местных рекламщиков и попросил вырезать прямоугольник нужного размера.

В качестве материала корпуса была выбрана фанера, т.к она намного крепче и долговечнее обычной мебельной ЛДСП.

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

Сетку вырезал на лазерном ЧПУ из фанеры 3 мм, размер каждой ячейки 4х4х4 см.

Затраты на корпусные детали:

  • Раскрой сетки из фанеры 3мм = 5 000

  • Фанера для корпуса стола + раскрой = 4 600 ₽

  • Акрил + резка = 4 200 ₽

  • Краска + валик = 1 750 ₽

  • Метизы, втулки, клей = 830 ₽

  • Покраска своими руками = Бесценно

  • Итого: 16 380

Этап 4: Написание прошивки и отладка

Для написания кода использовал программы STM32CubeMX и STM32CubeIDE, для прошивки и отладки китайские клоны программатора ST-LINK V2 и логического анализатора Saleae Logic. Вообще обожаю эту связку, никогда ещё программирование и отладка микроконтроллеров не были настолько простыми и доступными.

Из интересного, что можно было бы рассказать про написание прошивки:

Т.к контроллер весьма небольшой, и чтобы не тащить в проект тяжеловесную RTOS, я часто использую самописную систему событий, привязанную к 1 мс таймеру. Занимает буквально сотню строчек кода: установить событие через N мс, проверить готовность события к исполнению, очистить событие. Это покрывает практически все мои нужды по организации логики программы под микроконтроллер и занимает памяти чуть более, чем ничего.

Отдельно хочу рассказать про логику организации мной адресного пространства CAN. Я разбил адресное пространство 2048 адресов на 4 группы:

  • широковещательная команда;

  • целевые команды конкретным сегментам;

  • посылки от сегмента;

  • и в конце простые пакеты с цветами.

В CAN, чем ниже адрес пакета, тем у него выше приоритет. Это означает, что посылки от устройств (с кликом или ответом на запрос) имеют приоритет выше, чем пакеты с цветами. Таким образом, клик всегда будет получен почти мгновенно, даже когда идет активная “отрисовка” картинки и шина занята.

В коде я реализовал поддержку трех разных палитр:

  • RGB6 – 6 бит на цвет, где 3 бита цвет RGB, а 3 бита яркость 0-7;

  • RGB12 – 12 бит на цвет, RRRRGGGGBBBB;

  • RGB24 – 24 бита на цвет.

Т.к в стандартном CAN есть ограничение на 8 байт данных, то приходится делить адресные пространства ещё и на адреса конкретных пикселей внутри сегмента. А т.к на каждые 8 байт данных полезной нагрузки CAN имеет ещё оверхед 47 бит в виде адреса и других заголовков пакета, то с расширением палитры цветов, FPS падает непропорционально. Примерно вот таких значений мне удалось добиться при скорости CAN 500 kbit/s:

  • 75 FPS для RGB6;

  • 38 FPS для RGB12;

  • 13 FPS для RGB24;

Я остановился на палитре RGB12: достаточная цветопередача при сохранении адекватной частоты кадров. Стоит отметить, что это максимальная частота кадров изображения, а с наличием большого числа нажатий, частота кадров будет проседать, т.к вспоминаем про приоритет кликов над пакетами цветов.

Для любознательных, ссылки на исходники платы и прошивки будут в конце статьи.

Расходы: бесплатно по ночам.

Этап 5: Финальная сборка и ошибки

  • Собрать всю сетку из таких коротких деревянных ламелей оказалось непросто. Я не предусмотрел достаточные допуски для пазов, детали то и дело не вставали на свои места, приходилось подпиливать и применять силу, в итоге плоскость с оргстеклом получилась неидеальной. В новой версии откажусь от пазов в платах, а ламели из фанеры сделаю длиннее, чтобы конструкция сетки получилась более ровной;

  • Как вы могли заметить, на платах я сделал разъёмы папа-мама на нижней стороне текстолита. Такая конструкция очень удобна при сборке и стоит три копейки, но делает стол абсолютно непригодным для ремонта, т.к нет возможности достать и заменить одну плату, приходится откручивать всех соседей;

  • Оргстекло, которое я нашел на местном производстве, как оказалось, плохо подходит для оптического сенсора, т.к имеет слабую светопропускаемость. Это приводит к очень маленькому полезному сигналу с датчиков и необходимости искать компромисс между ложными срабатываниями и “силой” (читай – площадью) нажатия;

  • Также я допустил небрежность и запитал всю матрицу плат двумя тонкими проводами… Как вы можете догадаться, долго такая сборка не проработала, больше 20А в пике как-никак. Решение простое – подкинуть питание ещё в несколько точек по периметру.

Сопутствующие расходы:

  • Блок питания 5V 150W = 4 560 ₽

  • Raspberry Pi 4B+ = 12 000 ₽

  • Плата расширения CAN = 2 940 ₽

  • USB Type C = 250 ₽

  • Плата аудиоусилителя = 296 ₽

  • Динамики + накладки = 407 ₽

  • Кабель AUX = 274 ₽

  • Разъём питания = 281 ₽

  • Кабель питания = Бесплатно от старого монитора

  • Сборка своими руками = Бесценно

  • Итого: 18 068 ₽

Этап 6: Управляющее ПО на Малинке

Моя любимая часть, моя гордость…

Годом ранее, работая над своим основным проектом Pixel Quest, я к нашему бэкенду на Go подключил Lua интерпритатор. С тех пор все игры нашей сети локаций разрабатываются на Lua.

Для Pixel Quest мы сделали открытую систему разработки игр. Что это значит:

  • во-первых, у нас есть визуальный конструктор игр "Пол–это лава", где можно попрактиковаться в покадровой отрисовке игр;

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

В свой онлайн редактор для удобного тестирования игр мы добавили вот такую 3D визуализацию:

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

Почему нас сравнивают с Roblox?

Роблокс даёт возможность игрокам самим разрабатывать игры и даже зарабатывать на них, и мы в перспективе хотим сделать что-то похожее. А ещё на ютубе нашу игру “Безопасный цвет” постоянно сравнивают с играми “Color blocks” или “Block party” из Roblox, хотя когда я её разрабатывал, я ещё ничего не знал о Роблоксе...

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

Визуальный покадровый конструктор игр Пол – это лава

Визуальный покадровый конструктор игр Пол – это лава

Этап 7: Версия 2.0

Для будущей версии я переразвёл печатную плату с учетом предыдущего опыта, а именно:

  • сделал разъёмы не горизонтальными, а вертикальными, таким образом можно будет вынимать и устанавливать отдельные платы. Платы между собой будут соединяться П-образными штырьками;

  • удвоил количество светодиодов, чтобы получить более яркую и сочную картинку, а также резервирование на случай выхода светодиода из строя;

  • сделал плату размером 4х5 пикселей, чтобы избавиться от “рамки” по краям и получить поле нужного размера 24х15 для совместимости с игровыми комнатами, а также расширить диапазон возможных CAN адресов с 16 до 32, что даст возможность строить столы большего размера;

Нашёл в Китае и протестировал новое более тонкое и более прозрачное оргстекло, которое даёт более чёткий рисунок граней пикселей и увеличивает полезный сигнал с датчиков в три раза, что делает игру более комфортной, а ложные срабатывания сводит к нулю.

Заключение

Небольшое видео, суммирующее вышесказанное:

Сам прототип с видео сейчас стоит и радует детей на одной из наших локаций, а именно в городе Смоленске.

Ссылки на исходники печатных плат, прошивки под микроконтроллер и другие полезные материалы по проекту можно найти вот в этом телеграм посте (будет обновляться): t.me/pixel_quest/360. Там же в канале будет выкладываться и новая информация по проекту.

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

Далее хотим попробовать наладить серийное производство. Мы считаем, что потенциал у проекта огромный, хотелось бы его развивать.

Какие сценарии развития продукта мы видим:

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

  • Установка в виде вендинговых игровых автоматов в ТЦ и для привлечения внимания к нашему основному бизнесу;

  • Размещение на локациях Pixel Quest в качестве дополнительного развлечения;

  • Использование в качестве отладочного стенда для тестирования ПО, игр и различных эффектов в миниатюре.

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

Как вы считаете, в каком направлении больше перспектив?
Всего голосов:
Показать полностью 21 4 1
8

Ответ на пост «Добавление "мозгов" бризеру»1

Наконец-то нашёл хоть какую то инфу по этому бризеру. У меня проблема, перестал греть воздух. Зимой работал исправно, сейчас при попытки включения подогрева, индикатор загорается, но сам тен не греет. Датчик температуры работает т.к не даёт включить подогрев при тёплой погоде. Я специально охлаждал его и при постепенном нагревании воздуха подогрев отключается как положено. Решил самостоятельно разобрать, думал увижу причину. Но визуально с платой все хорошо. Тен целый, провода на месте, и в общем все хорошо и без повреждений. Хотел найти предохранитель и проверить его, но не нашёл. Подскажите пожалуйста, какие причины такой неполомки могут быть?

Отличная работа, все прочитано!