แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž‡แŸ†แžšแžถแž”แžŸแžฝแžšแžขแŸ’แž“แž€แžขแžถแž“แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž“แŸƒแž•แŸ’แž“แŸ‚แž€ "DIY แžฌแž’แŸ’แžœแžพแžœแžถแžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„" แž“แŸ…แž›แžพ Habr! แžขแžแŸ’แžแž”แž‘แžแŸ’แž„แŸƒแž“แŸแŸ‡แž“แžนแž„แž“แžทแž™แžถแž™แžขแŸ†แž–แžธ แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แž›แžพแž”แž“แŸ’แž‘แŸ‡แžˆแžธแž” TTP223 | แžŸแž“แŸ’แž›แžนแž€แž‘แžทแž“แŸ’แž“แž“แŸแž™. แž€แžปแž„แžแžถแž€แŸ‹แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž›แžพ microcontroller nRF52832 | แžŸแž“แŸ’แž›แžนแž€แž‘แžทแž“แŸ’แž“แž“แŸแž™แž˜แŸ‰แžผแžŒแžปแž› YJ-17103 แžŠแŸ‚แž›แž˜แžถแž“แžขแž„แŸ‹แžแŸ‚แž“แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž– แž“แžทแž„แžงแž”แž€แžšแžŽแŸแž—แŸ’แž‡แžถแž”แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแž„แŸ‹แžแŸ‚แž“ MHF4 แžแžถแž„แž€แŸ’แžšแŸ…แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แŸ” แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž›แžพแžแŸ’แž˜ CR2430 แžฌ CR2450แŸ” แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„แžšแž”แŸ€แž”แž”แž‰แŸ’แž‡แžผแž“แž‚แžบแž˜แžทแž“แž›แžพแžŸแž–แžธ 8 mA, แž“แŸ…แž€แŸ’แž“แžปแž„แžšแž”แŸ€แž”แž‚แŸแž„แž˜แžทแž“แž›แžพแžŸแž–แžธ 6 ยตA แŸ”
แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แžŠแžผแž…แž‚แž˜แŸ’แžšแŸ„แž„แž˜แžปแž“แŸ—แžŠแŸ‚แžš แž‚แž˜แŸ’แžšแŸ„แž„แž“แŸแŸ‡แž€แŸแž‡แžถแž‚แž˜แŸ’แžšแŸ„แž„ Arduino แžŠแŸ‚แžš แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžแŸ’แžšแžผแžœแž”แžถแž“แžŸแžšแžŸแŸแžšแž“แŸ…แž€แŸ’แž“แžปแž„ Arduino IDE แŸ” แž€แžถแžšแžขแž“แžปแžœแžแŸ’แžแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžšแž”แžŸแŸ‹แžงแž”แž€แžšแžŽแŸแž‚แžบแž•แŸ’แžขแŸ‚แž€แž›แžพ Mysensors protocol | แž”แžŽแŸ’แžŽแžถแž›แŸแž™ GitHub, แž”แž“แŸ’แž‘แŸ‡ nRF5 แž‚แžถแŸ†แž‘แŸ’แžš GitHub แž“แŸ…แž€แŸ’แž“แžปแž„ Mysensors แŸ” แžœแŸแž‘แžทแž€แžถแžŸแž แž‚แž˜แž“แŸแž—แžถแžŸแžถแžขแž„แŸ‹แž‚แŸ’แž›แŸแžŸ http://forum.mysensors.org, แžœแŸแž‘แžทแž€แžถแžŸแž แž‚แž˜แž“แŸแž‡แžถแž—แžถแžŸแžถแžšแžปแžŸแŸ’แžŸแžธ - http://mysensors.ru/forum/
(แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ’แž“แž€แž…แž„แŸ‹แžŸแžทแž€แŸ’แžŸแžถ- แžฏแž€แžŸแžถแžš, แž–แžทแž’แžธแžŸแžถแžšแžŸแŸ€แžšแŸ€แž›, แž€แžถแžš API, แž–แžทแž’แžธแž€แžถแžš, แž‰แŸ‚แž€ | แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ’แž“แž€แžŠแŸ‚แž›แž…แž„แŸ‹แž‡แžฝแž™ (แž€แžถแžšแžšแžฝแž˜แž…แŸ†แžŽแŸ‚แž€) แž€แŸ’แž“แžปแž„แž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸแž‚แž˜แŸ’แžšแŸ„แž„ แžฏแž€แžŸแžถแžš)

แž”แž“แŸ’แž‘แŸ‡แž”แŸ’แžแžผแžšแž”แŸ‰แŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžพแžแžกแžพแž„แž“แŸ…แž€แŸ’แž“แžปแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธ Deeptrace แžŠแŸ„แž™แž‚แžทแžแž‚แžผแžšแž–แžธแž€แžถแžšแž•แž›แžทแžแž‡แžถแž”แž“แŸ’แžแž”แž“แŸ’แž‘แžถแž”แŸ‹แžŠแŸ„แž™แž”แŸ’แžšแžพแžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžš Laser Ironing Technology (LUT)แŸ” แž”แž“แŸ’แž‘แŸ‡แž“แŸแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžพแžแžกแžพแž„แž€แŸ’แž“แžปแž„แžœแžทแž˜แžถแžแŸ’แžš 60x60mm (แž”แž“แŸ’แž‘แŸ‡แž€แž‰แŸ’แž…แž€แŸ‹แžŸแŸ’แžแž„แŸ‹แžŠแžถแžšแž˜แžถแž“แžœแžทแž˜แžถแžแŸ’แžš 80x80mm)แŸ” แžŸแŸ€แž‚แŸ’แžœแžธแž“แŸแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แž“แŸ…แž›แžพแž‘แŸ†แž–แŸแžšแž“แŸƒแž‘แžŸแŸ’แžŸแž“แžถแžœแžŠแŸ’แžแžธแžขแž„แŸ‹แžแŸ‚แž“ แž“แžทแž„แž•แŸ’แž‘แŸแžšแž‡แžถแž˜แžฝแž™แžŠแŸ‚แž€ Bosch แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž€แŸ†แžŽแžแŸ‹ "Len" (แžแžถแž˜แž–แž›แžขแžแžทแž”แžšแž˜แžถ) แž‘แŸ…แž›แžพแž”แž“แŸ’แž‘แŸ‡แžŸแžšแžŸแŸƒแž€แž‰แŸ’แž…แž€แŸ‹แž–แžธแžšแž‡แžถแž“แŸ‹ 1.5mm, 35ยตm (แž€แŸ’แž“แžปแž„แž€แžšแžŽแžธแžŠแŸ‚แž›แž˜แžทแž“แž˜แžถแž“แž˜แžฝแž™แž•แŸ’แžŸแŸแž„แž‘แŸ€แž) แŸ”
แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž€แžถแžšแž†แŸ’แž›แžถแž€แŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแž‡แžถแž˜แžฝแž™แž“แžนแž„แžŠแŸ†แžŽแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž“แŸƒแž€แŸ’แž›แžšแžฝ ferric แžŠแŸ‚แž›แž”แžถแž“แžšแŸ€แž”แž…แŸ†แž–แžธแž˜แžปแž“แž€แŸ’แž“แžปแž„แžŸแž˜แžถแž˜แžถแžแŸ’แžšแž“แŸƒ 1.5 แžŸแŸ’แž›แžถแž”แž–แŸ’แžšแžถแž€แŸ’แž“แžปแž„ 250 แž˜แžธแž›แžธแž›แžธแžแŸ’แžšแž“แŸƒแž‘แžนแž€แž€แŸ’แžแŸ…แŸ” แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แž…แŸ†แžŽแžถแž™แž–แŸแž› 15 แž“แžถแž‘แžธแŸ”
แž€แžถแžšแžแžฝแž„แžšแž“แŸ’แž’แžŸแž˜แŸ’แžšแžถแž”แŸ‹ interlayer vias แž“แžทแž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžแŸ„แž„แžขแŸ’แž“แž€แž€แžถแž“แŸ‹แžแŸ’แž˜แžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแž‡แžถแž˜แžฝแž™ DREMEL 3000 mini-drill แžŠแŸ‚แž›แž”แžถแž“แž˜แŸ‰แŸ„แž“แž“แŸ…แž›แžพ DREMEL 220 drill แžšแž“แŸ’แž’แžŸแž˜แŸ’แžšแžถแž”แŸ‹ interlayer vias แžแŸ’แžšแžผแžœแž”แžถแž“แžแžฝแž„แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแžแžฝแž„ 0,4mm แžšแž“แŸ’แž’แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ’แž“แž€แž€แžถแž“แŸ‹แžแŸ’แž˜แžŠแŸ‚แž›แž˜แžถแž“แžแžฝแž„ 1,1mm แŸ” . แž€แžถแžšแž€แžถแžแŸ‹แžแž˜แŸ’แžšแžนแž˜แžแžถแž˜แž–แŸ’แžšแŸ†แž”แŸ’แžšแž‘แž›แŸ‹แž“แŸƒแž€แŸ’แžแžถแžšแžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžŠแŸ„แž™แžŸแž˜แž™แžปแž‘แŸ’แž’แžแŸ’แž“แžถแžแžแžผแž…แžŠแžผแž…แž‚แŸ’แž“แžถแž‡แžถแž˜แžฝแž™แž“แžนแž„แžฏแž€แžŸแžถแžšแž—แŸ’แž‡แžถแž”แŸ‹ DREMEL 540 (แž€แžถแžแŸ‹แžšแž„แŸ’แžœแž„แŸ‹ d=32.0mm) แŸ” แž€แžถแžšแž€แžถแžแŸ‹แž…แŸแž‰แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„แž“แŸ…แž€แŸ’แž“แžปแž„แžงแž”แž€แžšแžŽแŸแžŠแž€แžŠแž„แŸ’แž แžพแž˜แŸ”
แž€แžถแžšแžŠแžถแž€แŸ‹แž”แž“แŸ’แž‘แŸ‡แžˆแžพแž†แŸ’แž€แžถแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„แžŠแŸ„แž™แž”แŸ’แžšแžพแž™แŸ‰แžถแž“แŸ‹แžŸแŸ’แž–แŸแžš Rose แž€แŸ’แž“แžปแž„แžŠแŸ†แžŽแŸ„แŸ‡แžŸแŸ’แžšแžถแž™ aqueous (1 แžŸแŸ’แž›แžถแž”แž–แŸ’แžšแžถแž“แŸƒแžขแžถแžŸแŸŠแžธแžแž“แŸƒแž€แŸ’แžšแžผแž…แž†แŸ’แž˜แžถแž€แŸ’แž“แžปแž„แž‘แžนแž€ 300 แž˜แžธแž›แžธแž›แžธแžแŸ’แžš) แŸ”

