Наливатор с ОЛЕД дисплеем , MP3-плееером, LED подсветкой , шаговиком или сервой.

Наливатор с ОЛЕД дисплеем , MP3-плееером, LED подсветкой , шаговиком или сервой.
ОБЩЕЕ ОПИСАНИЕ.
Наливатор на с дисплеем OLED , MP3 плеером, 3-мя режимами налива , светодиодной подсветкой , рассчитаный на максимум 6 рюмок.

Подробное описание подключения.

Контроллер
Вся конструкция тестировалась на ардуино нано.

nano.jpg

Распределение пинов:

0

Аппаратный сериал, при работе с шаговым двигателем на него подключается кнопка нулевого положения сервы.

1

Аппаратный сериал.

2

A энкодера

3

B энкодера

4

Кнопка энкодера

5

Канал управления адресной светодиодной лентой.

9

Канал управление сервоприводом

10

к RX плеера (через резистор 1к)

11

к TX плеера (через резистор 1к)

12

к BUSY плеера

13

Канал управление помпой

A0-A3

A4,А5
SDA, SCL

А6-А7
свободными остаются пины: 6, 7, 8. При смене сервопривода на шаговый двигатель они будут задействованы, а так же будет задействован пин 0 на концевик нулевого положения. 1-ый пин будет давать возможность выводить в монитор порта отладочные сообщения. Данный вид подключения пока реализован частично, рассчитан на микросхему ULN2003APC, которая часто идет в комплекте с шаговым двигателем 28BYJ-48.









Дисплей
Монохромный дисплей с разрешение 128х64
Подключение I2C, (А4 и А5 )
Скетч гарантированно поддержи
вает 2 дисплея: SH1106 1.3 дюйма и SSD1306 . По идее должен поддерживать графический ЖК дисплей 12864. Библиотека поддерживает и другие дисплеи.
1106.jpg1306.png12864.png
Библиотека U8glib.
В проект добавлены руссифицированные шрифты.
Настройка дисплея осуществляется выбором соотв. строки в файле silver_naliv_20.ino, строки 12-16
C++:
// выбор нужного драйвера дисплея
//U8GLIB_SH1106_128X64 Display(U8G_I2C_OPT_NONE);  // I2C / TWI
U8GLIB_SH1106_128X64 Display(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);  // Dev 0, Fast I2C / TWI
//U8GLIB_SSD1306_128X64 Display(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 Display(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); // Fast I2C / TWI
Распиновка дисплеев в моем случае не совпадает! Будьте внимательны при подключении.

Энкодер.
Для работы используется мини-библиотека encMinim.h, работает без аппаратного прерывания, но вполне надежно. Для управления используется клик кнопкой, повороты вправо и влево, повороты с нажатой кнопкой, а так же удержание кнопки, как отмена.
Опробовано 2 типа энкодеров:
enc2.pngenc1.png
Отличие подключения 1-го от 2-го заключается в подключении +5 в для второго, и некотором отличии в коде.
Изменение в необходимо сделать в файле encMinim.h
Для первого типа:
C++:
 /* pinMode2 (_clk, INPUT);
  pinMode2 (_dt, INPUT);
  pinMode2 (_sw, INPUT);
*/
  pinMode2 (_clk, INPUT_PULLUP);
  pinMode2 (_dt, INPUT_PULLUP);
  pinMode2 (_sw, INPUT_PULLUP);
Для второго типа:
C++:
  pinMode2 (_clk, INPUT);
  pinMode2 (_dt, INPUT);
  pinMode2 (_sw, INPUT);
  /*
  pinMode2 (_clk, INPUT_PULLUP);
  pinMode2 (_dt, INPUT_PULLUP);
  pinMode2 (_sw, INPUT_PULLUP);
  */

MP3 - плеер
В качестве плеера используется DFPlayer , он же MP3-TF-16P
DFPlayer.png
У плеера есть встроенный усилитель, но звук от него довольно тихий. Так же есть возможность вывести часть управления на внешние кнопки миную контроллер, но я не увидел в этом необходимости.
Подключение питания к 5 вольтам.
Подключение к ардуино по 3-м (!) проводам. RX , TX и BUSY. Два первых провода передают и получают данные к/от ардуино по программному serual- порту, такие как : запуск и остановка треков, изменение громкости, получение кол-ва треков на мини-сд-карте. Эти провода надо подключать через резистор номиналом 1-2 килоОма. Третий провод предназначен для получения информации о состоянии плеера: идет воспроизведение или нет. В принципе такую информацию можно получить через команду по Serial, но это может подвешивать работу всего устройства, в то время как чтение порта практически ни на что не влияет.
Структура карты:
На карте должно быть 2 подкаталога "01" и "02". Каталог "01" содержит музыкальные треки для фоновой мелодии, а "02" содержит тосты для воспроизведения налива. В принципе названия могут быть любыми, главное что бы каталог с музыкальными фрагментами для фоновой мелодии были в начале по алфавиту. При изменении кол-ва музыкальных треков на карте при включении наливатора будет запущена конфигурационная процедура настройки, в которой следует указать кол-во мелодий для фона, все остальные скетч будет считать тостами.

ВАЖНО! Папка с музыкой должна копироваться или создаваться на карте 1-ой! Именно треки в 1-ой созданной папке будут считаться музыкой.
В отдельном посте опубликую ссылки на свои мелодии и тосты, с текстовыми описаниями. Попробуем сделать обмен тостами.
Библиотека для плеера

Подсветка мест для налива
Для подсветки мест используется адресная светодиодная лента и библиотека FastLED
LED.png
Можно использовать как 1 отдельный светодиод на место, так и вот такие кольца, а так же огрызки ленты по несколько светодиодов.
Ограничение одно - на всех местах для налива должно быть одинаковое число светодиодов.
Файл silver_naliv_20.ino
Общее число светодиодов рассчитывается как число светодиодов на 1 место помноженное на число мест.
В данном примере используется по 1-му светодиоду на место.
C++:
#define NUM_LEDS  LEDs_per_Drink*max_DrinkCount // Кол-во диодов (количество светодиодов на рюмку умножить на число рюмок, математика, 3-ий класс
Строки 42-45
C++:
#define max_DrinkCount 5               // Максимальное кол-во рюмок, при подключении на аналоговые пины максимум 6 рюмок при нано
#define LEDs_per_Drink 1               // Число светидиодов на рюмку, считается что под рюмкой такое число лампочек
Номер 1-го светодиода для каждого мест настраивается отдельно в файле drink_place.ino
C++:
// номер 1-го светодиода для каждой рюмки.  Могут быть не по порядку
  drinks_array[0].N_LED = 32768; // это место парковки и оно не подсвечивается !
  drinks_array[1].N_LED = 0;
  drinks_array[2].N_LED = 1;
  drinks_array[3].N_LED = 2;
  drinks_array[4].N_LED = 3;
  drinks_array[5].N_LED = 4;
В данном примере используется по 12 светодиодов на место.
C++:
#define max_DrinkCount 5               // Максимальное кол-во рюмок, при подключении на аналоговые пины максимум 6 рюмок при нано
#define LEDs_per_Drink 12               // Число светидиодов на рюмку, считается что под рюмкой такое число лампочек
C++:
// номер 1-го светодиода для каждой рюмки.  Могут быть не по порядку
  drinks_array[0].N_LED = 32768;
  drinks_array[1].N_LED = 0;
  drinks_array[2].N_LED = 12;
  drinks_array[3].N_LED = 24;
  drinks_array[4].N_LED = 36;
  drinks_array[5].N_LED = 48;

Подключение помпы и сервопривода
Подключение помпы и сервопривода аналогично проекту Алекса , управлять помпой можно не только драйвером, но и использую реле , транзистор или готовый мосфет-ключ.

Дополнительные библиотеки
DIO2 - для более быстрого доступа к цифровым пинам.
EEPROMex - расширенное управление чтением и записью в EEPROM

Подключение шагового двигателя.
Для подключения шагового двигателя я предлагаю такой вариант:
входы 6 7 8 9 подключаются к in1 in2 in3 in4 платы с микросхемой ULN2003A.
на моторе.png
stepper.jpg
Собирается все просто. К микро кнопке (такая же как стоит на ресете ардуино нано) подпаиваются 2 провода, кнопка вставляется в 1-ую деталь, вторая подпирает ее и изолирует от мотора. Носик надевается на вал двигателя. Его надо надежно закрепить так, что бы кнопка зажималась при вращении и он не мешал движению. Сверху носика еще будет достаточно места, что бы на валу закрепить что то.
на мотор.png крышка.png носик.png
Ссылка на STL
Рыская на просторах Али нашел такое описание данного двигателя. шаг получается 5,625/64, т.е. 4096 шагов на оборот. В скетче изначально использовалось почему то 4076 шагов на оборот (не мое, брал из скетча). Число надо изменить на верное! Думаю сделать это каждый может самостоятельно.
step.png

