Добрый день! Значит так, докладываю. Победил я эту штуку. Проблема была в схеме Arduino Uno/W5100/nRF24L01. В копилку знаний:
В такой связке они не могут использовать один и тот же сигнал SS (SlaveSelect) в SPI. Т.е. если сделать всё так, как написано у вас, то nRF24L01 не заводится. Нужно для nRF24L01 инициировать в скетче другие выводы Arduino. Я сделал так:
Ну и, естественно, схема соединения другая. После этого сразу заработало.
Попутно всплыли другие нюансы, которые не могу побороть:
1. В Конструкторе прошивки есть поле "Интервал в секундах для спящего режима". Пробую режим "Memory retention". Как-то не видно интервала, если ввести 5 сек, или, например, 30 сек. Только когда я ввёл значение 3000, задержка стала примерно в 6 сек (это приблизительно, я кнопку на секундомере руками нажимал). Т.е. похоже, что единица измерения там не секунды... При значении 30000 задержка составила примерно 1 мин 6 сек. Такое впечатление, что неправильные фьюзы (если исключить возможность ошибки в конструкторе). Но фьюзы-то я не трогал. Да и потом, тестовый "блинк" из примера работает нормально, да и не работал бы градусник, если бы фьюзы были неверные...
2. Потребляемый ток даже в режиме паузы (того самого интервала) составляет около 5 мА. Что совсем не устраивает... Предполагаю, что проблема может являться следствием п.1, если тайминги нарушены, и режим Memory retention работает неправильно...
3. Через подтягивающий резистор 4,7 кОм, подключенный между + и DATA градусника, утекает довольно большой ток. Нельзя ли реализовать ещё какой-нибудь свободный GPIO в качестве out (например, 0.0), который в спящем режиме сидел бы на -, а в режиме измерения имел значение 1? Тогда подтягивающий резистор можно было бы подключить к нему, и в режиме паузы не тратилось бы электричество.
Максим, помогите, пожалуйста.