Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Салом ба ҳама хонандагони бахши " DIY ё худатон кор кунед " дар Habr! Мақолаи имрӯза дар бораи гузариши ламсӣ дар чипи TTP223 | рӯйхат. Гузариш дар микроконтроллери nRF52832 | кор мекунад рӯйхат, модули YJ-17103 бо мавҷгири чопшуда ва пайвасткунак барои мавҷгири берунии MHF4 истифода шудааст. Калиди сенсорӣ дар батареяҳои CR2430 ё CR2450 кор мекунад. Истеъмол дар реҷаи интиқол на бештар аз 8 мА, дар ҳолати хоб на бештар аз 6 мА аст.
Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Мисли ҳама лоиҳаҳои қаблӣ, ин лоиҳа низ як лоиҳаи Arduino аст, барнома дар Arduino IDE навишта шудааст. Татбиқи нармафзори дастгоҳ ба протоколи Mysensors | Китобхонаҳои GitHub, Дастгирии тахтаи nRF5 GitHub дар Mysensors. Форуми ҷомеаи забони англисӣ - http://forum.mysensors.org, форуми ҷомеаи русзабон - http://mysensors.ru/forum/
(Барои онҳое, ки мехоҳанд таҳсил кунанд - сабт, Протоколи силсилавӣ, API, Протокол, Таҳлилкунанда | барои онҳое, ки кӯмак кардан мехоҳанд (саҳмияҳо) ҳангоми таҳияи лоиҳа - сабт)

Тахтаи коммутатори сенсорӣ дар барномаи Deeptrace бо назардошти истеҳсоли минбаъда бо истифода аз усули лазерӣ дарзмолкунӣ (LUT) таҳия шудааст. Тахта дар андозаҳои 60x60 мм таҳия шудааст (панели шишагии стандартӣ андозаҳои 80x80 мм дорад). Схема дар саҳифаҳои маҷаллаи Antenna чоп карда шуда, бо дарзмоли Bosch бо танзимоти "Len" (қуввати ҳадди аксар) ба тахтаи дутарафаи фолгаи шишагини 1.5 мм, 35 ​​мкм (дар набудани дигараш) интиқол дода шуд.
Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Эттинг бо маҳлули хлориди оҳан, ки қаблан дар таносуби 1.5 қошуқи барои 250 мл оби гарм омода карда шуда буд, гузаронида шуд. Раванд 15 дақиқа тӯл кашид.
сӯрохиҳои пармакунӣ барои қабатҳои байниқабатӣ ва мустаҳкам кардани дорандаи батарея бо як парма хурди DREMEL 3000, ки дар стенди пармакунии DREMEL 220 васл карда шудааст. . Буридани сарҳадҳои тахта бо ҳамон мини-парма бо замимаи DREMEL 0,4 анҷом дода шуд (Доираи буриш d=1,1мм). Навдаро дар респиратор гузаронданд.
Тунуккунии тахтаи кандашуда бо истифода аз хӯлаи Роза дар маҳлули обӣ (1 қошуқи кислотаи кристаллшудаи лиму ба 300 мл об) анҷом дода шуд.

Раванди кафшер тақрибан як соат тӯл кашид, бештари вақт барои кафшер кардани сим (қаббадор, диаметри 0.4 мм) дар сӯрохиҳои байни қабатҳо сарф мешуд.

Тахта бо аэрозол тозакунандаи FLUX OFF шуста шуд.
Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Тарҳрезии корпуси дастгоҳ дар муҳаррири конструктории сеченакаи компютерӣ амалӣ карда шуд. Андозаҳои Парвандаи 78,5mm X 78,5mm X 12mm.
Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Модели мукаммали корпус ва сарпӯши қисмати батарея дар формати STL захира карда шуд, пас ин моделҳоро барои чоп дар принтери SLA омода кардан лозим буд (илова кардани дастгириҳо, ориентация). Дар ин марҳила, мушкилоти хурде ба миён омад, зеро майдони чопи чопгарҳои SLA-и хонавода хурд аст. Модели корпуси дастгоҳ дар ҳолати оптималии нисбат ба вақти чоп ба андозаҳои майдони чоп мувофиқ набуд. Ҳангоми ҷойгир кардани модел дар 45 дараҷа, он низ натиҷаи ноумедкунанда дод, вазни дастгирикунанда ба вазни модели бадан баробар буд. Қарор дода шуд, ки модели амудӣ чоп карда, дар яке аз паҳлӯҳои пеш пуштибонӣ карда, бо далели коркарди пас аз пешакӣ мувофиқа карда шавад. Чоп кардани бадан бо танзими қабати 5 микрон 50 соат тӯл кашид. Баъдан, коркард бо истифода аз сангпораи хеле майда-дона гузаронида шуд (ман рақамро наменависам, зеро намедонам :)). Сарпӯши батарея барои чоп кардан 40 дақиқа вақт лозим буд.
Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Панелҳои шишагӣ аз Aliexpress бо чаҳорчӯбаи пластикии аллакай часпонидашуда фурӯхта мешаванд, дар хориҷ кардани чаҳорчӯба ҳеҷ мушкиле вуҷуд надошт. Ман панели шишагинро пас аз пеш гарм кардани он бо мӯйхушккунаки муқаррарӣ хориҷ кардам.
Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Диффузор барои чароғи паси LED аз лентаи дутарафа бо илтиёми акрилии 3M 9088-200 сохта шудааст. Барои равшании флуоресцентӣ якчанд маводҳо мавҷуданд, ки аз онҳо лентаи илтиёмии чинӣ ва коғази илтиёмӣ ба лентаҳои ширкати ватании Luminofor бурида шудаанд. Интихоб ба фоидаи як истеҳсолкунандаи ватанӣ сурат гирифт, аз рӯи эҳсосоти ман, он дурахшонтар ва дарозтар медурахшид. Як мураббаъ коғаз бо пигментҳои флуоресцентӣ бо лентаи дутарафаи 3M 9088-200 часпонида шуд.

