เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832

เปƒเบ™โ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ‚เบญเบ‡โ€‹เบกเบทเป‰โ€‹เบ™เบตเป‰โ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบเบฑเบšโ€‹เบ—เปˆเบฒเบ™โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เปƒเบซเบกเปˆโ€‹. เป€เบงเบฅเบฒเบ™เบตเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบชเปเบฒเบœเบฑเบ”เบเบฑเบšเบเบฐเบ”เบฒเบ™เปเบเป‰เบง. เบญเบธเบ›เบฐเบเบญเบ™เปเบกเปˆเบ™เบซเบ™เบฒเปเบซเบ™เป‰เบ™, เบ‚เบฐเบซเบ™เบฒเบ” 42x42mm (เปเบœเบ‡เปเบเป‰เบงเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบกเบตเบ‚เบฐเบซเบ™เบฒเบ” 80x80mm). เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบ™เบตเป‰เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบ›เบฐเบกเบฒเบ™เบซเบ™เบถเปˆเบ‡เบ›เบตเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ microcontroller atmega328, เปเบ•เปˆเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡เบ”เป‰เบงเบ microcontroller nRF52832.

เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832

เบžเบฒเบเบชเปˆเบงเบ™เบชเปเบฒเบœเบฑเบ”เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบŠเบดเบš TTP223. เป€เบŠเบฑเบ™เป€เบŠเบตเบ—เบฑเบ‡เบชเบญเบ‡เปเบกเปˆเบ™เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบ”เบเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบซเบ™เบถเปˆเบ‡. เบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เป‚เบ”เบเปเบšเบ”เป€เบ•เบตเบฃเบตเป‰ CR2477, เบœเปˆเบฒเบ™เบ•เบปเบงเปเบ›เบ‡เป€เบžเบตเปˆเบกเปƒเบ™เบŠเบดเบš TPS610981 | เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832
เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832

เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบงเบปเบ‡โ€‹เบˆเบญเบ™โ€‹เบ›เบดเบ”โ€‹เป„เบŸโ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ transistors เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบšโ€‹เบžเบฒเบโ€‹เบชเบฐโ€‹เบซเบ™เบฒเบกโ€‹. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบปเบ”เบ›เบธเปˆเบก, เบ•เบปเบงเบ„เบงเบšเบ„เบธเบก microcontroller เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ›เบธเปˆเบกเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเป‚เบซเบกเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เบญเบทเปˆเบ™เป†, เบ›เบดเบ”เบเบฒเบ™เป€เบ›เบตเบ”เปเบฅเบฐเบ›เบฑเบšเบ„เปˆเบฒเบเบฑเบšเป‚เบฎเบ‡เบ‡เบฒเบ™).

เบกเบต 2 rgb LEDs เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบตเป‰เบšเบญเบเบฅเบฑเบ”เปเบฅเบฐเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. A piezo emitter เบเบฑเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบžเบทเปˆเบญเบˆเปเบฒเบฅเบญเบ‡เบเบฒเบ™เบ„เบฅเบดเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ•เบฐเบ›เบธเปˆเบกเบชเปเบฒเบœเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบŠเบตเป‰เบšเบญเบเบชเบฝเบ‡เบ‚เบญเบ‡เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เป„เบŸ LED เปเบฅเบฐ piezo emitter เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เปเบฅเบฐเบ›เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบœเปˆเบฒเบ™เบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเป€เบฎเบทเบญเบ™เบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐเป‚เบ”เบเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เป„เบ›เบซเบฒเป€เบŠเบฑเบ™เป€เบŠเบตเบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™; เบœเบนเป‰เปƒเบŠเป‰เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เปˆเบฒเบซเบกเปเป‰เป„เบŸเปเบฅเบฐเบฅเบฐเบ”เบฑเบšเบชเบฑเบ™เบเบฒเบ™เบœเปˆเบฒเบ™เบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเป€เบฎเบทเบญเบ™เบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบเบกเบฑเบ™ MAJORDOMO.

เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเปƒเบ™เป‚เบซเบกเบ”เบ–เปˆเบฒเบเบ—เบญเบ”เปเบกเปˆเบ™ 7mA (250kbit, 10ms), เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเปƒเบ™เบเบฒเบ™เบ™เบญเบ™เปเบกเปˆเบ™ 40ยตA, เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเปƒเบ™เบชเบฐเบžเบฒเบšเบ›เบดเบ”เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒ 1ยตA (= เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™เปƒเบ™เป‚เบซเบกเบ” "idle"). Rx, tx, swd connector เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰. เป‚เบ•เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบ 2x3p เบ—เบตเปˆเบกเบต pitch 1.27 เบ–เบทเบเปƒเบŠเป‰. เบญเบฐเปเบ”เบšเป€เบ•เบตเบžเบดเป€เบชเบ”เปเบกเปˆเบ™เบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป€เบžเบทเปˆเบญเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบก.

เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832

เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบชเบฐเป€เบซเบกเบต, เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเป‚เบ›เป‚เบ•เบ„เบญเบ™ MySensors. เบชเบฐเบงเบดเบ”เบชเปเบฒเบœเบฑเบ”เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ•เบฒเบšเบญเบ” roller. เปเบ•เปˆเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป„เบ”เป‰เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเป‚เบ”เบเบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบฅเบนเบเบŠเบฒเบเบ‚เบญเบ‡เบ‚เป‰เบญเบ (เบญเบฒเบเบธ 7 เบ›เบต) เป„เบ”เป‰เบชเบฑเปˆเบ‡ 3 เบชเบฐเบšเบฑเบšเปเบฅเป‰เบง: เป€เบ›เบตเบ”เปเบฅเบฐเบ›เบดเบ”เป„เบŸเปƒเบ™เบซเป‰เบญเบ‡เบ™เป‰เปเบฒเบ—เบตเปˆเบกเบตเบญเปˆเบฒเบ‡เบญเบฒเบšเบ™เป‰เปเบฒ (เบกเบฑเบ™เบˆเบฐเบ•เบดเบ”เบขเบนเปˆเบ•เปˆเปเบฒเบˆเบฒเบเบžเบทเป‰เบ™), เป€เบ›เบตเบ”เป„เบŸเปƒเบ™เบซเป‰เบญเบ‡เบ™เป‰เปเบฒ. เปเบฅเบงเบ—เบฒเบ‡เบเบฒเบงเปเบฅเบฐเบกเบทเบ”เปƒเบ™เป€เบงเบฅเบฒเป€เบ”เบตเบ™เบ—เบฒเบ‡เป„เบ›เบซเป‰เบญเบ‡เบ™เป‰เปเบฒเบ—เบตเปˆเบกเบตเบญเปˆเบฒเบ‡เบญเบฒเบšเบ™เป‰เปเบฒ, เปเบฅเบฐเบญเบตเบเบšเปˆเบญเบ™เบซเบ™เบถเปˆเบ‡เป€เบ›เบฑเบ™เบšเปˆเบญเบ™เบ™เบญเบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เปเบชเบ‡เบชเบฐเบซเบงเปˆเบฒเบ‡เปƒเบ™เบซเป‰เบญเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเป€เบžเบทเปˆเบญเปƒเบซเป‰ monsters เบซเบ™เบตเป„เบ›.

เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832
เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832
เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832

เบเปเบฅเบฐเบ™เบตเป„เบ”เป‰เบ–เบทเบเบžเบดเบกเบ•เบฒเบกเบ›เบฐเป€เบžเบ™เบตเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบžเบดเบก SLA, เบญเบธเบ›เบฐเบเบญเบ™เปเบกเปˆเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบเปเบฅเบฐเบ™เบตเป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบŠเบตเบเบฒเบ™เบžเบดเบกเบ™เบตเป‰เปเบกเปˆเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™.

เป€เบšเบดเปˆเบ‡เปเบšเบšเบžเบดเบกเบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832
เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832
เบ›เบธเปˆเบกเบชเบณเบœเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบžเป‰เบญเบกเปเบœเบ‡เปเบเป‰เบงเป€เบ—เบดเบ‡ nRF52832

เบเบฒเบ™เบชเบฐเบเบปเบ”เบˆเบดเบ”เปเบกเปˆเบ™เบเบฒเบงเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเปเบฅเบฐเบ™เบตเปเบฅเบฐเบเบฒเบ™เบ›เบปเบเบซเบธเป‰เบกเบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบซเบกเปเป‰เป„เบŸ.

เบงเบดโ€‹เบ”เบตโ€‹เป‚เบญโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™โ€‹เบ™เบตเป‰โ€‹:



เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบŠเป‰เปเบฒ:

เบ—เบปเบ”เบชเบญเบšเบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฐเบงเบดเบ”เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ•เบฒเบšเบญเบ” roller เบชเปเบฒเบฅเบฑเบš 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 เบชเบฐโ€‹เป€เบซเบกเบตโ€‹เบˆเบฐโ€‹เบกเบฒโ€‹เบŠเปˆเบงเบโ€‹เป€เบซเบผเบทเบญโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบชเบปเบ™โ€‹เบ—เบฐโ€‹เบ™เบฒ telegram เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒ - https://t.me/mysensors_rus.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™