แžŠแŸ†แžŽแžพแžšแž€แžถแžš soldering แž…แŸ†แžŽแžถแž™แž–แŸแž›แž”แŸ’แžšแž แŸ‚แž›แž˜แžฝแž™แž˜แŸ‰แŸ„แž„ แžŠแŸ‚แž›แž—แžถแž‚แž…แŸ’แžšแžพแž“แž“แŸƒแž–แŸแž›แžœแŸแž›แžถแžแŸ’แžšแžผแžœแž”แžถแž“แž…แŸ†แžŽแžถแž™แžŸแž˜แŸ’แžšแžถแž”แŸ‹ soldering wire (tinned, 0.4 mm in diameter) แž“แŸ…แž€แŸ’แž“แžปแž„แžšแž“แŸ’แž’แžŸแž˜แŸ’แžšแžถแž”แŸ‹ interlayer vias แŸ”

แž”แž“แŸ’แž‘แŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž‘แžนแž€แž“แžถแŸ†แž‘แŸ…แžŠแŸ„แž™ FLUX OFF aerosol cleaner แŸ”
แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž€แžถแžšโ€‹แžšแž…แž“แžถโ€‹แžแžฝโ€‹แžงแž”แž€แžšแžŽแŸโ€‹แžแŸ’แžšแžผแžœโ€‹แž”แžถแž“โ€‹แž’แŸ’แžœแžพโ€‹แžกแžพแž„โ€‹แž€แŸ’แž“แžปแž„โ€‹แž€แž˜แŸ’แž˜แžœแžทแž’แžธโ€‹แž€แŸ‚โ€‹แžŸแž˜แŸ’แžšแžฝแž›โ€‹แž€แžถแžšโ€‹แžšแž…แž“แžถโ€‹แžŠแŸ‚แž›โ€‹แž‡แŸ†แž“แžฝแž™โ€‹แžŠแŸ„แž™โ€‹แž€แžปแŸ†แž–แŸ’แž™แžผแž‘แŸแžšโ€‹แž”แžธโ€‹แžœแžทแž˜แžถแžแŸ’แžšแŸ” แžœแžทแž˜แžถแžแŸ’แžš 78,5mm X 78,5mm X 12mm แŸ”
แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž‚แŸ†แžšแžผแžŠแŸ‚แž›แž”แžถแž“แž”แž‰แŸ’แž…แž”แŸ‹แž“แŸƒแžŸแŸ’แžšแŸ„แž˜ แž“แžทแž„แž‚แž˜แŸ’แžšแž”แž•แŸ’แž“แŸ‚แž€แžแŸ’แž˜แžแŸ’แžšแžผแžœแž”แžถแž“แžšแž€แŸ’แžŸแžถแž‘แžปแž€แž‡แžถแž‘แž˜แŸ’แžšแž„แŸ‹ STL แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แžœแžถแž…แžถแŸ†แž”แžถแž…แŸ‹แžŠแžพแž˜แŸ’แž”แžธแžšแŸ€แž”แž…แŸ†แž˜แŸ‰แžผแžŠแŸ‚แž›แž‘แžถแŸ†แž„แž“แŸแŸ‡แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แž“แŸ…แž›แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž– SLA (แž”แž“แŸ’แžแŸ‚แž˜แž‡แŸ†แž“แžฝแž™ แž€แžถแžšแžแŸ†แžšแž„แŸ‹แž‘แžทแžŸ)แŸ” แž“แŸ…แžŠแŸ†แžŽแžถแž€แŸ‹แž€แžถแž›แž“แŸแŸ‡ แž”แž‰แŸ’แž แžถแžแžผแž…แž˜แžฝแž™แž”แžถแž“แž€แžพแžแžกแžพแž„ แžŠแŸ„แž™แžŸแžถแžšแž•แŸ’แž‘แŸƒแž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แžšแž”แžŸแŸ‹แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž– SLA แž€แŸ’แž“แžปแž„แž•แŸ’แž‘แŸ‡แž˜แžถแž“แž‘แŸ†แž แŸ†แžแžผแž…แŸ” แž˜แŸ‰แžผแžŠแŸ‚แž›แž“แŸƒแž€แžšแžŽแžธแžงแž”แž€แžšแžŽแŸแž“แŸ…แž€แŸ’แž“แžปแž„แž‘แžธแžแžถแŸ†แž„แž›แŸ’แžขแž”แŸ†แž•แžปแžแžŠแŸ‚แž›แž‘แžถแž€แŸ‹แž‘แž„แž‘แŸ…แž“แžนแž„แž–แŸแž›แžœแŸแž›แžถแž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แž˜แžทแž“แžŸแž˜แž“แžนแž„แžœแžทแž˜แžถแžแŸ’แžšแž“แŸƒแž•แŸ’แž‘แŸƒแž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แž‘แŸแŸ” แž“แŸ…แž–แŸแž›แžŠแžถแž€แŸ‹แž˜แŸ‰แžผแžŠแŸ‚แž›แž“แŸ…แž˜แžปแŸ† 45 แžŠแžบแž€แŸ’แžšแŸแžœแžถแž€แŸแž•แŸ’แžแž›แŸ‹แž›แž‘แŸ’แž’แž•แž›แžแž€แž…แžทแžแŸ’แžแž•แž„แžŠแŸ‚แžš; แžœแžถแžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸแžŸแž˜แŸ’แžšแŸแž…แž…แžทแžแŸ’แžแž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แž˜แŸ‰แžผแžŠแŸ‚แž›แž”แž‰แŸ’แžˆแžš แžŠแŸ„แž™แž”แž„แŸ’แž€แžพแžแž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแž˜แžฝแž™แž“แŸ…แž•แŸ’แž“แŸ‚แž€แžแžถแž„แž˜แžปแž แžŠแŸ„แž™แž”แžถแž“แž™แž›แŸ‹แž–แŸ’แžšแž˜แž‡แžถแž˜แžปแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž–แžทแžแž“แŸƒแž€แžถแžšแž€แŸ’แžšแŸ„แž™แžŠแŸ†แžŽแžพแžšแž€แžถแžšแŸ” แž€แžถแžšแž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แžšแžถแž„แž€แžถแž™แž…แŸ†แžŽแžถแž™แž–แŸแž› 5 แž˜แŸ‰แŸ„แž„แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžŸแŸ’แžšแž‘แžถแž”แŸ‹ 50 แž˜แžธแž€แŸ’แžšแžผแŸ” แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€ แž€แžถแžšแž€แŸ‚แž…แŸ’แž“แŸƒแžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแžŠแŸ„แž™แž”แŸ’แžšแžพแž€แŸ’แžšแžŠแžถแžŸแžแŸ’แžŸแžถแž…แŸ‹แž›แŸ’แžขแžทแžแž›แŸ’แžขแž“แŸ‹ (แžแŸ’แž‰แžปแŸ†แž“แžนแž„แž˜แžทแž“แžŸแžšแžŸแŸแžšแž›แŸแžแž‘แŸ แž–แŸ’แžšแŸ„แŸ‡แžแŸ’แž‰แžปแŸ†แž˜แžทแž“แžŠแžนแž„ :))แŸ” แž‚แž˜แŸ’แžšแž”แžแŸ’แž˜แž…แŸ†แžŽแžถแž™แž–แŸแž› 40 แž“แžถแž‘แžธแžŠแžพแž˜แŸ’แž”แžธแž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แŸ”
แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž”แž“แŸ’แž‘แŸ‡แž€แž‰แŸ’แž…แž€แŸ‹แž–แžธ Aliexpress แžแŸ’แžšแžผแžœแž”แžถแž“แž›แž€แŸ‹แž‡แžถแž˜แžฝแž™แž“แžนแž„แžŸแŸŠแžปแž˜แž•แŸ’แž›แžถแžŸแŸ’แž‘แžทแž…แžŸแŸ’แžขแžทแžแž‡แžถแž”แŸ‹แž แžพแž™แž˜แžทแž“แž˜แžถแž“แž”แž‰แŸ’แž แžถแž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแžŠแž€แžŸแŸŠแžปแž˜แž…แŸแž‰แž‘แŸแŸ” แžแŸ’แž‰แžปแŸ†แž”แžถแž“แžŠแž€แž”แž“แŸ’แž‘แŸ‡แž€แž‰แŸ’แž…แž€แŸ‹แž…แŸแž‰ แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž€แŸ†แžŠแŸ…แžœแžถแž‡แžถแž˜แžฝแž™แž˜แŸ‰แžถแžŸแŸŠแžธแž“แžŸแž˜แŸ’แž„แžฝแžแžŸแž€แŸ‹แž’แž˜แŸ’แž˜แžแžถแŸ”
แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แžงแž”แž€แžšแžŽแŸแž”แŸ†แž›แŸ‚แž„แž–แž“แŸ’แž›แžบแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ†แž–แžผแž› LED แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแž–แžธแž€แžถแžŸแŸ‚แžแž–แžธแžšแž‡แžถแž“แŸ‹แž‡แžถแž˜แžฝแž™ adhesive acrylic 3M 9088-200 แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž—แŸ’แž›แžพแž„ fluorescent แž˜แžถแž“แžŸแž˜แŸ’แž—แžถแžšแŸˆแž‡แžถแž…แŸ’แžšแžพแž“แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž‡แŸ’แžšแžพแžŸแžšแžพแžŸ แž€แžถแžŸแŸ‚แž adhesive แžšแž”แžŸแŸ‹แž…แžทแž“ แž“แžทแž„แž€แŸ’แžšแžŠแžถแžŸ adhesive แž€แžถแžแŸ‹แž…แžผแž›แž‘แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžŸแŸ‚แžแž–แžธแž€แŸ’แžšแžปแž˜แž แŸŠแžปแž“แž€แŸ’แž“แžปแž„แžŸแŸ’แžšแžปแž€ Luminofor แŸ” แž‡แž˜แŸ’แžšแžพแžŸแž“แŸแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแž–แŸแž‰แž…แžทแžแŸ’แžแž“แŸƒแž€แŸ’แžšแžปแž˜แž แŸŠแžปแž“แž•แž›แžทแžแž€แŸ’แž“แžปแž„แžŸแŸ’แžšแžปแž€แž˜แžฝแž™, แž“แŸแŸ‡แž”แžพแž™แŸ„แž„แžแžถแž˜แžขแžถแžšแž˜แŸ’แž˜แžŽแŸแžšแž”แžŸแŸ‹แžแŸ’แž‰แžปแŸ†, แžœแžถแž—แŸ’แž›แžบแž‡แžถแž„แž“แžทแž„แž™แžผแžšแž‡แžถแž„แž“แŸแŸ‡แŸ” แž€แŸ’แžšแžŠแžถแžŸแž€แžถแžšแŸ‰แŸแžŠแŸ‚แž›แž˜แžถแž“แžŸแžถแžšแž’แžถแžแžปแž–แžŽแŸŒ fluorescent แžแŸ’แžšแžผแžœแž”แžถแž“แžŸแŸ’แžขแžทแžแž‡แžถแž”แŸ‹แž“แŸ…แž›แžพแž€แŸ†แž–แžผแž›แžŠแŸ„แž™แž€แžถแžŸแŸ‚แž 3M 9088-200 แŸ”

