systemypomiarowe.pl

Великий план змонтованої плати P161002 з мікросхемами Microchip у SMD-корпусах Візуалізація плати з мікроконтролером STM32, роз'ємом картки SD і модулем GPS Тривимірна візуалізація плати з реле, зумером і роз'ємами Фрагмент принципової схеми з вимірювальним підсилювачем INA326 та АЦП MCP3304 Тривимірна візуалізація щільно змонтованої плати модуля зв'язку Передня панель пристрою з підписаними кнопками, регуляторами гучності та динаміком Технічне креслення передньої панелі з розташуванням кнопок і регуляторів Змонтована плата з мікроконтролером PIC18F2550, роз'ємом USB і підлаштовними резисторами Вихідний код інтерфейсу TouchGFX для STM32 у редакторі Visual Studio Code Топологія друкованої плати з шарами та розташуванням компонентів
❮
❯
Головна Пропозиція

Raspberry Pi – frontpanel (модуль розширень)

Плата панелі керування для Raspberry Pi.

Блок-схема модуля розширень (frontpanel) для Raspberry Pi

Рис. Блок-схема карти розширень.

Натхненний попередніми експериментами з Raspberry Pi, я вирішив спроєктувати та виготовити плату, що поєднує риси всіх попередніх прикладів. Спроєктований інтерфейс має шість підсвічених кнопок, під'єднаних через мікросхему MCP23008 до інтерфейсу I2C. Панель керування оснащено алфавітно-цифровим дисплеєм LCD. Для керування цим дисплеєм використано описану в іншій статті бібліотеку wiringPi, що має вбудовані функції для дисплеїв такого типу. Для керування підсвіткою дисплея використано мікросхему PCA9633. Дисплей має підсвітку RGB, завдяки чому колір підсвітки можна визначити довільно. Плату оснащено також годинником RTC типу PCF8563, під'єднаним до інтерфейсу I2C. До цього самого інтерфейсу під'єднано мікросхему SHT21 – цифровий термометр і гігрометр. У панель вбудовано мікросхему пам'яті 24C02 для запису поточних даних про налаштування. Великим функціональним блоком, вбудованим у панель, є перетворювач UART на BlueTooth типу BTM222. Завдяки цьому інтерфейсу отримуємо в розпорядження новий канал зв'язку з платою Raspberry Pi. До модуля BTM222 під'єднано антену на діапазон 2,4 ГГц. Ще одним цікавим елементом, встановленим на платі панелі керування, є приймач інфрачервоного сигналу TSOP4836, який у поєднанні з бібліотекою lirc дозволяє цікавий спосіб керування комп'ютером Raspberry Pi. На платі встановлено також зумер, керований з інтерфейсу GPIO комп'ютера Raspberry Pi. Як написано вище, на платі панелі керування встановлено кілька мікросхем, під'єднаних до спільного керувального інтерфейсу I2C. Щоб з ними спілкуватися, потрібна інформація про адреси окремих мікросхем. Їх наведено в таблиці нижче.

адреса мікросхема примітки
0x0c PCA9633
0x51 PCF8563
0x52 AT24C02 за документацією 0xa2
0x40 SHT21
0x20 MCP23008
Табл. Адреси I2C використаних мікросхем.

Ці адреси відрізняються від наведених у документації окремих мікросхем. Це тому, що в документації восьмибітну адресу подано разом із бітом read/write, тоді як у бібліотеці wiringPi використовуємо лише сім найстарших бітів, отже "документаційну" адресу слід поділити на 2, наприклад 0xa2/2 = 0x52.

Таблиця, що ілюструє спосіб під'єднання дисплея LCD до інтерфейсу GPIO.

RS EN D4 D5 D6 D7
GPIO25 GPIO7 GPIO22 GPIO27 GPIO17 GPIO4
Табл. Під'єднання дисплея LCD

