ืžื™ื ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื’ืœืื– ื˜ืึทืคืœื™ืข ืื•ื™ืฃ nRF52832

ืื™ืŸ ื”ื™ื™ึทื ื˜ ืก ืึทืจื˜ื™ืงืœ ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ื˜ื™ื™ืœืŸ ืžื™ื˜ ืื™ืจ ืึท ื ื™ื™ึทืข ืคึผืจื•ื™ืขืงื˜. ื“ืึธืก ืžืึธืœ ืขืก ืื™ื– ืึท ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ืึท ื’ืœืื– ื˜ืึทืคืœื™ืข. ื“ื™ ืžื™ื˜ืœ ืื™ื– ืกืึธืœื™ื“, ืžืขืกื˜ืŸ 42ืงืก42ืžื (ื ืึธืจืžืึทืœ ื’ืœืื– ืคึผืึทื ืึทืœื– ื”ืึธื‘ืŸ ื“ื™ืžืขื ืฉืึทื ื– 80ืงืก80ืžื). ื“ื™ ื’ืขืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹ื“ืขื ืžื™ื˜ืœ ืื ื’ืขื”ื•ื™ื‘ืŸ ืึท ืœืึทื ื’ ืฆื™ื™ึทื˜ ืฆื•ืจื™ืง, ื•ื•ืขื’ืŸ ืึท ื™ืึธืจ ืฆื•ืจื™ืง.

ืžื™ื ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื’ืœืื– ื˜ืึทืคืœื™ืข ืื•ื™ืฃ nRF52832

ื“ืขืจ ืขืจืฉื˜ืขืจ ืึธืคึผืฆื™ืขืก ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ืื•ื™ืฃ ื“ื™ ืึทื˜ืžืขื’ืึท 328 ืžื™ืงืจืึธืงืึธื ื˜ืจืึธืœืœืขืจ, ืึธื‘ืขืจ ืื™ืŸ ื“ื™ ืกื•ืฃ ืขืก ืึทืœืข ื’ืขืขื ื“ื™ืงื˜ ืžื™ื˜ ื“ื™ nRF52832 ืžื™ืงืจืึธืงืึธื ื˜ืจืึธืœืœืขืจ.

ืžื™ื ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื’ืœืื– ื˜ืึทืคืœื™ืข ืื•ื™ืฃ nRF52832

ื“ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืžื™ื˜ืœ ืœื•ื™ืคื˜ ืื•ื™ืฃ TTP223 ื˜ืฉื™ืคึผืก. ื‘ื™ื™ื“ืข ืกืขื ืกืึธืจืก ื–ืขื ืขืŸ ืกืขืจื•ื•ื™ืจื˜ ื“ื•ืจืš ืื™ื™ืŸ ื™ื‘ืขืจืจื™ื™ึทืก. ืคึผืึทื•ืขืจื“ ื“ื•ืจืš ืึท CR2477 ื‘ืึทื˜ืึทืจื™ื™ืข, ื“ื•ืจืš ืึท ื‘ื•ืกื˜ ืงืึทื ื•ื•ืขืจื˜ืขืจ ืื•ื™ืฃ ื“ื™ TPS610981 ืฉืคึผืึธืŸ | ื“ืึทื˜ืึทืฉื™ื˜.

ืžื™ื ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื’ืœืื– ื˜ืึทืคืœื™ืข ืื•ื™ืฃ nRF52832
ืžื™ื ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื’ืœืื– ื˜ืึทืคืœื™ืข ืื•ื™ืฃ nRF52832

ื“ืขืจ ืžื™ื˜ืœ ื™ืžืคึผืœืึทืžืึทื ืฅ ืึท ืžืึทื›ื˜-ืึทื•ื•ืขืง ืงืจื™ื™ึทื– ื ื™ืฆืŸ ืคืขืœื“-ื•ื•ื™ืจืงื•ื ื’ ื˜ืจืึทื ื–ื™ืกื˜ืขืจื–. ื ืึธืš ื“ืจื™ื ื’ืœืขืš ื“ื™ ืงื ืขืคึผืœ, ื“ื™ ืžื™ืงืจืึธืงืึธื ื˜ืจืึธืœืœืขืจ ื–ื™ืš ื™ื ื˜ืขืจืกืขืคึผื˜ื™ื– ืžืึทื›ื˜ ืงืึธื ื˜ืจืึธืœ ืื•ืŸ ื“ืขืจ ืงื ืขืคึผืœ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืคึฟืึทืจ ื“ื™ื ืกื˜ ืžืึธื“ืขืก (ืื™ืŸ ืžื™ื™ืŸ ืคืึทืœ, ื“ืึธืก ืื™ื– ืคึผืขืจื™ื ื’ ืžื™ื˜ ืื ื“ืขืจืข ื“ืขื•ื•ื™ืกืขืก, ืงืขืจ ืึทื•ื•ืขืง ื“ื™ ืžืึทื›ื˜ ืื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืง ื“ื™ ืคืึทื‘ืจื™ืง ืกืขื˜ื˜ื™ื ื’ืก).

ืขืก ื–ืขื ืขืŸ 2 ืจื’ื‘ ืœืขื“ืก ืคึฟืึทืจ ื™ื ื“ืึทืงื™ื™ื˜ื™ื ื’ ืฉื˜ืึทื˜ืŸ ืื•ืŸ ื“ื™ื ืกื˜ ืžืึธื“ืขืก. ื ืคึผื™ืขื–ืึธ ืขืžื™ื˜ื˜ืขืจ ืื™ื– ืื•ื™ืš ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ืกื™ืžื•ืœื™ืจืŸ ืึท ืงืœื™ืง ื•ื•ืขืŸ ืจื™ืจื ื“ื™ืง ืคืึทืจื‘ื™ื ื“ืŸ ืงื ืขืคึผืœืขืš ืื•ืŸ ื’ืขื–ื•ื ื˜ ืึธื ื•ื•ื™ื™ึทื– ืคื•ืŸ ื“ื™ื ืกื˜ ืžืึธื“ืขืก. ื“ื™ ืœืขื“ืก ืื•ืŸ ืคึผื™ืขื–ืึธ ื™ืžื™ื˜ืขืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืื•ื™ืกื’ืขื“ืจื™ื™ื˜ ืื•ื™ืฃ ืื•ืŸ ืึทื•ื•ืขืง ืœื•ื™ื˜ ื“ื™ ื‘ืึทื ื™ืฆืขืจ 'ืก ื“ื™ืกืงืจืขืฉืึทืŸ. ื“ืึธืก ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ื“ื•ืจืš ื“ื™ ืกืžืึทืจื˜ ื”ื™ื™ื ืงืึธื ื˜ืจืึธืœืœืขืจ ื“ื•ืจืš ืฉื™ืงืŸ ืงืึทืžืึทื ื“ื– ืฆื• ื˜ืขื›ื ื™ืฉ ืกืขื ืกืึธืจืก; ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืงืขื ืขืŸ ืื•ื™ืš ื˜ื•ื™ืฉืŸ ื“ื™ ื™ื ื˜ืขืจื•ื•ืึทืœื– ืคึฟืึทืจ ืฉื™ืงื˜ ื‘ืึทื˜ืึทืจื™ื™ืข ืึธืคึผืฆืึธืœ ืื•ืŸ ืกื™ื’ื ืึทืœ ืžื“ืจื’ื” ืื•ื™ืš ื“ื•ืจืš ื“ื™ ืกืžืึทืจื˜ ื”ื™ื™ื ืงืึธื ื˜ืจืึธืœืœืขืจ. ืื™ืŸ ืžื™ื™ืŸ ืคืึทืœ ืขืก ืื™ื– MAJORDOMO.

ืงืึทื ืกืึทืžืฉืึทืŸ ืื™ืŸ ื˜ืจืึทื ืกืžื™ื˜ื˜ ืžืึธื“ืข ืื™ื– 7ืžืึท (250 ืงื‘ื™ื˜, 10ms), ืงืึทื ืกืึทืžืฉืึทืŸ ืื™ืŸ ืฉืœืึธืคืŸ ืื™ื– 40ฮผA, ืงืึทื ืกืึทืžืฉืึทืŸ ืื™ืŸ ื“ื™ ืึทื•ื•ืขืง ืฉื˜ืึทื˜ ืื™ื– ื•ื•ื™ื™ื ื™ืงืขืจ ื•ื•ื™ 1ฮผA (= ืงืึทื ืกืึทืžืฉืึทืŸ ืคื•ืŸ ื“ื™ ื‘ื•ืกื˜ ืงืึทื ื•ื•ืขืจื˜ืขืจ ืื™ืŸ "ืœื™ื™ื“ื™ืง" ืžืึธื“ืข). Rx, tx, swd ืงืึทื ืขืงื˜ืขืจ ืคึฟืึทืจ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืื™ื– ืฆื•ื’ืขืฉื˜ืขืœื˜. ื ืžื™ื ื™ืึทื˜ื•ืจืข 2x3p ืงืึทื ืขืงื˜ืขืจ ืžื™ื˜ ืึท ืคึผืขืš ืคื•ืŸ 1.27 ืื™ื– ื’ืขื ื™ืฆื˜. ื ืกืคึผืขืฆื™ืขืœ ืึทื“ืึทืคึผื˜ืขืจ ืื™ื– ื’ืขืžืื›ื˜ ืคึฟืึทืจ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’.

ืžื™ื ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื’ืœืื– ื˜ืึทืคืœื™ืข ืื•ื™ืฃ nRF52832