แž€แž‰แŸ’แž…แž€แŸ‹โ€‹แžแŸ’แžšแžผแžœโ€‹แž”แžถแž“โ€‹แžŸแŸ’แžขแžทแžโ€‹แž‡แžถแž”แŸ‹โ€‹แž“แžนแž„โ€‹แžแžฝโ€‹แž€แžปแž„แžแžถแž€แŸ‹โ€‹แžŠแŸ„แž™โ€‹แž”แŸ’แžšแžพโ€‹แž€แžถแžŸแŸ‚แžโ€‹แž–แžธแžšโ€‹แž‡แŸ’แžšแžปแž„โ€‹แž‡แžถแž˜แžฝแž™โ€‹แž“แžนแž„โ€‹แžŸแžถแžšแž’แžถแžแžปโ€‹แžขแžถแž‚แŸ’แžšแžธแž›แžธแž€ 3M VHB 4910แŸ”
แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž‚แž˜แŸ’แžšแž”แžแŸ’แžšแžผแžœแž”แžถแž“แž‡แžฝแžŸแž‡แžปแž›แžŠแŸ„แž™แžœแžธแžŸ M 1,4 X 5 แž˜แŸ”

แžแž˜แŸ’แž›แŸƒแž“แŸƒแžงแž”แž€แžšแžŽแŸแž‚แžบ 890 แžšแžผแž”แŸ’แž›แžทแŸแŸ”

