αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αžαŸ’αž„αŸƒαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž“αžΌαžœαž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αž˜αžΈαž˜αž½αž™αŸ” αž›αžΎαž€β€‹αž“αŸαŸ‡β€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž€αž»αž„αžαžΆαž€αŸ‹β€‹αž”αŸ‰αŸ‡β€‹αž‡αžΆαž˜αž½αž™β€‹αž”αž“αŸ’αž‘αŸ‡β€‹αž€αž‰αŸ’αž…αž€αŸ‹αŸ” αž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αž˜αžΆαž“αž‘αŸ†αž αŸ†αžαžΌαž… αž˜αžΆαž“αž‘αŸ†αž αŸ† 42x42mm (αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž˜αžΆαž“αž‘αŸ†αž αŸ† 80x80mm)αŸ” αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžαžΆαŸ†αž„αž–αžΈαž™αžΌαžšαž™αžΆαžšαžŽαžΆαžŸαŸ‹αž˜αž€αž αžΎαž™ αž”αŸ’αžšαž αŸ‚αž›αž˜αž½αž™αž†αŸ’αž“αžΆαŸ†αž˜αž»αž“αŸ”

αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832

αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ†αž”αžΌαž„αž‚αžΊαž“αŸ…αž›αžΎ microcontroller atmega328 αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹αžœαžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„ microcontroller nRF52832 αŸ”

αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832

αž•αŸ’αž“αŸ‚αž€αž”αŸ‰αŸ‡αžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž”αž“αŸ’αž‘αŸ‡αžˆαžΈαž” TTP223αŸ” αž§αž”αž€αžšαžŽαŸαž…αžΆαž”αŸ‹αžŸαž‰αŸ’αž‰αžΆαž‘αžΆαŸ†αž„αž–αžΈαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž˜αŸ’αžšαžΎαžŠαŸ„αž™αž€αžΆαžšαžšαŸ†αžαžΆαž“αž˜αž½αž™αŸ” αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αžαŸ’αž˜ CR2477 αžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αŸ’αž›αŸ‚αž„αž‡αŸ†αžšαž»αž‰αž“αŸ…αž›αžΎαž”αž“αŸ’αž‘αŸ‡αžˆαžΈαž” TPS610981 | αžŸαž“αŸ’αž›αžΉαž€αž‘αž·αž“αŸ’αž“αž“αŸαž™.

αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832
αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832

αž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αž’αž“αž»αžœαžαŸ’αžαžŸαŸ€αž‚αŸ’αžœαžΈαž”αž·αž‘αžαžΆαž˜αž–αž›αžŠαŸ„αž™αž”αŸ’αžšαžΎαžαŸ’αžšαž„αŸ‹αžŸαŸŠαžΈαžŸαŸ’αž‘αŸαžšαž”αŸ‚αž”αž•αŸ‚αž“αžœαžΆαž›αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αž»αž…αž”αŸŠαžΌαžαž»αž„ αž“αŸ„αŸ‡ microcontroller αžαŸ’αž›αž½αž“αžœαžΆαžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžαžΆαž˜αž–αž› αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸŠαžΌαžαž»αž„αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž”αŸ€αž”αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ (αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžœαžΆαž€αŸ†αž–αž»αž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž”αž·αž‘αžαžΆαž˜αž–αž› αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αž‘αžΎαž„αžœαž·αž‰αž‘αŸ…αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž”αžŸαŸ‹αžšαŸ„αž„αž…αž€αŸ’αžš)αŸ”

