Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Aloha mai e ka poʻe heluhelu a pau o ka ʻāpana "DIY or Do It Yourself" ma Habr! ʻO ka ʻatikala o kēia lā e pili ana i ka hoʻololi paʻi ma ka chip TTP223 | ʻikepili. Hoʻohana ka hoʻololi i ka microcontroller nRF52832 | ʻikepili, ua hoʻohana ʻia kahi module YJ-17103 me kahi antenna i paʻi ʻia a me kahi mea hoʻohui no kahi antenna MHF4 waho. Hoʻohana ʻia ka hoʻololi paʻi ma CR2430 a i ʻole CR2450 mau pihi. ʻAʻole ʻoi aku ka nui o ka hoʻohana ʻana i ka mode transmit ma mua o 8 mA, ma ke ʻano hiamoe ʻaʻole ʻoi aku ma mua o 6 µA.
Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

E like me nā papahana mua, he papahana Arduino kēia, ua kākau ʻia ka papahana ma ka Arduino IDE. Hoʻokumu ʻia ka hoʻokō polokalamu o ka hāmeʻa ma ka protocol Mysensors | Nā hale waihona puke ʻo GitHub, Kākoʻo ka papa nRF5 iā GitHub ma Mysensors. hui kaiaulu ʻōlelo Pelekania - http://forum.mysensors.org, hui kaiaulu ʻōlelo Lūkini - http://mysensors.ru/forum/
(No ka poʻe makemake e aʻo - ʻO ka palapala, Pūnaewele Serial, API, Pūnaewele, Parser | no ka poe makemake e kokua (nā kōkua) i ka hoʻomohala ʻana i ka papahana - ʻO ka palapala)

Hoʻokumu ʻia ka papa hoʻololi paʻi ma ka papahana Deeptrace, me ka noʻonoʻo ʻana i ka hana ʻana ma hope o ka hoʻohana ʻana i ke ʻano Laser Ironing Technology (LUT). Ua hoʻomohala ʻia ka papa ma nā ana o 60x60mm (he 80x80mm ka nui o ka panel aniani maʻamau). Ua paʻi ʻia ke kaapuni ma nā ʻaoʻao o ka makasina Antenna a ua hoʻoili ʻia me kahi hao Bosch me ka hoʻonohonoho "Len" (ka mana kiʻekiʻe) ma luna o kahi papa fiberglass foil ʻelua ʻaoʻao 1.5mm, 35µm (i ka nele o kekahi).
Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Ua hana ʻia ka etching me kahi hopena o ka ferric chloride, i hoʻomākaukau mua ʻia ma nā ʻāpana o 1.5 teaspoons no 250 ml o ka wai mahana. He 15 mau minuke ke kaʻina hana.
ʻO ka wili ʻana i nā lua no ka interlayer vias a no ka hoʻopaʻa ʻana i ka mea paʻa pākaukau i hana ʻia me kahi DREMEL 3000 mini-drill i kau ʻia ma kahi DREMEL 220 drill stand. . ʻO ka ʻoki ʻana ma nā palena o ka papa i hana ʻia me ka mini-drill like me kahi mea hoʻopili DREMEL 0,4 (Cutting circle d=1,1mm). Ua hana ʻia ka ʻoki ʻana i loko o kahi respirator.
Hoʻohana ʻia ka hana ʻana o ka papa i kālai ʻia me ka hoʻohana ʻana i ka hui Rose i loko o kahi wai wai (1 teaspoon o ka waikawa citric crystallized no 300 ml o ka wai).

ʻO ke kaʻina hana kūʻai i lawe ʻia ma kahi o hoʻokahi hola, ʻo ka hapa nui o ka manawa i hoʻopau ʻia i ka uea kūʻai (tinned, 0.4 mm ke anawaena) i loko o nā lua no ka interlayer vias.

