Как стать автором
Обновить

Комментарии 62

году в 2002, так как я в этом вообще ничего не понимаю, обратился к паре знающих человек чтобы сделать из светодиодов (например советских АЛ) матрицу и выводить на неё информацию например с COM порта, на что они покрутили пальцем у виска, типа "зачем тебе это". Как показало время - крутили они правильно что у себя.

В 2002 году это делалось точно так же, как в этом проекте. Только вместо оледов были ЖК-экраны на HD44780, вместо ATtiny13 - ATtiny12, а вместо Ардвины - суровый атмеловский ассемблер.

Только BC548 был все тот же, самодельщики уже больше 50 лет перерисовывают друг у друга схемы на нем.

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

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

Нужно отметить, что не смотря на популярность и десятилетия использования, такую схему стоит применять только для любительских конструкций. В ней переход база-эмиттер пробивается обратным напряжением при напряжении на базе ниже минус 6 вольт.

В линии TX по стандарту RS-232 может быть +-25 вольт, хотя в PC было раньше не больше +-12 В, а сейчас чаще всего +- 6 В.

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

Для соответствия стандарту стоит добавить диод параллельно R2, анодом к земле.

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

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

Ну да, монитора нет, а COM-порт есть! Все так и будет!

А почему нет? NAS, сервера, базовые одноплатники как Orange Pi Zero и возможно некоторые Wi-Fi роутеры с OpenWRT. Сценарии не самые распространенные, но бывают. Себе я для NAS, построенном на mini-ITX плате, это сделал.

У всего этого есть USB, COM теперь днем с огнем не найти, логичнее было бы построить систему для USB

Лично я не знаю как отправить данные из консоли в USB без написания своего драйвера, что порождает написание кучи кода под разные ОС. Зачем усложнять задачу?

Если COM нет, то его не проблема добавить через USB-UART. Кроме того, даже если на материнке нет COM-порта на задней панели, то это не значит что его вовсе нет - иногда на плате есть его 10-пиновая колодка.

А что мешает взять USB-COM шнурок, ещё и от него и питать?

КМК, COM- порт до сих пор есть на desktop ПК. Просто выводят его теперь не на панель, а на "гребёнку".

USB с гребенкой точно есть, а вот по поводу COM сильно сомневаюсь

Asus P5B, например.

И сейчас, под "рязанские" процы, - много где есть на плате гребёнка COM1.

Одноплатники и роутеры ладно (у них, опять же, порт будет на 3.3V, переходник не нужен – правда, велик шанс, что можно дисплей прямо на GPIO подключить, без вашей схемы), а на PC сейчас скорей будет только USB, так что ваш девайс имеет смысл сразу клепать на atmega32u4 или любом другом мк с поддержкой USB. Или вообще не париться и связать по bluetooth/wifi со смартфоном.

Идея не в том, чтобы как то отправить данные наружу, а так, чтобы это можно было сделать без дополнительного ПО на хосте (за исключением драйвера для USB-UART, если COM-порта нет). Нет никакой команды (во всяком случае я не знаю), чтобы отправить строку на конкретный USB-порт и он передался как строка. Аналогично с GPIO. А вот COM-порт именно для этого и разрабатывался и поэтому, получив значение той же температуры в shell-скрипте - в Windows через WMI, а в Linux через что угодно, надо просто его прокинуть дальше вызовом echo. То есть вся программная часть хоста - это скрипт, не требующий особых навыков программирования. В шутке " Кажется, изобретён мини-терминал... " только доля шутки :)

Насчет того, что COM-портов - нет, как я уже писал ранее, это скорее заблуждение. Их нет только на самых бюджетных материнках, где в погоне за дешевизной выкинуто всё лишнее и оставлено два слота памяти (специально проверил у Gigabyte и MSI).

Я вам специально назвал девайс, который не требует дополнительного ПО.

Прямо в Arduino IDE есть скетч VCP (virtual com port) – т.е. получаем то же, что у вас сделано, только без лишних переходников.

Для поиграться – можете купить себе Arduino Micro, это просто atmega32u4 с обвязкой. Ровно то, что надо для таких дисплейчиков, как у вас.

Да есть у меня и такая Arduino и Digispark на ATtiny85. Понятно, что можно сделать и на них, чтобы избежать использования USB-UART переходника, но в таком случае делать обычный вывод строки слишком просто - тогда надо и поддержку нескольких дисплеев, внешних термометров (в этом случае хост отправляет плейсхолдер) и еще чего-нибудь.

P.S. Про Virtual com port не знал, да и как то не задумывался о таком ибо сразу ориентировался на физический порт. Спасибо за наводку.

Да пожалуйста.

