Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Tislima lill-qarrejja kollha tas-sezzjoni “DIY jew Do It Yourself” fuq Habr! L-artiklu tal-lum se jkun dwar it-touch switch fuq iċ-ċippa TTP223 | datasheet. Is-swiċċ jaħdem fuq il-mikrokontrollur nRF52832 | datasheet, intuża modulu YJ-17103 b'antenna stampata u konnettur għal antenna esterna MHF4. Is-swiċċ tal-mess jaħdem fuq batteriji CR2430 jew CR2450. Il-konsum fil-modalità tat-trażmissjoni ma jkunx aktar minn 8 mA, fil-modalità sleep mhux aktar minn 6 µA.
Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Bħall-proġetti preċedenti kollha, dan huwa wkoll proġett Arduino, il-programm huwa miktub fl-IDE Arduino. L-implimentazzjoni tas-softwer tal-apparat hija bbażata fuq il-protokoll Mysensors | Libreriji GitHub, Bord nRF5 appoġġ GitHub f'Mysensors. forum tal-komunità bil-lingwa Ingliża - http://forum.mysensors.org, forum tal-komunità bil-lingwa Russa - http://mysensors.ru/forum/
(Għal dawk li jridu jistudjaw - Dokumentazzjoni, Protokoll tas-Serje, API, Protokoll, parser | għal dawk li jixtiequ jassistu (kontribuzzjonijiet) fl-iżvilupp tal-proġett - Dokumentazzjoni)

Il-bord tas-swiċċ tat-touch ġie żviluppat fil-programm Deeptrace, b'kont meħud tal-manifattura sussegwenti bl-użu tal-metodu Laser Ironing Technology (LUT). Il-bord ġie żviluppat f'dimensjonijiet ta '60x60mm (pannell tal-ħġieġ standard għandu dimensjonijiet ta' 80x80mm). Iċ-ċirkwit ġie stampat fuq il-paġni tar-rivista Antenna u ttrasferit b'ħadid Bosch bl-issettjar "Len" (qawwa massima) fuq bord tal-fibreglass tal-fojl b'żewġ naħat 1.5mm, 35µm (fin-nuqqas ta 'ieħor).
Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

L-inċiżjoni twettqet b'soluzzjoni ta 'klorur ferriku, ippreparata qabel fil-proporzjonijiet ta' 1.5 kuċċarini għal kull 250 ml ta 'ilma sħun. Il-proċess ħa 15-il minuta.
It-tħaffir ta' toqob għal vias ta' bejn is-saffi u għall-irbit tad-detentur tal-batterija sar b'mini-drill DREMEL 3000 immuntat fuq stand ta' drill DREMEL 220. Toqob għal vias bejn is-saffi ġew imtaqqbin b'drill ta '0,4mm, toqob għall-holder tal-batterija b'drill ta' 1,1mm . It-tirqim tul il-fruntieri tal-bord sar bl-istess mini-drill b'attachment DREMEL 540 (Ċirku tal-qtugħ d=32.0mm). Iż-żbir sar f'respiratur.
Tinning tal-bord inċiżi sar bl-użu Rose liga f'soluzzjoni milwiema (1 kuċċarina ta 'aċidu ċitriku kristallizzat għal kull 300 ml ta' ilma).

Il-proċess tal-issaldjar ħa madwar siegħa, il-biċċa l-kbira tal-ħin intefaq wajer tal-issaldjar (bott, 0.4 mm fid-dijametru) fit-toqob għal vias ta 'saff ta' bejn is-saffi.

Il-bord inħasel bi FLUX OFF aerosol cleaner.
Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Id-disinn tal-korp tal-apparat sar f'editur tad-disinn tridimensjonali megħjun mill-kompjuter. Dimensjonijiet tal-każ 78,5mm X 78,5mm X 12mm.
Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Il-mudell komplut tal-każ u l-kopertura tal-kompartiment tal-batterija ġie ffrankat f'format STL, allura kien meħtieġ li jitħejjew dawn il-mudelli għall-istampar fuq printer SLA (żieda ta 'appoġġi, orjentazzjoni). F'dan l-istadju, qamet problema żgħira, peress li ż-żona tal-istampar tal-printers SLA tad-dar hija żgħira. Il-mudell tal-każ tal-apparat fl-aħjar pożizzjoni relattiva għall-ħin tal-istampar ma kienx jidħol fid-dimensjonijiet taż-żona tal-istampar. Meta poġġiet il-mudell f'45 grad, ta wkoll riżultat diżappuntanti; il-piż tal-appoġġ kien ugwali għall-piż tal-mudell tal-ġisem. Ġie deċiż li l-mudell jiġi stampat vertikalment, billi jagħmel appoġġ fuq waħda mill-ġnub ta 'quddiem, wara li qabel bil-quddiem mal-fatt ta' post-ipproċessar. L-istampar tal-ġisem ħa 5 sigħat b'issettjar ta 'saff ta' 50 mikron. Sussegwentement, l-ipproċessar sar bl-użu ta 'sandpaper ta' qamħa fin ħafna (mhux se nikteb in-numru għax ma nafx :)). L-għatu tal-batterija ħa 40 minuta biex jistampa.
Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Il-pannelli tal-ħġieġ minn Aliexpress jinbiegħu b'qafas tal-plastik diġà inkollat; ma kien hemm l-ebda problemi biex jitneħħa l-qafas. Neħħejt il-pannell tal-ħġieġ wara li saħħnuh minn qabel b'apparat li jnixxef il-xagħar regolari.
Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Id-diffużur għall-backlight LED kien magħmul minn tejp b'żewġ naħat b'adeżiv akriliku 3M 9088-200. Għal dawl fluworexxenti kien hemm diversi materjali minn fejn jagħżlu, tejp li jwaħħal Ċiniż u karta adeżiva maqtugħa f'tejps mill-kumpanija domestika Luminofor. L-għażla saret favur manifattur domestiku; skond is-sentimenti tiegħi, shine isbaħ u itwal. Kwadru ta 'karta b'pigment fluworexxenti kien inkollat ​​fuq nett b'tejp b'żewġ naħat 3M 9088-200.

