26.06.2020       Выпуск 340 (22.06.2020 - 28.06.2020)       Статьи

Python и пиво — взболтать, но не смешивать

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

Читать>>




Экспериментальная функция:

Ниже вы видите текст статьи по ссылке. По нему можно быстро понять ссылка достойна прочтения или нет

Просим обратить внимание, что текст по ссылке и здесь может не совпадать.

Привет, Habr! Решил описать небольшую систему автоматизации для создания чудесного напитка. Для того, чтобы пиво было вкусным важны время и температура, температура и время. Причём они настолько же необходимы, как и ингридиенты, составляющие сусло. Чтобы пройти путь до готового продукта требуется от 14 до 20 шагов с различной температурой и временем пивоварения. Для всех заинтересовавшихся этим загадочным процессом, прошу под кат.

Нам потребуется два чана различного объёма, для трёх видов:

Каждый тип проходит соответственно различные шаги по времени и температуре. Конечно можно было бы использовать инструкцию и секундомер, но это ужасно неудобно. Поэтому составим csv таблицу, в которой будем хранить: номер шага, объем, целевую температуру, время.

Далее возьмём rasbpberry pi zero и присоединим к нему два датчика температуры

DS18B20

.

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

adafruit 128x64 oled

, на дисплее которого будет отображаться вся необходимая информация.

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

Код таймера
def timer_code(seconds, t_counter = 2, restart = False):
    time.sleep(0.023)
    seconds -= time.time() - t_counter
    t_counter = time.time()
    minutes = trunc(seconds / 60.0)
    return seconds, minutes, t_counter

Загадочные

time.sleep(0.023)

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

Итак, у нас есть таймер, который уменьшается каждые две секунды, соответственно важно, когда он дойдёт до нуля, а мы проморгали время, он отсчитал его, т. е. шёл со знаком минус.

Отображаемые на дисплее секунды
if timer:
    if ((minutes < 0) and (seconds < 0)):
        sec = -round(seconds - 60.0*minutes)
    else:
        sec = round(seconds - 60.0*minutes)
else:
    sec = 0

Готово. Осталось лишь в бесконечном цикле отобразить всю необходимую информацию на дисплее и вуаля — мы получаем полуавтоматическую пивоваренную установку.

Код отрисовки
draw.rectangle((0, 0, width, height), outline=0, fill=0)
draw.text((x,top),    f"{beer_type[countB]} step {step} Pot 1", font=font, fill=255)
draw.text((x,top+8),  f"T={T1} deg., Target {Target1[step]}", font=font, fill=255)
draw.text((x,top+16), f"V={V1[step]} litres", font=font, fill=255)
if hop[step] == '':
     draw.text((x,top+25), " Pot 2 ", font=font, fill=255)
else:
     draw.text((x,top+25), f" Pot 2,  Pot = {hop[step]}", font=font, fill=255)
draw.text((x,top+34), f"T={T2} deg., Target {Target2[step]}", font=font, fill=255)
draw.text((x,top+45), f"V={V2[step]} litres", font=font, fill=255)
draw.text((x,top+54), f"Timer {minutes} min {sec} sec", font=font, fill=255)
# Display image.
disp.image(image)
disp.show()

Не забудем лишь запускать таймер по нажатию кнопки.

Кнопка
# Start timer
if not button_A.value:
    t_counter = time.time()
    print('A #5', button_A.value)
    timer = True

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

пивопарении

. Всем вкусного пива и хорошей пятницы!






Разместим вашу рекламу

Пиши: mail@pythondigest.ru

Нашли опечатку?

Выделите фрагмент и отправьте нажатием Ctrl+Enter.

Система Orphus