Ua holoi ʻia ka papa me FLUX OFF aerosol cleaner.
Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Ua hoʻokō ʻia ka hoʻolālā ʻana o ke kino o ka mīkini i loko o kahi hoʻoponopono hoʻolālā kōkua kamepiula ʻekolu. Ka nui o ka pahu 78,5mm X 78,5mm X 12mm.
Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Ua mālama ʻia ke kumu hoʻohālike i hoʻopau ʻia o ka pahu pahu a me ka uhi o ka puʻupuʻu pākaukau ma ke ʻano STL, a laila pono e hoʻomākaukau i kēia mau hiʻohiʻona no ka paʻi ʻana ma kahi paʻi SLA (hoʻohui i nā kākoʻo, orientation). I kēia manawa, ua kū mai kahi pilikia liʻiliʻi, no ka mea liʻiliʻi ka wahi paʻi o nā mea paʻi SLA hale. ʻAʻole i kūpono ke kumu hoʻohālike o ka pahu hāmeʻa i ke kūlana maikaʻi loa e pili ana i ka manawa paʻi i nā ana o ka wahi paʻi. I ka hoʻokomo ʻana i ke kumu hoʻohālike ma 45 degere, ua hāʻawi pū ʻia i kahi hopena hoʻohaʻahaʻa; ua like ke kaumaha o ke kākoʻo me ke kaumaha o ke kumu hoʻohālike kino. Ua hoʻoholo ʻia e paʻi i ke kŘkohu me ka vertically, e hana ana i ke kākoʻo ma kekahi o nā ʻaoʻao mua, i ʻae mua ʻia me ka ʻoiaʻiʻo o ka hoʻoponopono hope. ʻO ka paʻi ʻana i ke kino he 5 mau hola me kahi hoʻonohonoho papa o 50 microns. Ma hope aʻe, ua hana ʻia ka hana ʻana me ka hoʻohana ʻana i ka pepa ʻeleʻele maikaʻi loa (ʻaʻole wau e kākau i ka helu no ka mea ʻaʻole wau ʻike :)). He 40 mau minuke ka paʻi ʻana o ka uhi pākaukau.
Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Ke kūʻai ʻia aku nei nā panela aniani mai Aliexpress me kahi pahu plastik i hoʻopili ʻia; ʻaʻohe pilikia me ka wehe ʻana i ke kiʻi. Wehe au i ka papa aniani ma hope o ka hoʻomaʻamaʻa ʻana me kahi hairdryer maʻamau.
Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

ʻO ka diffuser no ke kukui LED i hana ʻia me ka lipine ʻaoʻao ʻelua me ka acrylic adhesive 3M 9088-200. No nā kukui uila he nui nā mea e koho ai, ʻo ka lipine adhesive Kina a me ka pepa adhesive i ʻoki ʻia i lipine mai ka hui kūloko ʻo Luminofor. Ua koho ʻia ke koho i kahi mea hana hale; e like me koʻu mau manaʻo, ua ʻoi aku ka mālamalama a lōʻihi. Hoʻopili ʻia kahi ʻāpana pepa me ka puaʻa fluorescent ma luna me ka lipine ʻaoʻao ʻelua 3M 9088-200.

Hoʻopili ʻia ke aniani i ke kino hoʻololi e hoʻohana ana i ka lipine ʻaoʻao ʻelua me 3M VHB 4910 acrylic adhesive.
Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Ua hoʻopaʻa ʻia ka uhi me kahi wili M 1,4 X 5 mm.

ʻO ke kumukūʻai o ka mea hana he 890 rubles.

A laila hele mai ka māhele papahana. Aia kekahi mau pilikia. ʻIke ʻia he hana maikaʻi nā ʻāpana sensor TTP223 me kahi lako mana 3.3V i hoʻopaʻa ʻia a ʻaʻole maikaʻi loa ke hoʻohana pololei ʻia mai kahi pākaukau i hoʻokuʻu ʻia. I ka hoʻomaka ʻana i ka hāmeʻa me kahi lako mana a puni 2.5v, a ma hope o ka "drawdown" hou i ka wā e hana ana i ka hōʻike Mysensors, ʻo ka TTP223 microcircuit (ma hope koke o ka calibration) ua hoʻopau i ka MK no ka mea me ka hoʻoikaika ikaika.

