Ви не увійшли.
Доброго дня допоможіть розібратися з автоматикою віткатних воріт
У меня все работает уже, кроме того, что не могу реализовать приемник 433МГц на плате аттини т88, не подходят библиотеки RCswitch(((
У самого нещодавно виникла подібна задача, RCswitch також не вийшло адаптувати для роботи з пультами 433МГц. Тому зчитав з приймача сигнал і написав для нього свій парсер. Дарую)
Більш детально про формат є в даташиті.
#define HCS301_TE 400
#define HCS301_BITS 66
typedef struct {
uint32_t SerialNum;
uint32_t Encrypted;
uint8_t Btn1 :1;
uint8_t Btn2 :1;
uint8_t Btn3 :1;
uint8_t Btn4 :1;
uint8_t BatLow :1;
uint8_t Repeat :1;
} hcs301_t;
void hcs301_msg(hcs301_t *msg, uint8_t *a) {
msg->SerialNum = ((uint32_t)(a[7] & 0xf) << 24) | ((uint32_t)a[6] << 16) |
((uint32_t)a[4] << 8) | a[5];
msg->Encrypted = ((uint32_t)a[0] << 24) | ((uint32_t)a[1] << 16) |
((uint32_t)a[2] << 8) | a[3];
msg->Btn1 = (a[7] >> 5) & 1;
msg->Btn2 = (a[7] >> 6) & 1;
msg->Btn3 = (a[7] >> 7) & 1;
msg->Btn4 = (a[7] >> 4) & 1;
msg->BatLow = (a[8] >> 6) & 1;
msg->Repeat = (a[8] >> 7) & 1;
}
#define RF_RECV_PIN 2
#define is_roughly(d,t) ((d) > (t)-(t)/4 && (d) < (t)+(t)/4)
#define RF_TE HCS301_TE
#define RF_BITS HCS301_BITS
uint32_t RF_last_change = 0;
uint8_t RF_byte, RF_array[(RF_BITS+7)>>3];
uint8_t RF_mode = 0;
volatile boolean RF_catched = false;
void RF_interrupt() {
if (RF_catched)
return;
uint32_t duration = micros() - RF_last_change;
uint8_t pin = digitalRead(RF_RECV_PIN);
RF_last_change += duration;
if (!(RF_mode & 0x80)) {
if (RF_mode > 20 && pin == HIGH && is_roughly(duration, 10*RF_TE))
RF_mode = 0x80;
else if (!is_roughly(duration, RF_TE))
RF_mode = 0;
else if (!(RF_mode & 0x40))
RF_mode++;
} else {
uint8_t bit = 0;
if (is_roughly(duration, RF_TE))
bit = 0x80;
else if (!is_roughly(duration, 2*RF_TE))
RF_mode = 0;
if (RF_mode) {
if (pin == HIGH) {
if ((bit ^= RF_byte) & 0x80)
RF_mode++;
else
RF_mode = 0;
RF_byte >>= 1;
} else {
RF_byte |= bit;
RF_array[(RF_mode >> 3) & 0xf] = RF_byte;
if (RF_mode >= 0x80 + RF_BITS - 1) {
RF_catched = true;
RF_mode = 0;
}
}
}
}
}
void setup() {
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(RF_RECV_PIN), RF_interrupt, CHANGE);
Serial.println("Listening RF");
}
void loop() {
if (RF_catched) {
hcs301_t msg;
hcs301_msg(&msg, RF_array);
RF_catched = false;
Serial.print("#");
Serial.print(msg.SerialNum, HEX);
Serial.print(" ");
Serial.print(msg.Encrypted, HEX);
Serial.print(" ");
if (msg.Btn1) Serial.print("1");
if (msg.Btn2) Serial.print("2");
if (msg.Btn3) Serial.print("3");
if (msg.Btn4) Serial.print("4");
if (msg.BatLow) Serial.print(" BatLow");
if (msg.Repeat) Serial.print(" R");
Serial.println();
}
}
3v3 я ваш давній кліент.Привіт Харкову.
Ну якщо такі подробиці знаете тоді чого голову ламаете і тему відкриваете.За півдня зробилиби.
З такой мигалкой оггого.
Щидевр як не поглянь.
Передавайте привіт Чемберленду.
Які на уно стоять імс живлиня
AMS1117 с током до 800мА https://3v3.com.ua/product_7562.html
і скільки потрібно живлення для праці модулів реле
5-20 мА https://arduino.ua/prod1706-modyl-rele-5v-10a-nizkogo-yrovnya-low-level
.Ваша відповідь
з/ы если что - я знаю что реле лучше запитывать от отдельного источника, а это так, просто наш ответ Чемберлену
Нема за що.Проект ще дійсний це так.
Тоді тицну у даташіт.
Які на уно стоять імс живлиня і скільки потрібно живлення для праці модулів реле .Ваша відповідь
Проект затратно,провальний.
Чогось або недомовляете або недорозуміете.
Щиро дякую за конструктивну критику та справедливу оцінку.
Проект затратно,провальний.
Чогось або недомовляете або недорозуміете.
После:
[Вместо видосов в Ютубе рекомендую книгу - Make: AVR Programming by Elliot Williams
!
Спасибо за наводку, книгу скачал.
Хотя за 5 лет обучения по видосам + datasheets уровень позволяет делать интересные проекты:
- разбирать протоколы затем имитировать их,
- работать с Pointers,
- работать напрямую с портами 328P,
- использовать char array вместо String,
- писать клиент-серверные приложения на базе HTTP
- принимать платежи купюрами,
- принимать платеди по PayPass,
- проверять наличие клиента в базе MySQL
- стабильно запускать по RS-485 клапаны, и прочие силовые устройства до 6 кВ мощности.
Ах да, все это работает больше года на десятках объектов.
Кстати бибилиотека Алекса Гайвера для 7-ми сигментного дисплея из 4 цифр - очень даже хороша!
Я это к тому, что если кто-то ругает один путь и указывает другой, как единственно верный, то он манипулирует истиной. Ничего не имею против классики в форме книг на английском.
Однако, Alex Morozov очень злостный и толковый:
https://youtu.be/ygVB7WIu-vU
Есть немало блогеров, которые могут обучить не хуже или даже лучше книги. Прм этом, всегда можно увидеть результат в реальной жизни, а не только на бумаге.
Цікаво, маю реалізований проект на nodemcu. Спершу теж робив з статичними кнопками та радіо керування, але після декількох місяцяв експлуатації відмовився від ідеї кнопок взагалі (жодного разу не користувався), а радіокерування не виправдало себе тоді перейшов на суто на wifi, якщо є ще інтернет неподалік так плюсів більше ніж в раіокеруванні. Можна відкривати заздалегіть або коли вас дома немає. У мене проблема лише з мотором (від двірників газелі) повільно відкриває. Який мотор використовуєте ви ?
Поищите другие библиотеки, например https://github.com/pouriap/TinyRF
К сожалению((( Че т не то(
Поищите другие библиотеки, например https://github.com/pouriap/TinyRF
У меня все работает уже, кроме того, что не могу реализовать приемник 433МГц на плате аттини т88, не подходят библиотеки RCswitch(((
как-то так: если нажата кнопка соответствующая концевику и концевик сработал - то ничего не делаем, иначе - делаем
т.е. через ELSE создать работающее условие, а через IF - отказ?
#include <GyverButton.h>
Не читал, но осуждаю
Подскажите как правильно сделать опрос кнопки (концевика ворот) перед выполнением команды открытия или закрытия, т.к. у меня выходит что после срабатывания концевика, допустим, открытия, после нажатия кнопки открыть - снова продолжает открывать...
как-то так: если нажата кнопка соответствующая концевику и концевик сработал - то ничего не делаем, иначе - делаем
После:
#include <GyverButton.h>
отпадает желание читать дальше.
Я не буду помогать с кодом, но только потому что уверен - даже если у Вас получится что-то функционирующее, это не пойдет на пользу, а скорее наоборот. Вместо видосов в Ютубе рекомендую книгу - Make: AVR Programming by Elliot Williams (она на ENG, естественно, но даже если со словарём - лучше чем Gyver). Успехов!
+ 100 !