Срочно требуется помощь/совет по устройству автоматического кормления рыб с использованием NodeMCU.

Мне поручили настроить эти автокормушки для рыб. Цель — установить их на аквариуме и раздавать корм в определённое время (получая таким образом информацию о глобальном времени).

Мне нужно запрограммировать и установить 15 таких систем. У меня также есть доступ к одному Raspberry Pi (который, как мне кажется, поможет отслеживать время? Не уверен).

Плата NodeMCU подключена к специальной печатной плате. Судя по всему, через плату сервопривод (который управляет и вращает кормушку, позволяя ей выпадать корму) подключен к выводу D4 платы. Также, похоже, к выводу D5 подключен светодиод (не уверен, для чего он предназначен, возможно, он показывает, что система активна или идёт выдача корма, что-то в этом роде).

Это соединение проходит через резистор на плате (с маркировкой 1 кОм). Похоже, через плату также подключена небольшая батарейка или что-то ещё (думаю, она подключена к VIN и имеет маркировку 70 мкФ, так что это может быть конденсатор).

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

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

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

/*
ESP8266 Blink от Саймона Питера
Мигает синий светодиод на модуле ESP-01
Этот пример кода находится в открытом доступе.

Синий светодиод на модуле ESP-01 подключен к GPIO1
(который также является выводом TXD; поэтому мы не можем одновременно использовать Serial.print())

Обратите внимание, что этот скетч использует LED_BUILTIN для поиска контакта с внутренним светодиодом.
*/

const int LED_Pin = D5;

void setup() {
  pinMode(LED_Pin, OUTPUT);  // Инициализируем вывод LED_BUILTIN как выход
}

// функция цикла выполняется снова и снова вечно
void loop() {
  digitalWrite(LED_Pin, LOW);  // Включаем светодиод (обратите внимание, что LOW — это уровень напряжения
  // но на самом деле светодиод горит; это потому что
  // на ESP-01 активен низкий уровень)
  delay(1000);                      // Подождем секунду
  digitalWrite(LED_Pin, HIGH);  // Выключаем светодиод, подавая напряжение HIGH
  delay(2000);                      // Подождать две секунды (для демонстрации активного низкого уровня светодиода)
}

, 👍-1

Обсуждение

какой у вас вопрос? ... пожалуйста, добавьте к своему сообщению конкретный вопрос, на который можно ответить, @jsotola

Итак, загрузка прошла успешно, но светодиод не мигает, верно? Подключение к нему такое: D5 -> резистор -> LED+, LED- -> земля? Есть ли у вас мультиметр, чтобы проверить напряжение на D5? Оно меняется? Вы уверены, что компилируете для NodeMCU в среде Arduino IDE? Также попробуйте изменить D5 на 14 (так как D5 должен быть GPIO14)., @chrisl

Если вы уверены, что это NodeMCU, то LED_BUILTIN определяется как 2, то есть D4. См. [pin_arduino.h](https://github.com/esp8266/Arduino/blob/master/variants/nodemcu/pins_arduino.h#L36C9-L44) для NodeMCU., @hcheung

Вы также можете попробовать эту кормушку для рыб с Arduino Nano: https://www.pcbway.com/project/shareproject/Automatic_Fish_Feeder_Using_Arduino_Nano_525798ea.html. Эта программа использует Arduino Nano в качестве основного контроллера для управления сервоприводом в процессе кормления. Полная настройка здесь. Nano можно заменить на NodeMCU., @tepalia


1 ответ


0

Поскольку у вас 15 систем, но только один Raspberry Pi, вы можете использовать Raspberry Pi для получения текущего времени по NTP (сетевой протокол времени) и его трансляции на все платы NodeMCU. Вам необходимо настроить NTP на Raspberry Pi. Затем вы можете написать скрипт на Python, который будет отправлять текущее время на платы NodeMCU по Wi-Fi с использованием UDP или MQTT. Вам необходимо запрограммировать NodeMCU на питание по расписанию. NodeMCU должен подключиться к Wi-Fi, синхронизировать время с Raspberry Pi (по UDP или MQTT) и вращать сервопривод в запланированное время питания.

,

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

для ESP есть библиотека NTP, нет нужды усложнять ее больше, чем нужно., @dandavis