Il-ħġieġ kien inkollat ​​mal-korp tal-iswiċċ bl-użu ta 'tejp b'żewġ naħat b'adeżiv akriliku 3M VHB 4910.
Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

L-għatu ġie ffissat b'kamin M 1,4 X 5 mm.

L-ispiża tal-apparat kienet ta '890 rublu.

Wara waslet il-parti tal-programm. Kien hemm xi problemi. Jirriżulta li ċ-ċipep tas-sensorju TTP223 jaħdmu tajjeb b'provvista ta 'enerġija stabilizzata ta' 3.3V u mhux tajjeb ħafna meta jaħdmu direttament minn batterija skarikata sew. Meta beda l-apparat b'provvista ta 'enerġija madwar 2.5v, flimkien ma' wara "drawdown" addizzjonali meta taħdem il-preżentazzjoni Mysensors, il-mikroċirkwit TTP223 (immedjatament wara l-kalibrazzjoni) ikkawża interruzzjoni tal-MK peress li kien bi grillu attiv.

Iċ-ċirkwit tal-provvista tal-enerġija għall-mikroċirkwit inbidel (ġestjoni tal-enerġija TTP223 b'gpio MK), art addizzjonali ġiet fornuta, u reżistenzi b'reżistenza ogħla ġew sostitwiti fuq il-linji mmexxija rgb (li jimxu fuq in-naħa l-oħra tal-bord tas-sensorju kapaċità). Ġie miżjud ukoll mas-softwer: attivazzjoni ta 'enerġija għall-mikroċirkwit abilità wara li beda l-qafas Mysensors u jaħdem il-preżentazzjoni. Id-dewmien għall-kalibrazzjoni awtomatika taċ-ċippa TTP223 meta tiġi applikata l-enerġija ġie rduppjat. Dawn il-bidliet kollha eliminaw kompletament din il-problema.

Qabel ma tara l-kodiċi tal-programm, nirrakkomanda li tiffamiljarizza ruħek ma 'l-istruttura bażika ta' abbozzi f'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()
{

}

Kodiċi tat-test tal-programm tas-swiċċ tat-touch: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

Is-swiċċ għandu buttuna touch u buttuna tat-tattika fuq in-naħa ta 'wara tal-apparat. Din il-buttuna tat-tattika se tintuża għal modi ta 'servizz, modalità ta' rbit fuq l-arja, u reset tat-tagħmir. Il-buttuna għandha karatteristika anti-bounce tal-ħadid. Il-linja tas-sensor kapaċitattiv u l-linja tal-buttuna tat-tact huma konnessi permezz ta 'dijodi Schottky u konnessi mal-pin analogu p0.05, u wkoll mis-sensor kapaċitattiv u l-buttuna tat-tact hemm linji għall-pinnijiet MK p0.25 u p0.27 .0.05 għall-qari tal-istati wara li tiġi attivata l-interruzzjoni fuq il-pin p0.05. Fuq il-pin pXNUMX, interruzzjoni permezz tal-komparatur (NRF_LPCOMP) permezz EVENTS_UP hija attivata. Irċevejt ispirazzjoni biex issolvi l-problema hawn и hawn.

Is-swiċċ ġie miżjud man-netwerk Mysensors, immexxi mill-kontrollur tad-dar intelliġenti Majordomo (websajt tal-proġett)

Kodiċi PHP biex iżżid swiċċ mal-metodu 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');
} 
}

Ara r-riżultat fil-video

Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Aktar tard, saret għażla b'konvertitur boost, iżda dan mhuwiex relatat mat-tħaddim tal-mikroċirkwit abilità TTP223; hemm aktar xewqa għal illuminazzjoni tajba u uniformi meta tagħfas iċ-ċwievet tul il-ħajja kollha tal-batterija.

AraSwiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Proġett Github - github.com/smartboxchannel/EFEKTA_WIRELESS_TOUCH_SWITCH

li titkellem ir-Russu sit tal-komunità Mysensors

Telegram chat Mysensors — soluzzjoni mgħaġġla għal problemi bil-Mysensors, tips, tricks, installazzjoni bordijiet, ħidma ma atmega 328, stm32, nRF5 mikrokontrolluri fl-IDE Arduino — @mysensors_rus

Xi ritrattiSwiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Swiċċ touch bla fili b'dawl ta 'wara fluworexxenti addizzjonali

Sors: www.habr.com

Żid kumment