Варианты корпусов:

Описание сборки мной на макетке, спустя некоторое время
 
Изменено:

Комментарии

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Ок. Другой тест. вынуть карту совсем - плеер должен стартовать выключенным. Проверить корректность работы без карты. Если работает, то проблема с плеером , если нет, то плеер тут не причем.
Меню выбора кол-ва муз. треков должно вызываться, когда на карте меняется общее число муз. треков.

Какое то время назад были правки. Скачана последняя версия ?
 

Rexth

✩✩✩✩✩✩✩
25 Апр 2020
9
0
Меню выбора кол-ва муз. треков должно вызываться, когда на карте меняется общее число муз. треков.
общее количество mp3 файлов в обоих папках 01 и 02? не вызывается :(
Скачана последняя версия ?
Прошивку скачал 25 апреля

у меня горсть этих плееров :) завтра попробую другой припаять
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
да, т.е. общее кол-во муз. файлов на всей флешке.
если при изменении общего числа не вызывается меню, то можно попробовать вот что:
Изменить кол-во файлов. обязательно вставить флешку.
в файле eeprom_proc.ino изменить номер версии в 1-ой строке
#define CUR_VER_N 125
на любой другой. Это вызовет перезапись параметров в память из дефолтных. И будет сличение кол-ва файлов на флешке с тем, что записано в память.
Потом версию можно будет вернуть обратно, но не обязательно



25 - уже последняя версяия.
 

Rexth

✩✩✩✩✩✩✩
25 Апр 2020
9
0
я правильно понимаю, что в папке 01 должны лежать файлы музыки 001, 002, 003 и тд, а в папке 02 файлы тостов 001,002,003,004,005 и тд?
а в строчках 99 и 100 кода:
uint16_t MAX_FON_SOUND = 4; // максимальный номер фоновой музыки (1-3) EEPROM
uint16_t MAX_SOUND = 22; // максимальное число всех воспроизводимых звуков. при этом тосты будут треки 4-8 EEPROM
4 это количество файлов в папке 01, 22 - количество файлов в обоих папках суммарно?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Да, все верно, есть общее число файлов, которое на флешке и треки которые в 1-ой паке это муз. треки, которые считаются фоновой музыкой.
В принципе как называются треки не очень важно, главное что бы при определении треков по алфавиту музыка была 1-ой. Поэтому она и в каталоге 01. А так можно все скопом записать если музыка будет 001 002 003 , а тосты к примеру t001 t002 и т.д.
Названия файлов у меня немного другие, но это не должно влиять на порядок.

И все таки надо посмотреть налив без тостов. можно просто в настройках их выключить.
 

Rexth

✩✩✩✩✩✩✩
25 Апр 2020
9
0
Проблема решилась заменой мп3 плеера.
mp31.jpg
Слева - говно, справа - норм.
Но я так и не смог заставить его различать музыку и тосты. Он упорно воспроизводит четыре тоста из папки 02 вместо музыки.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Во как.. 79 пост посмотри , попробуй сменить версию. На крайний случай напишу что поменять в коде, что бы вызвать процедуру принудительно
 

Rexth

✩✩✩✩✩✩✩
25 Апр 2020
9
0
меню вызывается, общее количество файлов в меню определяется правильно. выбираю 4 (в папке 01 четыре музыкальных файла). Вместо музыки крутит четыре тоста из папки 02. в файле eeprom_proc.ino номер версии в 1-ой строке менял, не помогает
 

Rexth

