Мини ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ Π½Π° Π΄ΠΎΠΏΠΈΡ€ со стаклСна ΠΏΠ»ΠΎΡ‡Π° Π½Π° nRF52832

Π’ΠΎ Π΄Π΅Π½Π΅ΡˆΠ½Π°Ρ‚Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° сакам Π΄Π° сподСлам со вас Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Овој ΠΏΠ°Ρ‚ сС Ρ€Π°Π±ΠΎΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ Π½Π° Π΄ΠΎΠΏΠΈΡ€ со стаклСн ΠΏΠ°Π½Π΅Π». Π£Ρ€Π΅Π΄ΠΎΡ‚ Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½, со Π΄ΠΈΠΌΠ΅Π½Π·ΠΈΠΈ 42x42mm (стандарднитС стаклСни ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠΌΠ°Π°Ρ‚ Π΄ΠΈΠΌΠ΅Π½Π·ΠΈΠΈ 80x80mm). Π˜ΡΡ‚ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° овој ΡƒΡ€Π΅Π΄ Π·Π°ΠΏΠΎΡ‡Π½Π° ΠΌΠ½ΠΎΠ³Ρƒ ΠΎΠ΄Π°ΠΌΠ½Π°, ΠΏΡ€Π΅Π΄ ΠΎΠΊΠΎΠ»Ρƒ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π°.

Мини ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ Π½Π° Π΄ΠΎΠΏΠΈΡ€ со стаклСна ΠΏΠ»ΠΎΡ‡Π° Π½Π° nRF52832

ΠŸΡ€Π²ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π±Π΅Π° Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΎΡ‚ atmega328, Π½ΠΎ Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ сС Π·Π°Π²Ρ€ΡˆΠΈ со ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΎΡ‚ nRF52832.

Мини ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ Π½Π° Π΄ΠΎΠΏΠΈΡ€ со стаклСна ΠΏΠ»ΠΎΡ‡Π° Π½Π° nRF52832

Π”Π΅Π»ΠΎΡ‚ Π½Π° Π΄ΠΎΠΏΠΈΡ€ Π½Π° ΡƒΡ€Π΅Π΄ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Ρ‡ΠΈΠΏΠΎΠ²ΠΈ TTP223. И Π΄Π²Π°Ρ‚Π° сСнзори сС опслуТуваат со Π΅Π΄Π΅Π½ ΠΏΡ€Π΅ΠΊΠΈΠ½. Π‘Π΅ Π½Π°ΠΏΠΎΡ˜ΡƒΠ²Π° со Π±Π°Ρ‚Π΅Ρ€ΠΈΡ˜Π° CR2477, ΠΏΡ€Π΅ΠΊΡƒ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΡ€ Π·Π° Π·Π°ΡΠΈΠ»ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ‡ΠΈΠΏΠΎΡ‚ TPS610981 | ΠŸΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

Мини ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ Π½Π° Π΄ΠΎΠΏΠΈΡ€ со стаклСна ΠΏΠ»ΠΎΡ‡Π° Π½Π° nRF52832
Мини ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ Π½Π° Π΄ΠΎΠΏΠΈΡ€ со стаклСна ΠΏΠ»ΠΎΡ‡Π° Π½Π° nRF52832

Π£Ρ€Π΅Π΄ΠΎΡ‚ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΊΠΎΠ»ΠΎ Π·Π° ΠΈΡΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° транзистори со Π΅Ρ„Π΅ΠΊΡ‚ Π½Π° ΠΏΠΎΠ»Π΅. По ΠΏΡ€ΠΈΡ‚ΠΈΡΠΊΠ°ΡšΠ΅ Π½Π° ΠΊΠΎΠΏΡ‡Π΅Ρ‚ΠΎ, самиот ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ ја прСсрСтнува ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π°Ρ‚Π° Π½Π° Π½Π°ΠΏΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΈ ΠΏΠΎΡ‚ΠΎΠ° ΠΊΠΎΠΏΡ‡Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π·Π° Ρ€Π΅ΠΆΠΈΠΌΠΈ Π½Π° ΡΠ΅Ρ€Π²ΠΈΡΠΈΡ€Π°ΡšΠ΅ (Π²ΠΎ ΠΌΠΎΡ˜ΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΎΠ²Π° Π΅ ΡΠΏΠ°Ρ€ΡƒΠ²Π°ΡšΠ΅ со Π΄Ρ€ΡƒΠ³ΠΈ ΡƒΡ€Π΅Π΄ΠΈ, ΠΈΡΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π½Π°ΠΏΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΈ Ρ€Π΅ΡΠ΅Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ„Π°Π±Ρ€ΠΈΡ‡ΠΊΠΈ поставки).

Има 2 rgb LED Π΄ΠΈΠΎΠ΄ΠΈ Π·Π° ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°ΡšΠ΅ ΡΠΎΡΡ‚ΠΎΡ˜Π±ΠΈ ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠΈ Π½Π° услуга. Π”ΠΎΠ΄Π°Π΄Π΅Π½ Π΅ ΠΈ ΠΏΠΈΠ΅Π·ΠΎ Π΅ΠΌΠΈΡ‚Π΅Ρ€ Π·Π° Π΄Π° сС симулира ΠΊΠ»ΠΈΠΊ ΠΏΡ€ΠΈ Π΄ΠΎΠΏΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠΏΡ‡ΠΈΡšΠ°Ρ‚Π° Π½Π° Π΄ΠΎΠΏΠΈΡ€ ΠΈ Π·Π²ΡƒΡ‡Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° Ρ€Π΅ΠΆΠΈΠΌΠΈΡ‚Π΅ Π½Π° услуга. LED Π΄ΠΈΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ ΠΏΠΈΠ΅Π·ΠΎ Π΅ΠΌΠΈΡ‚Π΅Ρ€ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ ΠΈ исклучуваат ΠΏΠΎ Π΄ΠΈΡΠΊΡ€Π΅Ρ†ΠΈΡ˜Π° Π½Π° корисникот. Ова сС ΠΏΡ€Π°Π²ΠΈ ΠΏΡ€Π΅ΠΊΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΡ€ΠΎΡ‚ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚Π½ΠΈ Π΄ΠΎΠΌΠΎΠ²ΠΈ со ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π΄ΠΎ Ρ‚Π΅Ρ…Π½ΠΈΡ‡ΠΊΠΈΡ‚Π΅ сСнзори, исто Ρ‚Π°ΠΊΠ°, корисникот ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈΡ‚Π΅ Π·Π° ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ полнСњС Π½Π° Π±Π°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Ρ‚Π° ΠΈ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° сигналот, исто Ρ‚Π°ΠΊΠ°, ΠΏΡ€Π΅ΠΊΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΎΡ‚ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚Π½ΠΈ Π΄ΠΎΠΌΠΎΠ²ΠΈ. Π’ΠΎ ΠΌΠΎΡ˜ΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°Ρ˜ Ρ‚ΠΎΠ° Π΅ ΠœΠΠˆΠžΠ Π”ΠžΠœΠž.

ΠŸΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° прСнос Π΅ 7mA (250kbit, 10ms), ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° Π²ΠΎ ΠΌΠΈΡ€ΡƒΠ²Π°ΡšΠ΅ Π΅ 40Β΅A, ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° Π²ΠΎ исклучСна ΡΠΎΡΡ‚ΠΎΡ˜Π±Π° Π΅ ΠΏΠΎΠΌΠ°Π»Π° ΠΎΠ΄ 1Β΅A (=ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ° Π½Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΡ€ΠΎΡ‚ Π·Π° Π·Π°ΡΠΈΠ»ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ β€žΠ½Π΅Π°ΠΊΡ‚ΠΈΠ²Π΅Π½β€œ). ОбСзбСдСн Π΅ Rx, tx, swd ΠΊΠΎΠ½Π΅ΠΊΡ‚ΠΎΡ€ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅. Π‘Π΅ користи ΠΌΠΈΠ½ΠΈΡ˜Π°Ρ‚ΡƒΡ€Π΅Π½ 2x3p ΠΊΠΎΠ½Π΅ΠΊΡ‚ΠΎΡ€ со Ρ‡Π΅ΠΊΠΎΡ€ ΠΎΠ΄ 1.27. Π‘ΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π΅Π½ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅.

Мини ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ Π½Π° Π΄ΠΎΠΏΠΈΡ€ со стаклСна ΠΏΠ»ΠΎΡ‡Π° Π½Π° 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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€