nRF52832 рдорд╛ рдЧрд┐рд▓рд╛рд╕ рдкреНрдпрд╛рдирд▓рдХреЛ рд╕рд╛рде рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЖрдЬрдХреЛ рд▓реЗрдЦрдорд╛ рдо рддрдкрд╛рдИрд╕рдБрдЧ рдирдпрд╛рдБ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред рдпрд╕ рдкрдЯрдХ рдпреЛ рдЧрд┐рд▓рд╛рд╕ рдкреНрдпрд╛рдирд▓рдХреЛ рд╕рд╛рде рдЯрдЪ рд╕реНрд╡рд┐рдЪ рд╣реЛред рдпрдиреНрддреНрд░ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдЫ, 42x42mm рдорд╛рдкрди (рдорд╛рдирдХ рдЧрд┐рд▓рд╛рд╕ рдкреНрдпрд╛рдирд▓рд╣рд░реВрдХреЛ рдЖрдпрд╛рдо 80x80mm рдЫ)ред рдпрд╕ рдЙрдкрдХрд░рдгрдХреЛ рдЗрддрд┐рд╣рд╛рд╕ рд▓рд╛рдореЛ рд╕рдордп рдкрд╣рд┐рд▓реЗ рд╕реБрд░реБ рднрдпреЛ, рд▓рдЧрднрдЧ рдПрдХ рд╡рд░реНрд╖ рдкрд╣рд┐рд▓реЗред

nRF52832 рдорд╛ рдЧрд┐рд▓рд╛рд╕ рдкреНрдпрд╛рдирд▓рдХреЛ рд╕рд╛рде рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдкрд╣рд┐рд▓реЛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ atmega328 рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рдорд╛ рдерд┐рдП, рддрд░ рдЕрдиреНрддрдорд╛ рдпреЛ рд╕рдмреИ nRF52832 рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рд╕рдБрдЧ рд╕рдорд╛рдкреНрдд рднрдпреЛред

nRF52832 рдорд╛ рдЧрд┐рд▓рд╛рд╕ рдкреНрдпрд╛рдирд▓рдХреЛ рд╕рд╛рде рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдбрд┐рднрд╛рдЗрд╕рдХреЛ рдЯрдЪ рдкрд╛рд░реНрдЯ TTP223 рдЪрд┐рдкреНрд╕рдорд╛ рдЪрд▓реНрдЫред рджреБрдмреИ рд╕реЗрдиреНрд╕рд░рд╣рд░реВ рдПрдХ рдЕрд╡рд░реЛрдзрджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд╛ рдЧрд░рд┐рдиреНрдЫред CR2477 рдмреНрдпрд╛рдЯреНрд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд, TPS610981 рдЪрд┐рдкрдорд╛ рдмреВрд╕реНрдЯ рдХрдиреНрднрд░реНрдЯрд░ рдорд╛рд░реНрдлрдд | рдбрд╛рдЯрд╛ рдкрд╛рдирд╛.

nRF52832 рдорд╛ рдЧрд┐рд▓рд╛рд╕ рдкреНрдпрд╛рдирд▓рдХреЛ рд╕рд╛рде рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ
nRF52832 рдорд╛ рдЧрд┐рд▓рд╛рд╕ рдкреНрдпрд╛рдирд▓рдХреЛ рд╕рд╛рде рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЙрдкрдХрд░рдгрд▓реЗ рдлрд┐рд▓реНрдб-рдЗрдлреЗрдХреНрдЯ рдЯреНрд░рд╛рдиреНрдЬрд┐рд╕реНрдЯрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд╛рд╡рд░-рдЕрдл рд╕рд░реНрдХрд┐рдЯ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред рдмрдЯрди рдерд┐рдЪреЗрдкрдЫрд┐, рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рд▓реЗ рдЖрдлреИрдВрд▓реЗ рдкрд╛рд╡рд░ рдирд┐рдпрдиреНрддреНрд░рдгрд▓рд╛рдИ рд░реЛрдХреНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдмрдЯрди рд╕реЗрд╡рд╛ рдореЛрдбрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рдореЗрд░реЛ рдХреЗрд╕рдорд╛, рдпреЛ рдЕрдиреНрдп рдЙрдкрдХрд░рдгрд╣рд░реВрд╕рдБрдЧ рдЬреЛрдбрд┐рдПрдХреЛ рдЫ, рдкрд╛рд╡рд░ рдмрдиреНрдж рдЧрд░реНрджреИ рд░ рдХрд╛рд░рдЦрд╛рдирд╛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрджреИ)ред

рд░рд╛рдЬреНрдп рд░ рд╕реЗрд╡рд╛ рдореЛрдбрд╣рд░реВ рд╕рдВрдХреЗрдд рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ 2 rgb LEDs рдЫрдиреНред рдЯрдЪ рдмрдЯрдирд╣рд░реВ рд░ рд╕реЗрд╡рд╛ рдореЛрдбрд╣рд░реВрдХреЛ рдзреНрд╡рдирд┐ рд╕рдВрдХреЗрдд рдЫреБрдБрджрд╛ рдХреНрд▓рд┐рдХрдХреЛ рдирдХреНрдХрд▓ рдЧрд░реНрди рдкрд┐рдЬреЛ рдЗрдорд┐рдЯрд░ рдкрдирд┐ рдердкрд┐рдПрдХреЛ рдЫред LEDs рд░ piezo emitter рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд╡рд┐рд╡реЗрдХрдорд╛ рдЦреЛрд▓реНрди рд░ рдмрдиреНрдж рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпреЛ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╕реЗрдиреНрд╕рд░рд╣рд░реВрд▓рд╛рдИ рдЖрджреЗрд╢ рдкрдард╛рдПрд░ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рдХрдиреНрдЯреНрд░реЛрд▓рд░ рдорд╛рд░реНрдлрдд рдЧрд░рд┐рдиреНрдЫ; рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдмреНрдпрд╛рдЯреНрд░реА рдЪрд╛рд░реНрдЬ рд░ рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреНрддрд░рд╛рд▓рд╣рд░реВ рдкрдирд┐ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рдХрдиреНрдЯреНрд░реЛрд▓рд░ рдорд╛рд░реНрдлрдд рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдЫред рдореЗрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛ рдпреЛ рдЫ MAJORDOMO.

рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рдореЛрдбрдорд╛ рдЦрдкрдд 7mA (250kbit, 10ms), рдирд┐рджреНрд░рд╛рдорд╛ рдЦрдкрдд 40┬╡A рд╣реЛ, рдЕрдл рд╕реНрдЯреЗрдЯрдорд╛ рдЦрдкрдд 1┬╡A (= "рдирд┐рд╖реНрдХреНрд░рд┐рдп" рдореЛрдбрдорд╛ рдмреВрд╕реНрдЯ рдХрдиреНрднрд░реНрдЯрд░рдХреЛ рдЦрдкрдд) рднрдиреНрджрд╛ рдХрдо рд╣реБрдиреНрдЫред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ Rx, tx, swd рдХрдиреЗрдХреНрдЯрд░ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫред 2 рдХреЛ рдкрд┐рдЪ рднрдПрдХреЛ рд╕рд╛рдиреЛ 3x1.27p рдХрдиреЗрдХреНрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рдПрдбрд╛рдкреНрдЯрд░ рдмрдирд╛рдЗрдПрдХреЛ рдЫред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди