Найти в Дзене
Дневник электронщика

Добавление кнопок к радиоприёмнику "August-1"

Сегодня, по просьбе подписчика, я расскажу о том, как добавить кнопки к радиоприёмнику "August-1". Для добавления кнопок, необходимо изготовить небольшую плату по схеме, которая приведена выше. Рекомендуется использовать для уменьшения размеров платы тактовые кнопки и SMD-резисторы. К основной плате от платы с кнопками должны подходить три провода: 1-й провод должен подходить к контакту питания 3V3 ESP8266, 2-й провод должен подходить к контакту A0 ESP8266, а 3-й провод к любому контакту GND на основной плате. Затем нужно внести изменения в прошивку приёмника и перепрошить его.
Для этого нужно сделать следующее: В участке кода, где описываются переменные необходимо добавить следующие переменные: byte Flag_Button; //флаг нажатия любой из кнопок
uint32_t Time_Tact; //переменная таймера на millis(), обрабатывающего кнопки
uint16_t ADC_Data; //переменная принятого значения АЦП Также в функции setup() необходимо добавить следующую строку: pinMode(A0, INPUT); //инициализаци
Схема доработки приёмника
Схема доработки приёмника

Сегодня, по просьбе подписчика, я расскажу о том, как добавить кнопки к радиоприёмнику "August-1".

Для добавления кнопок, необходимо изготовить небольшую плату по схеме, которая приведена выше. Рекомендуется использовать для уменьшения размеров платы тактовые кнопки и SMD-резисторы. К основной плате от платы с кнопками должны подходить три провода: 1-й провод должен подходить к контакту питания 3V3 ESP8266, 2-й провод должен подходить к контакту A0 ESP8266, а 3-й провод к любому контакту GND на основной плате.

Схема радиоприёмника "August-1"
Схема радиоприёмника "August-1"

Затем нужно внести изменения в прошивку приёмника и перепрошить его.
Для этого нужно сделать следующее:

В участке кода, где описываются переменные необходимо добавить следующие переменные:

byte Flag_Button; //флаг нажатия любой из кнопок
uint32_t Time_Tact; //переменная таймера на millis(), обрабатывающего кнопки
uint16_t ADC_Data; //переменная принятого значения АЦП

Также в функции setup() необходимо добавить следующую строку:

pinMode(A0, INPUT); //инициализация вывода АЦП

Затем необходимо перед функцией setup() добавить код следующей функции работы с кнопками:

void Button_Process(){//-----------------Функция работы с кнопками-----------------
if(millis() - Time_Tact > 200){ //обработка кнопок каждые 200 мс

Time_Tact = millis(); //сброс таймера

ADC_Data = analogRead(A0); //запись значения из АЦП

if(ADC_Data > 793){ //если напряжение в нормальном состоянии
Flag_Button = 0; //сбросить флаг нажатия кнопок
}
else{ //иначе
if(ADC_Data > 725){ //если нажата кнопка уменьшения громкости
if(Flag_Button == 0){ //если флаг нажатия кнопки равен 0
Minus_Req(); //произвести уменьшение громкости
Flag_Button = 1; //присвоить флаг единице
}
}
else{ //иначе
if(ADC_Data > 597){ //если нажата кнопка увеличения громкости
if(Flag_Button == 0){ //если флаг нажатия кнопки равен 0
Plus_Req(); //произвести увеличение громкости
Flag_Button = 1; //присвоить флаг единице
}
}
else{ //иначе
if(ADC_Data > 256){ //если нажата кнопка переключения на
//предыдущую станцию
if(Flag_Button == 0){ //если флаг нажатия кнопки равен 0
Back_Req(); //произвести переключение на предыдущую
//станцию
Flag_Button = 1; //присвоить флаг единице
}
}
else{ //иначе
if(ADC_Data > 256){ //если нажата кнопка переключения на
//следующую станцию
if(Flag_Button == 0){ //если флаг нажатия кнопки равен 0
Next_Req(); //произвести переключение на следующую
//станцию
Flag_Button = 1; //присвоить флаг единице
}
}
}
}
}
}

}
}//----------------------------Конец функции работы с кнопками----------------------

И, соответственно, добавить выше описанную функцию в функцию loop():

Button_Process(); //обработка кнопок

После добавления изменений в прошивку требуется перепрошить приёмник.

Хочу прокомментировать использование данной доработки:

1) Без подключения к точке доступа WiFi приёмник использовать будет невозможно. Данное изделие разрабатывалось как радиоприёмник
УКВ-диапазона, которым можно управлять через web-интерфейс или приложение по каналу WiFi. Кнопки такому приёмнику просто не нужны, иначе данный проект не будет отличатся от других проектов на просторе интернета. Если же нужен приёмник без web-интерфейса и только с кнопками, то просто комментируется все части кода, которые связаны с web-интерфейсом.

2) Кнопки можно нажимать только по одной. Это связано с тем. что код и схема рассчитаны только на нажатие одной из кнопок.

3) Данными кнопками возможно без багов использовать либо только в браузере, либо только без браузера одними кнопками, при всё также подключенной точке доступа. Приложением без багов пользоваться не получится (не будет отображаться текущая станция). Это уже связано с устройством самого приложения, управляющего приёмником, так как там происходит не парсинг web-страницы и индикация текущей станции, а индикация текущей станции, частоты которых дополнительно записаны в память приложения. Частоты высвечиваются поочерёдно при нажатии кнопок переключения станций от стартовой позиции, которая устанавливается при запуске приёмника.

При всех выше перечисленных исключениях и недостатков, которые связаны с тем, что приёмник изначально не рассчитывался на использование в его конструкции кнопок, ими можно спокойно пользоваться, что добавляет приёмнику ещё больше функциональности, особенно, когда необходимо использовать приёмник совместно с роутером, а переключить станции необходимо в данный момент без использования смартфона.

Также в будущем планируется выкатить вторую версию прошивки и приложения для данного радиоприёмника, где будет улучшен его интерфейс и устранены текущие баги. Также пишите, нужна ли версия прошивки, где будет отключен web-интерфейс и управление по WiFi, чтобы была возможность управления только через кнопки; или добавить возможность отключения web-интерфейса и управления по WiFi в новой версии прошивки.

А так всем больше благ и хорошего настроения!
До новых встреч!