nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜

์˜ค๋Š˜ ๊ธฐ์‚ฌ์—์„œ๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์œ ๋ฆฌ ํŒจ๋„์„ ์‚ฌ์šฉํ•œ ํ„ฐ์น˜ ์Šค์œ„์น˜์ž…๋‹ˆ๋‹ค. ์ด ์žฅ์น˜๋Š” 42x42mm ํฌ๊ธฐ๋กœ ์ปดํŒฉํŠธํ•ฉ๋‹ˆ๋‹ค(ํ‘œ์ค€ ์œ ๋ฆฌ ํŒจ๋„ ํฌ๊ธฐ๋Š” 80x80mm). ์ด ์žฅ์น˜์˜ ์—ญ์‚ฌ๋Š” ์•„์ฃผ ์˜ค๋ž˜ ์ „, ์•ฝ XNUMX๋…„ ์ „๋ถ€ํ„ฐ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜

์ฒซ ๋ฒˆ์งธ ์˜ต์…˜์€ atmega328 ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ์— ์žˆ์—ˆ์ง€๋งŒ ๊ฒฐ๊ตญ์—๋Š” nRF52832 ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.

nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜

์žฅ์น˜์˜ ํ„ฐ์น˜ ๋ถ€๋ถ„์€ TTP223 ์นฉ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‘ ์„ผ์„œ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ์ธํ„ฐ๋ŸฝํŠธ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. TPS2477 ์นฉ์˜ ๋ถ€์ŠคํŠธ ์ปจ๋ฒ„ํ„ฐ๋ฅผ ํ†ตํ•ด CR610981 ๋ฐฐํ„ฐ๋ฆฌ๋กœ ๊ตฌ๋™ | ๋ฐ์ดํ„ฐ ์‹œํŠธ.

nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜
nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜

์ด ์žฅ์น˜๋Š” ์ „๊ณ„ ํšจ๊ณผ ํŠธ๋žœ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์› ์ฐจ๋‹จ ํšŒ๋กœ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ ์ž์ฒด๊ฐ€ ์ „์› ์ œ์–ด๋ฅผ ๊ฐ€๋กœ์ฑ„๊ณ  ๋ฒ„ํŠผ์„ ์„œ๋น„์Šค ๋ชจ๋“œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ œ ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ์žฅ์น˜์™€ ํŽ˜์–ด๋งํ•˜์—ฌ ์ „์›์„ ๋„๊ณ  ๊ณต์žฅ ์„ค์ •์œผ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค).

์ƒํƒœ์™€ ์„œ๋น„์Šค ๋ชจ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 2๊ฐœ์˜ RGB LED๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ์น˜ ๋ฒ„ํŠผ์„ ํ„ฐ์น˜ํ•  ๋•Œ์˜ ํด๋ฆญ ์†Œ๋ฆฌ์™€ ์„œ๋น„์Šค ๋ชจ๋“œ์˜ ์†Œ๋ฆฌ ํ‘œ์‹œ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ํ”ผ์—์กฐ ์ด๋ฏธํ„ฐ๋„ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. LED์™€ ํ”ผ์—์กฐ ์ด๋ฏธํ„ฐ๋Š” ์‚ฌ์šฉ์ž์˜ ์žฌ๋Ÿ‰์— ๋”ฐ๋ผ ์ผœ๊ณ  ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ์ˆ  ์„ผ์„œ์— ๋ช…๋ น์„ ์ „์†กํ•˜์—ฌ ์Šค๋งˆํŠธ ํ™ˆ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋˜๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ์Šค๋งˆํŠธ ํ™ˆ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋ฐฐํ„ฐ๋ฆฌ ์ถฉ์ „ ๋ฐ ์‹ ํ˜ธ ์ˆ˜์ค€ ์ „์†ก ๊ฐ„๊ฒฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡์ง€ ์ฒญ์ง€๊ธฐ.

์ „์†ก ๋ชจ๋“œ ์†Œ๋น„๋Š” 7mA(250kbit, 10ms), ์ ˆ์ „ ์†Œ๋น„๋Š” 40ฮผA, ๊บผ์ง„ ์ƒํƒœ ์†Œ๋น„๋Š” 1ฮผA ๋ฏธ๋งŒ์ž…๋‹ˆ๋‹ค(="์œ ํœด" ๋ชจ๋“œ์˜ ๋ถ€์ŠคํŠธ ์ปจ๋ฒ„ํ„ฐ ์†Œ๋น„). ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ Rx, tx, swd ์ปค๋„ฅํ„ฐ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. 2 ํ”ผ์น˜์˜ ์†Œํ˜• 3x1.27p ์ปค๋„ฅํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•ด ํŠน์ˆ˜ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.

nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜

ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ์žฅ์น˜์˜ ์ž‘๋™์€ ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ด์„ผ์„œ. ์ด ํ„ฐ์น˜ ์Šค์œ„์น˜๋Š” ๋กค๋Ÿฌ ๋ธ”๋ผ์ธ๋“œ ์ œ์–ด ์‹œ์Šคํ…œ์— ์‚ฌ์šฉ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๊ท€ํ•˜์˜ ์ƒ์ƒ๋ ฅ์— ์˜ํ•ด์„œ๋งŒ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ œ ์•„๋“ค(7์„ธ)์€ ์ด๋ฏธ ์Šค์œ„์น˜ ๋ฒ„์ „์— ๋Œ€ํ•ด 3๊ฐœ์˜ ์ฃผ๋ฌธ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์š•์กฐ๊ฐ€ ์žˆ๋Š” ํ™”์žฅ์‹ค์˜ ์กฐ๋ช…์„ ์ผœ๊ณ  ๋„๋Š” ๊ฒƒ(๋ฐ”๋‹ฅ์—์„œ ๋‚ฎ๊ฒŒ ์žฅ์ฐฉ๋จ), ํ™”์žฅ์‹ค์—์„œ ์กฐ๋ช…์„ ์ผœ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธธ๊ณ  ์–ด๋‘์šด ๋ณต๋„๋Š” ์š•์กฐ๊ฐ€ ์žˆ๋Š” ํ™”์žฅ์‹ค๋กœ ๊ฐ€๊ณ , ๋˜ ๋‹ค๋ฅธ ๋ณต๋„๋Š” ์นจ๋Œ€ ์˜†์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ถˆ์„ ์ผœ์„œ ๋ชฌ์Šคํ„ฐ๋“ค์ด ๋„๋ง๊ฐ€๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜
nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜
nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜

์ผ€์ด์Šค๋Š” ์ „ํ†ต์ ์œผ๋กœ SLA ํ”„๋ฆฐํ„ฐ๋กœ ์ธ์‡„๋˜์—ˆ์œผ๋ฉฐ ์žฅ์น˜๋Š” ์†Œํ˜•์ด๋ฉฐ ์ผ€์ด์Šค๋„ ์ž‘์€ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด ์ธ์‡„ ๊ธฐ์ˆ ์˜ ์‚ฌ์šฉ์ด ์ •๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ธ์‡„๋œ ๋ชจ๋ธ ๋ณด๊ธฐnRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜
nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜
nRF52832์— ์œ ๋ฆฌ ํŒจ๋„์ด ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ„ฐ์น˜ ์Šค์œ„์น˜

์ž์„์€ ์ผ€์ด์Šค์™€ ๋ฐฐํ„ฐ๋ฆฌ์‹ค ์ปค๋ฒ„์— ์ ‘์ฐฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์žฅ์น˜๋ฅผ ํ…Œ์ŠคํŠธํ•œ ๋™์˜์ƒ:



๋ฐ˜๋ณตํ•˜๊ณ  ์‹ถ์€ ๋ถ„๋“ค์„ ์œ„ํ•ด:

Arduino IDE์šฉ ๋กค๋Ÿฌ ๋ธ”๋ผ์ธ๋“œ ์ œ์–ด ์‹œ์Šคํ…œ์˜ ์Šค์œ„์น˜์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ

์•„๋‘์ด๋…ธ ๋ฐฐ์„ 