แž”แž“แŸ’แž‘แžถแž”แŸ‹โ€‹แž˜แž€โ€‹แž•แŸ’แž“แŸ‚แž€โ€‹แž€แž˜แŸ’แž˜แžœแžทแž’แžธแŸ” แž˜แžถแž“แž”แž‰แŸ’แž แžถแž˜แžฝแž™แž…แŸ†แž“แžฝแž“แŸ” แžœแžถแž”แŸ’แžšแŸ‚แžแžถแž”แž“แŸ’แž‘แŸ‡แžˆแžธแž”แžงแž”แž€แžšแžŽแŸแž…แžถแž”แŸ‹แžŸแž‰แŸ’แž‰แžถ TTP223 แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž›แŸ’แžขแž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž•แŸ’แž‚แžแŸ‹แž•แŸ’แž‚แž„แŸ‹แžแžถแž˜แž–แž› 3.3V แžŠแŸ‚แž›แž˜แžถแž“แžŸแŸ’แžแŸแžšแž—แžถแž– แž แžพแž™แž˜แžทแž“แžŸแžผแžœแž›แŸ’แžขแž‘แŸแž“แŸ…แž–แŸแž›แžŠแŸ‚แž›แž•แŸ’แžแž›แŸ‹แžแžถแž˜แž–แž›แžŠแŸ„แž™แž•แŸ’แž‘แžถแž›แŸ‹แž–แžธแžแŸ’แž˜แžŠแŸ‚แž›แž แžผแžšแž…แŸแž‰แž›แŸ’แžขแŸ” แž“แŸ…แž–แŸแž›แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžงแž”แž€แžšแžŽแŸแž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž•แŸ’แž‚แžแŸ‹แž•แŸ’แž‚แž„แŸ‹แžแžถแž˜แž–แž›แž“แŸ…แž‡แžปแŸ†แžœแžทแž‰ 2.5v แž”แžผแž€แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธ "แžŠแž€" แž”แž“แŸ’แžแŸ‚แž˜แž“แŸ…แž–แŸแž›แž’แŸ’แžœแžพแž€แžถแžšแž”แž„แŸ’แž แžถแž‰ Mysensors แž˜แžธแž€แŸ’แžšแžผแžŸแŸ€แž‚แŸ’แžœแžธ TTP223 (แž—แŸ’แž›แžถแž˜แŸ—แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž€แžถแžšแž€แŸ’แžšแžทแžแžแžถแž˜แžแŸ’แž“แžถแž) แž”แžŽแŸ’แžแžถแž›แžฑแŸ’แž™แž˜แžถแž“แž€แžถแžšแžšแŸ†แžแžถแž“แž“แŸƒ MK แž…แžถแž”แŸ‹แžแžถแŸ†แž„แž–แžธแžœแžถแž“แŸ…แž‡แžถแž˜แžฝแž™แž€แŸแŸ‡แžŸแž€แž˜แŸ’แž˜แŸ”

แžŸแŸ€แž‚แŸ’แžœแžธแž•แŸ’แž‚แžแŸ‹แž•แŸ’แž‚แž„แŸ‹แžแžถแž˜แž–แž›แž‘แŸ… microcircuit แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžš (แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แžแžถแž˜แž–แž› TTP223 แž‡แžถแž˜แžฝแž™ gpio MK) แžŠแžธแž”แž“แŸ’แžแŸ‚แž˜แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แž‚แžแŸ‹แž•แŸ’แž‚แž„แŸ‹ แž แžพแž™แžšแŸแžŸแŸŠแžธแžŸแŸ’แžแž„แŸ‹แžŠแŸ‚แž›แž˜แžถแž“แž—แžถแž–แž’แž“แŸ‹แž‘แŸ’แžšแžถแŸ†แžแŸ’แž–แžŸแŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แž‡แŸ†แž“แžฝแžŸแž“แŸ…แž›แžพแž”แž“แŸ’แž‘แžถแžแŸ‹แžŠแžนแž€แž“แžถแŸ† rgb (แžŠแŸ‚แž›แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž“แŸ…แž•แŸ’แž“แŸ‚แž€แž˜แŸ’แžแžถแž„แž‘แŸ€แžแž“แŸƒแž”แž“แŸ’แž‘แŸ‡แžงแž”แž€แžšแžŽแŸแž…แžถแž”แŸ‹แžŸแž‰แŸ’แž‰แžถ capacitive) แŸ” แžœแžถแžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แž€แŸ’แž“แžปแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž•แž„แžŠแŸ‚แžšแŸ– แž€แžถแžšแž’แŸ’แžœแžพแžฑแŸ’แž™แžŸแž€แž˜แŸ’แž˜แž“แŸƒแžแžถแž˜แž–แž›แžŸแž˜แŸ’แžšแžถแž”แŸ‹ microcircuit capacitive แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž€แŸ’แžšแž”แžแŸแžŽแŸ’แžŒ Mysensors แž“แžทแž„แž’แŸ’แžœแžพแž€แžถแžšแž”แž„แŸ’แž แžถแž‰แŸ” แž€แžถแžšแž–แž“แŸ’แž™แžถแž–แŸแž›แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž€แŸ’แžšแžทแžแžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž“แŸƒแž”แž“แŸ’แž‘แŸ‡แžˆแžธแž” TTP223 แž“แŸ…แž–แŸแž›แžŠแŸ‚แž›แžแžถแž˜แž–แž›แžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแžแŸ’แžšแžผแžœแž”แžถแž“แž€แžพแž“แžกแžพแž„แž‘แŸ’แžœแŸแžŠแž„แŸ” แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž‘แžถแŸ†แž„แžขแžŸแŸ‹แž“แŸแŸ‡แž”แžถแž“แž›แžปแž”แž”แŸ†แž”แžถแžแŸ‹แž”แž‰แŸ’แž แžถแž“แŸแŸ‡แž‘แžถแŸ†แž„แžŸแŸ’แžšแžปแž„แŸ”

