Draadloze touch switch mei ekstra fluorescent backlight

Groetnis oan alle lêzers fan de seksje "DIY or Do It Yourself" op Habr! It artikel fan hjoed sil gean oer de touch-skeakel op 'e TTP223-chip | datasheet. De switch wurket op 'e nRF52832 mikrocontroller | datasheet, in YJ-17103-module mei in printe antenne en in ferbining foar in eksterne MHF4-antenne waard brûkt. De touch switch wurket op CR2430 of CR2450 batterijen. Ferbrûk yn transmitmodus is net mear as 8 mA, yn sliepmodus net mear as 6 µA.
Draadloze touch switch mei ekstra fluorescent backlight

Lykas alle eardere projekten is dit ek in Arduino-projekt, it programma is skreaun yn 'e Arduino IDE. De software-ymplemintaasje fan it apparaat is basearre op it Mysensors-protokol | GitHub bibleteken, nRF5 board stipe GitHub yn Mysensors. Ingelsktalige mienskipsforum - http://forum.mysensors.org, Russysktalige mienskipsforum - http://mysensors.ru/forum/
(Foar dyjingen dy't studearje wolle - Dokumintaasje, Serial Protokol, API, Protokol, Parser | foar dyjingen dy't helpe wolle (bydragen) yn 'e ûntwikkeling fan it projekt - Dokumintaasje)

It touch-switchboard is ûntwikkele yn it Deeptrace-programma, rekken hâldend mei de folgjende fabrikaazje mei de metoade Laser Ironing Technology (LUT). It bestjoer waard ûntwikkele yn dimensjes fan 60x60mm (in standert glêzen paniel hat dimensjes fan 80x80mm). It circuit waard printe op 'e siden fan Antenne tydskrift en oerbrocht mei in Bosch izer mei de "Len" ynstelling (maksimale krêft) op in dûbelsidige folie fiberglass board 1.5mm, 35µm (by it ûntbrekken fan in oar).
Draadloze touch switch mei ekstra fluorescent backlight

Etsen waard útfierd mei in oplossing fan ferrichloride, earder taret yn 'e ferhâldingen fan 1.5 teaspoons per 250 ml waarm wetter. It proses duorre 15 minuten.
Boarjen fan gatten foar interlayer fias en foar it befestigjen fan de batterijhâlder waard útfierd mei in DREMEL 3000 mini-boar monteare op in DREMEL 220 drill stand.Gaten foar interlayer fias waarden boarre mei in 0,4mm drill, gatten foar de batterijhâlder mei in 1,1mm drill . Trimmen lâns de grinzen fan it boerd waard dien mei deselde mini-boar mei in DREMEL 540 taheaksel (Snijsirkel d = 32.0mm). It snoeien waard dien yn in respirator.
Tinning fan it etste boerd waard dien mei help fan Rose alloy yn in wetterige oplossing (1 teeleppel kristallisearre citroenzuur per 300 ml wetter).

De soldering proses duorre likernôch in oere, meastentiids waard bestege soldering tried (tinned, 0.4 mm yn diameter) yn 'e gatten foar interlayer fias.

It boerd waard wosken mei FLUX OFF aerosolreiniger.
Draadloze touch switch mei ekstra fluorescent backlight

Draadloze touch switch mei ekstra fluorescent backlight

It ûntwerp fan it apparaat lichem waard útfierd yn in trijediminsjonale kompjûter-stipe ûntwerp bewurker. Case ôfmjittings 78,5mm X 78,5mm X 12mm.
Draadloze touch switch mei ekstra fluorescent backlight

It foltôge model fan 'e saak en de batterijkap waard bewarre yn STL-formaat, dan wie it nedich om dizze modellen te meitsjen foar printsjen op in SLA-printer (tafoeging stipet, oriïntaasje). Op dit stadium ûntstie in lyts probleem, om't it printgebiet fan húshâldlike SLA-printers lyts is. It model fan 'e apparaatkoffer yn' e meast optimale posysje relatyf oan printtiid paste net yn 'e ôfmjittings fan it printgebiet. By it pleatsen fan it model op 45 graden, joech it ek in teloarstellend resultaat; it gewicht fan 'e stipe wie gelyk oan it gewicht fan it lichemsmodel. It waard besletten om it model fertikaal te printsjen, it meitsjen fan in stipe op ien fan 'e foarkanten, nei't fan tefoaren ôfpraat wie mei it feit fan postferwurking. It printsjen fan it lichem duorre 5 oeren mei in laachynstelling fan 50 mikrons. Dêrnei waard ferwurking útfierd mei heul fynkorrelige skuorpapier (ik sil it nûmer net skriuwe, om't ik it net wit :)). It batterijdeksel naam 40 minuten om te printsjen.
Draadloze touch switch mei ekstra fluorescent backlight

Glêzen panielen fan Aliexpress wurde ferkocht mei in plestik frame al lijm; der wiene gjin problemen mei it fuortheljen fan it frame. Ik haw it glêzen paniel fuorthelle nei it foarferwaarmjen mei in gewoane haardroger.
Draadloze touch switch mei ekstra fluorescent backlight

Draadloze touch switch mei ekstra fluorescent backlight

De diffuser foar de LED-achterljocht waard makke fan dûbelsidige tape mei acrylkleefstof 3M 9088-200. Foar fluorescent ferljochting wiene d'r ferskate materialen om út te kiezen, Sineeske kleefband en lijmpapier snije yn tapes fan it ynlânske bedriuw Luminofor. De kar waard makke yn it foardiel fan in ynlânske fabrikant; neffens myn gefoelens skynde it helderder en langer. In fjouwerkant papier mei fluorescent pigment waard boppe mei 3M 9088-200 dûbelsidige tape lijm.

It glês waard lijm oan it switch lichem mei help fan dûbele-sided tape mei 3M VHB 4910 acryl adhesive.
Draadloze touch switch mei ekstra fluorescent backlight

De dekking waard fêstmakke mei in skroef M 1,4 X 5 mm.

De kosten fan it apparaat wie 890 roebel.

Dêrnei kaam it programmadiel. Der wiene wat problemen. It docht bliken dat TTP223 sensor chips wurkje great mei in stabilisearre 3.3V Netzteil en net hiel goed as oandreaun direkt út in goed-ûntladen batterij. By it starten fan it apparaat mei in stroomfoarsjenning om 2.5v, plus nei in ekstra "drawdown" by it útwurkjen fan de Mysensors-presintaasje, feroarsake de TTP223-mikrocircuit (direkt nei kalibraasje) in ûnderbrekking fan 'e MK, om't it mei in aktive trigger wie.

De macht oanbod circuit oan de microcircuit waard feroare (power behear TTP223 mei gpio MK), ekstra grûn waard levere, en wjerstannen mei hegere ferset waarden ferfongen op de rgb led linen (dy't rinne oan 'e oare kant fan' e kapasityf sensor board). It waard ek tafoege oan 'e software: aktivearring fan krêft foar it kapasityf mikrocircuit nei it starten fan it Mysensors-ramt en it útwurkjen fan de presintaasje. De fertraging foar auto-kalibraasje fan 'e TTP223-chip as macht wurdt tapast is ferdûbele. Al dizze feroarings folslein eliminearre dit probleem.

Foardat jo de programmakoade besjen, ried ik oan dat jo josels fertroud meitsje mei de basisstruktuer fan sketsen yn Mysensors.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()
{

}

Touch Switch programma test koade: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

De switch hat in touch knop en in tact knop op 'e rêch fan it apparaat. Dizze taktknop sil brûkt wurde foar tsjinstmodi, ferbiningsmodus oer de loft en reset fan apparaat. De knop hat in izeren anty-bounce-funksje. De line fan 'e kapasitive sensor en de line fan' e taktknop binne ferbûn troch Schottky-diodes en ferbûn mei de analoge pin p0.05, en ek fan 'e kapasitive sensor en de taktknop binne der linen nei de MK-pins p0.25 en p0.27 .0.05 foar lêzen steaten nei it aktivearjen fan de ûnderbrekking op pin p0.05. XNUMX. Op pin pXNUMX wurdt in ûnderbrekking fia de komparator (NRF_LPCOMP) fia EVENTS_UP aktivearre. Ik krige ynspiraasje om it probleem op te lossen hjir и hjir.

De switch waard tafoege oan it Mysensors netwurk, beheard troch de smart home controller Majordomo (projekt webside)

PHP-koade foar it tafoegjen fan in skeakel nei de statusUpdate-metoade

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

Sjoch it resultaat yn 'e fideo

Draadloze touch switch mei ekstra fluorescent backlight

Letter waard in opsje makke mei in boostkonverter, mar dit is net relatearre oan de wurking fan it kapasityf mikrocircuit TTP223; d'r is mear winsk foar goede en unifoarme ferljochting by it drukken op 'e toetsen yn' e heule batterijlibben.

SjochDraadloze touch switch mei ekstra fluorescent backlight

Draadloze touch switch mei ekstra fluorescent backlight

Projekt Github - github.com/smartboxchannel/EFEKTA_WIRELESS_TOUCH_SWITCH

Russysk pratend mienskip site Mysensors

Telegram chat Mysensors - rappe oplossing foar problemen mei Mysensors, tips, trúkjes, boerden ynstallearje, wurkje mei atmega 328, stm32, nRF5 mikrocontrollers yn 'e Arduino IDE - @mysensors_rus

Guon foto'sDraadloze touch switch mei ekstra fluorescent backlight

Draadloze touch switch mei ekstra fluorescent backlight

Draadloze touch switch mei ekstra fluorescent backlight

Draadloze touch switch mei ekstra fluorescent backlight

Draadloze touch switch mei ekstra fluorescent backlight

Boarne: www.habr.com

Add a comment