nRF52832 'เจคเฉ‡ เจ•เฉฑเจš เจฆเฉ‡ เจชเฉˆเจจเจฒ เจจเจพเจฒ เจฎเจฟเฉฐเจจเฉ€ เจŸเฉฑเจš เจธเจตเจฟเฉฑเจš

เจ…เฉฑเจœ เจฆเฉ‡ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจคเฉเจนเจพเจกเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเจพเจ‚เจเจพ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚เฅค เจ‡เจธ เจตเจพเจฐ เจ‡เจน เจธเจผเฉ€เจธเจผเฉ‡ เจฆเฉ‡ เจชเฉˆเจจเจฒ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจŸเฉฑเจš เจธเจตเจฟเฉฑเจš เจนเฉˆเฅค เจกเจฟเจตเจพเจˆเจธ เจธเฉฐเจ–เฉ‡เจช เจนเฉˆ, 42x42mm เจฎเจพเจชเจฆเฉ€ เจนเฉˆ (เจธเจŸเฉˆเจ‚เจกเจฐเจก เจ—เจฒเจพเจธ เจชเฉˆเจจเจฒเจพเจ‚ เจฆเฉ‡ เจฎเจพเจช 80x80mm เจนเฉเฉฐเจฆเฉ‡ เจนเจจ)เฅค เจ‡เจธ เจฏเฉฐเจคเจฐ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ เจฌเจนเฉเจค เจธเจฎเจพเจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจฒเจ—เจญเจ— เจ‡เฉฑเจ• เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจ‡เจ† เจธเฉ€เฅค

nRF52832 'เจคเฉ‡ เจ•เฉฑเจš เจฆเฉ‡ เจชเฉˆเจจเจฒ เจจเจพเจฒ เจฎเจฟเฉฐเจจเฉ€ เจŸเฉฑเจš เจธเจตเจฟเฉฑเจš

เจชเจนเจฟเจฒเฉ‡ เจตเจฟเจ•เจฒเจช atmega328 เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ 'เจคเฉ‡ เจธเจจ, เจชเจฐ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ‡เจน เจธเจญ nRF52832 เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจจเจพเจฒ เจ–เจคเจฎ เจนเฉ‹ เจ—เจฟเจ†เฅค

nRF52832 'เจคเฉ‡ เจ•เฉฑเจš เจฆเฉ‡ เจชเฉˆเจจเจฒ เจจเจพเจฒ เจฎเจฟเฉฐเจจเฉ€ เจŸเฉฑเจš เจธเจตเจฟเฉฑเจš

เจกเจฟเจตเจพเจˆเจธ เจฆเจพ เจŸเฉฑเจš เจนเจฟเฉฑเจธเจพ TTP223 เจšเจฟเจชเจธ 'เจคเฉ‡ เจšเฉฑเจฒเจฆเจพ เจนเฉˆเฅค เจฆเฉ‹เจตเฉ‡เจ‚ เจธเฉˆเจ‚เจธเจฐ เจ‡เฉฑเจ• เจ‡เฉฐเจŸเจฐเฉฑเจชเจŸ เจฆเฉเจ†เจฐเจพ เจฆเจฟเฉฑเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ‡เฉฑเจ• CR2477 เจฌเฉˆเจŸเจฐเฉ€ เจฆเฉเจ†เจฐเจพ เจธเฉฐเจšเจพเจฒเจฟเจค, TPS610981 เจšเจฟเฉฑเจช 'เจคเฉ‡ เจ‡เฉฑเจ• เจฌเฉ‚เจธเจŸ เจ•เจจเจตเจฐเจŸเจฐ เจฆเฉเจ†เจฐเจพ | เจกเจพเจŸเจพ เจธเจผเฉ€เจŸ.

nRF52832 'เจคเฉ‡ เจ•เฉฑเจš เจฆเฉ‡ เจชเฉˆเจจเจฒ เจจเจพเจฒ เจฎเจฟเฉฐเจจเฉ€ เจŸเฉฑเจš เจธเจตเจฟเฉฑเจš
nRF52832 'เจคเฉ‡ เจ•เฉฑเจš เจฆเฉ‡ เจชเฉˆเจจเจฒ เจจเจพเจฒ เจฎเจฟเฉฐเจจเฉ€ เจŸเฉฑเจš เจธเจตเจฟเฉฑเจš

เจกเจฟเจตเจพเจˆเจธ เจซเฉ€เจฒเจก-เจ‡เจซเฉˆเจ•เจŸ เจŸเฉเจฐเจพเจ‚เจธเจฟเจธเจŸเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจชเจพเจตเจฐ-เจ†เจซ เจธเจฐเจ•เจŸ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจฌเจŸเจจ เจฆเจฌเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจชเจพเจตเจฐ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจซเจฟเจฐ เจฌเจŸเจจ เจจเฉ‚เฉฐ เจธเฉ‡เจตเจพ เจฎเฉ‹เจกเจพเจ‚ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ (เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจน เจนเฉ‹เจฐ เจกเจฟเจตเจพเจˆเจธเจพเจ‚ เจจเจพเจฒ เจœเฉ‹เฉœเฉ€ เจฌเจฃเจพ เจฐเจฟเจนเจพ เจนเฉˆ, เจชเจพเจตเจฐ เจฌเฉฐเจฆ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ เจ…เจคเฉ‡ เจซเฉˆเจ•เจŸเจฐเฉ€ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ€เจธเฉˆเจŸ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ).

