د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

په هابر کې د "DIY یا دا پخپله وکړئ" برخې ټولو لوستونکو ته سلامونه! د نن ورځې مقاله به د TTP223 چپ کې د ټچ سویچ په اړه وي | ډیټاشیټ. سویچ په nRF52832 مایکرو کنټرولر کار کوي | ډیټاشیټ، د YJ-17103 ماډل د چاپ شوي انتن سره او د بهرني MHF4 انتن لپاره نښلونکی کارول شوی و. د ټچ سویچ په CR2430 یا CR2450 بیټرۍ کار کوي. د لیږد حالت کې مصرف له 8 μA څخه ډیر نه دی ، د خوب حالت کې له 6 µA څخه ډیر نه وي.
د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د ټولو پخوانیو پروژو په څیر، دا هم د Arduino پروژه ده، پروګرام په Arduino IDE کې لیکل شوی. د وسیلې سافټویر پلي کول د Mysensors پروتوکول پراساس دي | GitHub کتابتونونه, د nRF5 بورډ د GitHub ملاتړ کوي په Mysensors کې. د انګلیسي ژبې ټولنې فورم - http://forum.mysensors.orgد روسي ژبې د ټولنې فورم - http://mysensors.ru/forum/
(د هغو کسانو لپاره چې غواړي زده کړه وکړي - لاسوند, سریال پروټوکول, API, پروتوکول, پارسر | د هغو کسانو لپاره چې غواړي مرسته وکړي (ونډېد پروژې په پراختیا کې - لاسوند)

د ټچ سویچ بورډ د ډیپټریس برنامه کې رامینځته شوی ، د لیزر اوسپنې ټیکنالوژۍ (LUT) میتود په کارولو سره راتلونکي تولید ته په پام سره. بورډ د 60x60mm په ابعادو کې رامینځته شوی (د شیشې یو معیاري تخته د 80x80mm ابعاد لري). سرکټ د انټینا مجلې په پاڼو کې چاپ شوی او د بوش اوسپنې سره د "لین" ترتیب (اعظمي ځواک) سره په دوه اړخیزه ورق فایبر ګلاس بورډ 1.5mm، 35µm (د بل په نشتوالي کې) ته لیږدول شوی.
د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

نقاشي د فیریک کلورایډ محلول سره ترسره شوې ، چې دمخه په 1.5 ملی لیتر ګرمو اوبو کې د 250 چمچونو تناسب کې چمتو شوي. پروسه 15 دقیقې وخت نیسي.
د انټر لیر ویاس لپاره سوراخ کول او د بیټرۍ هولډر د ګړندی کولو لپاره د DREMEL 3000 مینی ډرل سره ترسره شوی و چې په DREMEL 220 ډریل سټینډ کې نصب شوی و. د انټر لیر ویاس لپاره سوري د 0,4mm ډرل سره ، د بیټرۍ هولډر لپاره سوراخ د 1,1mm ډرل سره . د تختې د پولو په اوږدو کې د DREMEL 540 ضمیمه کولو سره د ورته مینی ډرل سره ترسره شوي (د حلقې پرې کول d = 32.0mm). شاخه بري په تنفسي ماشین کې ترسره کیږي.
د تختې کندې کول د ګلاب الیاژ په کارولو سره په آبي محلول کې ترسره شوي (په هر 1 ملی لیتر اوبو کې 300 چمچ کریسټال شوي سیټریک اسید).

د سولډر کولو پروسه شاوخوا یو ساعت وخت نیسي، ډیری وخت د سولډرینګ تار (ټینډ شوی، 0.4 ملی متره قطر) د انټر لیر ویاس لپاره په سوري کې مصرف شوی.

تخته د FLUX OFF ایروسول کلینر سره مینځل شوې.
د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د وسیلې بدن ډیزاین په درې اړخیزه کمپیوټر کې مرسته شوي ډیزاین مدیر کې ترسره شو. د قضیې ابعاد 78,5mm X 78,5mm X 12mm.
د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د قضیې بشپړ شوی ماډل او د بیټرۍ کمپارټ پوښ پوښ په STL ب formatه کې خوندي شوی و ، نو بیا اړینه وه چې دا ماډلونه په SLA پرنټر کې د چاپ لپاره چمتو کړئ (ملاتړ اضافه کول ، سمت ورکول). په دې مرحله کې، یوه کوچنۍ ستونزه رامنځته شوه، ځکه چې د کورنیو SLA پرنټرونو د چاپ ساحه کوچنۍ ده. د وسیلې قضیې ماډل د چاپ کولو وخت په پرتله خورا غوره موقعیت کې د چاپ کولو ساحې ابعادو کې مناسب نه و. کله چې موډل په 45 درجو کې ځای په ځای کول، دا هم مایوسه پایله ورکړه؛ د ملاتړ وزن د بدن ماډل وزن سره مساوي و. دا پریکړه شوې وه چې ماډل په عمودی توګه چاپ کړئ، په یوه اړخ کې یو ملاتړ جوړ کړئ، مخکې له مخکې د پروسس کولو وروسته د واقعیت سره موافقه وکړه. د بدن چاپ کول د 5 مایکرون پرت ترتیب سره 50 ساعته وخت نیسي. بیا ، پروسس کول د خورا ښه دانه شوي شګو کاغذ په کارولو سره ترسره شوي (زه به شمیره ونه لیکم ځکه چې زه نه پوهیږم :)). د بیټرۍ پوښ چاپولو لپاره 40 دقیقې وخت نیسي.
د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د Aliexpress څخه د شیشې تختې د پلاستيکي چوکاټ سره پلورل کیږي چې دمخه چپک شوي؛ د چوکاټ لرې کولو کې کومه ستونزه شتون نلري. ما د شیشې پینل د منظم ویښتو وچولو سره د پری ګرمولو وروسته لرې کړل.
د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د LED بیک لائټ لپاره ډیفیوزر د دوه اړخیز ټیپ څخه د اکریلیک چپکونکي 3M 9088-200 سره جوړ شوی و. د فلوروسینټ ر lightingا لپاره د انتخاب کولو لپاره ډیری توکي شتون درلود ، چینایي چپکونکي ټیپ او چپکونکي کاغذ د کورني شرکت لومینوفور څخه په ټیپونو کې پرې شوی. انتخاب د کورني تولید کونکي په ګټه ترسره شو؛ زما د احساساتو سره سم، دا روښانه او اوږده وه. د فلوروسینټ رنګ سره یو مربع کاغذ د 3M 9088-200 دوه اړخیزه ټیپ سره په سر کې چپک شوی و.

شیشه د 3M VHB 4910 اکریلیک چپکونکي سره د دوه اړخیزه ټیپ په کارولو سره د سویچ بدن ته چپک شوې.
د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

پوښ د M 1,4 X 5 mm سکرو سره تنظیم شوی و.

د وسیلې لګښت 890 روبله وه.

ورپسې د پروګرام برخه وه. ځینې ​​ستونزې وې. دا معلومه شوه چې د TTP223 سینسر چپس د ثبات لرونکي 3.3V بریښنا رسولو سره عالي کار کوي او خورا ښه نه وي کله چې مستقیم د ښه خارج شوي بیټرۍ څخه بریښنا کیږي. کله چې وسیله د 2.5v شاوخوا د بریښنا رسولو سره پیل کړئ ، او د اضافي "ډراوډون" وروسته کله چې د مایسینسر پریزنټشن کار کول ، د TTP223 مایکرو سرکیټ (سمدلاسه د کیلیبریشن وروسته) د MK مداخلې لامل شو ځکه چې دا د فعال محرک سره و.

مایکرو سرکیټ ته د بریښنا رسولو سرکټ بدل شوی (د بریښنا مدیریت TTP223 د gpio MK سره) ، اضافي ځمکه چمتو شوې ، او د لوړ مقاومت سره مقاومت کونکي د rgb لیډ لاینونو کې ځای په ځای شوي (کوم چې د ظرفیت سینسر بورډ بلې خوا ته ځي). دا سافټویر ته هم اضافه شوی: د میسینسر چوکاټ پیل کولو او د پریزنټشن کار کولو وروسته د ظرفیت لرونکي مایکرو سرکټ لپاره د بریښنا فعالول. کله چې بریښنا پلي کیږي د TTP223 چپ اتومات کیلیبریشن لپاره ځنډ دوه چنده شوی. دا ټول بدلونونه دا ستونزه په بشپړه توګه له منځه یوسي.