int8_t timer_status = 0;
boolean sens_flag1 = 0;
boolean sens_flag2 = 0;
boolean switch_a = 0;
boolean switch_b = 0;
uint16_t temp;
float vcc;
int battery;
int old_battery;
uint32_t oldmillis;
uint32_t newmillis;
uint32_t interrupt_time;
uint32_t SLEEP_TIME = 7000;
uint32_t SLEEP_TIME_W;
uint32_t SLEEP_TIME_W2;
int NrfRSSI;
uint16_t NrfRSSI2;
boolean wait_off;
//#define MY_DEBUG
#define MY_DISABLED_SERIAL
#define MY_RADIO_NRF5_ESB
#define MY_PASSIVE_NODE
#define MY_NODE_ID 120
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#define MY_TRANSPORT_UPLINK_CHECK_DISABLED
#define POWER_CHILD_ID 110
#define UP_POWER_SWITCH_ID 1
#define DOWN_POWER_SWITCH_ID 2
#define CHILD_ID_nRF52_RSSI_RX 3
#define BAT_COOF 0.0092957746478873
#define BAT_MIN 200
#define BAT_MAX 290
#include <MySensors.h>
MyMessage upMsg(UP_POWER_SWITCH_ID, V_STATUS);
MyMessage downMsg(DOWN_POWER_SWITCH_ID, V_STATUS);
MyMessage powerMsg(POWER_CHILD_ID, V_VAR1);
MyMessage msgRF52RssiReceiv(CHILD_ID_nRF52_RSSI_RX, V_VAR1);
void preHwInit() {
pinMode(31, OUTPUT); //power management pin
digitalWrite(31, HIGH);
delay(3000);
pinMode(3, INPUT); // on off mode button
pinMode(25, OUTPUT); // sens1 led
pinMode(26, OUTPUT); // sens1 led
pinMode(27, OUTPUT); // sens1 led
pinMode(6, OUTPUT); // sens21 led
pinMode(7, OUTPUT); // sens2 led
pinMode(8, OUTPUT); // sens2 led
pinMode(28, OUTPUT); // bizzer
pinMode(2, INPUT); // common interrupt for touch sensors
pinMode(9, INPUT); // touch sensors1
pinMode(10, INPUT); //touch sensors2
pinMode(29, INPUT); // battery
digitalWrite(28, LOW);
digitalWrite(27, HIGH);
digitalWrite(26, HIGH);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
void before()
{
NRF_POWER->DCDCEN = 1;
analogReadResolution(12);
disableNfc();
turnOffAdc();
digitalWrite(25, LOW);
digitalWrite(6, LOW);
wait(200);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
wait(100);
playSound0();
wait(100);
digitalWrite(25, LOW);
digitalWrite(6, LOW);
wait(200);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
wait(3000);
digitalWrite(27, LOW);
digitalWrite(8, LOW);
wait(200);
digitalWrite(27, HIGH);
digitalWrite(8, HIGH);
wait(400);
digitalWrite(6, LOW);
digitalWrite(25, LOW);
wait(200);
digitalWrite(6, HIGH);
digitalWrite(25, HIGH);
wait(400);
digitalWrite(26, LOW);
digitalWrite(7, LOW);
wait(200);
digitalWrite(26, HIGH);
digitalWrite(7, HIGH);
wait(1000);
digitalWrite(26, LOW);
digitalWrite(7, LOW);
}
void setup()
{
digitalWrite(26, HIGH);
digitalWrite(7, HIGH);
wait(50);
playSound();
wait(2000);
readBatLev();
wait(200);
SLEEP_TIME_W = SLEEP_TIME;
}
void presentation()
{
sendSketchInfo("EFEKTA ON|OFF NODE 2CH", "1.0");
wait(100);
present(POWER_CHILD_ID, S_CUSTOM, "BATTERY DATA");
wait(100);
present(UP_POWER_SWITCH_ID, S_BINARY, "UP SWITCH");
wait(100);
present(DOWN_POWER_SWITCH_ID, S_BINARY, "DOWN SWITCH");
}
void loop()
{
if (sens_flag1 == 0 && sens_flag2 == 0) {
if (switch_a == 0 && switch_b == 0) {
timer_status = sleep(digitalPinToInterrupt(2), RISING, digitalPinToInterrupt(3), RISING, 3600000, false);
wait_off = 1;
} else {
//oldmillis = millis();
timer_status = sleep(digitalPinToInterrupt(2), RISING, digitalPinToInterrupt(3), RISING, SLEEP_TIME_W, false);
wait_off = 0;
}
}
if (timer_status == 3) {
wait(100);
digitalWrite(27, LOW);
digitalWrite(8, LOW);
wait(2000);
digitalWrite(27, HIGH);
digitalWrite(8, HIGH);
wait(100);
digitalWrite(31, LOW);
}
if (timer_status == 2) {
if (digitalRead(9) == HIGH && sens_flag1 == 0 && switch_b == 0) {
sens_flag1 = 1;
if (switch_a == 0) {
oldmillis = millis();
SLEEP_TIME_W = SLEEP_TIME;
switch_a = 1;
digitalWrite(6, LOW);
wait(10);
playSound1();
wait(20);
playSound2();
wait(50);
send(upMsg.set(switch_a));
wait(200);
} else {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
}
if (digitalRead(10) == HIGH && sens_flag2 == 0 && switch_a == 0) {
sens_flag2 = 1;
if (switch_b == 0) {
oldmillis = millis();
SLEEP_TIME_W = SLEEP_TIME;
switch_b = 1;
digitalWrite(25, LOW);
wait(10);
playSound1();
wait(20);
playSound2();
wait(50);
send(downMsg.set(switch_b));
wait(200);
} else {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
}
if (digitalRead(9) == LOW && sens_flag1 == 1) {
sens_flag1 = 0;
}
if (digitalRead(10) == LOW && sens_flag2 == 1) {
sens_flag2 = 0;
}
if (switch_a == 1 || switch_b == 1) {
if (wait_off == 0) {
newmillis = millis();
wait(10);
SLEEP_TIME_W2 = SLEEP_TIME_W;
wait(10);
interrupt_time = newmillis - oldmillis;
wait(10);
SLEEP_TIME_W = SLEEP_TIME_W2 - interrupt_time;
wait(10);
Serial.print("WAS IN A SLEEP: ");
Serial.print(newmillis - oldmillis);
Serial.println(" MILLISECONDS");
if (SLEEP_TIME_W < 1000) {
if (switch_a == 1) {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
if (switch_b == 1) {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
SLEEP_TIME_W = SLEEP_TIME;
wait(50);
}
Serial.println(SLEEP_TIME);
Serial.println(SLEEP_TIME_W);
Serial.println(SLEEP_TIME_W2);
Serial.print("GO TO SLEEP FOR: ");
Serial.print(SLEEP_TIME_W);
Serial.println(" MILLISECONDS");
}
oldmillis = millis();
}
}
if (timer_status == -1) {
if (switch_a == 1 || switch_b == 1) {
if (switch_a == 1) {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
if (switch_b == 1) {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
} else {
readBatLev();
}
}
}
void disableNfc() {
NRF_NFCT->TASKS_DISABLE = 1;
NRF_NVMC->CONFIG = 1;
NRF_UICR->NFCPINS = 0;
NRF_NVMC->CONFIG = 0;
}
void turnOffAdc() {
if (NRF_SAADC->ENABLE) {
NRF_SAADC->TASKS_STOP = 1;
while (NRF_SAADC->EVENTS_STOPPED) {}
NRF_SAADC->ENABLE = 0;
while (NRF_SAADC->ENABLE) {}
}
}
void myTone(uint32_t j, uint32_t k) {
j = 500000 / j;
k += millis();
while (k > millis()) {
digitalWrite(28, HIGH); delayMicroseconds(j);
digitalWrite(28, LOW ); delayMicroseconds(j);
}
}
void playSound0() {
myTone(1300, 50);
wait(20);
myTone(1300, 50);
wait(50);
}
void playSound() {
myTone(700, 30); 
wait(10);
myTone(700, 30);
wait(10);
myTone(700, 30);
wait(50);
}
void playSound1() {
myTone(200, 10);
wait(10);
myTone(400, 5);
wait(30);
}
void playSound2() {
myTone(400, 10);
wait(10);
myTone(200, 5);
wait(30);
}
void readBatLev() {
temp = analogRead(29);
vcc = temp * 0.0033 * 100;
battery = map((int)vcc, BAT_MIN, BAT_MAX, 0, 100);
if (battery < 0) {
battery = 0;
}
if (battery > 100) {
battery = 100;
}
sendBatteryLevel(battery, 1);
wait(2000, C_INTERNAL, I_BATTERY_LEVEL);
send(powerMsg.set(temp));
wait(200);
NrfRSSI = transportGetReceivingRSSI();
NrfRSSI2 = map(NrfRSSI, -85, -40, 0, 100);
if (NrfRSSI2 < 0) {
NrfRSSI2 = 0;
}
if (NrfRSSI2 > 100) {
NrfRSSI2 = 100;
}
send(msgRF52RssiReceiv.set(NrfRSSI2));
wait(200);
}

stl์˜ ์‚ฌ๋ก€ ํŒŒ์ผ - ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ

๊ฑฐ๋ฒ„ PCB ํŒŒ์ผ - ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ

์ด ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์งˆ๋ฌธ, Arduino ๋ฐ Mysensor ๊ฐœ๋ฐœ์˜ ์–ด๋ ค์›€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์€ ํ•ญ์ƒ ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„ํŒ…์„ ํ†ตํ•ด ๋„์›€์„ ๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://t.me/mysensors_rus.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€