Доброго времени суток, дорогие форумчане!
Как многие знают, кто видел этот пост я пытался сделать для школы реле, которое автоматически будет включать школьный звонок. К сожалению я рано обрадовался, что всё получилось и установил звонок в школу. Через сутки код начал "зависать", реле включалось и звонок гудел пока не выключишь устройство на основе Arduino Nano . После этого я впервые зашёл на ваш форум, начал искать проблему и ничего не помогало. Морочил себе и вам голову около 3-ёх месяцев. Каждый день ходил в школу, там приходилось перезагружать ардуино после 7-ого срабатывания (на 8-ой раз реле не включалось). В прошлом обсуждении на форуме я вам много проморочил голову. В итоге решили, что надо попробывать на ESP.
Время идёт, через 10 дней начинается учёба, я уже поступил в институт, но не удобно, что в школе установил проект на Arduino и 1-ого сентября звонок не заработает.
Из-за работы не было времени разобраться в ESP 8266 и отложил я это дело на самый последний момент.
Дорогие программисты, обращаюсь с огромной просьбой попробывать написать мне код для ESP8266 (DS3231 и Reley) За адекватную стоимость. В прошлой теме есть весь код, который должен работать по идее на ESP, но только там надо поменять входы и выходы для реле, светодиодов и тумблера ( если будут проблемы со вторым расписанием, то оно не обязательно, тогда тумблер нафиг не нужен будет, так даже проще).
Готов заплатить 10000 рублей любым способом.
Как многие знают, кто видел этот пост я пытался сделать для школы реле, которое автоматически будет включать школьный звонок. К сожалению я рано обрадовался, что всё получилось и установил звонок в школу. Через сутки код начал "зависать", реле включалось и звонок гудел пока не выключишь устройство на основе Arduino Nano . После этого я впервые зашёл на ваш форум, начал искать проблему и ничего не помогало. Морочил себе и вам голову около 3-ёх месяцев. Каждый день ходил в школу, там приходилось перезагружать ардуино после 7-ого срабатывания (на 8-ой раз реле не включалось). В прошлом обсуждении на форуме я вам много проморочил голову. В итоге решили, что надо попробывать на ESP.
Время идёт, через 10 дней начинается учёба, я уже поступил в институт, но не удобно, что в школе установил проект на Arduino и 1-ого сентября звонок не заработает.
Из-за работы не было времени разобраться в ESP 8266 и отложил я это дело на самый последний момент.
Дорогие программисты, обращаюсь с огромной просьбой попробывать написать мне код для ESP8266 (DS3231 и Reley) За адекватную стоимость. В прошлой теме есть весь код, который должен работать по идее на ESP, но только там надо поменять входы и выходы для реле, светодиодов и тумблера ( если будут проблемы со вторым расписанием, то оно не обязательно, тогда тумблер нафиг не нужен будет, так даже проще).
Готов заплатить 10000 рублей любым способом.
Последняя редакция кода прошлого проекта на Arduino Nano:
#include <RTClib.h> // https://github.com/adafruit/RTClib
#include <TimeLib.h> // https://github.com/PaulStoffregen/Time
DateTime time_now;
#define relePin 2
#define LED 4
#define LEDD 5
#define SWITCH_PIN 3
#define RING_SECONDS 7
#define TZ_OFFSET 180 // MSK
#define HOURS 60
RTC_DS3231 rtc;
bool status_led = false;
bool status_ledd = false;
const uint16_t raspisanie[] = {
8 * HOURS + 30,
9 * HOURS + 15,
9 * HOURS + 25,
10 * HOURS + 10,
10 * HOURS + 30,
11 * HOURS + 15,
11 * HOURS + 35,
12 * HOURS + 20,
12 * HOURS + 30,
13 * HOURS + 15,
13 * HOURS + 25,
14 * HOURS + 10,
14 * HOURS + 20,
15 * HOURS + 5,
15 * HOURS + 10,
15 * HOURS + 50,
};
const uint16_t raspisanie2[] = {
8 * HOURS + 30,
9 * HOURS + 5,
9 * HOURS + 10,
9 * HOURS + 45,
10 * HOURS + 1,
10 * HOURS + 35,
10 * HOURS + 50,
11 * HOURS + 25,
11 * HOURS + 30,
12 * HOURS + 5,
12 * HOURS + 10,
12 * HOURS + 45,
12 * HOURS + 50,
13 * HOURS + 25,
};
void zvonok(DateTime &dt){
for (int i = 0; i != sizeof(raspisanie)/sizeof(uint16_t); ++i ){
if ( (dt.hour() * HOURS + dt.minute()) == raspisanie[i] ){
digitalWrite(relePin, dt.second() < RING_SECONDS ? LOW : HIGH );
if (dt.second() < RING_SECONDS){
Serial.print("Raspisanie 1: Ring for ");
Serial.print(RING_SECONDS - dt.second());
Serial.println(" seconds more");
}
}
}
};
void zvonok2(DateTime &dt){
for (int i = 0; i != sizeof(raspisanie2)/sizeof(uint16_t); ++i ){
if ( (dt.hour() * HOURS + dt.minute()) == raspisanie2[i] ){
digitalWrite(relePin, dt.second() < RING_SECONDS ? LOW : HIGH );
if (dt.second() < RING_SECONDS){
Serial.print("Raspisanie 2: Ring for ");
Serial.print(RING_SECONDS - dt.second());
Serial.println(" seconds more");
}
}
}
};
void setup() {
pinMode(relePin, OUTPUT); // выход на реле
pinMode(LED, OUTPUT); // Встроенный светодиод, например на Nano имеется...
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
digitalWrite(relePin, HIGH);
Serial.begin(9600); // Скорость Serial-порта
while (!rtc.begin()) {
Serial.println("Couldn't find RTC");
digitalWrite(LED, !digitalRead(LED)); // И мигаем при этом встроенным светодиодом, сообщая о проблеме...
delay(200);
}
DateTime time_now = rtc.now();
adjustTime(TZ_OFFSET * SECS_PER_MIN);
setTime(time_now.hour(), time_now.minute(), time_now.second(), time_now.day(), time_now.month(), time_now.year());
}
void loop() {
DateTime time_now = now();
Serial.print("Raspisanie: ");
Serial.println(digitalRead(SWITCH_PIN) ? 1 : 2 );
Serial.print("Current Date & Time: ");
Serial.print(time_now.year(), DEC);
Serial.print('/');
Serial.print(time_now.month(), DEC);
Serial.print('/');
Serial.print(time_now.day(), DEC);
Serial.print(" ");
Serial.print(time_now.hour(), DEC);
Serial.print(':');
Serial.print(time_now.minute(), DEC);
Serial.print(':');
Serial.print(time_now.second(), DEC);
Serial.println();
if (digitalRead(SWITCH_PIN)){
zvonok(time_now);
digitalWrite(LED, status_led);
status_led = !status_led;
digitalWrite(5, LOW);
if (time_now.minute() == 22 && time_now.second() == 10) {
DateTime time_now = rtc.now();
setTime(time_now.hour(), time_now.minute(), time_now.second(), time_now.day(), time_now.month(), time_now.year());
}
}
else {
zvonok2(time_now);
digitalWrite(LEDD, status_ledd);
status_ledd = !status_led;
digitalWrite(4, LOW);
if (time_now.minute() == 22 && time_now.second() == 10) {
DateTime time_now = rtc.now();
setTime(time_now.hour(), time_now.minute(), time_now.second(), time_now.day(), time_now.month(), time_now.year());
}
}
delay(1000);
}
Вложения
-
305.7 KB Просмотры: 5