Клавиатура Capacitive Touch Disk Pad производства Robotdyn (https://robotdyn.com/capacitive-touch-disk-pad.html) представляет из себя 15 сенсорных кнопок. Эта компактная недорогая клавиатура может подключаться к любому емкостному модулю. Является полнофункциональной сенсорной клавиатурой, которая может быть легко встраивается в профессиональную систему управления или в приложение микроконтроллера. Сенсорные панели имеют номера от 1 до 15. Кнопки могут маркироваться с помощью фломастера. В комплекте: плата и перемычка и провода FF длиной 150 мм.
Подключение к ESP8266
Рассмотрим подключение клавиатуры к плате WI-FI NodeM на модуле ESP8266. Для подключения будем использовать 16-клавишный емкостный сенсорный модуль 16 Keys Capacitive touch TTP229 I2C module (https://robotdyn.com/16-keys-capacitive-touch-ttp229-i2c-module.html), который подключается к микроконтроллеру по шине I2C.
Подключение согласно схема соединений:
Скетч определения нажатой клавиши на клавиатуре на C в Arduino IDE
Напишем скетч для определения нажатых клавиш на сенсорной клавиатуре и вывода в последовательный порт. Используется библиотека Wire. I2C-адрес модуля TTP229 - 0x57. Получение данных по I2C:
void getTTP229data(byte *a, byte *b) { // запрос 2 bytes из TTP229 Wire.requestFrom(TTP229_LSF, 2); int dataN = 0; while(Wire.available()) { // получение побайтно char c = Wire.read(); if (dataN == 0) *a = c; if (dataN == 1) *b = c; dataN++; } }
Далее эти байты выводим в двоичном виде в монитор последовательного порта
Скачать архив со скетчем
Загружаем скетч на плату Node MCU ESP8266, открываем монитор последовательного порта и смотрим вывод состояния клавиатуры по кнопкам 1-15 (1 – нажата, 0 - отжата):
Скрипт определения нажатой клавиши на клавиатуре на python
Arduino IDE не единственный способ программирования ESP8266. Еще один из вариантов - micropython. Это реализация Python 3, написанная на C, которая оптимизирована для микроконтроллеров.
Документация по началу работы с micropython для ESP8266 - https://docs.micropython.org/en/latest/esp8266/tutorial/intro.html
Напишем скрипт для определения нажатых клавиш на сенсорной клавиатуре и вывода в терминал.
Используются библиотеки I2C,Pin, time
from machine import I2C,Pin import time
Получение данных по I2C:
data = i2c.readfrom(0x57,2) word=data[0]<<8 | data[1]
Функция для вывода списка нажатых клавиш
// вывод списка нажатых клавиш def getkeys(data): arr=[0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1] str1="click " mask=0x0001 for i in range(1,16): if (mask<<i) & data > 0: str1=str1+str(arr[i])+" " print(str1)
Скачать архив со скриптом python
Загружаем скрипт на плату Node MCU ESP8266, открываем терминал последовательного порта и смотрим вывод нажатых клавиш:
Написание программы установки цвета RGB светодиодной ленты с помощью клавиатуры Capacitive Touch Disk Pad.
В качестве примера использования создадим проект установки цвета RGB светодиодной ленты с помощью клавиатуры Capacitive Touch Disk Pad.
Будем использовать следующие компоненты:
- WIFI NodeMCU ESP8266 – 1;
- Клавиатура Capacitive Touch Disk Pad – 1;
- 16 Keys Capacitive touch TTP229 I2C module – 1;
- RGB-лента – 1;
- Транзистор TIP122 – 3;
- Резистор 1 кОм – 3;
- Блок питания 12В 2A – 1;
- Провода.
Схема подключения
Схема подключения компонентов:
Назначение кнопок клавиатуры Capacitive Touch Disk Pad.
Определим назначение клавиш клавиатуры.
Клавиша |
Цвет |
Яркость |
Клавиша |
Цвет |
Яркость |
2 |
красный |
полная |
9 |
красный |
половинная |
3 |
желтый |
полная |
10 |
желтый |
половинная |
4 |
зеленый |
полная |
11 |
зеленый |
половинная |
5 |
голубой |
полная |
12 |
голубой |
половинная |
6 |
синий |
полная |
13 |
синий |
половинная |
7 |
пурпурный |
полная |
8 |
пурпурный |
половинная |
14 |
белый |
тусклый |
15 |
белый |
яркий |
1 |
нет |
потушено |
|
|
|
Написание скетча на C в Arduino IDE
Приступим к написанию скетча. По I2C получаем два байта из модуля TTP229 - 0x57. Определяем номер нажатой клавиши и из массива colors[][3]
// цвета для led rgb int colors[][3]={{0,0,0},{0,0,0}, {100,0,0},{100,100,0},{0,100,0}, {0,100,100},{0,0,100},{100,0,100}, {255,0,255},{255,0,0},{255,255,0}, {0,255,0},{0,255,255},{0,0,255}, {60,60,60},{150,150,150}};
получаем значения для r, g, b для данной клавиши и отправляем их на шим-выводы Arduino
analogWrite(pwmRED,colors[k][0]); analogWrite(pwmGREEN,colors[k][1]); analogWrite(pwmBLUE,colors[k][2]);
Загружаем скетч на плату Node MCU ESP8266 и проверяем работу программы
Скачать архив со скетчем
Написание скрипта на python
При написании скрипта на python используем библиотеки 2C,Pin,PWM, time.
from machine import I2C,Pin,PWM import time
Создание объектов PWM
pwmRED=PWM(Pin(4)) pwmGREEN=PWM(Pin(14)) pwmBLUE=PWM(Pin(5))
По I2C получаем два байта из модуля TTP229 - 0x57. Определяем номер нажатой клавиши и из массива colors[][3]
// цвета для led rgb
colors=[[0,0,0],[0,0,0], [512,0,0],[512,512,0],[0,512,0], [0,512,512],[0,0,512],[512,0,512], [1023,0,1023],[1023,0,0],[1023,1023,0], [0,1023,0],[0,1023,1023],[0,0,1023], [200,200,200],[500,500,500]]
получаем значения для r, g, b для данной клавиши и отправляем их на шим-выводы Arduino
pwmRED.duty(colors[key][0]) pwmGREEN.duty(colors[key][1]) pwmBLUE.duty(colors[key][2])
Загружаем скрипт на плату и проверяем работу программы.
Скачать архив со скриптом python
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
Микроконтроллер | NodeM ESP8266 | 1 | Поиск в магазине Отрон | |||
Сенсорная Клавиатура | Capacitive Touch Disk Pad | 1 | Поиск в магазине Отрон | |||
Модуль | 16 Keys Capacitive touch TTP229 I2C module | 1 | Поиск в магазине Отрон | |||
Светодиодная лента | RGB | 1 | Поиск в магазине Отрон | |||
Биполярный транзистор | TIP122 | 3 | Поиск в магазине Отрон | |||
Резистор | 1 кОм | 3 | Поиск в магазине Отрон | |||
Блок питания | 12В 2А | 1 | Поиск в магазине Отрон | |||
Скачать список элементов (PDF)
Комментарии (1) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация