среда, 15 октября 2014 г.

nRF24L01. Энергосбережение 2: Путь самурая

В первой части мы научились работать с nRF вообще, во второй разобрались с тем, как запитать его так, чтобы не разориться на батарейках. Уже после ее публикации она была дополнена интересным, но пока мной не опробованным, вариантом №5 (бонусным), обещающим наиэффективнейший режим энергосбережения!

Напомню, суть его сводится к тому, что экономное устройство (в моем случае сенсорный выключатель) само периодически (раз в 64-128мс) обращается к роутеру за данными, а роутер отвечает либо пустым пакетом из нулей (например), либо пакетом данных, если таковой ожидает востребования. Сам роутер занимается тем, что передает пакеты от ПК в радиоэфир и обратно.
Причем ответный пакет передается через фичу W_ACK_PAYLOAD, что здорово упрощает работу и код прошивки приемника и передатчика (в частности переключение TX-RX-TX происходит в модуле само).

Более того, на ответный ACK-пакет, пришедший по этой фиче, на передававшей стороне (выключателе) помимо TX_DS генерируется отдельное прерывание RX_DR! Мне код выключателя вообще менять не пришлось, только регистры модуля при старте подтюнить! А, ну и добавить периодический пинг роутера спец.пакетом, в ответ на который тот должен W_ACK_PAYLOAD мне в ответ заряжать.
Короче подробности и Success Story - далее.