แž˜แžปแž“แž–แŸแž›แž˜แžพแž›แž€แžผแžŠแž€แž˜แŸ’แž˜แžœแžทแž’แžธ แžแŸ’แž‰แžปแŸ†แžŸแžผแž˜แžŽแŸ‚แž“แžถแŸ†แžฑแŸ’แž™แžขแŸ’แž“แž€แžŸแŸ’แž‚แžถแž›แŸ‹แžแŸ’แž›แžฝแž“แžขแŸ’แž“แž€แž‡แžถแž˜แžฝแž™แž“แžนแž„แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž“แŸƒแž‚แŸ†แž“แžผแžšแž–แŸ’แžšแžถแž„แž“แŸ…แž€แŸ’แž“แžปแž„ Mysensors แŸ”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

แž€แžปแž„แžแžถแž€แŸ‹แž˜แžถแž“แž”แŸŠแžผแžแžปแž„แž”แŸ‰แŸ‡ แž“แžทแž„แž”แŸŠแžผแžแžปแž„แž”แŸ‰แŸ‡แž“แŸ…แžแžถแž„แž€แŸ’แžšแŸ„แž™แžงแž”แž€แžšแžŽแŸแŸ” แž”แŸŠแžผแžแžปแž„แž€แž›แž›แŸ’แž”แžทแž…แž“แŸแŸ‡แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž˜แžปแžแž„แžถแžšแžŸแŸแžœแžถแž€แž˜แŸ’แž˜ แžšแž”แŸ€แž”แž…แž„แž–แžธแž›แžพแžขแžถแž€แžถแžŸ แž“แžทแž„แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžงแž”แž€แžšแžŽแŸแžกแžพแž„แžœแžทแž‰แŸ” แž”แŸŠแžผแžแžปแž„แž˜แžถแž“แž˜แžปแžแž„แžถแžšแž”แŸ’แžšแž†แžถแŸ†แž„แž“แžนแž„แž€แžถแžšแž›แŸ„แžแžŠแŸ‚แž€แŸ” แž”แž“แŸ’แž‘แžถแžแŸ‹แž“แŸƒแžงแž”แž€แžšแžŽแŸ capacitive แž“แžทแž„แž”แž“แŸ’แž‘แžถแžแŸ‹แž“แŸƒแž”แŸŠแžผแžแžปแž„แž“แžถแžกแžทแž€แžถแžแŸ’แžšแžผแžœแž”แžถแž“แž—แŸ’แž‡แžถแž”แŸ‹แžแžถแž˜แžšแž™แŸˆ diodes Schottky แž“แžทแž„แž—แŸ’แž‡แžถแž”แŸ‹แž‘แŸ…แž“แžนแž„ analog pin p0.05 แž แžพแž™แž–แžธแžงแž”แž€แžšแžŽแŸแž…แžถแž”แŸ‹แžŸแž‰แŸ’แž‰แžถ capacitive แž“แžทแž„แž”แŸŠแžผแžแžปแž„แž“แžถแžกแžทแž€แžถแž˜แžถแž“แž”แž“แŸ’แž‘แžถแžแŸ‹แž‘แŸ… MK pins p0.25 แž“แžทแž„ p0.27 แŸ” .0.05 แžŸแž˜แŸ’แžšแžถแž”แŸ‹โ€‹แž€แžถแžšโ€‹แžขแžถแž“โ€‹แžšแžŠแŸ’แž‹โ€‹แž”แž“แŸ’แž‘แžถแž”แŸ‹โ€‹แž–แžธโ€‹แž”แžพแž€โ€‹แžŠแŸ†แžŽแžพแžšแž€แžถแžš interrupt แž“แŸ…โ€‹แž›แžพ pin p0.05 XNUMX แŸ” แž“แŸ…แž›แžพ pin pXNUMX แž€แžถแžšแžšแŸ†แžแžถแž“แžแžถแž˜แžšแž™แŸˆแžงแž”แž€แžšแžŽแŸแž”แŸ’แžšแŸ€แž”แž’แŸ€แž” (NRF_LPCOMP) แžแžถแž˜แžšแž™แŸˆ EVENTS_UP แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžฑแŸ’แž™แžŸแž€แž˜แŸ’แž˜แŸ” แžแŸ’แž‰แžปแŸ†แž”แžถแž“แž‘แž‘แžฝแž›แž€แžถแžšแž”แŸ†แž•แžปแžŸแž‚แŸ†แž“แžทแžแžŠแžพแž˜แŸ’แž”แžธแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถ แž“แŸ…แž‘แžธแž“แŸแŸ‡ ะธ แž“แŸ…แž‘แžธแž“แŸแŸ‡.