เจฐเจพเจœเจพเจ‚ เจ…เจคเฉ‡ เจธเฉ‡เจตเจพ เจฎเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจฃ เจฒเจˆ 2 rgb LEDs เจนเจจเฅค เจŸเจš เจฌเจŸเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ›เฉ‚เจนเจฃ เจ…เจคเฉ‡ เจธเฉ‡เจตเจพ เจฎเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจงเฉเจจเฉ€ เจธเฉฐเจ•เฉ‡เจค เจจเฉ‚เฉฐ เจ›เฉ‚เจนเจฃ เจตเฉ‡เจฒเฉ‡ เจ‡เฉฑเจ• เจ•เจฒเจฟเฉฑเจ• เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจชเจพเจˆเจœเจผเฉ‹ เจเจฎเฉ€เจŸเจฐ เจตเฉ€ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค LEDs เจ…เจคเฉ‡ piezo emitter เจจเฉ‚เฉฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ€ เจฎเจฐเจœเจผเฉ€ 'เจคเฉ‡ เจšเจพเจฒเฉ‚ เจ…เจคเฉ‡ เจฌเฉฐเจฆ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจธเจฎเจพเจฐเจŸ เจนเฉ‹เจฎ เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจฐเจพเจนเฉ€เจ‚ เจคเจ•เจจเฉ€เจ•เฉ€ เจธเฉˆเจ‚เจธเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฎเจพเจ‚เจก เจญเฉ‡เจœ เจ•เฉ‡ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ; เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจธเจฎเจพเจฐเจŸ เจนเฉ‹เจฎ เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจฐเจพเจนเฉ€เจ‚ เจฌเฉˆเจŸเจฐเฉ€ เจšเจพเจฐเจœ เจ…เจคเฉ‡ เจธเจฟเจ—เจจเจฒ เจชเฉฑเจงเจฐ เจญเฉ‡เจœเจฃ เจฒเจˆ เจ…เฉฐเจคเจฐเจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ€ เจฌเจฆเจฒ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เจน เจนเฉˆ เจฎเฉ‡เจœเจฐเจกเฉ‹เจฎเฉ‹.

เจŸเจฐเจพเจ‚เจธเจฎเจฟเจŸ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจ–เจชเจค 7mA (250kbit, 10ms), เจธเจฒเฉ€เจช เจตเจฟเฉฑเจš เจ–เจชเจค 40ยตA เจนเฉˆ, เจฌเฉฐเจฆ เจ…เจตเจธเจฅเจพ เจตเจฟเฉฑเจš เจ–เจชเจค 1ยตA เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจนเฉˆ (=โ€œเจ‡เจกเจฒโ€ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจฌเฉ‚เจธเจŸ เจ•เจจเจตเจฐเจŸเจฐ เจฆเฉ€ เจ–เจชเจค)เฅค เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจฒเจˆ Rx, tx, swd เจ•เจจเฉˆเจ•เจŸเจฐ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค 2 เจฆเฉ€ เจชเจฟเฉฑเจš เจตเจพเจฒเจพ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ 3x1.27p เจ•เจจเฉˆเจ•เจŸเจฐ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจ…เจกเจพเจชเจŸเจฐ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค

nRF52832 'เจคเฉ‡ เจ•เฉฑเจš เจฆเฉ‡ เจชเฉˆเจจเจฒ เจจเจพเจฒ เจฎเจฟเฉฐเจจเฉ€ เจŸเฉฑเจš เจธเจตเจฟเฉฑเจš

เจนเจฎเฉ‡เจธเจผเจพเจ‚ เจตเจพเจ‚เจ—, เจกเจฟเจตเจพเจˆเจธ เจฆเจพ เจธเฉฐเจšเจพเจฒเจจ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆ MySensors. เจ‡เจธ เจŸเฉฑเจš เจธเจตเจฟเฉฑเจš เจจเฉ‚เฉฐ เจฐเฉ‹เจฒเจฐ เจฌเจฒเจพเจ‡เฉฐเจก เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจตเจฐเจคเจฃ เจฆเฉ€ เจฏเฉ‹เจœเจจเจพ เจนเฉˆเฅค เจชเจฐ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฟเจฐเจซ เจคเฉเจนเจพเจกเฉ€ เจ•เจฒเจชเจจเจพ เจฆเฉเจ†เจฐเจพ เจธเฉ€เจฎเจฟเจค เจนเฉˆ. เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฎเฉ‡เจฐเฉ‡ เจฌเฉ‡เจŸเฉ‡ (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 เจตเจฟเฉฑเจš เจ•เฉ‡เจธ เจซเจพเจˆเจฒเจพเจ‚ - เจ—เฉ‚เจ—เจฒ เจกเจฐเจพเจˆเจต

Gerber PCB เจซเจพเจˆเจฒเจพเจ‚ - เจ—เฉ‚เจ—เจฒ เจกเจฐเจพเจˆเจต

เจ‡เจธ เจตเจฟเจ•เจพเจธ เจฌเจพเจฐเฉ‡ เจธเจตเจพเจฒเจพเจ‚ เจฒเจˆ, Arduinos เจ…เจคเฉ‡ Mysensors 'เจคเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจตเจฟเจ•เจพเจธ เจตเจฟเฉฑเจš เจฎเฉเจธเจผเจ•เจฒเจพเจ‚ เจฌเจพเจฐเฉ‡ เจธเจพเจกเฉ€ เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ เจšเฉˆเจŸ เจตเจฟเฉฑเจš เจนเจฎเฉ‡เจธเจผเจพ เจฌเจšเจพเจ… เจฒเจˆ เจ†เจตเฉ‡เจ—เจพ - https://t.me/mysensors_rus.

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