ㅤ
И стоит бюджетно
EL84 💡
бот тупой, столько писал и он снёс из-за какого-то символа. Спросил бл.... админы, вытащите сообщение из удалённых, пож.
Max
Господа, всем привет. Подскажите, как прочитать uart сигнал с шины данных (нестанартная шина), я снял с помощью аналогового чтения примерные интвервалы и знаю некоторые данные по шине. Юзаю ардуино иде. Итак: +-300мсек паузы высокого уровня, стартовый бит низкого уровня +-20мсек, дальше 5 бит которые мне и нужно вычитать юартом, далее СRC и стоп бит. И вроде как, все они +- 20мсек.Пытаюсь вычитать через сериал стандартной скоростью 9600 и нифига(
EL84 💡
покажи как читаешь через уарт 20мсек - это 20 милисекунд - длина 1 бита ? - так скорость порта тогда вроде как скорость порта тогда 50 бод - не ?
#include <SoftwareSerial.h> // Настройки SoftwareSerial #define UART_RX_PIN 25 #define UART_BAUD_RATE 9600 // Проверьте скорость UART, измените при необходимости SoftwareSerial mySerial(-1, UART_RX_PIN); // RX = 25, TX не используется (-1) // Переменные для хранения состояния дверей bool doors[5] = {false, false, false, false, false}; // Хранит состояние 5 дверей (0 - закрыта, 1 - открыта) // CRC проверка (проверяем целостность данных) bool checkCRC(uint8_t data) { uint8_t crc = (data >> 5) & 0b111; // Извлекаем CRC (последние 3 бита) uint8_t payload = data & 0b11111; // Извлекаем 5 бит данных uint8_t calculatedCRC = 0; // Рассчитываем CRC (простая чётность по данным) for (uint8_t i = 0; i < 5; i++) { if (payload & (1 << i)) { calculatedCRC++; } } calculatedCRC %= 8; // Оставляем только последние 3 бита return crc == calculatedCRC; } // Разбор данных void parseData(uint8_t data) { for (uint8_t i = 0; i < 5; i++) { doors[i] = (data >> i) & 0x01; // Извлекаем каждый бит данных } } void setup() { Serial.begin(115200); // Отладочный порт mySerial.begin(UART_BAUD_RATE); // Инициализация SoftwareSerial Serial.println("Начало работы..."); } void loop() { if (mySerial.available() > 0) { uint8_t incomingByte = mySerial.read(); // Считываем 1 байт // Проверяем корректность данных if (checkCRC(incomingByte)) { parseData(incomingByte); // Разбираем данные, если CRC верна // Выводим состояние дверей Serial.print("Состояние дверей: "); for (uint8_t i = 0; i < 5; i++) { Serial.print(doors[i] ? "Открыта " : "Закрыта "); } Serial.println(); } else { Serial.println("Ошибка CRC! Неверные данные."); } } }
DeFensy 🛡⚔️ AntiSpamBot
ok-home, вам повышена репутация!🌟 Сейчас она составляет 12. Продолжайте в том же духе 😉 🔖ads: Бот создан в @botsbaseru
ㅤ
Какой глупый бот
ㅤ
Короче я понял, просто просишь народ скидывать сишный код и набиваешь себе рейтинг. А ok-home фишку раскусил
EL84 💡
У меня получилось заставить читать те биты которые мне нужны, с помощью чтения уровней и временных интервалов, добавив "разброс" в 10 мсек между ними. Но это не самый оптимальный вариант, мне кажется
ㅤ
вот оно мне надо ? не булькает )))
Ну не знаю не знаю. Тут в соседней группе админ мне подтирал рейтинг. Чтоб я не торчал в таблице. Так что хрен знает, кому-то оно и надо
ok-home
пробовал 50 бод, не работает (
mySerial.begin(UART_BAUD_RATE); ты же сам пишешь - start/5 бит/паритет/стоп 50 бод ну так и ставь как положено mySerial.begin(UART_BAUD_RATE,cfg); конфиги вроде как здесь https://github.com/plerup/espsoftwareserial/blob/40038df467853f47dde4641769183fa46996decb/src/SoftwareSerial.h#L120 хотя какой у тебя софт сериал я хз, да и возьмет ли он 50 бод ??
Евгений
??
Я думал у нас кто то новый :))) А тут все старенькие :)
ok-home
??
отредактировал выше, смотри а вообще чисто из любопытства это что за шушлайка такая с такими параметрами уарта ?
EL84 💡
отредактировал выше, смотри а вообще чисто из любопытства это что за шушлайка такая с такими параметрами уарта ?
шина блока комфорта, которая отдаёт состояние дверей машины. В 2002 году ещё не умели все двери по кан отдавать 😄 всё, дошло, спасибо)
Sergey
шина блока комфорта, которая отдаёт состояние дверей машины. В 2002 году ещё не умели все двери по кан отдавать 😄 всё, дошло, спасибо)
А откуда вывод что это уарт? Скорее всего что то кастомное и возможно лучше использовать rmt вместо уарта
Farid
Роман
Могу ля я подключить W5500 таким образом напрямую к микросхеме коммутатору? До этого так подключал NanoPi и это все работало. У коммутатора есть подтяжки на RX TX парах. У W5500 не написано.
Max
Самодельный WiFi модуль к автоматике раздвижных ворот Можно было купить готовый модуль, несмотря на его совершенно конскую стоимость в 6-7 тыс. рублей. Однако он не предоставлял наиболее востребованную для меня функциональность: не позволял открывать ворота автоматически "из коробки" при приближении к своему участку на автомобиле. Ну и, естественно, экономия на порядок тоже сыграла не последнюю роль. Был выбран следующий способ реализации основной задачи: WiFi модуль в автомобиле пытается зарегистрироваться на домашней точке доступа. Если ему это удается - проверяется уровень сигнала. Если уровень сигнала слабый - значит приближаемся к участку и надо подать команду WiFi модулю на автоматике ворот на открытие. Если сигнал сильный - мы уже на участке и ничего делать не надо. Дополнительная функциональность - управление воротами по WiFi через веб-интерфейс, в том числе и с мобильного телефона. Если при выезде с участка руки свободны и можно заранее открыть ворота со штатного пульта, то при подъезде к участку нащупывать кнопку на пульте отвлекаясь от дороги - не только не удобно, но еще и опасно. При этом ворота открываются относительно медленно и если нажимать кнопку пульта уже подъехав к воротам, то приходится ждать несколько секунд, пока ворота откроются. Читать далее https://habr.com/ru/articles/860380/?utm_source=habrahabr&utm_medium=rss&utm_campaign=860380
Роман
Можешь... Но я бы по SPI подключил
SPI и так подключается к микроконтроллеру. Я имел ввиду дифпары от W5500 к мс сетевого коммутатора
Евгений
ааа блин, я не понял сначала) А зачем так?
Евгений
Ну в смысле я не понял практический смысл. W5500 это сетевой интерфес. Он берет данные, переводит их в IP протокол и посылает в сеть. Где то в сети стоит такой же преобразователь (в твоем случае коммутатор), получает IP и переводит в данные и отдает кому то... У тебя все это рядом (на одной плате? Зачем огород? Почему бы сразу не передать данные напрямую?
Max
Без гальваноразвязки по дороге все равно грех)
Max
Ну и да, вопросы, чому не RS-485/CAN/1Wire остаются.
Max
ESP32 Smart Home Motion-Activated Lighting System ESP32 Smart Home Motion-Activated Lighting System https://www.hackster.io/sarful/esp32-smart-home-motion-activated-lighting-system-672ae0
Владимир
К калитке идёт +12. Там понижайка + есп32 К ней короткими проводами концевики с цепями защиты. Она шлёт на другую есп инфу
Владимир
Или ещё лучше. На калитке стоит маленький процессор типа arduino следит за кнопками к ней по проводу приходит плюс 12 и она же транзистором эти плюс 12 модулирует в обратку. Естественно питание плюс 12 не жёсткое А через резистор ом на 200. А в районе arduino стоит естественно транзистор конденсатор диод ну всё как обычно. Делал так. Гонял данные с датчика света и температуры в погружном модуле по двум проводам
Роман
Трансформатор от сетевухи ставить надо там где txn txp... два двойных трансформатора на обоих концах
блин так не вариант, таким образом мне надо будет 2 трнаса еще ставить. Я конечно не претендую на правильность, но с nanoPi такое проканало и работало.
Роман
не, какой разъем, сразу в проц заводил
ㅤ
Так никто и не говорит что оно не будет работать...
ㅤ
Просто в один неудачный момент процы могут отлететь. Лучше так не делать
Роман
а чему там отлетать, у меня идет 2 лана с трансами с них заходят сигналы на мс коммутутора, третий порт комутатора идет на W5500. Там выходы OD с подтяжками , непонятно что у W5500 ну значит буду проверять в живую просто)
homekit
ㅤ
Это как?
3 вольта мало. Сделай хотя бы 12
ok-home
Это как?
ну посоветовали же уже, опторазвязка с отдельным питанием - погугли "токовая петля"
homekit
делай так
Существуют ли на али готовые модули с обвязкой, чтобы на прямую к gpio можно подключить?
Aleks
Существуют ли на али готовые модули с обвязкой, чтобы на прямую к gpio можно подключить?
https://www.ozon.ru/product/modul-galvanicheskoy-razvyazki-na-pc817-optopara-3-330v-2-kanala-1726146303/?asb=U53ZPukU2RQ1NsAnusWzvXAVq62bzQ4HYXHxNSZL80c%253D&asb2=8Kt6-uSCSptMGA0t7paX_bHrQocrd2qxpt-mq3-BVxOIxYPaUqtUdyDdgIcmhVNiUbMMCxGv4CT2rnDgHNlX6w&avtc=1&avte=4&avts=1732262973&keywords=%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C+%D0%BE%D0%BF%D1%82%D0%BE%D0%BF%D0%B0%D1%80%D1%8B но между контактами G-V1 и G-V2 засунь конденсатор маленький
Aleks
что там опять?)
Aleks
это слишком сложно))
Евгений
На озоне в правом углу есть кнопочка поделится. Она формирует короткую ссылку, если что
Есть еще типки которым проще сделать скриншот, чем найти эту "поделиться" =)
homekit
Tlp281
Шикарный вариант, просто цепляю на gpio а выход на геркон?
Tonchik
Шикарный вариант, просто цепляю на gpio а выход на геркон?
Ага, на геркон можно еще резюк в 500ом повесить, оно на 12в греется у меня в некоторых местах) но работает год-два уже
ㅤ
Шикарный вариант, просто цепляю на gpio а выход на геркон?
Геркон подключаешь к диоду. При размыкании геркона он отключает диод и транзистор закрывается (или наоборот при замыкании открывает, смотря какой-то геркон NO/NC)
Tonchik
Кто греется? Оптрон?
Резюк, кажется, на самой плате ))
ㅤ
А можно как-то без 12 вольт обойтись, чисто замыкание геркона да и все
Геркон должен включить светодиод (или выключить) чтоб сработал транзистор. Без питания обойтись здесь нельзя
Tonchik
А можно как-то без 12 вольт обойтись, чисто замыкание геркона да и все
Ну тебе всеравно питать геркон надо, можешь 5в кинуть, да и 3.3 может схватить, теоретически
ㅤ
А можно как-то без 12 вольт обойтись, чисто замыкание геркона да и все
Если вешать блок питания лень, можно 220 использовать вместо 12.
ㅤ
Не можно, а нужно. Я бы повесил 1к. Для долговечности оптрона
Там выше я прислал картинку же, там 1.2к. Самое то
Aleks
Там выше я прислал картинку же, там 1.2к. Самое то
Минимум 470, максимум наверное 2к. На 1к ток будет 10мА с учетом того что 2 вольта потеряются в петле.
Tonchik
Под 220 другой модуль есть )
Aleks
А можно как-то без 12 вольт обойтись, чисто замыкание геркона да и все
Лучше 5 вольт можно, если витая пара медная. Резистор тогда в пределах 240-370. Посмотри какой ток в оптроне будет - нужен не больше 20мА.
ㅤ
Под 220 другой модуль есть )
Пофигу какой модуль. Резисторы присрать помощнее и другого номинала. Но плохая идея на калитку уличную вешать 220, так что пусть 12 ищет или 5
༺ 𝐕𝐚𝐧𝐢𝐤 ༻
У меня ест audioplayer на базе esp32, sd карта подключена на gpio 12 13 14 но не работает так как нужна, раньше был подключён gpio 18 19 23 ( аппаратни spi) работал хорошо в чём проблема скорость чтения не хватает?
༺ 𝐕𝐚𝐧𝐢𝐤 ༻
Пишу на esp-idf, язык C
༺ 𝐕𝐚𝐧𝐢𝐤 ༻
Аппаратним не является только 18 19 23?
ㅤ
Аппаратним не является только 18 19 23?
Ноги здесь не причем. Там три аппаратных SPI
༺ 𝐕𝐚𝐧𝐢𝐤 ༻
Тогда почему тот же код не работает для 12,13,14?
Aleks
Там какая-то нога урезанная