แž€แžปแž„แžแžถแž€แŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แž”แžŽแŸ’แžแžถแž‰ Mysensors แžŠแŸ‚แž›แž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แžŠแŸ„แž™แžงแž”แž€แžšแžŽแŸแž”แž‰แŸ’แž‡แžถแž•แŸ’แž‘แŸ‡แž†แŸ’แž›แžถแžแžœแŸƒ Majordomo (แž‚แŸแž แž‘แŸ†แž–แŸแžšแž‚แž˜แŸ’แžšแŸ„แž„)

แž€แžผแžŠ PHP แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž”แŸ’แžแžผแžšแž‘แŸ…แžœแžทแž’แžธแž’แŸ’แžœแžพแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž—แžถแž–แžŸแŸ’แžแžถแž“แž—แžถแž–

if (getGlobal("MysensorsButton01.status")==1) {
if (getGlobal('MysensorsRelay04.status') == 0) {
setGlobal('MysensorsRelay04.status', '1');
} else if (getGlobal('MysensorsRelay04.status') == 1) {
setGlobal('MysensorsRelay04.status', '0');
} 
}

แž˜แžพแž›แž›แž‘แŸ’แž’แž•แž›แž€แŸ’แž“แžปแž„แžœแžธแžŠแŸแžขแžผ

แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž€แŸ’แžšแŸ„แž™แž˜แž€แž‡แž˜แŸ’แžšแžพแžŸแž˜แžฝแž™แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž”แŸ†แž”แŸ’แž›แŸ‚แž„แž‡แŸ†แžšแžปแž‰ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž“แŸแŸ‡แž˜แžทแž“แž‘แžถแž€แŸ‹แž‘แž„แž‘แŸ…แž“แžนแž„แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแž“แŸƒ TTP223 capacitive microcircuit แž˜แžถแž“แž”แŸ†แžŽแž„แž”แŸ’แžšแžถแžแŸ’แž“แžถแž€แžถแž“แŸ‹แžแŸ‚แž…แŸ’แžšแžพแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แŸ†แž—แŸ’แž›แžบแž›แŸ’แžข แž“แžทแž„แžฏแž€แžŸแžŽแŸ’แž‹แžถแž“แž“แŸ…แž–แŸแž›แž…แžปแž…แž‚แŸ’แžšแžถแž”แŸ‹แž…แžปแž…แž–แŸแž‰แž˜แžฝแž™แž‡แžธแžœแžทแžแžšแž”แžŸแŸ‹แžแŸ’แž˜แŸ”

แž˜แžพแž›แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž‚แž˜แŸ’แžšแŸ„แž„ Github - github.com/smartboxchannel/EFEKTA_WIRELESS_TOUCH_SWITCH

แž“แžทแž™แžถแž™แž—แžถแžŸแžถแžšแžปแžŸแŸ’แžŸแžธ แž‚แŸแž แž‘แŸ†แž–แŸแžšแžŸแž แž‚แž˜แž“แŸ แž˜แŸ‰แžถแž™แžŸแžทแž“แžŸแžบ

Telegram แž‡แž‡แŸ‚แž€ Mysensors - แžŠแŸ†แžŽแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžšแž แŸแžŸแž…แŸ†แž–แŸ„แŸ‡แž”แž‰แŸ’แž แžถแž‡แžถแž˜แžฝแž™ Mysensors, แž‚แž“แŸ’แž›แžนแŸ‡, แž›แŸ’แž”แžทแž…, แž€แžถแžšแžŠแŸ†แžกแžพแž„แž€แŸ’แžแžถแžš, แž’แŸ’แžœแžพแž€แžถแžšแž‡แžถแž˜แžฝแž™ atmega 328, stm32, nRF5 microcontrollers แž“แŸ…แž€แŸ’แž“แžปแž„ Arduino IDE โ€” @mysensors_rus

แžšแžผแž”แžแžแž˜แžฝแž™แž…แŸ†แž“แžฝแž“แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

แž€แžปแž„แžแžถแž€แŸ‹แž”แŸ‰แŸ‡แžฅแžแžแŸ’แžŸแŸ‚แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ†แž–แžผแž› Backlight fluorescent แž”แž“แŸ’แžแŸ‚แž˜

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

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