====== Семисегментный индикатор SegM8 ====== Используйте [[amp>product/segm8-led-module?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|семисегментный индикатор SegM8]] для отображения цифр, символов и некоторых букв, которые будут видны на расстоянии до 50 метров. {{ :products:segm8-led-module:segm8-led-module.1.jpg?nolink |}} С модулями SegM8 вам не придётся думать про схему управления и питания каждого сегмента. Мы всё продумали, вам осталось лишь подключить контроллер с интерфейсом SPI и подать на индикатор общее питание! ===== Примеры работы для Arduino ===== В качестве мозга для работы с индикатором SegM8 рассмотрим платформы из семейства [[amp>collection/arduino?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|Arduino]]. [[articles:arduino-ide-install|Как начать работу с Arduino?]] {{ :products:segm8-led-module:segm8-led-module.8.jpg?nolink |}} ==== Подключение и настройка ==== Для старта необходимо [[#аппаратная_часть|подключить железо]] и [[#программная_часть|выполнить программную настройку]]. === Аппаратная часть === На аппаратном уровне светодиодный модуль общается с управляющей электроникой по интерфейсу SPI. Рассмотрим два случая коммуникации: * [[#hardware_spi|Hardware SPI]] * [[#software_spi|Software SPI]] Подробнее про SPI в Arduino == Hardware SPI == Hardware SPI — это аппаратный SPI, который предназначен для общения с модулями по одноименному интерфейсу. Контакты MOSI, MISO и SCK интерфейса SPI вынесены на платах Arduino на отдельный ICSP-разъём. Подключим SegM8 к платформе [[amp>product/arduino-uno?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|Arduino Uno]]. Для коммуникации используйте соединительные провода [[amp>product/wire-mm?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|«папа-папа»]] и [[amp>product/wire-fm?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|«мама-папа»]]. ^ Индикатор SegM8 ^ Arduino Uno ^ | VCC | +5V | | GND | GND | | CS | 10 | | DI / MISO | DO / MOSI | | CLK / SCK | CLK / SCK | {{ :products:segm8-led-module:segm8-led-module-wiring-arduino-hardwarespi.png?nolink |}} Для быстрой сборки и отладки устройства рекомендуем взять плату расширения [[amp>product/arduino-screw-shield?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|Screw Shield]], которая одевается сверху на Arduino Uno методом бутерброда.{{ :products:segm8-led-module:segm8-led-module-wiring-arduino-screw-shield-hardwarespi.png?nolink |}} == Software SPI == Software SPI — это программный SPI, который который позволяет имитировать аппаратный SPI на других контактах платы. Это удобно когда на плате нет доступа к контактам Hardware SPI. Подключим SegM8 к платформе [[amp>product/arduino-uno?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|Arduino Uno]]. Для коммуникации используйте соединительные провода [[amp>product/wire-mm?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|«папа-папа»]]. ^ Индикатор SegM8 ^ Arduino Uno ^ | VCC | +5V | | GND | GND | | CS | 10 | | DI / MISO | 5 | | CLK / SCK | 7 | {{ :products:segm8-led-module:segm8-led-module-wiring-arduino-softwarespi.png?nolink |}} Для быстрой сборки и отладки устройства рекомендуем взять плату расширения [[amp>product/arduino-screw-shield?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|Screw Shield]], которая одевается сверху на Arduino Uno методом бутерброда.{{ :products:segm8-led-module:segm8-led-module-wiring-arduino-screw-shield-softwarespi.png?nolink |}} === Программная часть === - [[articles:arduino-ide-install|Заведите Arduino]] - Установите библиотеку [[https://github.com/amperka/SegM8|SegM8]]. На этом установка закончена, теперь смело переходите к экспериментам. ==== Простой счётчик ==== Выведем на семисегментный индикатор значения счётчика от 0 до 9. === Код для Hardware SPI === // Библиотека для работы с cемисегментным модулем SegM8 // https://github.com/amperka/SegM8 // Подробности и описание функций читайте в API.md #include "segm8.h" // Создаём объект для работы с модулем SegM8 // Используем аппаратный SPI // Передаём номер пина CS и кол-во подключенных индикаторов SegM8 module(10, 1); void setup() { // Инициализируем cемисегментный индикатор SegM8 module.begin(); } void loop() { // Перебираем показания счётчика от 0 до 9 for (int counter = 0; counter < 10; counter++) { // Выводим текущее значение счётчика module.display(counter, 0, 1); // Ждём 1 секунду delay(1000); } } === Код для Software SPI === // Библиотека для работы с cемисегментным модулем SegM8 // https://github.com/amperka/SegM8 // Подробности и описание функций читайте в API.md #include "segm8.h" // Создаём объект для работы с модулем SegM8 // Используем программный SPI // Передаём номер пинов CS, DI, CLK // и кол-во подключенных индикаторов SegM8 module(10, 5, 7, 1); void setup() { // Инициализируем cемисегментный индикатор SegM8 module.begin(); } void loop() { // Перебираем показания счётчика от 0 до 9 for (int counter = 0; counter < 10; counter++) { // Выводим текущее значение счётчика module.display(counter, 0, 1); // Ждём 1 секунду delay(1000); } } После прошивки устройства, счётчик на индикаторе не заставит себя долго ждать. {{ :products:segm8-led-module:segm8-led-module-example-counter.gif?nolink |}} Если яркость свечения индикатора для вас слишком слабая, [[#силовой_клеммник|подключите к SegM8 дополнительное питание через силовой клеммник]]. ==== Вывод строки ==== Семисегментные индикаторы поддерживают последовательное подключение между собой в цепочку (гирлянду). Каждый новый модуль добавляет к текущему дисплею ещё один разряд для отображения цифры или буквы. Кол-во подключаемых модулей ограничено только мощностью источника питания и памятью контроллера. Добавим к предыдущему примеру ещё три светодиодных модуля SegM8. Для соединения индикаторов между собой используйте [[amp>product/pin-header-straight-symmetric-1x40?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|штыревые контакты PLH-40]], а откусить нужное кол-во штырьков помогут [[amp>product/side-cutting-pliers?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|бокорезы]]. {{ :products:segm8-led-module:segm8-led-module-wiring-multiple.png?nolink |}} Выведем на сборку из четырёх семисегментных индикаторов строку «7Seg». === Код для Hardware SPI === // Библиотека для работы с cемисегментным модулем SegM8 // https://github.com/amperka/SegM8 // Подробности и описание функций читайте в API.md #include "segm8.h" // Создаём объект для работы с модулем SegM8 // Используем аппаратный SPI // Передаём номер пина CS и кол-во подключенных индикаторов SegM8 module(10, 4); void setup() { // Инициализируем cемисегментный индикатор SegM8 module.begin(); // Выводим строку module.display("7Seg", 0, 4); } void loop() { } === Код для Software SPI === // Библиотека для работы с cемисегментным модулем SegM8 // https://github.com/amperka/SegM8 // Подробности и описание функций читайте в API.md #include "segm8.h" // Создаём объект для работы с модулем SegM8 // Используем программный SPI // Передаём номер пинов CS, DI, CLK // и кол-во подключенных индикаторов SegM8 module(10, 5, 7, 4); void setup() { // Инициализируем cемисегментный индикатор SegM8 module.begin(); // Выводим строку module.display("7Seg", 0, 4); } void loop() { } После прошивки устройства вы увидите соответствующую надпись на индикаторах. {{ :products:segm8-led-module:segm8-led-module-example-multiple-text.png?nolink |}} Если яркость свечения индикаторов для вас слишком слабая, [[#силовой_клеммник|подключите к SegM8 дополнительное питание через силовой клеммник]]. ===== Примеры работы для Raspberry Pi ===== В качестве мозга для работы с индикатором SegM8 рассмотрим платформы из семейства [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|Raspberry Pi]]. [[articles:rpi-guide|Как начать работу с Raspberry Pi?]] {{ :products:segm8-led-module:segm8-led-module.10.jpg?nolink |}} ==== Подключение и настройка ===== Для старта необходимо [[#аппаратная_часть1|подключить железо]] и [[#программная_часть1|выполнить программную настройку]]. === Аппаратная часть === На аппаратном уровне светодиодный модуль общается с управляющей электроникой по интерфейсу SPI. Подробнее про SPI в Raspberry Pi Подключим SegM8 к платформе [[amp>product/raspberry-pi-4-model-b-4-gb?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|Raspberry Pi 4]]. На Raspberry Pi есть несколько видов нумерации, мы будем использовать нумерацию ''BCM''. Для коммуникации используйте [[amp>product/wire-fm?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|соединительные провода «папа-мама»]] ^ Индикатор SegM8 ^ Raspberry Pi 4 (BCM) ^ | GND | 5V | | GND | GND | | CS | SPI0CE0 / 8 | | DI / MISO | MOSI0 / 10 | | CLK / SCK | SCK0 / 11 | {{ :products:segm8-led-module:segm8-led-module-wiring-raspberry-pi-hardwarespi.png?nolink |}} Для быстрой сборки и отладки устройства возьмите плату расширения [[amp>product/raspberry-pi-troyka-hat?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|Troyka HAT]], которая надевается сверху на малину методом бутерброда. Имена пинов на Troyka HAT относятся к нумерации ''Wiring Pi'', которая отличается от стандартной нумерации ''BCM'' одноплатника Raspberry Pi. Для подробностей смотрите [[products:raspberry-pi-troyka-hat#распиновка|распиновку на Troyka HAT]]. ^ Индикатор SegM8 ^ Raspberry Pi 4 (BCM) ^ Troyka HAT (WiringPI) ^ | GND | GND | GND | | CS | SPI0CE0 / 8 | SPI0CE0 / 10 | | DI / MISO | MOSI0 / 10 | MOSI0 / 12 | | CLK / SCK | SCK0 / 11 | SCK0 / 14 | {{ :products:segm8-led-module:segm8-led-module-wiring-raspberry-pi-troyka-hat-hardwarespi.png?nolink |}} === Программная часть === - [[articles:rpi-guide|Заведите Raspberry Pi]] - [[:articles:rpi-interfaces|Включите шину SPI]] - Установите библиотеку [[https://pypi.org/project/segm8/|SegM8Pi]]:pip3 install segm8 На этом установка закончена, теперь смело переходите к экспериментам. ==== Простой счётчик ==== Выведем на семисегментный индикатор значения счётчика от 0 до 9. # Библиотека для работы с cемисегментным модулем SegM8 import segm8 # Библиотека для работы с временем import time # Создаём объект для работы с модулем SegM8 # Передаём номер пина CS (CE0 или CE1) и кол-во подключенных индикаторов segm8_module = segm8.SegM8(0, 1) while True: # Перебираем показания счётчика от 0 до 9 for number in range(10): # Выводим текущее значение счётчика segm8_module.display_int(number, 0, 1) # Ждём 1 секунду time.sleep(1) После прошивки устройства, счётчик на индикаторе не заставит себя долго ждать. {{ :products:segm8-led-module:segm8-led-module-example-counter.gif?nolink |}} Если яркость свечения индикатора для вас слишком слабая, [[#силовой_клеммник|подключите к SegM8 дополнительное питание через силовой клеммник]]. ==== Вывод строки ==== Семисегментные индикаторы поддерживают последовательное подключение между собой в цепочку (гирлянду). Каждый новый модуль добавляет к текущему дисплею ещё один разряд для отображения цифры или буквы. Кол-во подключаемых модулей ограничено только мощностью источника питания и памятью контроллера. Добавим к предыдущему примеру ещё три светодиодных модуля SegM8. Для соединения индикаторов между собой используйте [[amp>product/pin-header-straight-symmetric-1x40?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|штыревые контакты PLH-40]], а откусить нужное кол-во штырьков помогут [[amp>product/side-cutting-pliers?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|бокорезы]]. {{ :products:segm8-led-module:segm8-led-module-wiring-multiple.png?nolink |}} Выведем на сборку из четырёх семисегментных индикаторов строку «7Seg». # Библиотека для работы с cемисегментным модулем SegM8 import segm8 # Библиотека для работы с временем import time # Создаём объект для работы с модулем SegM8 # Передаём номер пина CS (CE0 или CE1) и кол-во подключенных индикаторов segm8_module = segm8.SegM8(0, 4) # Выводим строку «7Seg» segm8_module.display_string("7Seg", 0, 4) while True: time.sleep(1) После прошивки устройства вы увидите соответствующую надпись на индикаторах. {{ :products:segm8-led-module:segm8-led-module-example-multiple-text.png?nolink |}} Если яркость свечения индикаторов для вас слишком слабая, [[#силовой_клеммник|подключите к SegM8 дополнительное питание через силовой клеммник]]. ===== Особенность модуля ===== * [[#выбор_режима_яркости|Два режима яркости: штатный и экономный.]] * [[#каскадное_подключение|Каскадное подключение модулей в цепочку.]] * Уникальный драйвер индикатора: [[#выходной_сдвиговый_регистр|выходной сдвиговый регистр]] с [[#выходные_каналы_питания_сегментов|усилительным каскадом на каждом канале]]. В итоге вся цепочка SegM8 управляется через один интерфейс SPI, что экономит пины на контроллере. * [[#преобразователь_напряжения_силовой_части|Универсальный преобразователь напряжения]], который предоставляет широкий выбор источника питания от 3,3 до 12 В. ==== Выбор режима яркости ==== Индикатор поддерживает два режима яркости: штатный и экономный. * Штатный режим — светодиоды индикатора горят в полную силу. Для активации — подключите напряжение от 5 до 12 вольт на [[#силовой_клеммник|силовой клеммник]]. * Экономный режим — светодиоды индикатора горят с минимальной яркостью. Для активации — подключите напряжение от 3,3 до 5 вольт на [[#сигнальный_клеммник|сигнальный клеммник]]. ==== Каскадное подключение ==== Несколько модулей легко объединяются в табло, подключаясь между собой штыревыми контактами.{{ :products:segm8-led-module:segm8-led-module-wiring-multiple.png?nolink |}} ===== Элементы платы ===== {{ :products:segm8-led-module:segm8-led-module-annotation.png?nolink |}} ==== Семисегментный индикатор ==== За отображения информации отвечает {{ :products:segm8-led-module:sa40-19-datasheet.pdf |семисегментный индикатор SA40-19}}, который состоит из семи отдельных светодиодов плоской формы ''A'', ''B'', ''C'', ''D'', ''E'', ''F'', ''G'' и точки ''DP''. Светодиоды расставлены на плате в виде арабской восьмёрки, такой способ даёт при включении определённых сегментов отображать цифры и некоторые буквы.{{ :products:segm8-led-module:segm8-led-module-segments.png?nolink |}} Светодиоды индикатора SA40-19 подключены к плате управления SegM8, которая получает команды от внешнего микроконтроллера и транслирует их на семисегментный экран. ==== Силовой клеммник ==== На задней панели индикатора расположены два винтовых силовых клеммника для питания устройства в штатном режиме на полную яркость. Группа контактов Input служит для подключения к модулю источника питания, а контакты Output — для прабрасывания питания к следующему модулю в цепочке. Каждый модуль при всех зажженных сегментах потребляет ток в штатном режиме до 300 мА. ^ Контакт ^ Назначение ^ Подключение ^ | +12V | Силовое питание | Силовое питания 5–12 В| | GND | Земля | Общая земля | {{ :products:segm8-led-module:segm8-led-module-wiring-power-supply.png?nolink |}} ==== Сигнальный клеммник ==== На задней панели индикатора расположены два винтовых сигнальных клеммника. Группа контактов Input служит для подключения к модулю внешнего контроллера, а контакты Output — для прабрасывания данных к следующему модулю в цепочке. Каждый модуль при всех зажженных сегментах потребляет ток в эконом режиме до 50 мА. ^ Контакт ^ Назначение ^ Подключение ^ | VCC | Питание | Питание 3,3–5 В | | GND | Земля | GND | | CS / SS | Выбор модуля на шине SPI | CS / SS | | DI / MISO | Вход ведомого устройства на шине SPI | DO / MOSI | | CLK / SCK | Тактовый сигнал на шине SPI | CLK / SCK | ==== Преобразователь напряжения силовой части ==== На плате модуля расположен универсальный преобразователь питания {{ :products:segm8-led-module:tps63060-datasheet.pdf |TPS63060}}, который при низком входном напряжении поднимет питание до 10,4 вольт, а при высоком — понизит до 10,4 вольт. В итоге вы можете использовать широкий выбор источников питания. ==== Преобразователь напряжения цифровой части ==== Понижающий регулятор напряжения {{ :products:segm8-led-module:l78l05-datasheet.pdf |L78L05AB}} с выходом 5 вольт, обеспечивает питание микросхем и другой логики модуля. Максимальный выходной ток составляет 100 мА. ==== Выходной сдвиговый регистр ==== За логику управления индикатором отвечает микросхема выходного сдвигового регистра {{ :products:segm8-led-module:74hc595-datasheet.pdf |74HC595}}, которая является преобразователем последовательного интерфейса в параллельный. Чип получает команды по SPI от внешнего микроконтроллера и выдаёт разом отдельные сигналы на каждый сегмент. Т.к. каждый сегмент в модуле достаточно прожорливый по току и напряжению, то выходные сигналы с микросхемы сдвигового регистра сначала поступают на [[#выходные_каналы_питания_сегментов|усилительные каскады]], а затем уже на [[#семисегментный_индикатор|светодиодный индикатор]]. ==== Выходные каналы питания сегментов ==== На модуле расположено восемь выходных каналов для питания [[#семисегментный_индикатор|индикаторных сегментов]]: семь каскадов предназначены для плоских сегментов и один — на точку. Каждый канал состоит из управляющего {{ :products:segm8-led-module:2n7002k-datasheet.pdf |полевого транзистора с N-каналом}} и токоограничивающего резистора. В свою очередь всеми каналами управляет один драйвер в виде [[#выходной_сдвиговый_регистр|выходного сдвигового регистра]]. ===== Принципиальная и монтажная схемы ===== {{:products:segm8-led-module:segm8-led-module-schematic.png?direct&535 }} {{ :products:segm8-led-module:segm8-led-module-layout-top.png?direct&135}} {{ :products:segm8-led-module:segm8-led-module-layout-bottom.png?direct&135}} ===== Габаритный чертёж ===== [[this>_media/products:segm8-led-module:segm8-led-module-dimensions.pdf|{{:products:segm8-led-module:segm8-led-module-dimensions.png}}]] ===== Характеристики ===== * Модель: Семисегментный индикатор SegM8 AMP-B200-RU * Источник света: светодиодные сегменты * Количество сегментов: 7 + точка * Цвет сегментов: красный * Модель индикатора: SA40-19 / SM434001D * Драйвер индикатора: 74HC595 с усилительным каскадом на каждом канале * Аппаратный интерфейс: клеммники под винт * Программный интерфейс: SPI * Режимы яркости: штатный / экономный * Напряжение питания: * Через силовой клеммник: 5–12 В (штатный режим) * Через сигнальный клеммник: 3,3–5 В (экономный режим) * Потребляемый ток: * В экономном режиме яркости: до 50 мА * В штатном режиме яркости: до 300 мА * Напряжение логических уровней: 3,3–5 В * Размеры модуля: 122×90×26,3 мм * Размеры экрана: 101,2×59,5 мм * Масса: 260 г ===== Ресурсы ===== * [[amp>product/segm8-led-module?utm_source=man&utm_campaign=segm8-led-module&utm_medium=wiki|Семисегментный индикатор SegM8]] в магазине. * [[https://github.com/amperka/hardware-drawings/blob/master/segm8-led-module.svg|Векторное изображение SegM8]] * [[https://github.com/amperka/SegM8|Библиотека для Arduino]] * [[https://xod.io/libs/amperka/segm8/|Библиотека для XOD]] * [[https://github.com/amperka/SegM8Pi|Библиотека для Raspberry Pi]]