د برنامه کوډ لیدو دمخه ، زه وړاندیز کوم چې تاسو په مایسینسر کې د سکیچونو لومړني جوړښت سره ځان وپیژنئ.void before()
{
// Дополнительная функция, если сравнивать со стандартной структурой Ардуино скетчей, то before() это подобие setup(), отработка происходит до инициализации транспортного уровня Mysensors, рекомендуется например для инициализации устройств SPI
}

void setup()
{

}

void presentation()
{
//Тут происходит презентация ноды и ее сенсоров на контролере через маршрутизатор
sendSketchInfo("Name of my sensor node", "1.0"); // презентация названия ноды, версии ПО
present(CHILD_ID, S_WHATEVER, "Description"); // презентация сенсоров ноды, описания сенсоров
}

void loop()
{

}

د ټچ سویچ برنامې ازموینې کوډ:test_sens.ino
/**
ТЕСТОВЫЙ СКЕТЧ СЕНСОРНОГО ВЫКЛЮЧАТЕЛЯ С ПРЕРЫВАНИЯМИ НА NRF_LPCOMP
*/
bool button_flag;
bool sens_flag;
bool send_flag;
bool detection;
bool nosleep;
byte timer;
unsigned long SLEEP_TIME = 21600000; //6 hours
unsigned long oldmillis;
unsigned long newmillis;
unsigned long interrupt_time;
unsigned long SLEEP_TIME_W;
uint16_t currentBatteryPercent;
uint16_t batteryVoltage = 0;
uint16_t battery_vcc_min = 2400;
uint16_t battery_vcc_max = 3000;

#define MY_RADIO_NRF5_ESB
//#define MY_PASSIVE_NODE
#define MY_NODE_ID 30
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#define MY_TRANSPORT_UPLINK_CHECK_DISABLED
#define IRT_PIN 3 //(PORT0, gpio 5)
#include <MySensors.h>
// see https://www.mysensors.org/download/serial_api_20
#define SENS_CHILD_ID 0
#define CHILD_ID_VOLT 254
MyMessage sensMsg(SENS_CHILD_ID, V_VAR1);
//MyMessage voltMsg(CHILD_ID_VOLT, V_VOLTAGE);

void preHwInit() {
sleep(2000);
pinMode(RED_LED, OUTPUT);
digitalWrite(RED_LED, HIGH);
pinMode(GREEN_LED, OUTPUT);
digitalWrite(GREEN_LED, HIGH);
pinMode(BLUE_LED, OUTPUT);
digitalWrite(BLUE_LED, HIGH);
pinMode(MODE_PIN, INPUT);
pinMode(SENS_PIN, INPUT);
}

void before()
{
NRF_POWER->DCDCEN = 1;
NRF_UART0->ENABLE = 0;
sleep(1000);
digitalWrite(BLUE_LED, LOW);
sleep(150);
digitalWrite(BLUE_LED, HIGH);
}

void presentation() {
sendSketchInfo("EFEKTA Sens 1CH Sensor", "1.1");
present(SENS_CHILD_ID, S_CUSTOM, "SWITCH STATUS");
//present(CHILD_ID_VOLT, S_MULTIMETER, "Battery");
}