Digispark прекрасен своим минимализмом, но чисто софтовая реализация USB, которая в нём применена, imho менее стабильна (если я правильно помню, там даже кварца нет?) и более геморройна, чем аппаратная в atmega32u4, так что micro imho оптимальный вариант, если не готовы переходить на более современные контроллеры (тот же blue pill на простом stm32 куда круче при той же цене, но порог вхождения выше).

раз 20 пытался attiny в usb работать(естественно главная цель - чтоб от xp до ubuntu без танцев с дровами) и ниразу оно на 3х тачках не работало. mega32 решала проблему, но не вписывалась в бюджет. Последний раз bluepill тупо не лез по размеру и подвернулась ch5xx. так и работает hid клавой для ввода пар логин/пароль. последние 6 копий - микруха и 4 кнопки и type-c, даже на конденсаторы забил. кроссплатформенность - как хотел и даже nvr/dvr почти все принимают.

VUSB (или как там теперь – LUFA?) – это для смелых и сильных, кто умеет и любит такты считать. Кроме как для доказательства собственной крутизны не имеет смысла.

Кстати, я к Pro Micro подключал такой дисплей, и питал его спокойно от 5В:

https://habr.com/ru/articles/743234/

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

Подохдать 5с...

Все-таки копипаст уничтожит этот мир!

Если есть свободный VGA-порт, то можно вообще пропустить пляски с микроконтроллером и приткнуться к i2c в нём, если ОС позволяет. Плюс i2c может быть доступен сам по себе, но это от системы зависит.

А почему вы pullup-ы на i2c шину не ставите?

У SSD1306 они уже есть.

https://www.olimex.com/Products/Modules/LCD/MOD-OLED-128x64/resources/SSD1306.pdf

8.1.5 MCU I 2 C Interface
The I 2 C communication interface consists of slave address bit SA0, I2 C-bus data signal SDA (SDA OUT/D2 for output and SDAIN/D1 for input) and I 2 C-bus clock signal SCL (D0 ). Both the data and clock signals must be connected to pull-up resistors.

Я документацию не смотрел, а просто поверил информации от разработчика библиотеки для ATttiny13. Проверять резона не было, т.к. вроде всё нормально и так работает.

Насколько могу судить Olimex - это другой модуль на SSD1306, и ему да, нужна подтяжка.

А почему Вы пишете, что экран надо питать от 3.3В?

Я его спокойно от 5В питаю:

https://habr.com/ru/articles/743234/

Да, всё верно - и ATTiny и экран можно от 5В питать. Не знаю откуда взял : ) Это даже упрощает подключение к внутреннему COM-порту, т.к. 3.3В только с 20/24-пиновой колодки доступны, а 5В и с USB-штырьков можно взять.

А если взять Arduino Pro Micro вместо ATTiny, можно им одним обойтись, все делать из Arduino IDE, и подключаться просто к USB. В компьютере будет при этом виртуальный COM-порт безо всяких переходников.

Для данной задачи ATmega32u4 избыточна по ресурсам. Даже ATtiny13 можно на ATtiny10 заменить, вот чтобы совсем впритык было и по памяти, и по ножкам, но у меня таких нет, а заказывать с али бессмысленно - эти микроконтроллеры сейчас уже почти ретро и за их цену можно купить значительно мощнее/ногастее, к тому же разовый проект можно строить на любом контроллере.

Проект я сразу делал с расчетом утилизировать встроенный COM-порт на домашнем NAS.

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

Если у компьютера нет не только монитора, но и даже видео-выхода

Может есть Wifi или по проводу связь и роутер, то проще организовать простой web сервер.

Прикольный проект, мне понравился. Программу на си называть сетчем такое себе. Вообще я бы makefile написал и собирал бы avr-gcc. Но тут дело ваше. Прикольно получилось

Из моих рекомендаций, сделать как в Дисплеях покупателя - управление ESC-последовательностями. Тогда можно прям из консоли пулять данные и они будут выводиться. Пример у меня в двух статьях:

Создание собственных драйверов под Linux

Wifi-радио с тёплым ламповым дисплеем. Часть 1. Дисплей



В вашем ролике видно, что экран мерцает. Существуют ли немерцающие "Дисплеи покупателя"?

(Я думал, что все VFD не мерцают).

Дело в динамической индикации. IRL мерцание можно заметить только грызя сушки.

Дисплей не мерцает. Это динамическая индикация. В статье подробно разобрано почему она такая.

Ok. Тогда вопрос: существуют ли "Дисплеи покупателя" без динамической индикации?

А Noritake многопиксельные дисплеи тоже мерцают/сдин.индикацией?

Пффф, пу-пу-пу-пу. Разговор как-то не клеится. Чёрным по белому же написал, что они не мерцают.

  1. Динамическая индикация реализована в моей программе.

  2. Дисплей покупателя не мерцает, просто я его часто очищаю от этого видно это мерцание.

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

