Установка цвета RGB светодиодной ленты с помощью клавиатуры Capacitive Touch Disk Pad

Клавиатура 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), который подключается к микроконтроллеру по шине IC.

Подключение согласно схема соединений:

Скетч определения нажатой клавиши на клавиатуре на 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.

Будем использовать следующие компоненты:

  1. WIFI NodeMCU ESP8266  – 1;
  2. Клавиатура Capacitive Touch Disk Pad – 1;
  3. 16 Keys Capacitive touch TTP229 I2C module – 1;
  4. RGB-лента – 1;
  5. Транзистор TIP122 – 3;
  6. Резистор 1 кОм – 3;
  7. Блок питания 12В 2A – 1;
  8. Провода.

 

Схема подключения

Схема подключения компонентов:

 

 

 

 

Назначение кнопок клавиатуры 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