nRF52832 рд╡рд░ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рд╕рд╣ рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЖрдЬрдЪреНрдпрд╛ рд▓реЗрдЦрд╛рдд рдорд▓рд╛ рддреБрдордЪреНрдпрд╛рд╕реЛрдмрдд рдПрдХ рдирд╡реАрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реЗрдЕрд░ рдХрд░рд╛рдпрдЪрд╛ рдЖрд╣реЗ. рдпрд╛рд╡реЗрд│реА рддреЗ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рд╕рд╣ рдЯрдЪ рд╕реНрд╡рд┐рдЪ рдЖрд╣реЗ. рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдХреЙрдореНрдкреЕрдХреНрдЯ рдЖрд╣реЗ, 42x42 рдорд┐рдореА (рдорд╛рдирдХ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рдЪреА рдкрд░рд┐рдорд╛рдгреЗ 80x80 рдорд┐рдореА рдЖрд╣реЗрдд). рдпрд╛ рдЙрдкрдХрд░рдгрд╛рдЪрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдлрд╛рд░ рдкреВрд░реНрд╡реАрдкрд╛рд╕реВрди, рд╕реБрдорд╛рд░реЗ рдПрдХ рд╡рд░реНрд╖рд╛рдкреВрд░реНрд╡реА рд╕реБрд░реВ рдЭрд╛рд▓рд╛.

nRF52832 рд╡рд░ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рд╕рд╣ рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдкрд╣рд┐рд▓реЗ рдкрд░реНрдпрд╛рдп atmega328 рдорд╛рдпрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░рд╡рд░ рд╣реЛрддреЗ, рдкрд░рдВрддреБ рд╢реЗрд╡рдЯреА рддреЗ рд╕рд░реНрд╡ nRF52832 рдорд╛рдпрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░рдиреЗ рд╕рдВрдкрд▓реЗ.

nRF52832 рд╡рд░ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рд╕рд╣ рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

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

nRF52832 рд╡рд░ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рд╕рд╣ рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ
nRF52832 рд╡рд░ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рд╕рд╣ рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдлреАрд▓реНрдб-рдЗрдлреЗрдХреНрдЯ рдЯреНрд░рд╛рдиреНрдЭрд┐рд╕реНрдЯрд░ рд╡рд╛рдкрд░реВрди рдкреЙрд╡рд░-рдСрдл рд╕рд░реНрдХрд┐рдЯ рд▓рд╛рдЧреВ рдХрд░рддреЗ. рдмрдЯрдг рджрд╛рдмрд▓реНрдпрд╛рдирдВрддрд░, рдорд╛рдпрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реНрд╡рддрдГ рдкреЙрд╡рд░ рдХрдВрдЯреНрд░реЛрд▓рдордзреНрдпреЗ рдЕрдбрдерд│рд╛ рдЖрдгрддреЛ рдЖрдгрд┐ рдирдВрддрд░ рдмрдЯрдг рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЛрдбрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ (рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╣реЗ рдЗрддрд░ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕рд╕рд╣ рдЬреЛрдбрдгреЗ, рдкреЙрд╡рд░ рдмрдВрдж рдХрд░рдгреЗ рдЖрдгрд┐ рдлреЕрдХреНрдЯрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрдЬрд╡рд░ рд░реАрд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╣реЗ).

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

рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рдореЛрдбрдордзреНрдпреЗ рд╡рд╛рдкрд░ 7mA (250kbit, 10ms), рд╕реНрд▓реАрдкрдордзреНрдпреЗ рд╡рд╛рдкрд░ 40┬╡A рдЖрд╣реЗ, рдмрдВрдж рд╕реНрдерд┐рддреАрдд рд╡рд╛рдкрд░ 1┬╡A рдкреЗрдХреНрд╖рд╛ рдХрдореА рдЖрд╣реЗ (= тАЬрдирд┐рд╖реНрдХреНрд░рд┐рдптАЭ рдореЛрдбрдордзреНрдпреЗ рдмреВрд╕реНрдЯ рдХрдиреНрд╡реНрд╣рд░реНрдЯрд░рдЪрд╛ рд╡рд╛рдкрд░). рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧрд╕рд╛рдареА Rx, tx, swd рдХрдиреЗрдХреНрдЯрд░ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЖрд╣реЗ. 2 рдЪреНрдпрд╛ рдкрд┐рдЪрд╕рд╣ рдПрдХ рд▓рдШреБ 3x1.27p рдХрдиреЗрдХреНрдЯрд░ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧрд╕рд╛рдареА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдбреЕрдкреНрдЯрд░ рдмрдирд╡рд┐рд▓рд╛ рдЬрд╛рддреЛ.

