Если вам понравится этот разбор-поддержите меня подпиской!
Я делаю это на чистом энтузиазме и ваша обратная связь важна для меня!
В этой статье я шаг за шагом разберу, как создать простой проект: схему с использованием сдвигового регистра 74HC595 и микроконтроллера ESP32. Это идеальный старт для тех, кто только начинает погружаться в мир электроники и программирования.
1. Введение
Сдвиговый регистр 74HC595 — это 8-битный чип, который принимает данные по очереди от микроконтроллера и преобразует их в параллельные сигналы. Благодаря встроенной защёлке (latch), он надёжно фиксирует сигналы, чтобы всё работало как надо. Такой подход особенно полезен, если у твоего микроконтроллера, например ESP32, не хватает выводов для проектов с большим количеством компонентов. С 74HC595 ты можешь легко расширить возможности и создать что-то по-настоящему впечатляющее! В этой статье мы подробно разберём схему подключения 74HC595 к ESP32 и предоставим код для управления восемью светодиодами. А в следующей статье я покажу, как управлять 40 светодиодами с помощью ESP32.
2. Пин-аут сдвигового регистра 74HC595
- QA-QH (пин 15, 1-7): Выходные пины, управляющие светодиодами
- GND (пин 8): Подключение к земле
- VCC (пин 16): Подключение к источнику питания
- SRCLR (пин 10): Сброс регистра
- OE (Output Enable, пин 13): Управление выходами
- SER (пин 14): Вход данных для последовательной передачи (подключается к пину данных микроконтроллера)
- SRCLK (пин 11): Тактовый сигнал для сдвига данных
- RCLK (пин 12): Сигнал защёлкивания для передачи данных на выходы
- QH' (пин 9): Выход для каскадирования нескольких регистров (подключается к SER следующего регистра, если используется)
3. Сборка схемы шаг за шагом
1. Установка сдвигового регистра 74HC595 на макетную плату
Начнём с правильной установки чипа на макетную плату, чтобы всё работало без проблем.
- 1.1 Вставьте чип. Осторожно вставьте 74HC595 в центр макетной платы так, чтобы пин 1 и пин 16 оказались по разные стороны от центральной канавки. Это предотвратит замыкание и повреждение чипа. Убедись, что все пины плотно вошли в гнёзда.
2 . Подключение питания и контрольных сигналов
- 2.1 Подключение питания (VCC). Соединим пин 16 (VCC) с плюсовой шиной на макетной плате с помощью провода, чтобы подать питание (3.3V).
- 2.2 Отключение сброса (SRCLR). Подключим пин 10 (SRCLR) к плюсовой шине проводом, чтобы отключить сброс регистра.
- 2.3 Подключение земли (GND). Соединим пин 8 (GND) с минусовой шиной при помощи провода для завершения цепи питания.
- 2.4 Управление выходами (OE). Подключи пин 13 (OE) к минусовой шине проводом, чтобы активировать выходы регистра (OE активен на низком уровне).
3. Подсоединение выходов QA-QH, резисторов и светодиодов
- 3.1. Подготовка выходов QA-QH. Эти пины будут управлять светодиодами. Подготовь их, разместив перемычки в соседние ряды на макетной плате (например, рядом с 74HC595), чтобы удобно подключить резисторы. (ниже будет последовательность подключения перемычек)
- 3.2. Подключение резисторов. Возьми 8 резисторов (330 Ом для ограничения тока).
- 3.3. Подключаем 8 светодиодов (LED)
Последовательность подключения:
- QA (пин 15): Перемычка → резистор 330 Ом → анод LED → катод к GND.
- QB (пин 1): Перемычка → резистор 330 Ом → анод LED → катод к GND.
- QC (пин 2): Перемычка → резистор 330 Ом → анод LED → катод к GND.
- QD (пин 3): Перемычка → резистор 330 Ом → анод LED → катод к GND.
- QE (пин 4): Перемычка → резистор 330 Ом → анод LED → катод к GND.
- QF (пин 5): Перемычка → резистор 330 Ом → анод LED → катод к GND.
- QG (пин 6): Перемычка → резистор 330 Ом → анод LED → катод к GND.
- QH (пин 7): Перемычка → резистор 330 Ом → анод LED → катод к GND.
3.4. Проверка подключения. Убедись, что все перемычки, резисторы и светодиоды плотно сидят в маетной плате, а провода не пересекаются, чтобы избежать короткого замыкания.
4. Подключение перемычек для шин питания
- 4.1. Чтобы обеспечить стабильное питание для 74HC595 и светодиодов по всей макетной плате, соединим плюсовую и минусовую шины перемычками.
5. Подключение ESP32 к сдвиговому регистру
Для управления сдвиговым регистром 74HC595 с помощью ESP32 подключим его к микроконтроллеру, используя пины (GPIO 23, 18, 5), которые не конфликтуют с загрузкой.
- 5.1. Подключение Data Pin (DS). Соединяем пин 14 (DS) на 74HC595 с GPIO 23 на ESP32 . Это линия данных для передачи информации.
- 5.2. Подключение Clock Pin (SH_CP). Подключим пин 11 (SH_CP) на 74HC595 к GPIO 18 на ESP32 проводом. Этот пин отвечает за тактовый сигнал сдвига.
- 5.3. Подключение Latch Pin (ST_CP). Соединим пин 12 (ST_CP) на 74HC595 с GPIO 5 на ESP32 проводом. Этот пин активирует защёлку для вывода данных на светодиоды.
- 5.4. Проверка подключения. Убедимся, что все провода плотно сидят и хорошо припаяны
6. Подключение внешнего источника питания
Для стабильной работы схемы подключим питание к макетной плате.
- 6.1. Подключение питания. Подключаем внешний источник питания (или используем USB ESP32) к плюсовой и минусовой шине. Подаем 3.3V: плюсовую шину (VCC) соединим с 3.3V, минусовую (GND) — с землёй источника.
- 6.2. Проверка напряжения. Возьмем мультиметр, установим режим измерения напряжения (DC) и проверим напряжение на пине 16 (VCC) 74HC595 относительно GND. Должно быть 3.3V.
- 6.3. Убедись, что всё подключено надёжно, и напряжение соответствует — теперь схема готова к работе!
4. Схема проекта
5. Код для управления светодиодами с 74HC595 и ESP32
Этот код — сердце нашего проекта. Он простой и идеально подходит для начинающих. Давай разберём его по частям.
- 1.1 Настройка пинов: Здесь мы задаём пины ESP32, которые будут управлять 74HC595. DataPin (GPIO 23) — это вход данных (DS), ClockPin (GPIO 18) — тактовый сигнал (SH_CP), а LatchPin (GPIO 5) — сигнал защёлки (ST_CP). Эти пины стабильны и готовы к работе!
- 1.2 Инициализация и запуск: В функции setup() мы объявляем пины как выходы (OUTPUT), чтобы ESP32 мог отправлять сигналы. Serial.begin(115200) включает монитор для отладки. Сначала выключаем все LED (sendData(0)), ждём секунду, а потом зажигаем первый светодиод (Q0) с помощью sendData(0x01) — и сразу видим результат на мониторе!
- 1.3 Работа светодиодов: Функция sendData() — наш главный инструмент. Она опускает защёлку (LOW), отправляет байт данных через shiftOut() (старший бит первым, MSBFIRST), а потом поднимает защёлку (HIGH), чтобы светодиоды зажглись.
- 1.4 Бесконечный цикл: Пока loop() пуст, светодиоды остаются в последнем состоянии (Q0 зажжён).
- 1.5 Полный код
- 1.6 Чтобы зажечь каждый светодиод по отдельности с использованием функции sendData(), нужно отправлять разные значения байта, так как каждый бит в 74HC595 соответствует одному выходу (Q0-Q7). Вот значения для каждого светодиода:
- Зажечь Q0 (первый LED): sendData(0x01); // Бинарно: 00000001
- Зажечь Q1 (второй LED): sendData(0x02); // Бинарно: 00000010
- Зажечь Q2 (третий LED): sendData(0x04); // Бинарно: 00000100
- Зажечь Q3 (четвёртый LED): sendData(0x08); // Бинарно: 00001000
- Зажечь Q4 (пятый LED): sendData(0x10); // Бинарно: 00010000
- Зажечь Q5 (шестой LED): sendData(0x20); // Бинарно: 00100000
- Зажечь Q6 (седьмой LED): sendData(0x40); // Бинарно: 01000000
- Зажечь Q7 (восьмой LED): sendData(0x80); // Бинарно: 10000000
Эти команды позволяют зажигать светодиоды по одному, просто меняя значение в sendData().
Заключение
Я завершил проект управления 8 светодиодами с 74HC595 и ESP32. Разобрал, как регистр преобразует данные в сигналы, собрал схему на макетной плате с детальным описанием пинов и компонентов, добавил фото. Ключ — экономия пинов: три сигнала (DS, SH_CP, ST_CP) управляют всеми выходами. Код с shiftOut и digitalWrite зажигает LED (например, 0x01 для Q0, 0x04 для Q2) по одному или в анимациях.
В следующем проекте я буду каскадировать регистры (до 32-40 LED).