ATtiny85 (Digispark) с радиочастотным передатчиком 433 МГц не работает

У меня есть следующие компоненты:

  • ATtiny85 Digispark
  • 433 МГц Мини маломощный радиочастотный передатчик

У меня есть работающий поток связи, передающий/принимающий между двумя Wemos D1, и я хотел бы теперь передать передающую часть на ATtiny85. Я использовал тот же код, что и для Wemos:

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  pinMode(1, OUTPUT);
  mySwitch.enableTransmit(2);
}

void loop() {    
    mySwitch.send("000110110001010100010001");  
    digitalWrite(1, HIGH);
    delay(250);  
    digitalWrite(1, LOW);
    delay(250);  
}

Но последовательный монитор для Wemos не получает никакой связи. Я зашел так далеко, что снова построил связь между двумя Wemos и подключил только вывод данных передатчика к ATtiny85, чтобы исключить любые проблемы с напряжением (ATtiny получает 5 В, передатчик любит < 3,6 В).

Теперь у меня нет идей. Как мне отладить проблему или что еще я могу попробовать?

Запрошенная настройка:

, 👍0

Обсуждение

Ваш ATtiny работает на частоте 8 МГц, а Wemos — на 80 или 160 МГц? Каковы используемые напряжения питания и логики? На странице продавца указано, что для передатчика следует использовать 2,0–3,6 В. Будет ли передатчик работать после повторного подключения к Wemos? IMHO, следующим шагом низкоуровневой отладки (после проверки напряжений) будет сравнение временных диаграмм для вывода TX между платами с помощью логического анализатора, поскольку они имеют микросекундный диапазон (https://github.com/sui77/rc-switch/blob/master/RCSwitch.cpp#L523)., @Maximilian Gerhardt

@MaximilianGerhardt ATtiny работает на частоте 16,5 МГц, а Wemos — на 80 МГц. Не знал, что синхронизация так важна. Как её добиться? Передатчик работает нормально (питаю его от второго Wemos, а к ATtiny подключаю только вывод данных)., @jwillmer

Временной анализ можно выполнить с помощью логического анализатора (например, клона Salae Logic, очень дешёвого, https://www.youtube.com/watch?v=rR5cEFRO9_s). То есть, даже если подать на передатчик 5 В входов/выходов от ATTiny, но использовать 3,3 В от Weemo (и, полагаю, общий GND), всё работает? Можете ли вы отредактировать свой вопрос, включив в него рабочие схемы Weemo и нерабочие схемы ATTiny (с блоками питания)?, @Maximilian Gerhardt

Рад видеть, что проблема решена. Отметьте свой ответ как правильный. Примечание: Ваша правильная схема неверна в том смысле, что между ними нет общей земли. Возможно, случайно два ваших блока питания (например, если они от одного компьютера) имеют одинаковую землю, но в целом они могут иметь разные потенциалы; напряжение «3,3 В» относительно земли первого блока питания может быть совершенно другим напряжением относительно земли второго блока питания. Поэтому следует соединить земли блоков питания вместе (https://www.youtube.com/watch?v=vhZQbFeEfPM), @Maximilian Gerhardt

Но, похоже, передатчику просто не подходят уровни входного/выходного напряжения 5 В (как указано в техническом описании), и вы успешно решили эту проблему, переведя ATTiny на 3,3 В. Другой вариант — добавить преобразователь уровня ([пример](https://www.sparkfun.com/products/12009)) с 5 В на 3,3 В, но вам всё равно потребуется питание 3,3 В для передатчика. Поэтому, думаю, вам в целом лучше работать полностью на 3,3 В., @Maximilian Gerhardt

@MaximilianGerhardt Мне нужно подождать один день, чтобы отметить проблему как решенную ;), @jwillmer


1 ответ


Лучший ответ:

0

Я заставил его работать. Последний комментарий @Maximilian Gerhardt о выходе ввода-вывода заставил меня задуматься, и я прочитал об этом. Так что если я использую 5 В для питания ATtiny, то выходное напряжение ввода-вывода для 1 и 0 будет значительно выше, чем при 3,3 В. Так что теперь я понизил тактовую частоту ATtiny до 8 МГц, чтобы использовать источник питания 3,3 В. Таким образом, выход ввода-вывода соответствует ожиданиям передатчиков. Теперь связь работает.

Спасибо за помощь, Макс!

,