nRF52832 рд╡рд░ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рд╕рд╣ рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдиреЗрд╣рдореАрдкреНрд░рдорд╛рдгреЗ, рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рдЪреЗ рдСрдкрд░реЗрд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ рдорд╛рдпрд╕реЗрдиреНрд╕рд░реНрд╕. рд╣реЗ рдЯрдЪ рд╕реНрд╡рд┐рдЪ рд░реЛрд▓рд░ рдмреНрд▓рд╛рдЗрдВрдб рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрд╣реЗ. рдкрд░рдВрддреБ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗрд╡рд│ рдЖрдкрд▓реНрдпрд╛ рдХрд▓реНрдкрдиреЗрджреНрд╡рд╛рд░реЗ рдорд░реНрдпрд╛рджрд┐рдд рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдорд╛рдЭреНрдпрд╛ рдореБрд▓рд╛рдиреЗ (7 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛) рд╕реНрд╡рд┐рдЪ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрд╕рд╛рдареА рдЖрдзреАрдЪ 3 рдСрд░реНрдбрд░ рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд: рдмрд╛рдердЯрдмрд╕рд╣ рдЯреЙрдпрд▓реЗрдЯрдордзреНрдпреЗ рдкреНрд░рдХрд╛рд╢ рдЪрд╛рд▓реВ рдЖрдгрд┐ рдмрдВрдж рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА (рддреЗ рдордЬрд▓реНрдпрд╛рдкрд╛рд╕реВрди рдЦрд╛рд▓реА рдмрд╕рд╡рд▓реЗ рдЬрд╛рдИрд▓), рдкреНрд░рдХрд╛рд╢ рдЪрд╛рд▓реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд╛рдердЯрдмрд╕рд╣ рдЯреЙрдпрд▓реЗрдЯрдордзреНрдпреЗ рдкреНрд░рд╡рд╛рд╕ рдХрд░рддрд╛рдирд╛ рд▓рд╛рдВрдм рдЖрдгрд┐ рдЧрдбрдж рдХреЙрд░рд┐рдбреЙрд░, рдЖрдгрд┐ рджреБрд╕рд░рд╛ рдПрдХ рдмреЗрдбрд╕рд╛рдЗрдб рдореНрд╣рдгреВрди, рддреБрдордЪреНрдпрд╛ рдЦреЛрд▓реАрддреАрд▓ рдкреНрд░рдХрд╛рд╢ рддреНрд╡рд░реАрдд рдЪрд╛рд▓реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬреЗрдгреЗрдХрд░реВрди рд░рд╛рдХреНрд╖рд╕ рдкрд│реВрди рдЬрд╛рддреАрд▓.

nRF52832 рд╡рд░ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рд╕рд╣ рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ
nRF52832 рд╡рд░ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рд╕рд╣ рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ
nRF52832 рд╡рд░ рдХрд╛рдЪреЗрдЪреНрдпрд╛ рдкреЕрдиреЗрд▓рд╕рд╣ рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдХреЗрд╕ рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХрдкрдгреЗ рдПрд╕рдПрд▓рдП рдкреНрд░рд┐рдВрдЯрд░рд╡рд░ рдореБрджреНрд░рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ, рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рд╕реВрдХреНрд╖реНрдо рдЖрд╣реЗ, рдХреЗрд╕ рд▓рд╣рд╛рди рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕реВрди рдЖрд▓реЗ, рдпрд╛ рдореБрджреНрд░рдг рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдЪрд╛ рд╡рд╛рдкрд░ рдиреНрдпрд╛рдпреНрдп рдЖрд╣реЗ.

рдореБрджреНрд░рд┐рдд рдореЙрдбреЗрд▓ рдкрд╣рд╛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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