void setup() {
digitalWrite(BLUE_LED, LOW);
sleep(100);
digitalWrite(BLUE_LED, HIGH);
sleep(200);
digitalWrite(BLUE_LED, LOW);
sleep(100);
digitalWrite(BLUE_LED, HIGH);
lpComp();
detection = false;
SLEEP_TIME_W = SLEEP_TIME;
pinMode(31, OUTPUT);
digitalWrite(31, HIGH);
/*
while (timer < 10) {
timer++;
digitalWrite(GREEN_LED, LOW);
wait(5);
digitalWrite(GREEN_LED, HIGH);
wait(500);
}
timer = 0;
*/
sleep(7000);
while (timer < 3) {
timer++;
digitalWrite(GREEN_LED, LOW);
sleep(15);
digitalWrite(GREEN_LED, HIGH);
sleep(85);
}
timer = 0;
sleep(1000);
}

void loop() {

if (detection) {
if (digitalRead(MODE_PIN) == 1 && button_flag == 0 && digitalRead(SENS_PIN) == 0) {
//back side button detection
button_flag = 1;
nosleep = 1;
}
if (digitalRead(MODE_PIN) == 1 && button_flag == 1 && digitalRead(SENS_PIN) == 0) {
digitalWrite(RED_LED, LOW);
wait(10);
digitalWrite(RED_LED, HIGH);
wait(50);
}
if (digitalRead(MODE_PIN) == 0 && button_flag == 1 && digitalRead(SENS_PIN) == 0) {
nosleep = 0;
button_flag = 0;
digitalWrite(RED_LED, HIGH);
lpComp_reset();
}

if (digitalRead(SENS_PIN) == 1 && sens_flag == 0 && digitalRead(MODE_PIN) == 0) {
//sens detection
sens_flag = 1;
nosleep = 1;
newmillis = millis();
interrupt_time = newmillis - oldmillis;
SLEEP_TIME_W = SLEEP_TIME_W - interrupt_time;
if (send(sensMsg.set(detection))) {
send_flag = 1;
}
}
if (digitalRead(SENS_PIN) == 1 && sens_flag == 1 && digitalRead(MODE_PIN) == 0) {
if (send_flag == 1) {
while (timer < 10) {
timer++;
digitalWrite(GREEN_LED, LOW);
wait(20);
digitalWrite(GREEN_LED, HIGH);
wait(30);
}
timer = 0;
} else {
while (timer < 10) {
timer++;
digitalWrite(RED_LED, LOW);
wait(20);
digitalWrite(RED_LED, HIGH);
wait(30);
}
timer = 0;
}
}
if (digitalRead(SENS_PIN) == 0 && sens_flag == 1 && digitalRead(MODE_PIN) == 0) {
sens_flag = 0;
nosleep = 0;
send_flag = 0;
digitalWrite(GREEN_LED, HIGH);
sleep(500);
lpComp_reset();
}
if (SLEEP_TIME_W < 60000) {
SLEEP_TIME_W = SLEEP_TIME;
sendBatteryStatus();
}
}
else {
//if (detection == -1) {
SLEEP_TIME_W = SLEEP_TIME;
sendBatteryStatus();
}
if (nosleep == 0) {
oldmillis = millis();
sleep(SLEEP_TIME_W);
}
}

void sendBatteryStatus() {
wait(20);
batteryVoltage = hwCPUVoltage();
wait(2);

if (batteryVoltage > battery_vcc_max) {
currentBatteryPercent = 100;
}
else if (batteryVoltage < battery_vcc_min) {
currentBatteryPercent = 0;
} else {
currentBatteryPercent = (100 * (batteryVoltage - battery_vcc_min)) / (battery_vcc_max - battery_vcc_min);
}

sendBatteryLevel(currentBatteryPercent, 1);
wait(2000, C_INTERNAL, I_BATTERY_LEVEL);
//send(powerMsg.set(batteryVoltage), 1);
//wait(2000, 1, V_VAR1);
}

void lpComp() {
NRF_LPCOMP->PSEL = IRT_PIN;
NRF_LPCOMP->ANADETECT = 1;
NRF_LPCOMP->INTENSET = B0100;
NRF_LPCOMP->ENABLE = 1;
NRF_LPCOMP->TASKS_START = 1;
NVIC_SetPriority(LPCOMP_IRQn, 15);
NVIC_ClearPendingIRQ(LPCOMP_IRQn);
NVIC_EnableIRQ(LPCOMP_IRQn);
}

