แƒ›แƒ˜แƒœแƒ˜ แƒกแƒ”แƒœแƒกแƒแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ˜ แƒจแƒฃแƒจแƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒ— nRF52832-แƒ–แƒ”

แƒ“แƒฆแƒ”แƒ•แƒแƒœแƒ“แƒ”แƒš แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒ˜แƒœแƒ“แƒ แƒ’แƒแƒ’แƒ˜แƒ–แƒ˜แƒแƒ แƒแƒ— แƒแƒฎแƒแƒšแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜. แƒแƒ›แƒฏแƒ”แƒ แƒแƒ“ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒ”แƒœแƒกแƒแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ˜ แƒจแƒฃแƒจแƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒ—. แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ แƒ™แƒแƒ›แƒžแƒแƒฅแƒขแƒฃแƒ แƒ˜แƒ, แƒ–แƒแƒ›แƒ˜แƒ— 42x42 แƒ›แƒ› (แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ”แƒ‘แƒ˜แƒ 80x80 แƒ›แƒ›). แƒแƒ› แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒฌแƒ˜แƒœ, แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒ”แƒ แƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒฌแƒ˜แƒœ แƒ“แƒแƒ˜แƒฌแƒงแƒ.

แƒ›แƒ˜แƒœแƒ˜ แƒกแƒ”แƒœแƒกแƒแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ˜ แƒจแƒฃแƒจแƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒ— nRF52832-แƒ–แƒ”

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜ แƒ˜แƒงแƒ atmega328 แƒ›แƒ˜แƒ™แƒ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ–แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ nRF52832 แƒ›แƒ˜แƒ™แƒ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ˜แƒ—.

แƒ›แƒ˜แƒœแƒ˜ แƒกแƒ”แƒœแƒกแƒแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ˜ แƒจแƒฃแƒจแƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒ— nRF52832-แƒ–แƒ”

แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒก แƒกแƒ”แƒœแƒกแƒแƒ แƒฃแƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก TTP223 แƒฉแƒ˜แƒžแƒ”แƒ‘แƒ–แƒ”. แƒแƒ แƒ˜แƒ•แƒ” แƒกแƒ”แƒœแƒกแƒแƒ แƒก แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒฌแƒงแƒ•แƒ”แƒขแƒ. แƒ˜แƒ™แƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ CR2477 แƒ‘แƒแƒขแƒแƒ แƒ”แƒ˜แƒ—, แƒ’แƒแƒ›แƒแƒซแƒšแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ™แƒแƒœแƒ•แƒ”แƒ แƒขแƒแƒ แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— TPS610981 แƒฉแƒ˜แƒžแƒ–แƒ” | แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒคแƒฃแƒ แƒชแƒ”แƒšแƒ˜.

แƒ›แƒ˜แƒœแƒ˜ แƒกแƒ”แƒœแƒกแƒแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ˜ แƒจแƒฃแƒจแƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒ— nRF52832-แƒ–แƒ”
แƒ›แƒ˜แƒœแƒ˜ แƒกแƒ”แƒœแƒกแƒแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ˜ แƒจแƒฃแƒจแƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒ— nRF52832-แƒ–แƒ”

แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒฌแƒ แƒ”แƒก แƒกแƒแƒ•แƒ”แƒšแƒ” แƒ”แƒคแƒ”แƒฅแƒขแƒ˜แƒก แƒขแƒ แƒแƒœแƒ–แƒ˜แƒกแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ” แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ›แƒ˜แƒ™แƒ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ˜ แƒ—แƒแƒ•แƒแƒ“ แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒ“แƒ”แƒœแƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒฉแƒ”แƒ›แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ—แƒแƒœ แƒ“แƒแƒฌแƒงแƒ•แƒ˜แƒšแƒ”แƒ‘แƒ, แƒ“แƒ”แƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ แƒ“แƒ แƒฅแƒแƒ แƒฎแƒœแƒฃแƒšแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ).

แƒแƒ แƒ˜แƒก 2 rgb LED แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ”แƒ›แƒแƒขแƒ แƒžแƒ˜แƒ”แƒ–แƒ แƒ”แƒ›แƒ˜แƒขแƒ”แƒ แƒ˜, แƒ แƒแƒ—แƒ แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒแƒก แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ›แƒฃแƒšแƒแƒชแƒ˜แƒ แƒกแƒ”แƒœแƒกแƒแƒ แƒฃแƒšแƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฎแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒ“แƒ แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฎแƒ›แƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก. LED-แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒžแƒ˜แƒ”แƒ–แƒ แƒ”แƒ›แƒ˜แƒขแƒ”แƒ แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฉแƒแƒ แƒ—แƒแƒ— แƒ“แƒ แƒ’แƒแƒ›แƒแƒ แƒ—แƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒจแƒ”แƒฎแƒ”แƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒ›แƒ”แƒ‘แƒ . แƒ”แƒก แƒฎแƒ“แƒ”แƒ‘แƒ แƒญแƒ™แƒ•แƒ˜แƒแƒœแƒ˜ แƒกแƒแƒฎแƒšแƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒฃแƒ  แƒกแƒ”แƒœแƒกแƒแƒ แƒ”แƒ‘แƒ–แƒ” แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ—; แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒก แƒ‘แƒแƒขแƒแƒ แƒ”แƒ˜แƒก แƒ“แƒแƒขแƒ”แƒœแƒ•แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒ•แƒแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒ“แƒแƒœแƒ” แƒแƒกแƒ”แƒ•แƒ” แƒญแƒ™แƒ•แƒ˜แƒแƒœแƒ˜ แƒกแƒแƒฎแƒšแƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒฉแƒ”แƒ›แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒแƒกแƒ”แƒ แƒ›แƒแƒŸแƒแƒ แƒ“แƒแƒ›แƒ.

แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ แƒแƒ แƒ˜แƒก 7 mA (250 แƒ™แƒ‘แƒ˜แƒขแƒ˜, 10 ms), แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ แƒซแƒ˜แƒšแƒ˜แƒก แƒ“แƒ แƒแƒก แƒแƒ แƒ˜แƒก 40 ฮผA, แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒแƒจแƒ˜ แƒแƒ แƒ˜แƒก 1 ฮผA-แƒ–แƒ” แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ (=แƒ’แƒแƒ›แƒแƒซแƒšแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ โ€žแƒฃแƒกแƒแƒฅแƒ›แƒฃแƒ โ€œ แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜). แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Rx, tx, swd แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒœแƒ˜แƒแƒขแƒฃแƒ แƒฃแƒšแƒ˜ 2x3p แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ˜ 1.27 แƒกแƒ˜แƒ›แƒแƒฆแƒšแƒ˜แƒ—. แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒ–แƒแƒ“แƒ“แƒ”แƒ‘แƒ แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒแƒ“แƒแƒžแƒขแƒ”แƒ แƒ˜.

แƒ›แƒ˜แƒœแƒ˜ แƒกแƒ”แƒœแƒกแƒแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ˜ แƒจแƒฃแƒจแƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒ— 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

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