Контроллер пивоварни на esp8266
gol_avto
Доцент
Москва-Серпухов-Анапа
1.4K 501
Отв.340 18 Февр. 19, 07:21
Есть бинарники 0.43, надо?
Отв.341 18 Февр. 19, 09:09
Бинарники и на git лежать. Нужны исходники.
Sany531
Кандидат наук
Саяногорск
397 137
Отв.342 18 Февр. 19, 17:22
Файлы не совсем исходники, надо проверить кнопки и настройки в вини,модифицированы могут быть, ну и адреса PCF, а так все оригинальное
Отв.343 22 Февр. 19, 21:24
Спасибо всем кто откликнулся на мою просьбу.
Да, уже несколько дней в исходниках лежит версия 0.4.7
Ни на сайте обновлений, ни в готовых bin файлах нет файлов для прошивки.
Да, уже несколько дней в исходниках лежит версия 0.4.7
Ни на сайте обновлений, ни в готовых bin файлах нет файлов для прошивки.
fate13
Новичок
Белореченск
5
Отв.344 10 Марта 19, 12:23
Подскажите как настроить ПИД?
захожу в man>удерживаю heat> выскакивает tune pid > соглашаюсь проходит 5-6 минут нагрев и все сбрасывается, не могу выставить температуру до которой вести нагрев.
В видео с 15 страницы от Sany531 написано авто настройка длится долго.
захожу в man>удерживаю heat> выскакивает tune pid > соглашаюсь проходит 5-6 минут нагрев и все сбрасывается, не могу выставить температуру до которой вести нагрев.
В видео с 15 страницы от Sany531 написано авто настройка длится долго.
ShlissFaust
Новичок
Шлиссельбург
9 4
Отв.346 02 Апр. 19, 13:22
Получил плату контроллера, получилось залить прошивку через PlatformIO. При подаче питания появляется точка доступа hm, но она закрыта паролем... при попытке подключения его спрашивает... соответсвенно дальше я никак не могу пройти. Вроде писали, что точка доступа должна быть открытой, но у мня почему-то это не так. Кто-то сталкивался с этим?
chst1000
Доктор наук
Москва
639 520
Отв.347 02 Апр. 19, 16:14
Такой не подходит ?
rdwhahb!
rdwhahb!
ShlissFaust
Новичок
Шлиссельбург
9 4
Отв.348 02 Апр. 19, 16:38, через 25 мин
Да, подошел, спасибо!
Можно узнать откуда вы его взяли? Что-то я как не копался в мануале от Vito, так и не нашел информации об этом.
Можно узнать откуда вы его взяли? Что-то я как не копался в мануале от Vito, так и не нашел информации об этом.
chst1000
Доктор наук
Москва
639 520
Отв.349 02 Апр. 19, 16:44, через 6 мин
Можно узнать откуда вы его взяли?ShlissFaust, 02 Апр. 19, 16:38Где то в обсуждениях , толи в блоге у Vito толи на гитхабе.
Добавлено через 14ч. 45мин.:
Вспомнил , в исходниках , в файле config.h
150 // http://bm.local:8008/update
151 #define SYSTEM_UPDATE_PATH "/systemupdate"
152 #define Default_USERNAME "brewmaniac"
153 #define Default_PASSWORD "rdwhahb!"
154 #define Default_HOSTNAME "bm"
killboss
Студент
Пермский край
33 6
Отв.350 03 Апр. 19, 07:32
Да, подошел, спасибо!
Можно узнать откуда вы его взяли? Что-то я как не копался в мануале от Vito, так и не нашел информации об этом.ShlissFaust, 02 Апр. 19, 16:38
Страница 13 в теме.
[сообщение #13350850]
ShlissFaust
Новичок
Шлиссельбург
9 4
Отв.351 04 Апр. 19, 13:12
Разбираюсь с подключением аппаратной клавиатуры. Сейчас, кажется все заработало, но есть вопросы, может кому будет полезна следующая информация.
Плата Wemos D1 R1
т.к. у меня полноразмерная версия платы Wemos D1 R1, то решил клавиатуру подключать, как это советовалось с этой теме прямо к цифровым портам. Это получилось не сразу.
Сейчас клавиатура подключена и работает на портах D0(GPIO3), D1(GPIO1), D3(GPIO5), D4(GPIO4). для того, чтобы подключение заработало в файле pins.h внес изменения со строки 42:
#if BUTTON_USE_EXT !=true
#define ButtonUpPin 1
#define ButtonDownPin 3
#define ButtonStartPin 4
#define ButtonEnterPin 5
До этого в строке 19 указал #define BUTTON_USE_EXT false, чтобы уловный оператор сразу брал значения из первого блока значений, иначе изменения, как я понял нужно вносить во второй аналогичный блок файла pins.h c 49 строчки.
Значение пинов брал из схемы, которую нашел в интернете для моей платы. Прикладываю эту схему с тем как подключено у меня, может так же будет кому-то полезно.
Проверил пищалку, насос и ТЭН, подключил и корректно показывают 2 термодатчика... Но остались вопросы:
Пробовал подключить кнопки на порты D10(GPIO15), D9(GPIO2), D8(GPPIO0), D7(GPIO13). Соответственно в pins.h были такие строчки:
#define ButtonUpPin 13
#define ButtonDownPin 0
#define ButtonStartPin 2
#define ButtonEnterPin 15
В этом варианте кнопки не заработали совсем... я так и не понял почему, но при нажатии на любую кнопку каких-либо реакций от контроллера не было (кажется только на D9 диод на плате мигал).
Вопрос: почему так? что сделано не так?
Еще вопрос:
к данной системе хочу подключить поплавковый датчик уровня, для создания K-RIMS пивоварни.
На какой порт я могу его подключить? например у меня свободен D12(GPIO12), этот подойдет?
Если да, то, согласно информации от Vito, если я правильно понял, нужно:
в файле конфигурации проекта в блоке настроек добавить строчку:
-DEnableLevelSensor=true
а в файле pins.h в строчке с 56 указать:
#if EnableLevelSensor
#define LevelSensorOnIoExpander false
#if LevelSensorOnIoExpander
#define LevelSensorIOExpPin 32 //P5
#else
#define LevelSensorPin 12
#endif
и в строке 213 этого же файла указать:
bool isWaterLevelFull(void){
return digitalRead(LevelSensorPin) != 0;
Насколько я понял, здесь есть те, кто использует данный датчик, прошу посмотреть все ли я првильно понимаю и достаточно ли данных изменений, чтобы система заработала.
P/S/ я еще не получил сам датчик, как придет, попробую, отпишусь по результатам.
Плата Wemos D1 R1
т.к. у меня полноразмерная версия платы Wemos D1 R1, то решил клавиатуру подключать, как это советовалось с этой теме прямо к цифровым портам. Это получилось не сразу.
Сейчас клавиатура подключена и работает на портах D0(GPIO3), D1(GPIO1), D3(GPIO5), D4(GPIO4). для того, чтобы подключение заработало в файле pins.h внес изменения со строки 42:
#if BUTTON_USE_EXT !=true
#define ButtonUpPin 1
#define ButtonDownPin 3
#define ButtonStartPin 4
#define ButtonEnterPin 5
До этого в строке 19 указал #define BUTTON_USE_EXT false, чтобы уловный оператор сразу брал значения из первого блока значений, иначе изменения, как я понял нужно вносить во второй аналогичный блок файла pins.h c 49 строчки.
Значение пинов брал из схемы, которую нашел в интернете для моей платы. Прикладываю эту схему с тем как подключено у меня, может так же будет кому-то полезно.
Проверил пищалку, насос и ТЭН, подключил и корректно показывают 2 термодатчика... Но остались вопросы:
Пробовал подключить кнопки на порты D10(GPIO15), D9(GPIO2), D8(GPPIO0), D7(GPIO13). Соответственно в pins.h были такие строчки:
#define ButtonUpPin 13
#define ButtonDownPin 0
#define ButtonStartPin 2
#define ButtonEnterPin 15
В этом варианте кнопки не заработали совсем... я так и не понял почему, но при нажатии на любую кнопку каких-либо реакций от контроллера не было (кажется только на D9 диод на плате мигал).
Вопрос: почему так? что сделано не так?
Еще вопрос:
к данной системе хочу подключить поплавковый датчик уровня, для создания K-RIMS пивоварни.
На какой порт я могу его подключить? например у меня свободен D12(GPIO12), этот подойдет?
Если да, то, согласно информации от Vito, если я правильно понял, нужно:
в файле конфигурации проекта в блоке настроек добавить строчку:
-DEnableLevelSensor=true
а в файле pins.h в строчке с 56 указать:
#if EnableLevelSensor
#define LevelSensorOnIoExpander false
#if LevelSensorOnIoExpander
#define LevelSensorIOExpPin 32 //P5
#else
#define LevelSensorPin 12
#endif
и в строке 213 этого же файла указать:
bool isWaterLevelFull(void){
return digitalRead(LevelSensorPin) != 0;
Насколько я понял, здесь есть те, кто использует данный датчик, прошу посмотреть все ли я првильно понимаю и достаточно ли данных изменений, чтобы система заработала.
P/S/ я еще не получил сам датчик, как придет, попробую, отпишусь по результатам.
Отв.352 05 Апр. 19, 17:49
кнопки не заработали потому что не то правилось
Могу быть не прав поскольку
С датчиком уровня вносим правки в platformio.ini b и в файле pins.h
Не рекомендуется использование D3/D4/D15. Если датчик будет подключен, то контроллер не стартанет. Выходом является подключение датчика при уже включенном контроллере. В блоге же все написано. Или использовать датчик нормально открытый.
Самый простой способ это взять рекоменованный Wemos D1 mini и собрать все на основе его. Там очень легко запутаться в пинах. Или надо, все же, понимать что ты делаешь.
Экран работает при таком подключении? А то он у тебя на тех же GPIO висит что и кнопки.
#define BUTTON_USE_EXT true // меняем на false
#if BUTTON_USE_EXT !=true
#define ButtonUpPin NODEMCU_PIN_D3 //пишем свой порт в таком же формате NODEMCU_PIN_D10
#define ButtonDownPin NODEMCU_PIN_D4 //пишем свой порт в таком же формате NODEMCU_PIN_D9
#define ButtonStartPin NODEMCU_PIN_D5 //пишем свой порт в таком же формате NODEMCU_PIN_D8
#define ButtonEnterPin NODEMCU_PIN_D7 //пишем свой порт в таком же формате NODEMCU_PIN_D7
#else
#define ButtonUpPin 2 // P1
#define ButtonDownPin 1 // p0 NODEMCU_PIN_D4
#define ButtonStartPin 8 //P3 NODEMCU_PIN_D5
#define ButtonEnterPin 4 //P2 NODEMCU_PIN_D6
#endif;
Но D8 и D7 заняты ТЭНами, соответственно и их надо править. Да и то это будет верно если правильно взяты названия пинов.Могу быть не прав поскольку
#define NODEMCU_PIN_A0 17
#define NODEMCU_PIN_D0 16 Buzzer
#define NODEMCU_PIN_D1 5 [I/O]SCL // I2C
#define NODEMCU_PIN_D2 4 [I/O]SDA // I2C
#define NODEMCU_PIN_D3 0
#define NODEMCU_PIN_D4 2
#define NODEMCU_PIN_D5 14 Pump
#define NODEMCU_PIN_D6 12 Sensor
#define NODEMCU_PIN_D7 13 Heater
#define NODEMCU_PIN_D8 15 AuxHeater
Не совпадает с распиновкой на твоей плате, с ней дело не имел. Насос, датчики температуры и ТЭН у тебя попали по GPIO. Возможно и этот кусок надо править. Или закрывать этот кусок комментариями и везде указыватья явный GPIO.С датчиком уровня вносим правки в platformio.ini b и в файле pins.h
#if EnableLevelSensor
#define LevelSensorOnIoExpander false
#if LevelSensorOnIoExpander
#define LevelSensorIOExpPin 32 //P5
#else
#define LevelSensorPin NODEMCU_PIN_D4 //Указываем свой порт в формате NODEMCU_PIN_DХ
#endif
И больше ничего не надо трогать.Не рекомендуется использование D3/D4/D15. Если датчик будет подключен, то контроллер не стартанет. Выходом является подключение датчика при уже включенном контроллере. В блоге же все написано. Или использовать датчик нормально открытый.
Самый простой способ это взять рекоменованный Wemos D1 mini и собрать все на основе его. Там очень легко запутаться в пинах. Или надо, все же, понимать что ты делаешь.
Экран работает при таком подключении? А то он у тебя на тех же GPIO висит что и кнопки.
ShlissFaust
Новичок
Шлиссельбург
9 4
Отв.353 05 Апр. 19, 19:54
Кнопки и экран работают, но было пару раз, что по нажатию кнопок по экрану начинали бежать иероглифы. Я грешил на то, что подключено проводками на макетной плате. Возможно вы правы и это проблемы подключения.. буду дальше пытаться разобраться. Понимание того что делаю есть, но не полное... стараюсь разобраться
Добавлено через 3ч. 5мин.:
Видимо все же, надо переносить подключенные кнопок клавиатуры с D3(GPIO5), D4(GPIO4) на другие свободные GPIO порты. Их получается гораздо меньше чем цифровых выходов(D1-D15), на которых, оказывается, дублируются GPIO порты. Свободных портов GPIO на этой плате всего 5 (GPIO1 и GPIO3 - на них у меня подключены 2 кнопки и они нормально работают; GPIO 0, GPIO2, GPIO15- на этот порт у Vito подключится 2-й нагреватель, который я не планирую использовать). Как я и писал ранее, я уже подключал кнопки к портам GPIO и GPIO2, но что-то не пошло, контроллер никак не реагировал на их нажатие, возможно это потому, что у каждого из этих портов "10kPullUP"?
Если эти порты нельзя использовать для подключения кнопок, то, получается, с данной платой нужно все же использовать расширитель портов на шине I2C, чтобы корректно подключить клавиатуру?
Мои невеликие познания в С++ программировани все же позволяют утверждать, что запись #define NODEMCU_PIN_XX Y всего лишь определяет переменную NODEMCU_PIN_XX, присваивая ей конкретное значение - номер пина (Y) и можно использовать как эту переменную, так и сам номер, это равнозначно.
Блок определений переменных (#define...) служит лишь для того, чтобы можно было под разные платы менять пины цифровых портов (D0-D15) без того, чтобы переписывать всю программу, т.е. вместо номера пина в программе используется переменная, которая определяется 1 раз, а цифра, которая стоит после #define NODEMCU_PIN_XX как раз и есть номер пина в среде Arduino для этой платы ESP8266.
Соответсвенно, для того, чтобы эта программа работала на других платах ESP8266 (отличных от той, что изначально в проекте автора) нужно либо указать для каждого выхода D -пин именно для вашей платы и подключать всю периферию в соответствии с номерами цифровых портов (D0-D15) (эту информацию можно без особого труда найти для конкретной ревизии платы в интернете (для своей я выкладывал в сообщении выше) и как я понял номер пина в Arduino системе здесь фактически совпадает с номером порта GPIO) или найти какому GPIO соответствует выход D вашей платы (у меня это подписано с обратной стороны платы) и подключать периферию по этим значениям (именно так я и делал и все работает как положено)
Да, еще, нельзя в программе просто взять и написать #define ButtonUpPin NODEMCU_PIN_D10 или D12 или любой номер отличный от 0-8 без того, чтобы ранее не была определена переменная NODEMCU_PIN_D10. Именно в секции #define ей должно быть присвоено конкретное значение, которое потом будет использоваться в программе. Иначе компилятор выдаст ошибку, что переменная не определена.
P/S/ Плата осталась на работе, поэтому дальнейшие эксперименты с ней отложены до понедельника.
P/P/S Если есть соображения на какие порты на этой конкретной плате можно безболезненно подключить клавиатуру (и какие конкретно настройки при таком подключении должны быть в файле pins.h) - прошу писать, так же прошу писать, если в моих рассуждениях есть явные ошибки, хочется понимания.
P/P/P/S С программированием плат на этом контроллере сталкиваюсь впервые, до этого имел некоторый опыт программирования Arduino UNO плат, там с портами путаницы гораздо меньше, поэтому если мои рассуждения где-то откровенно дилетантские, прошу отнестись с терпением и если это возможно объяснить где и в чем я ошибаюсь.
Добавлено через 3ч. 5мин.:
А то он у тебя на тех же GPIO висит что и кнопки.EroshKA, 05 Апр. 19, 17:49Похоже вы правы в том, что вешать на одни и те же порты GPIO экран и кнопки это нехорошо, хотя, повторюсь, все работает и довольно стабильно, но, скорее всего, глюки экрана, которые я все же пару раз наблюдал появлялись именно из-за этого.
Видимо все же, надо переносить подключенные кнопок клавиатуры с D3(GPIO5), D4(GPIO4) на другие свободные GPIO порты. Их получается гораздо меньше чем цифровых выходов(D1-D15), на которых, оказывается, дублируются GPIO порты. Свободных портов GPIO на этой плате всего 5 (GPIO1 и GPIO3 - на них у меня подключены 2 кнопки и они нормально работают; GPIO 0, GPIO2, GPIO15- на этот порт у Vito подключится 2-й нагреватель, который я не планирую использовать). Как я и писал ранее, я уже подключал кнопки к портам GPIO и GPIO2, но что-то не пошло, контроллер никак не реагировал на их нажатие, возможно это потому, что у каждого из этих портов "10kPullUP"?
Если эти порты нельзя использовать для подключения кнопок, то, получается, с данной платой нужно все же использовать расширитель портов на шине I2C, чтобы корректно подключить клавиатуру?
пишем свой порт в таком же формате NODEMCU_PIN_D10EroshKA, 05 Апр. 19, 17:49Еще я не совсем понимаю почему вы настаиваете на написании портов в формате NODEMCU_PIN_XX, а не просто цифр со значениями пинов.
Мои невеликие познания в С++ программировани все же позволяют утверждать, что запись #define NODEMCU_PIN_XX Y всего лишь определяет переменную NODEMCU_PIN_XX, присваивая ей конкретное значение - номер пина (Y) и можно использовать как эту переменную, так и сам номер, это равнозначно.
Блок определений переменных (#define...) служит лишь для того, чтобы можно было под разные платы менять пины цифровых портов (D0-D15) без того, чтобы переписывать всю программу, т.е. вместо номера пина в программе используется переменная, которая определяется 1 раз, а цифра, которая стоит после #define NODEMCU_PIN_XX как раз и есть номер пина в среде Arduino для этой платы ESP8266.
Соответсвенно, для того, чтобы эта программа работала на других платах ESP8266 (отличных от той, что изначально в проекте автора) нужно либо указать для каждого выхода D -пин именно для вашей платы и подключать всю периферию в соответствии с номерами цифровых портов (D0-D15) (эту информацию можно без особого труда найти для конкретной ревизии платы в интернете (для своей я выкладывал в сообщении выше) и как я понял номер пина в Arduino системе здесь фактически совпадает с номером порта GPIO) или найти какому GPIO соответствует выход D вашей платы (у меня это подписано с обратной стороны платы) и подключать периферию по этим значениям (именно так я и делал и все работает как положено)
Да, еще, нельзя в программе просто взять и написать #define ButtonUpPin NODEMCU_PIN_D10 или D12 или любой номер отличный от 0-8 без того, чтобы ранее не была определена переменная NODEMCU_PIN_D10. Именно в секции #define ей должно быть присвоено конкретное значение, которое потом будет использоваться в программе. Иначе компилятор выдаст ошибку, что переменная не определена.
P/S/ Плата осталась на работе, поэтому дальнейшие эксперименты с ней отложены до понедельника.
P/P/S Если есть соображения на какие порты на этой конкретной плате можно безболезненно подключить клавиатуру (и какие конкретно настройки при таком подключении должны быть в файле pins.h) - прошу писать, так же прошу писать, если в моих рассуждениях есть явные ошибки, хочется понимания.
P/P/P/S С программированием плат на этом контроллере сталкиваюсь впервые, до этого имел некоторый опыт программирования Arduino UNO плат, там с портами путаницы гораздо меньше, поэтому если мои рассуждения где-то откровенно дилетантские, прошу отнестись с терпением и если это возможно объяснить где и в чем я ошибаюсь.
Отв.354 06 Апр. 19, 19:09
Могу быть не прав посколькуEroshKA, 05 Апр. 19, 17:49И далее по тексту. Там определены GPIO для D1 mini. Соответственно стоит переопределить все под свою плату, чтоб просто не путаться.
Или закрывать этот кусок комментариями и везде указывать явный GPIO.EroshKA, 05 Апр. 19, 17:49
ShlissFaust
Новичок
Шлиссельбург
9 4
Отв.355 08 Апр. 19, 23:32
Сегодня пробовал перенести клавиатуру на другие пины на основной плате. К сожалению, так и не смог этого сделать. На профильных ресурсах прочитал, что порты (пины) esp8266 не равнозначны и некоторые не могут использоваться, например, для подключения кнопок. Судя по всему даже на полноразмерных платах (а не на Wemos d1 mini, как у автора) все же нужно использовать расширитель портов, как это предусмотрено у автора. Подключил расширитель портов I2C параллельно дисплею, вернул #define BUTTON_USE_EXT true, как это было у автора. Кнопки подключил на контакты P0-P3 на расширителе. Все заработало сразу и без глюков.
wzor
Студент
Арбузная мастерская
14 1
Отв.356 18 Апр. 19, 10:10
Скажите, а в этой прошивки есть калибровка датчика температуры?
chst1000
Доктор наук
Москва
639 520
Отв.357 18 Апр. 19, 10:39, через 30 мин
Скажите, а в этой прошивки есть калибровка датчика температуры?wzor, 18 Апр. 19, 10:10Есть .
wzor
Студент
Арбузная мастерская
14 1
Отв.358 30 Апр. 19, 09:07
Скажите какую PCB плату рекомендуете для этого проекта?
Хочу заказать в Китае 5 штук, но нужно полный набор файлов.
Посоветуйте.
Хочу заказать в Китае 5 штук, но нужно полный набор файлов.
Посоветуйте.
axlibris
Новичок
Волгоград
5
Отв.359 22 Мая 19, 22:11
Сдатчиком температуры вопрос пока не решился.alexmw2006, 18 Нояб. 17, 12:34Пиветствую! Решился ли вопрос с датчиком температуры? Такая же проблема... В добавок реле нагрева не действует при нажатии в вебке. Работает только реле насоса. Экран не ставил и пищалку тоже, но смутили датчик и реле нагрева...