ื•ื•ื™ ืฉื˜ืขื ื“ื™ืง, ื“ื™ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืžื™ื˜ืœ ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ ืžื™ ืกืขื ืกืึธืจืก. ื“ืขื ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืื™ื– ืคึผืœืึทื ื ืขื“ ืฆื• ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืื™ืŸ ื“ื™ ื•ื•ืึทืœ ื‘ืœื™ื ื“ ืงืึธื ื˜ืจืึธืœ ืกื™ืกื˜ืขื. ืึธื‘ืขืจ ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– ืœื™ืžื™ื˜ืขื“ ื‘ืœื•ื™ื– ื“ื•ืจืš ื“ื™ื™ืŸ ืคืึทื ื˜ืึทื–ื™ืข. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืžื™ื™ืŸ ื–ื•ืŸ (7 ื™ืึธืจ ืึทืœื˜) ื”ืื˜ ืฉื•ื™ืŸ ื’ืขืžืื›ื˜ 3 ืึธืจื“ืขืจืก ืคึฟืึทืจ ื‘ืึทืฉื˜ื™ืžืขืŸ ื•ื•ืขืจืกื™ืขืก: ืฆื• ืงืขืจ ืื•ื™ืฃ ืื•ืŸ ืึทื•ื•ืขืง ื“ื™ ืœื™ื›ื˜ ืื™ืŸ ืึท ืงืœืึธื–ืขื˜ ืžื™ื˜ ืึท ื•ื•ืึทื ืข (ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืžืึธื•ื ื˜ืขื“ ื ื™ื“ืขืจื™ืง ืคื•ืŸ ื“ื™ ืฉื˜ืึธืง), ืฆื• ืึธื ืฆื™ื ื“ืŸ ื“ื™ ืœื™ื›ื˜ ืื™ืŸ ืึท ื•ื•ืึทื ืข. ืœืึทื ื’ ืื•ืŸ ื˜ื•ื ืงืœ ืงืึธืจื™ื“ืึธืจ ื•ื•ืขืŸ ื˜ืจืึทื•ื•ืึทืœื™ื ื’ ืฆื• ืึท ืงืœืึธื–ืขื˜ ืžื™ื˜ ืึท ื•ื•ืึทื ืข, ืื•ืŸ ืื ื“ืขืจืŸ ืื™ื™ื ืขืจ ื•ื•ื™ ื‘ืขื“ืกื™ื™ื“, ืคึฟืึทืจ ื’ืขืฉื•ื•ื™ื ื“ ืื•ื™ืกื’ืขื“ืจื™ื™ื˜ ืื•ื™ืฃ ื“ื™ ืœื™ื›ื˜ ืื™ืŸ ื“ื™ื™ืŸ ืฆื™ืžืขืจ ืึทื–ื•ื™ ืึทื– ื“ื™ ืžืึธื ืกื˜ืขืจืก ืœื•ื™ืคืŸ ืึทื•ื•ืขืง.

ืžื™ื ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื’ืœืื– ื˜ืึทืคืœื™ืข ืื•ื™ืฃ nRF52832
ืžื™ื ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื’ืœืื– ื˜ืึทืคืœื™ืข ืื•ื™ืฃ nRF52832
ืžื™ื ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื’ืœืื– ื˜ืึทืคืœื™ืข ืื•ื™ืฃ nRF52832

ื“ืขืจ ืคืึทืœ ืื™ื– ื˜ืจืึทื“ื™ืฉืึทื ืึทืœื™ ื’ืขื“ืจื•ืงื˜ ืื•ื™ืฃ ืึท SLA ื“ืจื•ืงืขืจ, ื“ื™ ืžื™ื˜ืœ ืื™ื– ืžื™ื ื™ืึทื˜ื•ืจืข, ื“ืขืจ ืคืึทืœ ืื™ื– ื’ืขื•ื•ืขืŸ ืงืœื™ื™ืŸ, ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื“ืขื ื“ืจื•ืง ื˜ืขื›ื ืึธืœืึธื’ื™ืข ืื™ื– ื’ืขืจืขื›ื˜ืคืืจื˜ื™ืงื˜.

View ื’ืขื“ืจื•ืงื˜ ืžืึธื“ืขืœืžื™ื ื™ ืคืึทืจื‘ื™ื ื“ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื’ืœืื– ื˜ืึทืคืœื™ืข ืื•ื™ืฃ 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);
}

ืคืึทืœ ื˜ืขืงืขืก ืื™ืŸ ืกื˜ืœ - ื’ื•ื’ืœ ื“ืจื™ื™ื•ื•

Gerber PCB ื˜ืขืงืขืก - ื’ื•ื’ืœ ื“ืจื™ื™ื•ื•

ืคึฟืึทืจ ืคึฟืจืื’ืŸ ื•ื•ืขื’ืŸ ื“ืขื ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ื•ื•ืขื’ืŸ ืฉื•ื•ืขืจื™ืงื™ื™ื˜ืŸ ืื™ืŸ ื“ื™ื™ืŸ ื“ื™ื•ื•ืขืœืึทืคึผืžืึทื ืฅ ืื•ื™ืฃ Arduinos ืื•ืŸ Mysensors ื•ื•ืขื˜ ืฉื˜ืขื ื“ื™ืง ืงื•ืžืขืŸ ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ ืื™ืŸ ืื•ื ื“ื–ืขืจ ื˜ืขืœืขื’ืจืึทื ืฉืžื•ืขืกืŸ - https://t.me/mysensors_rus.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’