nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš

āĻ†āĻœāĻ•ā§‡āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻļā§‡āĻ¯āĻŧāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĨ¤ āĻāĻ‡ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻšā§‡āĻ° āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ¸ā§āĻ‡āĻšāĨ¤ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸āĻŸāĻŋ āĻ•āĻŽāĻĒā§āĻ¯āĻžāĻ•ā§āĻŸ, 42x42 āĻŽāĻŋāĻŽāĻŋ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ (āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻŽāĻžāĻ¤ā§āĻ°āĻž 80x80 āĻŽāĻŋāĻŽāĻŋ)āĨ¤ āĻāĻ‡ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡āĻ° āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ…āĻ¨ā§‡āĻ• āĻ†āĻ—ā§‡, āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻ• āĻŦāĻ›āĻ° āĻ†āĻ—ā§‡āĨ¤

nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš

āĻĒā§āĻ°āĻĨāĻŽ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ atmega328 āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛āĻžāĻ°ā§‡ āĻ›āĻŋāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ nRF52832 āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻļā§‡āĻˇ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš

āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸āĻŸāĻŋāĻ° āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ…āĻ‚āĻļāĻŸāĻŋ TTP223 āĻšāĻŋāĻĒāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻšāĻ˛ā§‡āĨ¤ āĻ‰āĻ­āĻ¯āĻŧ āĻ¸ā§‡āĻ¨ā§āĻ¸āĻ° āĻāĻ• āĻŦāĻžāĻ§āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻŦā§‡āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧ. āĻāĻ•āĻŸāĻŋ CR2477 āĻŦā§āĻ¯āĻžāĻŸāĻžāĻ°āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻšāĻžāĻ˛āĻŋāĻ¤, TPS610981 āĻšāĻŋāĻĒā§‡ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¸ā§āĻŸ āĻ•āĻ¨āĻ­āĻžāĻ°ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ | āĻ¤āĻĨā§āĻ¯ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž.

nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš
nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš

āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸āĻŸāĻŋ āĻĢāĻŋāĻ˛ā§āĻĄ-āĻ‡āĻĢā§‡āĻ•ā§āĻŸ āĻŸā§āĻ°āĻžāĻ¨āĻœāĻŋāĻ¸ā§āĻŸāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ°-āĻ…āĻĢ āĻ¸āĻžāĻ°ā§āĻ•āĻŋāĻŸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§‡āĨ¤ āĻŦā§‹āĻ¤āĻžāĻŽ āĻŸāĻŋāĻĒāĻžāĻ¨ā§‹āĻ° āĻĒāĻ°ā§‡, āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛āĻ•ā§‡ āĻŦāĻžāĻ§āĻž āĻĻā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻŽā§‹āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§‹āĻ¤āĻžāĻŽāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (āĻ†āĻŽāĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻŸāĻŋ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž, āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻĢā§āĻ¯āĻžāĻ•ā§āĻŸāĻ°āĻŋ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž)āĨ¤

āĻ°āĻžāĻœā§āĻ¯ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻŽā§‹āĻĄ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ 2 rgb LED āĻ†āĻ›ā§‡āĨ¤ āĻŸāĻžāĻš āĻŦā§‹āĻ¤āĻžāĻŽ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻŽā§‹āĻĄā§‡āĻ° āĻļāĻŦā§āĻĻ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻŋāĻ• āĻ…āĻ¨ā§āĻ•āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ‡āĻœā§‹ āĻ‡āĻŽāĻŋāĻŸāĻžāĻ°āĻ“ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ LEDs āĻāĻŦāĻ‚ piezo emitter āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻžāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻšāĻžāĻ˛ā§ āĻāĻŦāĻ‚ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ¸ā§‡āĻ¨ā§āĻ¸āĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻžāĻ āĻŋāĻ¯āĻŧā§‡ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§‹āĻŽ āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛āĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻŸāĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ; āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§‹āĻŽ āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛āĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŦā§āĻ¯āĻžāĻŸāĻžāĻ°āĻŋ āĻšāĻžāĻ°ā§āĻœ āĻāĻŦāĻ‚ āĻ¸āĻŋāĻ—āĻ¨ā§āĻ¯āĻžāĻ˛ āĻ¸ā§āĻ¤āĻ° āĻĒāĻžāĻ āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻ§āĻžāĻ¨āĻ“ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ†āĻŽāĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻāĻŸāĻž āĻŽā§‡āĻœāĻ°āĻĄā§‹āĻŽā§‹.

āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻŸ āĻŽā§‹āĻĄā§‡ āĻ–āĻ°āĻš āĻšāĻ˛ 7mA (250kbit, 10ms), āĻ˜ā§āĻŽā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ–āĻ°āĻš āĻšāĻ˛ 40ÂĩA, āĻ…āĻĢ āĻ¸ā§āĻŸā§‡āĻŸā§‡ āĻ–āĻ°āĻš āĻšāĻ˛ 1ÂĩA āĻāĻ° āĻ•āĻŽ (= “āĻ…āĻ˛āĻ¸â€ āĻŽā§‹āĻĄā§‡ āĻŦā§āĻ¸ā§āĻŸ āĻ•āĻ¨āĻ­āĻžāĻ°ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻ–āĻ°āĻš)āĨ¤ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻāĻ° āĻœāĻ¨ā§āĻ¯ Rx, tx, swd āĻ•āĻžāĻ¨ā§‡āĻ•ā§āĻŸāĻ° āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ†āĻ›ā§‡āĨ¤ 2 āĻĒāĻŋāĻš āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻˇā§āĻĻā§āĻ° 3x1.27p āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻ…ā§āĻ¯āĻžāĻĄāĻžāĻĒā§āĻŸāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš

āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡āĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻŽāĻžāĻ‡ āĻ¸ā§‡āĻ¨ā§āĻ¸āĻ°. āĻāĻ‡ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ¸ā§āĻ‡āĻš āĻ°ā§‹āĻ˛āĻžāĻ° āĻŦā§āĻ˛āĻžāĻ‡āĻ¨ā§āĻĄ āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻžāĻ° āĻ›ā§‡āĻ˛ā§‡ (7 āĻŦāĻ›āĻ° āĻŦāĻ¯āĻŧāĻ¸ā§€) āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ¸ā§āĻ‡āĻš āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ 3āĻŸāĻŋ āĻ…āĻ°ā§āĻĄāĻžāĻ° āĻ•āĻ°ā§‡āĻ›ā§‡: āĻŦāĻžāĻĨāĻŸāĻžāĻŦ āĻ¸āĻš āĻŸāĻ¯āĻŧāĻ˛ā§‡āĻŸā§‡ āĻ†āĻ˛ā§‹ āĻœā§āĻŦāĻžāĻ˛āĻžāĻ¨ā§‹ āĻāĻŦāĻ‚ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ (āĻāĻŸāĻŋ āĻŽā§‡āĻā§‡ āĻĨā§‡āĻ•ā§‡ āĻ¨ā§€āĻšā§‡ āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻ•āĻ°āĻž āĻšāĻŦā§‡), āĻ†āĻ˛ā§‹ āĻœā§āĻŦāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻžāĻĨāĻŸāĻžāĻŦ āĻ¸āĻš āĻŸāĻ¯āĻŧāĻ˛ā§‡āĻŸā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻŽā§āĻŦāĻž āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ§āĻ•āĻžāĻ° āĻ•āĻ°āĻŋāĻĄā§‹āĻ°, āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻŸāĻŋ āĻŦāĻŋāĻ›āĻžāĻ¨āĻžāĻ° āĻĒāĻžāĻļā§‡, āĻ¯āĻžāĻ¤ā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ˜āĻ°ā§‡ āĻ†āĻ˛ā§‹ āĻœā§āĻŦāĻžāĻ˛āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§‡ āĻĻāĻžāĻ¨āĻŦāĻ°āĻž āĻĒāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧāĨ¤

nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš
nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš
nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš

āĻ•ā§‡āĻ¸āĻŸāĻŋ āĻāĻ¤āĻŋāĻšā§āĻ¯āĻ—āĻ¤āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ SLA āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸāĻžāĻ°ā§‡ āĻŽā§āĻĻā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸āĻŸāĻŋ āĻ•ā§āĻˇā§āĻĻā§āĻ°āĻžāĻ•ā§ƒāĻ¤āĻŋāĻ°, āĻ•ā§‡āĻ¸āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻšāĻ¤ā§‡ āĻĻā§‡āĻ–āĻž āĻ—ā§‡āĻ›ā§‡, āĻāĻ‡ āĻŽā§āĻĻā§āĻ°āĻŖ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧāĻ¸āĻ™ā§āĻ—āĻ¤āĨ¤

āĻŽā§āĻĻā§āĻ°āĻŋāĻ¤ āĻŽāĻĄā§‡āĻ˛ āĻĻā§‡āĻ–ā§āĻ¨nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš
nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš
nRF52832-āĻ āĻ—ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ¨āĻŋ āĻŸāĻžāĻš āĻ¸ā§āĻ‡āĻš

āĻšā§āĻŽā§āĻŦāĻ• āĻ•ā§‡āĻ¸ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻžāĻŸāĻžāĻ°āĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ°ā§āĻŸāĻŽā§‡āĻ¨ā§āĻŸ āĻ•āĻ­āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ†āĻ āĻžāĻ˛ā§‹ āĻšāĻ¯āĻŧ.

āĻāĻ‡ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡āĻ° āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ¸āĻš āĻ­āĻŋāĻĄāĻŋāĻ“:



āĻ¯āĻžāĻ°āĻž āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯:

Arduino IDE-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ°ā§‹āĻ˛āĻžāĻ° āĻŦā§āĻ˛āĻžāĻ‡āĻ¨ā§āĻĄ āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻ¸ā§āĻ‡āĻšā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ•ā§‹āĻĄ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§āĻ¨

āĻ†āĻ°āĻĄā§āĻ‡āĻ¨ā§‹ āĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°āĻŋāĻ‚

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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