Ua hoʻololi ʻia ke kaapuni mana i ka microcircuit (mana mana TTP223 me gpio MK), ua hoʻolako ʻia kahi ʻāina hou, a ua hoʻololi ʻia nā mea pale me ke kūpaʻa kiʻekiʻe ma nā laina alakaʻi rgb (e holo ana ma kēlā ʻaoʻao o ka papa sensor capacitive). Ua hoʻohui pū ʻia i ka polokalamu: ka hoʻāla ʻana o ka mana no ka microcircuit capacitive ma hope o ka hoʻomaka ʻana i ka Mysensors framework a hana i ka hōʻike. ʻO ka lohi no ka calibration auto o ka chip TTP223 ke hoʻohana ʻia ka mana ua pālua ʻia. Ua hoopau loa keia mau hoololi a pau i keia pilikia.

Ma mua o ka nānā ʻana i ka code program, makemake wau e hoʻomaʻamaʻa ʻoe iā ʻoe iho me ke ʻano kumu o nā sketches ma 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()
{

}

Pākuʻi hoʻololi polokalamu hoʻāʻo code: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

MyPapaNRF5.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

Loaʻa i ka hoʻololi ke pihi hoʻopā a me ka pihi ma ke kua o ka hāmeʻa. E hoʻohana ʻia kēia pihi no nā ʻano lawelawe, ke ʻano hoʻopaʻa ʻana ma luna o ka lewa, a me ka hoʻonohonoho hou ʻana i ka hāmeʻa. Loaʻa i ke pihi kahi hiʻona anti-bounce. Hoʻopili ʻia ka laina o ka sensor capacitive a me ka laina o ka pihi tact ma o Schottky diodes a pili i ka analog pin p0.05, a mai ka capacitive sensor a me ka tact pihi aia nā laina i nā pine MK p0.25 a me p0.27. .0.05 no ka heluhelu ʻana i nā mokuʻāina ma hope o ka hoʻāla ʻana i ka hoʻopau ʻana ma ka pine p0.05. XNUMX. Ma ka pine pXNUMX, ua ho'ā 'ia kahi ho'opau ma o ka mea ho'ohālikelike (NRF_LPCOMP) ma o EVENTS_UP. Ua loaʻa iaʻu ka hoʻoikaika ʻana e hoʻoponopono i ka pilikia maanei и maanei.

Hoʻohui ʻia ka hoʻololi i ka pūnaewele Mysensors, mālama ʻia e ka mea hoʻokele home akamai ʻo Majordomo (pūnaewele papahana)

PHP code no ka hoʻohui ʻana i kahi hoʻololi i ke ala 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');
} 
}

E ʻike i ka hopena ma ka wikiō

Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Ma hope mai, ua hana ʻia kahi koho me kahi mea hoʻololi hoʻoikaika, akā ʻaʻole pili kēia i ka hana o ka TTP223 capacitive microcircuit; ʻoi aku ka makemake o ka hoʻomālamalama maikaʻi a me ka hoʻomālamalama ʻana i ke kaomi ʻana i nā kī i ke ola pākaukau holoʻokoʻa.

NānāHoʻololi hoʻopā ʻole me ke kukui uila hou aku

Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Papahana Github - github.com/smartboxchannel/EFEKTA_WIRELESS_TOUCH_SWITCH

ʻōlelo Lūkini kahua kaiaulu Mysensors

Telegram kamaʻilio Mysensors - ka hopena wikiwiki i nā pilikia me Mysensors, nā ʻōlelo aʻoaʻo, nā hoʻopunipuni, ka hoʻokomo ʻana i nā papa, e hana pū ana me nā microcontrollers atmega 328, stm32, nRF5 i ka Arduino IDE - @mysensors_rus

ʻO kekahi mau kiʻiHoʻololi hoʻopā ʻole me ke kukui uila hou aku

Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Hoʻololi hoʻopā ʻole me ke kukui uila hou aku

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka