Срочно требуется помощь/совет по устройству автоматического кормления рыб с использованием 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); // Подождать две секунды (для демонстрации активного низкого уровня светодиода)
}
@user103753, 👍-1
Обсуждение1 ответ
Поскольку у вас 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
- NodeMCU - Vin контакт как выход 5V?
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разве в узле MCU v3 (LoLin) нет встроенного светодиода?
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
- WebSocketsServer.h: No such file or directory
какой у вас вопрос? ... пожалуйста, добавьте к своему сообщению конкретный вопрос, на который можно ответить, @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