Як зазначено раніше, використаний дисплей LCD має вбудовану підсвітку світлодіодами RGB. Для керування підсвіткою застосовано мікросхему PCA9633. За колір R відповідає регістр за адресою 0x05, за колір G – регістр за адресою 0x04, а за колір B – регістр 0x03. За підсвітку клавіатури відповідає регістр за адресою 0x02. Для зчитування стану клавіатури застосовано мікросхему MCP23008. Вихід переривання цієї мікросхеми під'єднано до лінії GPIO24. Після виявлення зміни стану на цій лінії програма, запущена на Raspberry Pi, має зчитати з мікросхеми MCP, яку з кнопок натиснуто.
Мікросхему для приймання сигналів з пультів дистанційного керування в інфрачервоному діапазоні під'єднано до лінії GPIO18. Бібліотеку lirc слід налаштувати так, щоб вона враховувала цю інформацію.
Про модуль BTM222 і спосіб його під'єднання нема чого описувати. Цей модуль під'єднано до ліній RXD та TXD. Лінію RESET модуля BTM222 під'єднано до виводу GP7 мікросхеми MCP23008.
Зумер під'єднано до лінії GPIO23 плати Raspberry Pi. На платі встановлено роз'єм, під'єднаний до інтерфейсу SPI Raspberry Pi. Якщо комусь потрібно під'єднати ще якісь мікросхеми з інтерфейсом I2C, там є також роз'єм, на який виведено сигнали інтерфейсу I2C.

Дисплей LCD з підсвіткою RGB у модулі frontpanel

Рис. Вигляд спроєктованого frontpanel для Raspberry Pi.

Принципова схема модуля frontpanel для Raspberry Pi

Рис. Принципова схема frontpanel.

Змонтований модуль frontpanel з дисплеєм LCD

Рис. Вигляд змонтованого й запущеного frontpanel.

Raspberry Pi з під'єднаним модулем розширень

Рис. Ще один вигляд: RPi та frontpanel.

Друкована плата.

На основі схеми було спроєктовано двосторонню друковану плату, на якій розміщено всі елементи та роз'єми.

Проєкт двосторонньої друкованої плати frontpanel у програмі KiCad

Рис. Вигляд спроєктованої друкованої плати.

Застосунок – LCD

Запуск frontpanel я почав із запуску дисплея LCD. Для цього слід встановити бібліотеку wiringPi згідно з інструкцією, описаною в розділі про виводи GPIO. Щоб дисплей запрацював, я написав застосунок мовою C. Слід налаштувати використані лінії GPIO. Це можна зробити функцією lcdInit з такими параметрами:
fd3 = lcdInit (2,16,4,6,11,3,2,0,7,0,0,0,0);
Параметри – це по черзі:
2 – кількість рядків дисплея
16 – кількість символів у рядку
4 – ширина інтерфейсу даних
6 – номер виводу wiringPi для RS
11 – вивід для EN
3 – вивід для D0
2 – вивід для D1
0 – вивід для D2
7 – вивід для D3
решта нулів – це наступні D4–D7. fd3 – це покажчик на дисплей, використовуваний у наступних функціях. У конфігурації цього дисплея слід звернути увагу на позначення окремих ліній GPIO. У розділі про порт GPIO позначення ліній відповідали документації Raspberry Pi. Позначення для програмування з використанням бібліотеки wiringPi, однак, інші. Виконавши команду gpio readall, отримаємо таблицю, де в наступних стовпцях розміщено:
– номер виводу для бібліотеки wiringPi
– номер виводу згідно з документацією Raspberry Pi
– функцію даного порту
– логічне значення на вході

Результат команди gpio readall – розташування виводів GPIO Raspberry Pi

Рис. Логічні стани на роз'ємах P1 та P5.

Наступні функції:
lcdPosition (fd3, 0, 0);
Ця функція встановлює курсор для дисплея fd3 у рядку 0 на позицію 0.
lcdPuts (fd3, " якийсь текст ");
Ця функція виводить текст з лапок на дисплеї fd3. Наведені вище функції здатні вивести текст на дисплеї.

Інтерфейс I2C

Для обслуговування шини I2C використано описану раніше бібліотеку wiringPi. Її встановлення та налаштування описано в іншому документі – керування модулем контролера світлодіодів RGB.
Після правильного з'єднання frontpanel і виконання команди сканування інтерфейсу I2C
sudo i2cdetect -y 1
маємо отримати щось таке:

Результат команди i2cdetect – виявлення пристроїв на шині I2C

Рис. Результат дії функції i2cdetect.

Інтерфейс GPIO для дистанційного керування.

Модуль дистанційного керування описано в іншій статті.

Незабаром буде продовження


Описаний frontpanel постав від схеми, через друковану плату, аж до програмного забезпечення обслуги. Саме в такому обсязі ми реалізуємо електронні проєкти для клієнтів – разом із добором дисплея, проєктом друкованої плати та корпусом.



Copyright ©2026 systemypomiarowe.pl.