αž˜αžΆαž“ 2 rgb LEDs αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž αžΆαž‰αžŸαŸ’αžαžΆαž“αž—αžΆαž– αž“αž·αž„αžšαž”αŸ€αž”αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ” αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž…αŸαž‰ piezo αž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž•αž„αžŠαŸ‚αžš αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž…αž»αž…αž“αŸ…αž–αŸαž›αž”αŸ‰αŸ‡αž”αŸŠαžΌαžαž»αž„αž”αŸ‰αŸ‡ αž“αž·αž„αž€αžΆαžšαž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αžŸαŸ†αž‘αŸαž„αž“αŸƒαžšαž”αŸ€αž”αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ” LEDs αž“αž·αž„ piezo emitter αž’αžΆαž…αž”αžΎαž€ αž“αž·αž„αž”αž·αž‘αžαžΆαž˜αž€αžΆαžšαžŸαŸ†αžšαŸαž…αž…αž·αžαŸ’αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžαžΆαž˜αžšαž™αŸˆαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž•αŸ’αž‘αŸ‡αž†αŸ’αž›αžΆαžαžœαŸƒαžŠαŸ„αž™αž•αŸ’αž‰αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‘αŸ…αž§αž”αž€αžšαžŽαŸαž…αžΆαž”αŸ‹αžŸαž‰αŸ’αž‰αžΆαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸαž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž…αž“αŸ’αž›αŸ„αŸ‡αž–αŸαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αž‘αž»αž€αžαŸ’αž˜ αž“αž·αž„αž€αž˜αŸ’αžšαž·αžαžŸαž‰αŸ’αž‰αžΆαžαžΆαž˜αžšαž™αŸˆαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž•αŸ’αž‘αŸ‡αž†αŸ’αž›αžΆαžαžœαŸƒαž•αž„αžŠαŸ‚αžšαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† MAJORDOMO.

αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž”αž‰αŸ’αž‡αžΌαž“αž‚αžΊ 7mA (250kbit, 10ms) αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αŸαž„αž‚αžΊ 40Β΅A αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αž·αž‘αž‚αžΊαžαž·αž…αž‡αžΆαž„ 1Β΅A (= αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αŸ’αž›αŸ‚αž„αž‡αŸ†αžšαž»αž‰αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” "αž‘αŸ†αž“αŸαžš")αŸ” αž§αž”αž€αžšαžŽαŸαž—αŸ’αž‡αžΆαž”αŸ‹ Rx, tx, swd αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αŸ” αž§αž”αž€αžšαžŽαŸαž—αŸ’αž‡αžΆαž”αŸ‹ 2x3p αžαŸ’αž“αžΆαžαžαžΌαž…αžŠαŸ‚αž›αž˜αžΆαž“αž€αž˜αŸ’αžšαž·αž 1.27 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž’αžΆαžŠαžΆαž”αŸ‹αž‘αŸαžšαž–αž·αžŸαŸαžŸαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832

αžŠαžΌαž…αžšαžΆαž›αŸ‹αžŠαž„ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎαž–αž·αž’αžΈαž€αžΆαžš MySensors. αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž‚αŸ’αžšαŸ„αž„αž“αžΉαž„αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž–αž·αž€αžΆαžšαž—αŸ’αž“αŸ‚αž€αžšαž”αžŸαŸ‹ roller αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž‘αžΌαž‘αŸ… αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΉαž˜αž€αžΆαžšαžŸαŸ’αžšαž˜αžΎαž›αžŸαŸ’αžšαž˜αŸƒαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΌαž“αž”αŸ’αžšαž»αžŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† (αž’αžΆαž™αž» 7 αž†αŸ’αž“αžΆαŸ†) αž”αžΆαž“αž’αŸ’αžœαžΎαž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž‘αž·αž‰αž…αŸ†αž“αž½αž“ 3 αžšαž½αž…αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αŸ†αžŽαŸ‚: αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€ αž“αž·αž„αž”αž·αž‘αž–αž“αŸ’αž›αžΊαž“αŸ…αž€αŸ’αž“αž»αž„αž”αž„αŸ’αž‚αž“αŸ‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžΆαž„αž„αžΌαžαž‘αžΉαž€ (αžœαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αŸ‰αŸ„αž“αž‘αžΆαž”αž–αžΈαž₯αžŠαŸ’αž‹) αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€αž—αŸ’αž›αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž“αŸ’αž‘αž”αŸ‹αž‘αžΉαž€αŸ” αž…αŸ’αžšαž€αžšαž”αŸ€αž„αžŠαŸαžœαŸ‚αž„ αž“αž·αž„αž„αž„αžΉαžαž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαžŠαŸ†αžŽαžΎαžšαž‘αŸ…αž”αž„αŸ’αž‚αž“αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž’αžΆαž„αž„αžΌαžαž‘αžΉαž€ αž“αž·αž„αž˜αž½αž™αž‘αŸ€αžαž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαžΆαž€αŸ‹αž‚αŸ’αžšαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžΎαž€αž—αŸ’αž›αžΎαž„αž€αŸ’αž“αž»αž„αž”αž“αŸ’αž‘αž”αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž™αŸ‰αžΆαž„αž›αžΏαž“ αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αžŸαžαŸ’αžœαž…αž˜αŸ’αž›αŸ‚αž€αžšαžαŸ‹αž…αŸαž‰αŸ”

αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832
αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832
αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832

αž€αžšαžŽαžΈαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž‡αžΆαž”αŸ’αžšαž–αŸƒαžŽαžΈαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž– SLA αž§αž”αž€αžšαžŽαŸαž˜αžΆαž“αž‘αŸ†αž αŸ†αžαžΌαž… αž€αžšαžŽαžΈαž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαžαžΌαž… αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž“αŸαŸ‡αž‚αžΊαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ”

αž˜αžΎαž›αž‚αŸ†αžšαžΌαžŠαŸ‚αž›αž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832
αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832
αž€αž»αž„αžαžΆαž€αŸ‹αž”αŸ‰αŸ‡αžαŸ’αž“αžΆαžαžαžΌαž…αž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αž“αŸ…αž›αžΎ nRF52832

αž˜αŸαžŠαŸ‚αž€β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŸαŸ’αž’αž·αžβ€‹αž‡αžΆαž”αŸ‹β€‹αž€αŸ’αž“αž»αž„β€‹αžŸαŸ’αžšαŸ„αž˜ αž“αž·αž„β€‹αž‚αž˜αŸ’αžšαž”β€‹αž”αŸ’αžšαž’αž”αŸ‹β€‹αžαŸ’αž˜αŸ”

αžœαžΈαžŠαŸαž’αžΌαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αŸ–



αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αž„αŸ‹αž’αŸ’αžœαžΎαž˜αŸ’αžαž„αž‘αŸ€αžαŸ–

αžŸαžΆαž€αž›αŸ’αž”αž„αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž»αž„αžαžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž–αž·αž€αžΆαžšαž—αŸ’αž“αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Arduino IDE

αžαŸ’αžŸαŸ‚αž—αŸ’αž›αžΎαž„ Arduino