✩✩✩✩✩✩✩
25 Апр 2020
9
0
Переформатировал SD карту, и сделал следующее:
В папке 001 музыкальные файлы 001, 002, 003, 004, 005, 006, 007
В папке 002 файлы тостов 008, 009, 010 и тд.
Вроде заработало.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Да, все верно, так должно сработать, но тогда непонятно как добавлять музыку. Придется по 2 файла переименовывать.
У меня названия чуть другие. Помимо номеров еще буквы присутствуют, но по алфавиту это не сортируется. Возможно сортировка по времени записи, так сказать в порядке добавления... но я ведь у себя спокойно добавлял музыку после тостов и все было ок.
Твои файлы сегодня попробую, поэкспериментирую
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Я разобрался с ситуацией, инструкцию по формированию карты добавлю в 1-ый пост. Для того что бы такого не было надо строго соблюдать порядок создания или копирования. Сначала создать папку с музыкой, потом папку с тостами. Или сначала скопировать папку с музыкой потом отдельно с тостами. И уже свободно можно добавлять музыку в 1-ую папку.
 

ЫфЫЫ

✩✩✩✩✩✩✩
25 Апр 2020
5
0
никто не сталкивался с проблемой: не хочет работать DFPlayer ((
подключение десять раз проверил... все правильно 100%
на RX TX резисторы есть
но не видится сам плеер наливатором
при этом, если вручную замкнуть IO_1 на землю, то mp3 с карты начинают проигрываться нормально
(а программно никак не хочет)
может где в коде что-то нужно поправить?
 

ЫфЫЫ

✩✩✩✩✩✩✩
25 Апр 2020
5
0
ничего не говорит.. так же не работает в схеме

подключил только один плеер к другой плате (UNO) - трещит, но работает
черт, у меня именно такая ((((
Как выяснилось на некоторых платах вот такой разводки (задняя сторона) не получилось толком запустить работу с MP3 плеером. Плеер работал только при подключении по USB . Замена платы решило проблему. При этом тестовый пример работает. Т.к. платы у меня такой нет, то понять в чем проблема не получилось.
Посмотреть вложение 12399

ЗЫ, Добавлена пара новых тостов.
 

Roman-RV

★✩✩✩✩✩✩
21 Июн 2019
52
15
46
ничего не говорит.. так же не работает в схеме
Поменяйте местами RX и TX на плеере, на первой странице они вроде не верно указаны в таблице пинов. У совтового сериала в скетче 10 пин ардуино это RX значит подключаем его к TX плеера, 11 пин ардуины это TX , значит его на RX плеера.
 

ЫфЫЫ

✩✩✩✩✩✩✩
25 Апр 2020
5
0
Поменяйте местами RX и TX на плеере, на первой странице они вроде не верно указаны в таблице пинов. У совтового сериала в скетче 10 пин ардуино это RX значит подключаем его к TX плеера, 11 пин ардуины это TX , значит его на RX плеера.
Спасибо, с трудом, но заработало
поменял RX и TX местами
правда в схеме плеер не работает сразу после подачи питания...
только при нажатии на сброс на ардуино (только после сброса начинает его видеть и работать нормально)
в примере вроде запускался сразу
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Теперь надо настройку сделать треков сделать. Поменяй кол-во треков на карте.
А вообще странно. именно по этой схеме я подключал и на моей плате все работало.
 
  • Лойс +1
Реакции: vitsom18

djsasmaster

✩✩✩✩✩✩✩
23 Май 2020
2
1
Как выяснилось на некоторых платах вот такой разводки (задняя сторона) не получилось толком запустить работу с MP3 плеером. Плеер работал только при подключении по USB . Замена платы решило проблему. При этом тестовый пример работает. Т.к. платы у меня такой нет, то понять в чем проблема не получилось.
Посмотреть вложение 12399

ЗЫ, Добавлена пара новых тостов.
У Вас ДИОД от USB до 5 вольт Погорел - Поменяйте! Под разъёмом USB.
В Модуле MP3 ООчень прожёрливый Усилитель.
 
  • Лойс +1
Реакции: Gridzilla

TuMoH

✩✩✩✩✩✩✩
9 Дек 2019
51
3
Старик Похабыч
поставил вашу прошивку на наливатор. схема отличается от вашей, сделал переназначение пинов в прошивке. почему то не хочет работать автоматический режим. ручной режим и режим игра работают нормально. собрал на макетке по вашей схеме из других комплектующих, проблема та же - в авторежиме рюмки видит но ничего не происходит и через несколько секунд выходит в основное меню. В чем может быть проблема?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
По порядку
1) При установке стаканов меняются ли цвета светодиодов ?
2) Выбирается ли объем жидкости ?
3) После выбора надо кликнуть энкодером для запуска.