====== Семисегментный индикатор 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]]