int8_t timer_status = 0;
boolean sens_flag1 = 0;
boolean sens_flag2 = 0;
boolean switch_a = 0;
boolean switch_b = 0;
uint16_t temp;
float vcc;
int battery;
int old_battery;
uint32_t oldmillis;
uint32_t newmillis;
uint32_t interrupt_time;
uint32_t SLEEP_TIME = 7000;
uint32_t SLEEP_TIME_W;
uint32_t SLEEP_TIME_W2;
int NrfRSSI;
uint16_t NrfRSSI2;
boolean wait_off;
//#define MY_DEBUG
#define MY_DISABLED_SERIAL
#define MY_RADIO_NRF5_ESB
#define MY_PASSIVE_NODE
#define MY_NODE_ID 120
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#define MY_TRANSPORT_UPLINK_CHECK_DISABLED
#define POWER_CHILD_ID 110
#define UP_POWER_SWITCH_ID 1
#define DOWN_POWER_SWITCH_ID 2
#define CHILD_ID_nRF52_RSSI_RX 3
#define BAT_COOF 0.0092957746478873
#define BAT_MIN 200
#define BAT_MAX 290
#include <MySensors.h>
MyMessage upMsg(UP_POWER_SWITCH_ID, V_STATUS);
MyMessage downMsg(DOWN_POWER_SWITCH_ID, V_STATUS);
MyMessage powerMsg(POWER_CHILD_ID, V_VAR1);
MyMessage msgRF52RssiReceiv(CHILD_ID_nRF52_RSSI_RX, V_VAR1);
void preHwInit() {
pinMode(31, OUTPUT); //power management pin
digitalWrite(31, HIGH);
delay(3000);
pinMode(3, INPUT); // on off mode button
pinMode(25, OUTPUT); // sens1 led
pinMode(26, OUTPUT); // sens1 led
pinMode(27, OUTPUT); // sens1 led
pinMode(6, OUTPUT); // sens21 led
pinMode(7, OUTPUT); // sens2 led
pinMode(8, OUTPUT); // sens2 led
pinMode(28, OUTPUT); // bizzer
pinMode(2, INPUT); // common interrupt for touch sensors
pinMode(9, INPUT); // touch sensors1
pinMode(10, INPUT); //touch sensors2
pinMode(29, INPUT); // battery
digitalWrite(28, LOW);
digitalWrite(27, HIGH);
digitalWrite(26, HIGH);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
void before()
{
NRF_POWER->DCDCEN = 1;
analogReadResolution(12);
disableNfc();
turnOffAdc();
digitalWrite(25, LOW);
digitalWrite(6, LOW);
wait(200);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
wait(100);
playSound0();
wait(100);
digitalWrite(25, LOW);
digitalWrite(6, LOW);
wait(200);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
wait(3000);
digitalWrite(27, LOW);
digitalWrite(8, LOW);
wait(200);
digitalWrite(27, HIGH);
digitalWrite(8, HIGH);
wait(400);
digitalWrite(6, LOW);
digitalWrite(25, LOW);
wait(200);
digitalWrite(6, HIGH);
digitalWrite(25, HIGH);
wait(400);
digitalWrite(26, LOW);
digitalWrite(7, LOW);
wait(200);
digitalWrite(26, HIGH);
digitalWrite(7, HIGH);
wait(1000);
digitalWrite(26, LOW);
digitalWrite(7, LOW);
}
void setup()
{
digitalWrite(26, HIGH);
digitalWrite(7, HIGH);
wait(50);
playSound();
wait(2000);
readBatLev();
wait(200);
SLEEP_TIME_W = SLEEP_TIME;
}
void presentation()
{
sendSketchInfo("EFEKTA ON|OFF NODE 2CH", "1.0");
wait(100);
present(POWER_CHILD_ID, S_CUSTOM, "BATTERY DATA");
wait(100);
present(UP_POWER_SWITCH_ID, S_BINARY, "UP SWITCH");
wait(100);
present(DOWN_POWER_SWITCH_ID, S_BINARY, "DOWN SWITCH");
}
void loop()
{
if (sens_flag1 == 0 && sens_flag2 == 0) {
if (switch_a == 0 && switch_b == 0) {
timer_status = sleep(digitalPinToInterrupt(2), RISING, digitalPinToInterrupt(3), RISING, 3600000, false);
wait_off = 1;
} else {
//oldmillis = millis();
timer_status = sleep(digitalPinToInterrupt(2), RISING, digitalPinToInterrupt(3), RISING, SLEEP_TIME_W, false);
wait_off = 0;
}
}
if (timer_status == 3) {
wait(100);
digitalWrite(27, LOW);
digitalWrite(8, LOW);
wait(2000);
digitalWrite(27, HIGH);
digitalWrite(8, HIGH);
wait(100);
digitalWrite(31, LOW);
}
if (timer_status == 2) {
if (digitalRead(9) == HIGH && sens_flag1 == 0 && switch_b == 0) {
sens_flag1 = 1;
if (switch_a == 0) {
oldmillis = millis();
SLEEP_TIME_W = SLEEP_TIME;
switch_a = 1;
digitalWrite(6, LOW);
wait(10);
playSound1();
wait(20);
playSound2();
wait(50);
send(upMsg.set(switch_a));
wait(200);
} else {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
}
if (digitalRead(10) == HIGH && sens_flag2 == 0 && switch_a == 0) {
sens_flag2 = 1;
if (switch_b == 0) {
oldmillis = millis();
SLEEP_TIME_W = SLEEP_TIME;
switch_b = 1;
digitalWrite(25, LOW);
wait(10);
playSound1();
wait(20);
playSound2();
wait(50);
send(downMsg.set(switch_b));
wait(200);
} else {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
}
if (digitalRead(9) == LOW && sens_flag1 == 1) {
sens_flag1 = 0;
}
if (digitalRead(10) == LOW && sens_flag2 == 1) {
sens_flag2 = 0;
}
if (switch_a == 1 || switch_b == 1) {
if (wait_off == 0) {
newmillis = millis();
wait(10);
SLEEP_TIME_W2 = SLEEP_TIME_W;
wait(10);
interrupt_time = newmillis - oldmillis;
wait(10);
SLEEP_TIME_W = SLEEP_TIME_W2 - interrupt_time;
wait(10);
Serial.print("WAS IN A SLEEP: ");
Serial.print(newmillis - oldmillis);
Serial.println(" MILLISECONDS");
if (SLEEP_TIME_W < 1000) {
if (switch_a == 1) {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
if (switch_b == 1) {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
SLEEP_TIME_W = SLEEP_TIME;
wait(50);
}
Serial.println(SLEEP_TIME);
Serial.println(SLEEP_TIME_W);
Serial.println(SLEEP_TIME_W2);
Serial.print("GO TO SLEEP FOR: ");
Serial.print(SLEEP_TIME_W);
Serial.println(" MILLISECONDS");
}
oldmillis = millis();
}
}
if (timer_status == -1) {
if (switch_a == 1 || switch_b == 1) {
if (switch_a == 1) {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
if (switch_b == 1) {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
} else {
readBatLev();
}
}
}
void disableNfc() {
NRF_NFCT->TASKS_DISABLE = 1;
NRF_NVMC->CONFIG = 1;
NRF_UICR->NFCPINS = 0;
NRF_NVMC->CONFIG = 0;
}
void turnOffAdc() {
if (NRF_SAADC->ENABLE) {
NRF_SAADC->TASKS_STOP = 1;
while (NRF_SAADC->EVENTS_STOPPED) {}
NRF_SAADC->ENABLE = 0;
while (NRF_SAADC->ENABLE) {}
}
}
void myTone(uint32_t j, uint32_t k) {
j = 500000 / j;
k += millis();
while (k > millis()) {
digitalWrite(28, HIGH); delayMicroseconds(j);
digitalWrite(28, LOW ); delayMicroseconds(j);
}
}
void playSound0() {
myTone(1300, 50);
wait(20);
myTone(1300, 50);
wait(50);
}
void playSound() {
myTone(700, 30); 
wait(10);
myTone(700, 30);
wait(10);
myTone(700, 30);
wait(50);
}
void playSound1() {
myTone(200, 10);
wait(10);
myTone(400, 5);
wait(30);
}
void playSound2() {
myTone(400, 10);
wait(10);
myTone(200, 5);
wait(30);
}
void readBatLev() {
temp = analogRead(29);
vcc = temp * 0.0033 * 100;
battery = map((int)vcc, BAT_MIN, BAT_MAX, 0, 100);
if (battery < 0) {
battery = 0;
}
if (battery > 100) {
battery = 100;
}
sendBatteryLevel(battery, 1);
wait(2000, C_INTERNAL, I_BATTERY_LEVEL);
send(powerMsg.set(temp));
wait(200);
NrfRSSI = transportGetReceivingRSSI();
NrfRSSI2 = map(NrfRSSI, -85, -40, 0, 100);
if (NrfRSSI2 < 0) {
NrfRSSI2 = 0;
}
if (NrfRSSI2 > 100) {
NrfRSSI2 = 100;
}
send(msgRF52RssiReceiv.set(NrfRSSI2));
wait(200);
}

αžŸαŸ†αžŽαž»αŸ†αžšαžΏαž„αž“αŸ…αž€αŸ’αž“αž»αž„ stl - google drive

αž―αž€αžŸαžΆαžš Gerber PCB - google drive

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαž½αžšαž’αŸ†αž–αžΈαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αŸαŸ‡ αž’αŸ†αž–αžΈαž€αžΆαžšαž›αŸ†αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αŸ…αž›αžΎ Arduinos αž“αž·αž„ Mysensors αž“αžΉαž„αžαŸ‚αž„αžαŸ‚αž˜αž€αž‡αž½αž™αžŸαž„αŸ’αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αž‡αŸ‚αž€αžαžΆαž˜αžαŸαž‘αŸαž€αŸ’αžšαžΆαž˜αžšαž”αžŸαŸ‹αž™αžΎαž„ - https://t.me/mysensors_rus.

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