Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Honey
2022-08-01 15:32:44
Rulya82 пише:

У меня все работает уже, кроме того, что не могу реализовать приемник 433МГц на плате аттини т88, не подходят библиотеки RCswitch(((

У самого нещодавно виникла подібна задача, RCswitch також не вийшло адаптувати для роботи з пультами 433МГц. Тому зчитав з приймача сигнал і написав для нього свій парсер. Дарую)

mini_hcs301.png
Більш детально про формат є в даташиті.

#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();
  }
}
Vlf-Interval
2022-06-13 23:04:48

3v3 я ваш давній кліент.Привіт Харкову.
Ну якщо такі подробиці знаете тоді чого голову ламаете і тему відкриваете.За півдня зробилиби.
З такой мигалкой оггого.
Щидевр як не поглянь.
Передавайте привіт Чемберленду.

Васятко
2022-06-13 13:06:20
Vlf-Interval пише:

Які на уно стоять імс живлиня

AMS1117 с током до 800мА https://3v3.com.ua/product_7562.html

Vlf-Interval пише:

і скільки потрібно живлення для праці модулів реле

5-20 мА https://arduino.ua/prod1706-modyl-rele-5v-10a-nizkogo-yrovnya-low-level

tongue .Ваша відповідь

з/ы если что - я знаю что реле лучше запитывать от отдельного источника, а это так, просто наш ответ Чемберлену  smile

Vlf-Interval
2022-06-13 12:49:45

Нема за що.Проект ще дійсний це так.
Тоді тицну у даташіт.
Які на уно стоять імс живлиня і скільки потрібно живлення для праці модулів реле tongue .Ваша відповідь

Sattva
2022-06-13 01:50:15
Vlf-Interval пише:

Проект затратно,провальний.
Чогось або недомовляете або недорозуміете.

Щиро дякую за конструктивну критику та справедливу оцінку.  tongue

Vlf-Interval
2022-06-13 01:45:07

Проект затратно,провальний.
Чогось або недомовляете або недорозуміете.

Sattva
2022-06-12 17:32:14
akapulko пише:

После:
[Вместо видосов в Ютубе рекомендую книгу - 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

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

webDev
2022-05-22 18:04:48

Цікаво, маю реалізований проект на nodemcu. Спершу теж робив з статичними кнопками та радіо керування, але після декількох місяцяв експлуатації відмовився від ідеї кнопок взагалі (жодного разу не користувався), а радіокерування не виправдало себе тоді перейшов на суто на wifi, якщо є ще інтернет неподалік так плюсів більше ніж в раіокеруванні. Можна відкривати заздалегіть або коли вас дома немає. У мене проблема лише з мотором (від двірників газелі) повільно відкриває. Який мотор використовуєте ви ?

Rulya82
2022-01-28 00:22:52
Honey пише:

Поищите другие библиотеки, например https://github.com/pouriap/TinyRF

К сожалению((( Че т не то(

Honey
2022-01-24 10:44:35

Поищите другие библиотеки, например https://github.com/pouriap/TinyRF

Rulya82
2022-01-23 22:38:11

У меня все работает уже, кроме того, что не могу реализовать приемник 433МГц на плате аттини т88, не подходят библиотеки RCswitch(((

Rulya82
2022-01-23 17:28:16
г0сть пише:

как-то так: если нажата кнопка соответствующая концевику и концевик сработал - то ничего не делаем, иначе - делаем

т.е. через ELSE создать работающее условие, а через IF - отказ?

г0сть
2022-01-22 11:46:11

#include <GyverButton.h>

Не читал, но осуждаю

Подскажите как правильно сделать опрос кнопки (концевика ворот) перед выполнением команды открытия или закрытия, т.к. у меня выходит что после срабатывания концевика, допустим, открытия, после нажатия кнопки открыть - снова продолжает открывать...

как-то так: если нажата кнопка соответствующая концевику и концевик сработал - то ничего не делаем, иначе - делаем

renoshnik
2022-01-21 20:36:28
akapulko пише:

После:

#include <GyverButton.h>

отпадает желание читать дальше.
Я не буду помогать с кодом, но только потому что уверен - даже если у Вас получится что-то функционирующее, это не пойдет на пользу, а скорее наоборот. Вместо видосов в Ютубе рекомендую книгу - Make: AVR Programming by Elliot Williams (она на ENG, естественно, но даже если со словарём - лучше чем Gyver). Успехов!

+ 100 !

akapulko
2022-01-21 01:36:02

После:

#include <GyverButton.h>

отпадает желание читать дальше.
Я не буду помогать с кодом, но только потому что уверен - даже если у Вас получится что-то функционирующее, это не пойдет на пользу, а скорее наоборот. Вместо видосов в Ютубе рекомендую книгу - Make: AVR Programming by Elliot Williams (она на ENG, естественно, но даже если со словарём - лучше чем Gyver). Успехов!

Підвал форуму