Главная / Проекты и исследования / Дистанционно управляемый инкубатор


Дистанционно управляемый инкубатор

Примерно в октябре-ноябре 2020 года я заинтересовался созданием дистанционно управляемого инкубатора. Я вместе со своим отцом как раз решили собрать такой инкубатор на базе Arduino и ESP32.

Инкубатор мы начали собирать на основе старой стиральной машинки Samsung, которая у нас где-то валялась. Из барабана была сделана инкубационная камера, сверху были помещены датчики температуры и влажности. Влажность регулировалась при помощи форсунки от стиральной машины. В качестве нагревателя мы использовали старый, отслуживший своё фен. Управление осуществлялось при помощи сенсорных кнопок, установленных за корпусом бывшей машинки, все показания выводились на экран размером 16 на 2 символа.

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

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

Третья проблема возникла при согласовании логических уровней ESP32 и Arduino Nano: у ESP32 было 3,3 В, а у Arduino Nano — 5 В. Проблема была решена при помощи костыля: в качестве замены этому модулю использовался старый Mac mini, привезённый из Германии в 2018 году, на который был установлен Debian 9.

К данному инкубатору на Java было написано приложение для смартфонов на базе Android. В него труда вложено не меньше, чем в сам инкубатор, для которого оно предназначалось, как минимум потому, что интерфейс этого приложения был реализован при помощи векторных картинок, каждая из которых описывалась не в XML-файле размещения (layout), а в коде создания главной активности данного приложения.

Кроме того, был реализован «облачный», то есть, удалённый архив на хостинге с применением баз данных MySQL и PHP, а с использованием компьютера, веб-камеры, shell-скриптов и какой-то матери было реализовано видеонаблюдение в инкубаторе вместе с архивом, из которого в целях экономии каждые 24 часа удалялось одно видео суточной давности.

После того, как основная часть инкубатора была реализована, мы решили его испытать. Купили куриные яйца на инкубацию, положили в инкубатор и стали наблюдать за процессом развития. Через 21 день после начала эксперимента началось вылупление. Я был свидетелем того, как цыплёнок пробивался сквозь стенку яйца, освобождался от своей скорлупы. Это было незабываемое зрелище рождения новой жизни. Вслед за ним, вечером, вылупился второй цыплёнок, затем третий, и так далее. В общем, инкубатор сработал на ура.

Данный проект (пока без архива, видеонаблюдения и видеоархива) был вынесен на LII научно-практическую конференцию НОУ «Поиск», где я был удостоен звания лауреата. Далее данный проект, шлифуясь и обрастая функционалом, постепенно проходил этап за этапом конкурса проектов «IT-школа выбирает сильнейших». В конце концов, мой инкубатор дошёл до финала. И тут случился облом: первое место досталось агрегатору новостей с нейросетью. Видимо, какое-то преклонение перед нейросетями сыграло свою роль, хотя по сути, это приложение просто дёргало API Google News и отправляло результат в чёрный ящик, какими и являются все нейросети. Но, несмотря на это, данный инкубатор по праву я могу считать одним из самых своих сложных и лучших проектов.

Далее могут потребоваться улучшения, например, можно попытаться собрать инкубатор на одной плате, например, Arduino Nano RP2040 Connect, однако одна такая плата стоила в августе 2021 года примерно 3000 рублей, то есть, это дорогое удовольствие. Однако видеонаблюдение вместе с видеоархивом, по всей видимости, придётся делать на другой плате, например, ESP32. Тут уже понадобятся изменения в протокол взаимодействия, например, надо запросить, есть ли в инкубаторе видеонаблюдение и видеоархив и где это посмотреть. То же самое касается и обыкновенного архива, поскольку того облачного архива уже давно нету, хоть его IP-адрес до сих пор прописан в коде.

Кроме того, было решено сделать новый инкубатор, только уже горизонтальный. Однако сейчас на это нет ни времени, ни средств.

Изначально весь исходный код для данного проекта находился на Github, но я его перенёс на Codeberg. Ссылка на все репозитории: https://codeberg.org/kdincubator