Шиша ба корпуси коммутатор бо истифода аз лентаи дутарафа бо илтиёми акрилии 3M VHB 4910 часпонида шуд.
Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Сарпӯш бо винти M 1,4 X 5 мм насб карда шуд.

Арзиши дастгох 890 сум буд.

Баъдан қисми барнома омад. Баъзе мушкилот вуҷуд доштанд. Маълум мешавад, ки микросхемаҳои сенсории TTP223 бо таъминоти устувори 3.3V аъло кор мекунанд ва вақте ки мустақиман аз батареяи хуб холӣ карда шудааст, на он қадар хуб кор мекунанд. Ҳангоми ба кор даровардани дастгоҳ бо қувваи барқ ​​тақрибан 2.5в, инчунин пас аз "кашидани" иловагӣ ҳангоми коркарди муаррифии Mysensors, микросхемаи TTP223 (дарҳол пас аз калибрченкунӣ) боиси қатъ шудани МК шуд, зеро он бо триггер фаъол буд.

Схемаи таъминоти барқ ​​ба микросхема иваз карда шуд (идоракунии қувваи барқ ​​TTP223 бо gpio MK), замини иловагӣ таъмин карда шуд ва дар хатҳои rgb резисторҳои муқовимати баландтар иваз карда шуданд (ки дар тарафи дигари панели сенсори конденситивӣ кор мекунанд). Он инчунин ба нармафзор илова карда шуд: фаъолсозии нерӯ барои микросхемаҳои иқтидор пас аз оғоз кардани чаҳорчӯбаи Mysensors ва коркарди презентатсия. Таъхир барои калибровкаи худкори чипи TTP223 ҳангоми истифодаи нерӯ ду баробар зиёд шуд. Ҳамаи ин дигаргуниҳо ин мушкилотро комилан бартараф карданд.

Пеш аз дидани рамзи барнома, ман тавсия медиҳам, ки шумо бо сохтори асосии эскизҳо дар 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()
{

}

Рамзи санҷиши барномаи гузариш: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

Гузариш дорои тугмаи сенсорӣ ва тугмаи такт дар қафои дастгоҳ мебошад. Ин тугмаи тактикӣ барои шеваҳои хидматрасонӣ, режими пайвастшавӣ аз ҳаво ва аз нав танзимкунии дастгоҳ истифода мешавад. Тугма дорои хусусияти зидди паридан оҳан аст. Хати сенсори ченкунак ва хати тугмаи тактӣ тавассути диодҳои Шоттки пайваст карда шуда, ба пинҳои аналогӣ p0.05 пайваст карда шудаанд, инчунин аз сенсори конденситивӣ ва тугмаи такт хатҳо ба пинҳои МК p0.25 ва p0.27 мавҷуданд. .0.05 барои хондани ҳолати пас аз фаъол кардани танаффус дар pin p0.05. Дар pin pXNUMX, танаффус тавассути муқоисакунанда (NRF_LPCOMP) тавассути EVENTS_UP фаъол карда мешавад. Ман барои ҳалли мушкилот илҳом гирифтам дар ин ҷо и дар ин ҷо.

Гузариш ба шабакаи Mysensors илова карда шуд, ки онро контролери хонагии интеллектуалии Majordomo идора мекунад (лоиҳаи сайт)

Рамзи PHP барои илова кардани гузариш ба усули statusUpdate

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 алоқаманд нест; ҳангоми пахш кардани тугмаҳо дар тӯли тамоми мӯҳлати батарея хоҳиши равшании хуб ва якхела вуҷуд дорад.

НамоишКалиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Лоиҳаи Github - github.com/smartboxchannel/EFEKTA_WIRELESS_TOUCH_SWITCH

Забони русӣ сайти ҷомеа Mysensors

Чати Telegram Mysensors — ҳалли зуди мушкилот бо Mysensors, маслиҳатҳо, ҳилаҳо, насб кардани тахтаҳо, кор бо микроконтроллерҳои atmega 328, stm32, nRF5 дар Arduino IDE — @mysensors_rus

Баъзе суратҳоКалиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Калиди сенсории бесим бо чароғи иловагии флуоресцентӣ

Манбаъ: will.com

Илова Эзоҳ