Практически все матричные ВЛИ мультиплексированные, а значит, там динамическая индикация. Исключение - только какие-то специальные индикаторы (видел один такой, явно откуда-то из авиации, была куча отводов по одному от каждого сегмента и единая сетка), но это всё редкая экзотика.

makefile и avr-gcc не использовал, т.к. сам любитель и переходить на Atmel Studio смысла пока не вижу. Если была бы нужда реализовать поддержку нескольких дисплеев на одном микроконтроллере, то да, пришлось бы перейти, т.к. с Arduino IDE уже уперся по памяти в потолок.

ESC-последовательности, как мне кажется, для данного проекта избыточны, т.к. дисплей однострочный. Если бы требовалось выводить несколько строк и/или графику, то да, имело смысл. А так старался сделать палку-веревку: для переключения режима была выбрана собачка, т.к. проблем с её выводом в консоли - нет, в отличии от ^ или |.

Вы автор и сделали как вам было удобно. Извините, что я со своим уставом :)

avr Studio Видел в последний раз ещё в институте в 2000-х. Не, я всё по классике, в консоли, как учили :))).

Советую всё же перейти при случае, если не привязаны совсем жёстко к инфраструктуре ардуино :-)

Arduino IDE – это боль. Что-то из начала 90-х, в ней много лет даже подсветки синтаксиса не было...

Тем более, что можно gcc ,с мейкфайлами прямо в среде найти.

Вот даже проверил, что после установки arduino, поставился avr-gcc:

Естественно. Компилить-то чем-то надо.

Но я говорил не про компилятор, а про более удобную среду разработки.

Ну ArduinoIDE позволяет подключать внешний редактор в настройках. Обычно я пишу либо geany, либо Visual Studio Code, либо Notepad++ (если в винде).

Мой комментарий предназначался автору поста, который говорит, что для сборки на си ему нужно AVR Studio

ch522 лучше подходит. всё в один корпус влезает и не требует танцев с бубном с драйверами и настройкам и всё за шапку сухарей

Хм... Прямо синдром парных случаев...

Можете подкинуть идеи, какие данные компа можно выводить кроме температур?

Обороты вентиляторов, заполненность диска/ов, состояние какой либо службы/приложения. Наверно можно заглянуть в системные логи и показать предупреждение, если там нашлось что-то не то. И даже запарсить вывод curl и выводить какое-нить число из интернета, напр. число просмотров статьи или погоду, но для этого лучше делать взять экран побольше.

Себе я для вывода температуры сделал и просто отображения, что NAS работает.

Тогда я бы разделил их на типы:

  • Аварийные

  • Просто экономящие время на действия, не требующие мгновенного решения

  • Критические к времени реакции параметры процесса (естественно кроме аварийных)

Аварийные

  • Параметр процесса, выход которого за пределы может привести к аварии (температура)

  • Событие (предупреждение в логе)

  • Состояние работа/авария, можно отнести к процессу с параметром 0|1

Для аварийных дисплей д.б. или многоцветным или пустым при нормальной работе. Т.е. должен на старте выводить экран приветствия или работать в течение непродолжительного времени, а потом тухнуть. Загораться только когда NAS не работает или|и температура выше предела. Иначе авария будет пропущена.

Экономящие время - они же отвлекающие :) Не знаю, первый месяц будет прикольно получать удовольствие от могущества над техникой. А потом когда количество бессмысленных просмотров дисплея достигнет тысячи, он будет выключен навсегда. Время и погода это 100% попадание, но разве нужно на них часто смотреть и уж тем более городить такой вывод?

Критические ко времени. Сейчас глянул, интересуются выводом FPS игр. Для блогеров это бы пригодилось. Но там какие-то сложности с программированием.

Да это уже вкусовщина что выводить. Обвешиваться экранами смысла нет: для полноценного мониторинга есть системы мониторинга Prometheus/Zabbix с Grafana, а для отображения текущего статуса маленького экранчика достаточно.

Вывод FPS - это отдельная задача, которая в общем виде для всех ОС/производителей чипов вроде решения не имеет.

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

Так все шаги описаны в статье под спойлером "Прошивка ATtiny13 посредством Arduino вкратце".

Удалось, спасибо. Хотел побыстренькому стряпать перенос кода, но переносить код библиотки дело не благодарное, а тянуть её всё, значит забивать и без того малый объём флеша.

Как я понял, юарт там программный и без либ юарта там делать нечего. Хотя примеров нашёл несколько. Вообще, с точки зрения программирования оптимизация задачки выглядит интересной.

Конечно он там программный - ATtiny13 же. Используемый в MicroCore библиотека для UART минималистична, но все равно запихнуть остальной функционал в доступные 1Кб было небольшим вызовом :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории