Habr-āĻāĻ° âDIY or Do It Yourselfâ āĻŦāĻŋāĻāĻžāĻā§āĻ° āĻ¸āĻāĻ˛ āĻĒāĻžāĻ āĻāĻĻā§āĻ° āĻļā§āĻā§āĻā§āĻāĻž! āĻāĻāĻā§āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ TTP223 āĻāĻŋāĻĒā§ āĻāĻžāĻ āĻ¸ā§āĻāĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻšāĻŦā§ |
āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻŽāĻ¤ā§, āĻāĻāĻŋāĻ āĻāĻāĻāĻŋ Arduino āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ, āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋ Arduino IDE-āĻ¤ā§ āĻ˛ā§āĻāĻžāĨ¤ āĻĄāĻŋāĻāĻžāĻāĻ¸āĻāĻŋāĻ° āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ Mysensors āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§
(āĻ¯āĻžāĻ°āĻž āĻĒāĻĄāĻŧāĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯-
āĻāĻžāĻ āĻ¸ā§āĻāĻ āĻŦā§āĻ°ā§āĻĄāĻāĻŋ āĻĄāĻŋāĻĒāĻā§āĻ°ā§āĻ¸ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ˛ā§āĻāĻžāĻ° āĻāĻ¯āĻŧāĻ°āĻ¨āĻŋāĻ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋ (LUT) āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨āĻā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°ā§āĨ¤ āĻŦā§āĻ°ā§āĻĄāĻāĻŋ 60x60mm āĻāĻ° āĻŽāĻžāĻ¤ā§āĻ°āĻžāĻ¯āĻŧ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ (āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§āĻ˛ā§āĻ° āĻŽāĻžāĻ¤ā§āĻ°āĻž 80x80mm āĻĨāĻžāĻā§)āĨ¤ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻāĻāĻŋ āĻ
ā§āĻ¯āĻžāĻ¨ā§āĻā§āĻ¨āĻž āĻŽā§āĻ¯āĻžāĻāĻžāĻāĻŋāĻ¨ā§āĻ° āĻĒāĻžāĻ¤āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ "āĻ˛ā§āĻ¨" āĻ¸ā§āĻāĻŋāĻ (āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ āĻļāĻā§āĻ¤āĻŋ) āĻ¸āĻš āĻāĻāĻāĻŋ āĻŦā§āĻļ āĻ˛ā§āĻšāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻĻā§āĻŦāĻŋ-āĻĒāĻžāĻ°ā§āĻļā§āĻŦāĻ¯ā§āĻā§āĻ¤ āĻĢāĻ¯āĻŧā§āĻ˛ āĻĢāĻžāĻāĻŦāĻžāĻ°āĻā§āĻ˛āĻžāĻ¸ āĻŦā§āĻ°ā§āĻĄ 1.5 āĻŽāĻŋāĻŽāĻŋ, 35Âĩm (āĻ
āĻ¨ā§āĻ¯ā§āĻ° āĻ
āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§) āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻĢā§āĻ°āĻŋāĻ āĻā§āĻ˛ā§āĻ°āĻžāĻāĻĄā§āĻ° āĻĻā§āĻ°āĻŦāĻŖ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻŋāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻĒā§āĻ°ā§āĻŦā§ āĻĒā§āĻ°āĻ¤āĻŋ 1.5 āĻŽāĻŋāĻ˛āĻŋ āĻāĻˇā§āĻŖ āĻāĻ˛ā§ 250 āĻāĻž āĻāĻžāĻŽāĻ āĻ
āĻ¨ā§āĻĒāĻžāĻ¤ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ 15 āĻŽāĻŋāĻ¨āĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§āĻ¯āĻŧāĨ¤
āĻāĻ¨ā§āĻāĻžāĻ°āĻ˛ā§āĻ¯āĻŧāĻžāĻ° āĻāĻŋāĻ¯āĻŧāĻžāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŦāĻ āĻŦā§āĻ¯āĻžāĻāĻžāĻ°āĻŋ āĻ§āĻžāĻ°āĻāĻā§ āĻŦā§āĻāĻ§ā§ āĻ°āĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ DREMEL 3000 āĻĄā§āĻ°āĻŋāĻ˛ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄā§ āĻŽāĻžāĻāĻ¨ā§āĻ āĻāĻ°āĻž āĻāĻāĻāĻŋ DREMEL 220 āĻŽāĻŋāĻ¨āĻŋ-āĻĄā§āĻ°āĻŋāĻ˛ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻŋāĻĻā§āĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ā§ˇ āĻāĻ¨ā§āĻāĻžāĻ°āĻ˛ā§āĻ¯āĻŧāĻžāĻ° āĻāĻŋāĻ¯āĻŧāĻžāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°ā§āĻ¤āĻā§āĻ˛āĻŋ 0,4 āĻŽāĻŋāĻŽāĻŋ āĻĄā§āĻ°āĻŋāĻ˛ āĻĻāĻŋāĻ¯āĻŧā§ āĻĄā§āĻ°āĻŋāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻŦā§āĻ¯āĻžāĻāĻžāĻ°āĻŋ āĻ§āĻžāĻ°āĻā§āĻ° āĻāĻ¨ā§āĻ¯ 1,1 āĻŽāĻŋāĻŽāĻŋ āĻĄā§āĻ°āĻŋāĻ˛ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ°ā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ā§ˇ . āĻŦā§āĻ°ā§āĻĄā§āĻ° āĻ¸ā§āĻŽāĻžāĻ¨āĻž āĻŦāĻ°āĻžāĻŦāĻ° āĻāĻžāĻāĻāĻžāĻ āĻāĻāĻ āĻŽāĻŋāĻ¨āĻŋ-āĻĄā§āĻ°āĻŋāĻ˛ āĻĻāĻŋāĻ¯āĻŧā§ DREMEL 540 āĻ¸āĻāĻ¯ā§āĻā§āĻ¤āĻŋ (āĻāĻžāĻāĻŋāĻ āĻ¸āĻžāĻ°ā§āĻā§āĻ˛ d=32.0mm) āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻžāĻāĻāĻžāĻ āĻāĻāĻāĻŋ āĻļā§āĻŦāĻžāĻ¸āĻ¯āĻ¨ā§āĻ¤ā§āĻ°ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻā§āĻĻāĻžāĻ āĻāĻ°āĻž āĻŦā§āĻ°ā§āĻĄā§āĻ° āĻāĻŋāĻ¨āĻŋāĻ āĻāĻāĻāĻŋ āĻāĻ˛ā§āĻ¯āĻŧ āĻĻā§āĻ°āĻŦāĻŖā§ āĻ°ā§āĻ āĻ
ā§āĻ¯āĻžāĻ˛āĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ (āĻĒā§āĻ°āĻ¤āĻŋ 1 āĻŽāĻŋāĻ˛āĻŋ āĻāĻ˛ā§ 300 āĻāĻž āĻāĻžāĻŽāĻ āĻ¸ā§āĻĢāĻāĻŋāĻ āĻ¸āĻžāĻāĻā§āĻ°āĻŋāĻ āĻ
ā§āĻ¯āĻžāĻ¸āĻŋāĻĄ)āĨ¤
āĻ¸ā§āĻ˛ā§āĻĄāĻžāĻ°āĻŋāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻ āĻāĻ¨ā§āĻāĻž āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§āĻ¯āĻŧ, āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ¨ā§āĻāĻžāĻ°āĻ˛ā§āĻ¯āĻŧāĻžāĻ° āĻāĻŋāĻ¯āĻŧāĻžāĻ¸ā§āĻ° āĻāĻ°ā§āĻ¤ā§ āĻ¸ā§āĻ˛ā§āĻĄāĻžāĻ°āĻŋāĻ āĻ¤āĻžāĻ°ā§āĻ° (āĻāĻŋāĻ¨ āĻāĻ°āĻž, āĻŦā§āĻ¯āĻžāĻ¸ 0.4 āĻŽāĻŋāĻŽāĻŋ) āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻŦā§āĻ°ā§āĻĄāĻāĻŋ āĻĢā§āĻ˛āĻžāĻā§āĻ¸ āĻ
āĻĢ āĻ
ā§āĻ¯āĻžāĻ°ā§āĻ¸āĻ˛ āĻā§āĻ˛āĻŋāĻ¨āĻžāĻ° āĻĻāĻŋāĻ¯āĻŧā§ āĻ§ā§āĻ¯āĻŧā§ āĻĢā§āĻ˛āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻŦāĻĄāĻŋāĻ° āĻĄāĻŋāĻāĻžāĻāĻ¨āĻāĻŋ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°āĻŋāĻŽāĻžāĻ¤ā§āĻ°āĻŋāĻ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ°-āĻ¸āĻšāĻžāĻ¯āĻŧāĻ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻĄāĻŋāĻāĻ°ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻā§āĻ¸ā§āĻ° āĻŽāĻžāĻ¤ā§āĻ°āĻž 78,5mm X 78,5mm X 12mmāĨ¤
āĻā§āĻ¸ āĻāĻŦāĻ āĻŦā§āĻ¯āĻžāĻāĻžāĻ°āĻŋ āĻāĻŽā§āĻĒāĻžāĻ°ā§āĻāĻŽā§āĻ¨ā§āĻ āĻāĻāĻžāĻ°ā§āĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŽāĻĄā§āĻ˛āĻāĻŋ STL āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ āĻŽāĻĄā§āĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻāĻāĻāĻŋ SLA āĻĒā§āĻ°āĻŋāĻ¨ā§āĻāĻžāĻ°ā§ āĻŽā§āĻĻā§āĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŋāĻ˛ (āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨, āĻ
āĻāĻŋāĻ¯ā§āĻāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž)āĨ¤ āĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻāĻāĻāĻŋ āĻā§āĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻĻā§āĻāĻž āĻĻāĻŋāĻ¯āĻŧā§āĻā§, āĻ¯ā§āĻšā§āĻ¤ā§ āĻĒāĻ°āĻŋāĻŦāĻžāĻ°ā§āĻ° āĻāĻ¸āĻāĻ˛āĻ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻŽā§āĻĻā§āĻ°āĻŖ āĻāĻ˛āĻžāĻāĻž āĻā§āĻāĨ¤ āĻŽā§āĻĻā§āĻ°āĻŖā§āĻ° āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ
āĻ¨ā§āĻā§āĻ˛ āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻā§āĻ¸ā§āĻ° āĻŽāĻĄā§āĻ˛āĻāĻŋ āĻŽā§āĻĻā§āĻ°āĻŖ āĻāĻ˛āĻžāĻāĻžāĻ° āĻŽāĻžāĻ¤ā§āĻ°āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻĒ āĻāĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻŽāĻĄā§āĻ˛āĻāĻŋāĻā§ 45 āĻĄāĻŋāĻā§āĻ°āĻŋāĻ¤ā§ āĻ°āĻžāĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻšāĻ¤āĻžāĻļāĻžāĻāĻ¨āĻ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ āĻĻā§āĻ¯āĻŧ; āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ā§āĻ° āĻāĻāĻ¨ āĻļāĻ°ā§āĻ°ā§āĻ° āĻŽāĻĄā§āĻ˛ā§āĻ° āĻāĻāĻ¨ā§āĻ° āĻ¸āĻŽāĻžāĻ¨ āĻāĻŋāĻ˛āĨ¤ āĻĒā§āĻ¸ā§āĻ-āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻāĻ¯āĻŧā§āĻ° āĻ¸āĻ¤ā§āĻ¯āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻžāĻŽ āĻ¸āĻŽā§āĻŽāĻ¤ āĻšāĻ¯āĻŧā§ āĻ¸āĻžāĻŽāĻ¨ā§āĻ° āĻĻāĻŋāĻā§āĻ° āĻāĻāĻāĻŋāĻ¤ā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻŽāĻĄā§āĻ˛āĻāĻŋāĻā§ āĻāĻ˛ā§āĻ˛āĻŽā§āĻŦāĻāĻžāĻŦā§ āĻŽā§āĻĻā§āĻ°āĻŖā§āĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ 5 āĻŽāĻžāĻāĻā§āĻ°āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ¤āĻ° āĻ¸ā§āĻāĻŋāĻ āĻ¸āĻš āĻŦāĻĄāĻŋ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°āĻ¤ā§ 50 āĻāĻ¨ā§āĻāĻž āĻ˛ā§āĻā§āĻāĻŋāĻ˛āĨ¤ āĻāĻ°āĻĒāĻ°ā§, āĻā§āĻŦ āĻ¸ā§āĻā§āĻˇā§āĻŽ āĻĻāĻžāĻ¨āĻžāĻ¯ā§āĻā§āĻ¤ āĻ¸ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻĒā§āĻĒāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ (āĻāĻŽāĻŋ āĻ¨āĻŽā§āĻŦāĻ°āĻāĻŋ āĻ˛āĻŋāĻāĻŦ āĻ¨āĻž āĻāĻžāĻ°āĻŖ āĻāĻŽāĻŋ āĻāĻžāĻ¨āĻŋ āĻ¨āĻž :))āĨ¤ āĻŦā§āĻ¯āĻžāĻāĻžāĻ°āĻŋ āĻāĻāĻžāĻ° āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°āĻ¤ā§ 40 āĻŽāĻŋāĻ¨āĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§āĻ¯āĻŧāĨ¤
Aliexpress āĻĨā§āĻā§ āĻā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ¯āĻžāĻ¨ā§āĻ˛āĻā§āĻ˛āĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻ āĻžāĻ˛ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ˛āĻžāĻ¸ā§āĻāĻŋāĻā§āĻ° āĻĢā§āĻ°ā§āĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻā§āĻ°āĻŋ āĻšāĻ¯āĻŧ; āĻĢā§āĻ°ā§āĻŽāĻāĻŋ āĻ
āĻĒāĻ¸āĻžāĻ°āĻŖā§ āĻā§āĻ¨āĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻŋāĻ˛ āĻ¨āĻžāĨ¤ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻšā§āĻ¯āĻŧāĻžāĻ° āĻĄā§āĻ°āĻžāĻ¯āĻŧāĻžāĻ° āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻŋāĻšāĻŋāĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻāĻžāĻā§āĻ° āĻĒā§āĻ¯āĻžāĻ¨ā§āĻ˛āĻāĻŋ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤
LED āĻŦā§āĻ¯āĻžāĻāĻ˛āĻžāĻāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻĢāĻŋāĻāĻāĻžāĻ°āĻāĻŋ āĻāĻā§āĻ°āĻžāĻāĻ˛āĻŋāĻ āĻāĻ āĻžāĻ˛ā§ 3M 9088-200 āĻ¸āĻš āĻĄāĻŦāĻ˛-āĻĒāĻžāĻ°ā§āĻļā§āĻŦāĻ¯ā§āĻā§āĻ¤ āĻā§āĻĒ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¤ā§āĻ°āĻŋ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻĢā§āĻ˛ā§āĻ°ā§āĻ¸ā§āĻ¨ā§āĻ āĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻļ āĻāĻŋāĻā§ āĻāĻĒāĻāĻ°āĻŖ āĻāĻŋāĻ˛, āĻāĻžāĻāĻ¨āĻŋāĻ āĻāĻ āĻžāĻ˛ā§ āĻā§āĻĒ āĻāĻŦāĻ āĻĻā§āĻļā§āĻ¯āĻŧ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋ āĻ˛ā§āĻŽāĻŋāĻ¨ā§āĻĢā§āĻ° āĻĨā§āĻā§ āĻā§āĻĒā§ āĻāĻžāĻāĻž āĻāĻ āĻžāĻ˛ā§ āĻāĻžāĻāĻāĨ¤ āĻĒāĻāĻ¨ā§āĻĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻšāĻ¸ā§āĻĨā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĻāĻžāĻ°āĻā§āĻ° āĻĒāĻā§āĻˇā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛; āĻāĻŽāĻžāĻ° āĻ
āĻ¨ā§āĻā§āĻ¤āĻŋ āĻ
āĻ¨ā§āĻ¸āĻžāĻ°ā§, āĻāĻāĻŋ āĻāĻā§āĻā§āĻŦāĻ˛ āĻāĻŦāĻ āĻĻā§āĻ°ā§āĻāĻ¤āĻ° āĻšāĻ¯āĻŧā§ āĻāĻ āĻ˛āĨ¤ āĻĢā§āĻ˛ā§āĻ°ā§āĻ¸ā§āĻ¨ā§āĻ āĻĒāĻŋāĻāĻŽā§āĻ¨ā§āĻ āĻ¸āĻš āĻāĻāĻāĻŋ āĻŦāĻ°ā§āĻāĻžāĻāĻžāĻ° āĻāĻžāĻāĻ āĻāĻĒāĻ°ā§ 3M 9088-200 āĻĄāĻŦāĻ˛ āĻ¸āĻžāĻāĻĄā§āĻĄ āĻā§āĻĒ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ āĻžāĻ˛ā§āĨ¤
āĻā§āĻ˛āĻžāĻ¸āĻāĻŋ 3M VHB 4910 āĻāĻā§āĻ°āĻžāĻāĻ˛āĻŋāĻ āĻāĻ āĻžāĻ˛ā§ āĻ¸āĻš āĻĄāĻžāĻŦāĻ˛-āĻĒāĻžāĻ°ā§āĻļā§āĻŦāĻ¯ā§āĻā§āĻ¤ āĻā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻāĻā§āĻ° āĻŦāĻĄāĻŋāĻ¤ā§ āĻāĻ āĻžāĻ˛ā§ āĻāĻŋāĻ˛āĨ¤
āĻāĻāĻžāĻ°āĻāĻŋ M 1,4 X 5 āĻŽāĻŋāĻŽāĻŋ āĻ¸ā§āĻā§āĻ°ā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¸ā§āĻĨāĻŋāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻĄāĻŋāĻāĻžāĻāĻ¸ā§āĻ° āĻĻāĻžāĻŽ āĻāĻŋāĻ˛ 890 āĻ°ā§āĻŦā§āĻ˛āĨ¤
āĻāĻ°āĻĒāĻ°ā§ āĻāĻ˛ā§ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻ āĻāĻļāĨ¤ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻŋāĻ˛āĨ¤ āĻāĻāĻŋ āĻĻā§āĻāĻž āĻ¯āĻžāĻā§āĻā§ āĻ¯ā§ TTP223 āĻ¸ā§āĻ¨ā§āĻ¸āĻ° āĻāĻŋāĻĒāĻā§āĻ˛āĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ 3.3V āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĒā§āĻ˛āĻžāĻāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻĨā§ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻžāĻ˛-āĻĄāĻŋāĻ¸āĻāĻžāĻ°ā§āĻ āĻšāĻāĻ¯āĻŧāĻž āĻŦā§āĻ¯āĻžāĻāĻžāĻ°āĻŋ āĻĨā§āĻā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ˛ā§ āĻā§āĻŦ āĻāĻžāĻ˛ āĻ¨āĻ¯āĻŧāĨ¤ 2.5v āĻāĻ° āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĒā§āĻ˛āĻžāĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻĄāĻŋāĻāĻžāĻāĻ¸āĻāĻŋ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŦāĻ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ "āĻĄā§āĻ°āĻžāĻĄāĻžāĻāĻ¨" āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻŽāĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸āĻ° āĻĒā§āĻ°ā§āĻā§āĻ¨ā§āĻā§āĻļāĻ¨ā§āĻ° āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, TTP223 āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ (āĻ āĻā§āĻˇāĻ¤ āĻā§āĻ°āĻŽāĻžāĻā§āĻāĻ¨ā§āĻ° āĻĒāĻ°ā§) āĻāĻāĻāĻŋ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻā§āĻ°āĻŋāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ MK-āĻāĻ° āĻŦāĻŋāĻā§āĻ¨ āĻāĻāĻžāĻ¯āĻŧāĨ¤
āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĒā§āĻ˛āĻžāĻ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ (āĻāĻŋāĻĒāĻŋāĻ āĻāĻŽāĻā§ āĻ¸āĻš āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻŽā§āĻ¨ā§āĻ TTP223), āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻā§āĻ°āĻžāĻāĻ¨ā§āĻĄ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻŦāĻ rgb āĻ¨ā§āĻ¤ā§āĻ¤ā§āĻŦāĻžāĻ§ā§āĻ¨ āĻ˛āĻžāĻāĻ¨āĻā§āĻ˛āĻŋāĻ¤ā§ (āĻ¯āĻž āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋāĻ āĻ¸ā§āĻ¨ā§āĻ¸āĻ° āĻŦā§āĻ°ā§āĻĄā§āĻ° āĻ āĻ¨ā§āĻ¯ āĻĻāĻŋāĻā§ āĻāĻ˛ā§) āĻāĻā§āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻ§ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻ§āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻāĻŋ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°āĻāĻŋāĻ¤ā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛: āĻŽāĻžāĻāĻ¸ā§āĻ¨āĻ¸āĻ° āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻāĻŦāĻ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻāĻŋ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋāĻ āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻļāĻā§āĻ¤āĻŋ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻ°āĻŖāĨ¤ āĻ¯āĻāĻ¨ āĻļāĻā§āĻ¤āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻāĻ¨ TTP223 āĻāĻŋāĻĒā§āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ-āĻā§āĻ¯āĻžāĻ˛āĻŋāĻŦā§āĻ°ā§āĻļāĻ¨ā§āĻ° āĻŦāĻŋāĻ˛āĻŽā§āĻŦ āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋāĻā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻ¨āĻŋāĻ°ā§āĻŽā§āĻ˛ āĻāĻ°ā§āĻā§āĨ¤
āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻā§āĻĄāĻāĻŋ āĻĻā§āĻāĻžāĻ° āĻāĻā§, āĻāĻŽāĻŋ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°āĻāĻŋ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻŽāĻžāĻāĻ¸ā§āĻ¨āĻ¸āĻ°ā§āĻ° āĻ¸ā§āĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻŽā§āĻ˛āĻŋāĻ āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¨āĻŋāĻā§āĻā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻāĻ°ā§āĻ¨āĨ¤void before()
{
// ĐĐžĐŋĐžĐģĐŊиŅĐĩĐģŅĐŊĐ°Ņ ŅŅĐŊĐēŅиŅ, ĐĩŅĐģи ŅŅавĐŊиваŅŅ ŅĐž ŅŅĐ°ĐŊĐ´Đ°ŅŅĐŊОК ŅŅŅŅĐēŅŅŅОК ĐŅĐ´ŅиĐŊĐž ŅĐēĐĩŅŅĐĩĐš, ŅĐž before() ŅŅĐž ĐŋОдОйиĐĩ setup(), ĐžŅŅайОŅĐēĐ° ĐŋŅОиŅŅ
ОдиŅ Đ´Đž иĐŊиŅиаĐģиСаŅии ŅŅĐ°ĐŊŅĐŋĐžŅŅĐŊĐžĐŗĐž ŅŅОвĐŊŅ Mysensors, ŅĐĩĐēĐžĐŧĐĩĐŊĐ´ŅĐĩŅŅŅ ĐŊĐ°ĐŋŅиĐŧĐĩŅ Đ´ĐģŅ иĐŊиŅиаĐģиСаŅии ŅŅŅŅОКŅŅв SPI
}
void setup()
{
}
void presentation()
{
//ĐĸŅŅ ĐŋŅОиŅŅ
ОдиŅ ĐŋŅĐĩСĐĩĐŊŅĐ°ŅиŅ ĐŊОдŅ и ĐĩĐĩ ŅĐĩĐŊŅĐžŅОв ĐŊĐ° ĐēĐžĐŊŅŅĐžĐģĐĩŅĐĩ ŅĐĩŅĐĩС ĐŧĐ°ŅŅŅŅŅиСаŅĐžŅ
sendSketchInfo("Name of my sensor node", "1.0"); // ĐŋŅĐĩСĐĩĐŊŅĐ°ŅиŅ ĐŊаСваĐŊиŅ ĐŊОдŅ, вĐĩŅŅии ĐĐ
present(CHILD_ID, S_WHATEVER, "Description"); // ĐŋŅĐĩСĐĩĐŊŅĐ°ŅиŅ ŅĐĩĐŊŅĐžŅОв ĐŊОдŅ, ĐžĐŋиŅĐ°ĐŊиŅ ŅĐĩĐŊŅĐžŅОв
}
void loop()
{
}
āĻāĻžāĻ āĻ¸ā§āĻāĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻā§āĻĄ:test_sens.ino
/**
ĐĸĐĐĄĐĸĐĐĐĢĐ ĐĄĐĐĐĸЧ ĐĄĐĐĐĄĐĐ ĐĐĐĐ ĐĐĢĐĐЎЧĐĐĸĐĐĐ¯ ĐĄ ĐĐ ĐĐ ĐĢĐĐĐĐĐ¯ĐĐ ĐĐ NRF_LPCOMP
*/
bool button_flag;
bool sens_flag;
bool send_flag;
bool detection;
bool nosleep;
byte timer;
unsigned long SLEEP_TIME = 21600000; //6 hours
unsigned long oldmillis;
unsigned long newmillis;
unsigned long interrupt_time;
unsigned long SLEEP_TIME_W;
uint16_t currentBatteryPercent;
uint16_t batteryVoltage = 0;
uint16_t battery_vcc_min = 2400;
uint16_t battery_vcc_max = 3000;
#define MY_RADIO_NRF5_ESB
//#define MY_PASSIVE_NODE
#define MY_NODE_ID 30
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#define MY_TRANSPORT_UPLINK_CHECK_DISABLED
#define IRT_PIN 3 //(PORT0, gpio 5)
#include <MySensors.h>
// see https://www.mysensors.org/download/serial_api_20
#define SENS_CHILD_ID 0
#define CHILD_ID_VOLT 254
MyMessage sensMsg(SENS_CHILD_ID, V_VAR1);
//MyMessage voltMsg(CHILD_ID_VOLT, V_VOLTAGE);
void preHwInit() {
sleep(2000);
pinMode(RED_LED, OUTPUT);
digitalWrite(RED_LED, HIGH);
pinMode(GREEN_LED, OUTPUT);
digitalWrite(GREEN_LED, HIGH);
pinMode(BLUE_LED, OUTPUT);
digitalWrite(BLUE_LED, HIGH);
pinMode(MODE_PIN, INPUT);
pinMode(SENS_PIN, INPUT);
}
void before()
{
NRF_POWER->DCDCEN = 1;
NRF_UART0->ENABLE = 0;
sleep(1000);
digitalWrite(BLUE_LED, LOW);
sleep(150);
digitalWrite(BLUE_LED, HIGH);
}
void presentation() {
sendSketchInfo("EFEKTA Sens 1CH Sensor", "1.1");
present(SENS_CHILD_ID, S_CUSTOM, "SWITCH STATUS");
//present(CHILD_ID_VOLT, S_MULTIMETER, "Battery");
}
void setup() {
digitalWrite(BLUE_LED, LOW);
sleep(100);
digitalWrite(BLUE_LED, HIGH);
sleep(200);
digitalWrite(BLUE_LED, LOW);
sleep(100);
digitalWrite(BLUE_LED, HIGH);
lpComp();
detection = false;
SLEEP_TIME_W = SLEEP_TIME;
pinMode(31, OUTPUT);
digitalWrite(31, HIGH);
/*
while (timer < 10) {
timer++;
digitalWrite(GREEN_LED, LOW);
wait(5);
digitalWrite(GREEN_LED, HIGH);
wait(500);
}
timer = 0;
*/
sleep(7000);
while (timer < 3) {
timer++;
digitalWrite(GREEN_LED, LOW);
sleep(15);
digitalWrite(GREEN_LED, HIGH);
sleep(85);
}
timer = 0;
sleep(1000);
}
void loop() {
if (detection) {
if (digitalRead(MODE_PIN) == 1 && button_flag == 0 && digitalRead(SENS_PIN) == 0) {
//back side button detection
button_flag = 1;
nosleep = 1;
}
if (digitalRead(MODE_PIN) == 1 && button_flag == 1 && digitalRead(SENS_PIN) == 0) {
digitalWrite(RED_LED, LOW);
wait(10);
digitalWrite(RED_LED, HIGH);
wait(50);
}
if (digitalRead(MODE_PIN) == 0 && button_flag == 1 && digitalRead(SENS_PIN) == 0) {
nosleep = 0;
button_flag = 0;
digitalWrite(RED_LED, HIGH);
lpComp_reset();
}
if (digitalRead(SENS_PIN) == 1 && sens_flag == 0 && digitalRead(MODE_PIN) == 0) {
//sens detection
sens_flag = 1;
nosleep = 1;
newmillis = millis();
interrupt_time = newmillis - oldmillis;
SLEEP_TIME_W = SLEEP_TIME_W - interrupt_time;
if (send(sensMsg.set(detection))) {
send_flag = 1;
}
}
if (digitalRead(SENS_PIN) == 1 && sens_flag == 1 && digitalRead(MODE_PIN) == 0) {
if (send_flag == 1) {
while (timer < 10) {
timer++;
digitalWrite(GREEN_LED, LOW);
wait(20);
digitalWrite(GREEN_LED, HIGH);
wait(30);
}
timer = 0;
} else {
while (timer < 10) {
timer++;
digitalWrite(RED_LED, LOW);
wait(20);
digitalWrite(RED_LED, HIGH);
wait(30);
}
timer = 0;
}
}
if (digitalRead(SENS_PIN) == 0 && sens_flag == 1 && digitalRead(MODE_PIN) == 0) {
sens_flag = 0;
nosleep = 0;
send_flag = 0;
digitalWrite(GREEN_LED, HIGH);
sleep(500);
lpComp_reset();
}
if (SLEEP_TIME_W < 60000) {
SLEEP_TIME_W = SLEEP_TIME;
sendBatteryStatus();
}
}
else {
//if (detection == -1) {
SLEEP_TIME_W = SLEEP_TIME;
sendBatteryStatus();
}
if (nosleep == 0) {
oldmillis = millis();
sleep(SLEEP_TIME_W);
}
}
void sendBatteryStatus() {
wait(20);
batteryVoltage = hwCPUVoltage();
wait(2);
if (batteryVoltage > battery_vcc_max) {
currentBatteryPercent = 100;
}
else if (batteryVoltage < battery_vcc_min) {
currentBatteryPercent = 0;
} else {
currentBatteryPercent = (100 * (batteryVoltage - battery_vcc_min)) / (battery_vcc_max - battery_vcc_min);
}
sendBatteryLevel(currentBatteryPercent, 1);
wait(2000, C_INTERNAL, I_BATTERY_LEVEL);
//send(powerMsg.set(batteryVoltage), 1);
//wait(2000, 1, V_VAR1);
}
void lpComp() {
NRF_LPCOMP->PSEL = IRT_PIN;
NRF_LPCOMP->ANADETECT = 1;
NRF_LPCOMP->INTENSET = B0100;
NRF_LPCOMP->ENABLE = 1;
NRF_LPCOMP->TASKS_START = 1;
NVIC_SetPriority(LPCOMP_IRQn, 15);
NVIC_ClearPendingIRQ(LPCOMP_IRQn);
NVIC_EnableIRQ(LPCOMP_IRQn);
}
void s_lpComp() {
if ((NRF_LPCOMP->ENABLE) && (NRF_LPCOMP->EVENTS_READY)) {
NRF_LPCOMP->INTENCLR = B0100;
}
}
void r_lpComp() {
NRF_LPCOMP->INTENSET = B0100;
}
#if __CORTEX_M == 0x04
#define NRF5_RESET_EVENT(event)
event = 0;
(void)event
#else
#define NRF5_RESET_EVENT(event) event = 0
#endif
extern "C" {
void LPCOMP_IRQHandler(void) {
detection = true;
NRF5_RESET_EVENT(NRF_LPCOMP->EVENTS_UP);
NRF_LPCOMP->EVENTS_UP = 0;
MY_HW_RTC->CC[0] = (MY_HW_RTC->COUNTER + 2);
}
}
void lpComp_reset () {
s_lpComp();
detection = false;
NRF_LPCOMP->EVENTS_UP = 0;
r_lpComp();
}
MyBoardNRF5.cpp
#ifdef MYBOARDNRF5
#include <variant.h>
/*
* Pins descriptions. Attributes are ignored by arduino-nrf5 variant.
* Definition taken from Arduino Primo Core with ordered ports
*/
const PinDescription g_APinDescription[]=
{
{ NOT_A_PORT, 0, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // LFCLK
{ NOT_A_PORT, 1, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // LFCLK
{ PORT0, 2, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A0, PWM4, NOT_ON_TIMER},
{ PORT0, 3, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A1, PWM5, NOT_ON_TIMER},
{ PORT0, 4, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A2, PWM6, NOT_ON_TIMER},
{ PORT0, 5, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A3, PWM7, NOT_ON_TIMER},
{ PORT0, 6, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT3
{ PORT0, 7, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT4
{ PORT0, 8, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM10, NOT_ON_TIMER}, //USER_LED
{ PORT0, 9, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // NFC1
{ PORT0, 10, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // NFC2
{ PORT0, 11, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // TX
{ PORT0, 12, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // RX
{ PORT0, 13, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SDA
{ PORT0, 14, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SCL
{ PORT0, 15, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SDA1
{ PORT0, 16, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SCL1
{ PORT0, 17, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // TP4
{ PORT0, 18, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // TP5
{ PORT0, 19, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT2
{ PORT0, 20, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT1
{ PORT0, 21, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT1
{ PORT0, 22, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM9, NOT_ON_TIMER},
{ PORT0, 23, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM8, NOT_ON_TIMER},
{ PORT0, 24, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT
{ PORT0, 25, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM11, NOT_ON_TIMER}, //RED_LED
{ PORT0, 26, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM11, NOT_ON_TIMER}, //GREEN_LED
{ PORT0, 27, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM11, NOT_ON_TIMER}, //BLUE_LED
{ PORT0, 28, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A4, PWM3, NOT_ON_TIMER},
{ PORT0, 29, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A5, PWM2, NOT_ON_TIMER},
{ PORT0, 30, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A6, PWM1, NOT_ON_TIMER},
{ PORT0, 31, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A7, PWM0, NOT_ON_TIMER}
};
// Don't remove this line
#include <compat_pin_mapping.h>
#endif
MyBoardNRF5.h
#ifndef _MYBOARDNRF5_H_
#define _MYBOARDNRF5_H_
#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus
// Number of pins defined in PinDescription array
#define PINS_COUNT (32u)
#define NUM_DIGITAL_PINS (32u)
#define NUM_ANALOG_INPUTS (8u)
#define NUM_ANALOG_OUTPUTS (8u)
/*
* LEDs
*
* This is optional
*
* With My Sensors, you can use
* hwPinMode() instead of pinMode()
* hwPinMode() allows to use advanced modes like OUTPUT_H0H1 to drive LEDs.
* https://github.com/mysensors/MySensors/blob/development/drivers/NRF5/nrf5_wiring_constants.h
*
*/
#define PIN_LED1 (16)
#define PIN_LED2 (15)
#define PIN_LED3 (17)
#define RED_LED (PIN_LED1)
#define GREEN_LED (PIN_LED2)
#define BLUE_LED (PIN_LED3)
#define INTERRUPT_PIN (5)
#define MODE_PIN (25)
#define SENS_PIN (27)
/*
* Analog ports
*
* If you change g_APinDescription, replace PIN_AIN0 with
* port numbers mapped by the g_APinDescription Array.
* You can add PIN_AIN0 to the g_APinDescription Array if
* you want provide analog ports MCU independed, you can add
* PIN_AIN0..PIN_AIN7 to your custom g_APinDescription Array
* defined in MyBoardNRF5.cpp
*/
static const uint8_t A0 = ADC_A0;
static const uint8_t A1 = ADC_A1;
static const uint8_t A2 = ADC_A2;
static const uint8_t A3 = ADC_A3;
static const uint8_t A4 = ADC_A4;
static const uint8_t A5 = ADC_A5;
static const uint8_t A6 = ADC_A6;
static const uint8_t A7 = ADC_A7;
/*
* Serial interfaces
*
* RX and TX are required.
* If you have no serial port, use unused pins
* CTS and RTS are optional.
*/
#define PIN_SERIAL_RX (11)
#define PIN_SERIAL_TX (12)
#ifdef __cplusplus
}
#endif
#endif
āĻ¸ā§āĻāĻāĻāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻŦā§āĻ¤āĻžāĻŽ āĻāĻŦāĻ āĻĄāĻŋāĻāĻžāĻāĻ¸ā§āĻ° āĻĒāĻŋāĻāĻ¨ā§ āĻāĻāĻāĻŋ āĻā§āĻ¯āĻžāĻā§āĻ āĻŦā§āĻ¤āĻžāĻŽ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ āĻā§āĻ¯āĻžāĻā§āĻ āĻŦā§āĻ¤āĻžāĻŽāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŽā§āĻĄ, āĻāĻāĻžāĻ°-āĻĻā§āĻ¯-āĻāĻ¯āĻŧāĻžāĻ° āĻŦāĻžāĻāĻ¨ā§āĻĄāĻŋāĻ āĻŽā§āĻĄ āĻāĻŦāĻ āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻ°āĻŋāĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻŦā§āĻ¤āĻžāĻŽāĻāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻ¯āĻŧāĻ°āĻ¨ āĻ
ā§āĻ¯āĻžāĻ¨ā§āĻāĻŋ-āĻŦāĻžāĻāĻ¨ā§āĻ¸ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋāĻ āĻ¸ā§āĻ¨ā§āĻ¸āĻ°ā§āĻ° āĻ˛āĻžāĻāĻ¨ āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻā§āĻ āĻŦā§āĻ¤āĻžāĻŽā§āĻ° āĻ˛āĻžāĻāĻ¨āĻāĻŋ Schottky āĻĄāĻžāĻ¯āĻŧā§āĻĄā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāĻ¨āĻžāĻ˛āĻ āĻĒāĻŋāĻ¨ p0.05 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋāĻ āĻ¸ā§āĻ¨ā§āĻ¸āĻ° āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻā§āĻ āĻŦāĻžāĻāĻ¨ āĻĨā§āĻā§ MK āĻĒāĻŋāĻ¨ā§āĻ° p0.25 āĻāĻŦāĻ p0.27-āĻ āĻ˛āĻžāĻāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ .0.05 āĻĒāĻŋāĻ¨ p0.05 āĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻžāĻĒā§āĻ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻ
āĻŦāĻ¸ā§āĻĨāĻž āĻĒāĻĄāĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯āĨ¤ XNUMXāĨ¤ āĻĒāĻŋāĻ¨ pXNUMX āĻ, EVENTS_UP āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¤ā§āĻ˛āĻ¨āĻžāĻāĻžāĻ°ā§ (NRF_LPCOMP) āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ§āĻž āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻŽāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻ
āĻ¨ā§āĻĒā§āĻ°ā§āĻ°āĻŖāĻž āĻĒā§āĻ¯āĻŧā§āĻāĻŋ
āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻšā§āĻŽ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛āĻžāĻ° āĻŽā§āĻāĻ°āĻĄā§āĻŽā§ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻŽāĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸āĻ° āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§ āĻ¸ā§āĻāĻāĻāĻŋ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛
āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻžāĻ¸āĻāĻĒāĻĄā§āĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻ āĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻā§āĻĄ
if (getGlobal("MysensorsButton01.status")==1) {
if (getGlobal('MysensorsRelay04.status') == 0) {
setGlobal('MysensorsRelay04.status', '1');
} else if (getGlobal('MysensorsRelay04.status') == 1) {
setGlobal('MysensorsRelay04.status', '0');
}
}
āĻāĻŋāĻĄāĻŋāĻāĻ¤ā§ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§āĻā§āĻ¨
āĻĒāĻ°ā§, āĻāĻāĻāĻŋ āĻŦā§āĻ¸ā§āĻ āĻāĻ¨āĻāĻžāĻ°ā§āĻāĻžāĻ° āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¤āĻŦā§ āĻāĻāĻŋ TTP223 āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋāĻ āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻā§āĻ° āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ; āĻĒā§āĻ°ā§ āĻŦā§āĻ¯āĻžāĻāĻžāĻ°āĻŋ āĻ˛āĻžāĻāĻĢ āĻā§āĻĄāĻŧā§ āĻā§āĻā§āĻ˛āĻŋ āĻāĻŋāĻĒā§ āĻāĻžāĻ˛ āĻāĻŦāĻ āĻ
āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ˛ā§āĻāĻ¸āĻā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°āĻ āĻāĻāĻžāĻā§āĻā§āĻˇāĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻā§āĻšāĻžāĻ°āĻž
āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ Github -
āĻ°āĻžāĻļāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻžāĻˇāĻžāĻāĻžāĻˇā§
āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻŦāĻŋ
āĻāĻ¤ā§āĻ¸: www.habr.com