void s_lpComp() {
if ((NRF_LPCOMP->ENABLE) && (NRF_LPCOMP->EVENTS_READY)) {
NRF_LPCOMP->INTENCLR = B0100;
}
}

void r_lpComp() {
NRF_LPCOMP->INTENSET = B0100;
}

#if __CORTEX_M == 0x04
#define NRF5_RESET_EVENT(event)
event = 0;
(void)event
#else
#define NRF5_RESET_EVENT(event) event = 0
#endif

extern "C" {
void LPCOMP_IRQHandler(void) {
detection = true;
NRF5_RESET_EVENT(NRF_LPCOMP->EVENTS_UP);
NRF_LPCOMP->EVENTS_UP = 0;
MY_HW_RTC->CC[0] = (MY_HW_RTC->COUNTER + 2);
}
}

void lpComp_reset () {
s_lpComp();
detection = false;
NRF_LPCOMP->EVENTS_UP = 0;
r_lpComp();
}

MyBoardNRF5.cpp
#ifdef MYBOARDNRF5
#include <variant.h>

/*
* Pins descriptions. Attributes are ignored by arduino-nrf5 variant.
* Definition taken from Arduino Primo Core with ordered ports
*/
const PinDescription g_APinDescription[]=
{
{ NOT_A_PORT, 0, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // LFCLK
{ NOT_A_PORT, 1, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // LFCLK
{ PORT0, 2, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A0, PWM4, NOT_ON_TIMER},
{ PORT0, 3, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A1, PWM5, NOT_ON_TIMER},
{ PORT0, 4, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A2, PWM6, NOT_ON_TIMER},
{ PORT0, 5, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A3, PWM7, NOT_ON_TIMER},
{ PORT0, 6, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT3
{ PORT0, 7, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT4
{ PORT0, 8, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM10, NOT_ON_TIMER}, //USER_LED
{ PORT0, 9, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // NFC1
{ PORT0, 10, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // NFC2
{ PORT0, 11, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // TX
{ PORT0, 12, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // RX
{ PORT0, 13, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SDA
{ PORT0, 14, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SCL
{ PORT0, 15, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SDA1
{ PORT0, 16, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SCL1
{ PORT0, 17, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // TP4
{ PORT0, 18, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // TP5
{ PORT0, 19, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT2
{ PORT0, 20, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT1
{ PORT0, 21, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT1
{ PORT0, 22, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM9, NOT_ON_TIMER},
{ PORT0, 23, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM8, NOT_ON_TIMER},
{ PORT0, 24, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT
{ PORT0, 25, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM11, NOT_ON_TIMER}, //RED_LED
{ PORT0, 26, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM11, NOT_ON_TIMER}, //GREEN_LED
{ PORT0, 27, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM11, NOT_ON_TIMER}, //BLUE_LED
{ PORT0, 28, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A4, PWM3, NOT_ON_TIMER},
{ PORT0, 29, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A5, PWM2, NOT_ON_TIMER},
{ PORT0, 30, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A6, PWM1, NOT_ON_TIMER},
{ PORT0, 31, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A7, PWM0, NOT_ON_TIMER}
};

// Don't remove this line
#include <compat_pin_mapping.h>

#endif

MyBoardNRF5.h
#ifndef _MYBOARDNRF5_H_
#define _MYBOARDNRF5_H_

#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus

// Number of pins defined in PinDescription array
#define PINS_COUNT (32u)
#define NUM_DIGITAL_PINS (32u)
#define NUM_ANALOG_INPUTS (8u)
#define NUM_ANALOG_OUTPUTS (8u)

/*
* LEDs
*
* This is optional
*
* With My Sensors, you can use
* hwPinMode() instead of pinMode()
* hwPinMode() allows to use advanced modes like OUTPUT_H0H1 to drive LEDs.
* https://github.com/mysensors/MySensors/blob/development/drivers/NRF5/nrf5_wiring_constants.h
*
*/
#define PIN_LED1 (16)
#define PIN_LED2 (15)
#define PIN_LED3 (17)
#define RED_LED (PIN_LED1)
#define GREEN_LED (PIN_LED2)
#define BLUE_LED (PIN_LED3)
#define INTERRUPT_PIN (5)
#define MODE_PIN (25)
#define SENS_PIN (27)

/*
* Analog ports
*
* If you change g_APinDescription, replace PIN_AIN0 with
* port numbers mapped by the g_APinDescription Array.
* You can add PIN_AIN0 to the g_APinDescription Array if
* you want provide analog ports MCU independed, you can add
* PIN_AIN0..PIN_AIN7 to your custom g_APinDescription Array
* defined in MyBoardNRF5.cpp
*/
static const uint8_t A0 = ADC_A0;
static const uint8_t A1 = ADC_A1;
static const uint8_t A2 = ADC_A2;
static const uint8_t A3 = ADC_A3;
static const uint8_t A4 = ADC_A4;
static const uint8_t A5 = ADC_A5;
static const uint8_t A6 = ADC_A6;
static const uint8_t A7 = ADC_A7;

/*
* Serial interfaces
*
* RX and TX are required.
* If you have no serial port, use unused pins
* CTS and RTS are optional.
*/
#define PIN_SERIAL_RX (11)
#define PIN_SERIAL_TX (12)

#ifdef __cplusplus
}
#endif

#endif

سویچ د وسیلې په شا کې د ټچ تڼۍ او د تاکت تڼۍ لري. دا تکتیک تڼۍ به د خدماتو حالتونو، د هوا څخه د پابندۍ حالت، او د وسیلې بیا تنظیمولو لپاره وکارول شي. تڼۍ د اوسپنې ضد توپ ځانګړتیا لري. د capacitive سینسر کرښه او د تاکت تڼۍ کرښه د Schottky diodes له لارې نښلول شوي او د انلاګ پن p0.05 سره نښلول شوي، او همدارنګه د capacitive سینسر او تاکت تڼۍ څخه د MK پنونو p0.25 او p0.27 ته لیکې شتون لري. .0.05 په پن p0.05 کې د مداخلې له فعالولو وروسته د حالتونو لوستلو لپاره. XNUMX. په پن pXNUMX کې، د پرتله کوونکي (NRF_LPCOMP) له لارې د EVENTS_UP له لارې مداخله فعاله شوې. ما د ستونزې د حل لپاره الهام ترلاسه کړ دلته и دلته.

سویچ د میسینسر شبکې ته اضافه شوی، د سمارټ کور کنټرولر میجرډومو لخوا اداره کیږي (ویب پاڼه)

د حالت تازه کولو میتود ته د سویچ اضافه کولو لپاره د پی ایچ پی کوډ

if (getGlobal("MysensorsButton01.status")==1) {
if (getGlobal('MysensorsRelay04.status') == 0) {
setGlobal('MysensorsRelay04.status', '1');
} else if (getGlobal('MysensorsRelay04.status') == 1) {
setGlobal('MysensorsRelay04.status', '0');
} 
}

پایله یې په ویډیو کې وګورئ

د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

وروسته ، د بوسټ کنورټر سره یو اختیار رامینځته شو ، مګر دا د TTP223 capacitive microcircuit عملیاتو پورې اړه نلري؛ د ښه او یونیفورم روښانتیا لپاره ډیر لیوالتیا شتون لري کله چې د بیټرۍ ټول ژوند کې کیلي فشاروي.

وګورهد اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

پروژه Github - github.com/smartboxchannel/EFEKTA_WIRELESS_TOUCH_SWITCH

روسي ژبي د ټولنې سایټ مایسنسرز

د ټیلیګرام چیٹ میسینسر - د مایسینسرونو سره د ستونزو ګړندي حل ، لارښوونې ، چلونه ، د بورډونو نصب کول ، په Arduino IDE کې د atmega 328 ، stm32 ، nRF5 مایکرو کنټرولرونو سره کار کول - @mysensors_rus

ځینې ​​عکسونهد اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

د اضافي فلوروسینټ بیک لائټ سره د بې سیم ټچ سویچ

سرچینه: www.habr.com

Add a comment