دزدگیر خانه هوشمند

فهرست

مقدمه

با به روز شدن روش های سارقان منازل و آسان نبودن یا غیرممکن بودن شناسایی و دستگیری آنها در بسیاری از موارد نیاز است که خانه ها به ابزارهای مدرن پایش مجهز شوند تا هرگونه ورود غیر مجاز به منزل را به طرق مختلف شناسایی کنند و مالک را در جریان قرار دهند تا قبل از اتمام کار سارقین زمینه مداخله را فراهم کنند.

رویکرد دیگری که باعث پیشگیری از بروز سرقت می شود شبیه سازی حضور در منزل است که از طریق روشن و خاموش شدن چراغ ها و تلویزیون در زمانی های مختلف باعث منصرف شدن سارقین از عملیات شود.

در این مقاله قصد داریم با استفاده از کیت های ProMake یک پروژه خانه هوشمند را پیاده سازی کنیم تا علاوه بر بهره مندی از مکانات کنترل از راه دور، بتوانیم با خیال راحت تری به سفر برویم و منزلمان را از شر سارقین در امان بداریم.

اقلام مورد نیاز برای ساخت دزدگیر خانه هوشمند

برای ساخت سیستم کنترل خانه هوشمند نیاز به اقلام زیر داریم:

  1. ماژول آردوینو نانو(Arduino Nano) + کابل USB مناسب برای پروگرم کردن آن
  2. کیت ماژولار آردوینو نانو پرومیک(ProMake Arduino Nano Kit)
  3. ماژول ProMake GSM SIM800 (برای ارسال وقایع و کنترل لوازم منزل از طریق پیامک(SMS))+سیم کارت
  4. ماژول ProMake Sensor Tag(برای اندازگیری دما، رطوبت نسبی و نور محیطی)
  5. ماژول ProMake Universal Interface (برای اتصال حسگرهای حرکت و آهنربای درب)
  6. حسگر حرکت مبتنی بر امواج فرو سرخ(PIR)
  7. حسگر آهنربایی جهت تشخیص باز شدن درب یا پنجره
  8. نمایشگر OLED 0.91 Inch جهت مشاهده اطلاعات دریافتی از حسگرها و وضعیت عملگرها
  9. آنتن GSM  (بسته به محل نصب می بایست از آنتن  مناسب استفاده کنید)
  10. کابل مبدل UFL به SMA (برای متصل کردن آنتن)
  11. کابل Grove (جهت اتصال ماژول رله 8 کاناله به کیت)
  12. کابل شارژ USB Type-C
  13. شارژر  USB + پاوربانک (برای تامین تغذیه بردها و تامین تغذیه در صورت قطع شدن برق)
  14. یک جعبه با سایز مناسب ()

برای آشنایی بیشتر با محصولات به کار رفته در این کیت برروی آنها کلیک کنید

GSM-001-JANBI

GSM SIM800C

معروف ترین ماژول برای ارتباط با شبکه تلفن همراه در اختیار شماست.

snstag-001 ( janbi )

Sensor TAG

ماژولی کوچک با سنسورهای متنوع

سرهم کردن کیت

ابتدا ماژول آردوینو نانو را برروی “ProMake Arduino Nano kit” قرار می دهیم. دقت کنید که ماژول را در جهت صحیح وارد کیت نمایید. سپس مطابق شکل رو به رو ماژول ها را در مکان های مشخص شده وارد نماید:

  1. ماژول ProMake GSM SIM800 را در محل شماره 1
  2. ماژول ProMake Sensor Tag را در محل شماره 2
  3. ماژول ProMake Univeral Interface را در محل شماره 3
  4. حسگر حرکت (PIR) را به کانکتور  J6 روی ماژول ProMake Univeral Interface متصل کنید.
  5. حسگر آهنربایی  را به کانکتور  J7 روی ماژول ProMake Univeral Interface متصل کنید.
  6.  نمایشگر OLED 0.91 inch در محل در نظر گرفته شده برای آن با توجه به مارکاژ پایه‌ها وارد کنید.
  7. برای اتصال ماژول ProMake Universal 8-CH Relay به کیت یک سر کابل Grove را به کانکتور J2 یا J7  ماژول رله و سر دیگر آن را به کانکتور  J2 کیت متصل کنید.
توجه: در هنگام وارد کردن ماژول های پرومیک به جهت آنها که از بریدگی گوشه آنها قابل تشخیص است دقت کنید.
توجه: حتماً هر ماژول را در محل تعیین شده وارد نمایید تا اتصالات مورد نیاز برای ارتباط با ماژول فراهم باشد.

حال باید کیت شما مطابق شکل روبرو باشد. هم اکنون می توانید آنتن GSM  را متصل کنید.

با توجه به مصرف جریان به نسیت زیاد ماژول GSM هنگام ارسال (TX) نیاز است که تغذیه کیت از طریق کانکتور USB Type-C تعبیه شده برروی کیت تامین شود. برای این کار می توانید از یک شارژر موبایل و یک کابل Type-C معمولی استفاده کنید.

برنامه نویسی و بارگزاری(Upload) روی برد

برای برنامه نویسی از محیط معروف و دوست داشتنی Arduino IDE استفاده می‌کنیم. پس اگر آن را برروی رایانه شخصیتون نصب ندارید، سریع نصبش کنید تا بریم سراغ مرحله بعد…

نصب کتابخانه SSD1306Ascii

برای ارتباط با نمایشگر OLED از طریق I2C ، کتابخانه SSD1306Ascii را در Arduino IDE نصب نمایید.

برای اینکار کافی است از منو Sketch وارد زیر منو Include Library شوید و آیتم Manage Libraries را انتخاب نمایید و در پنجره ظاهر شده مطابق تصویر رو به رو عبارت FastLED  را جستجو نمایید. بعد از ظاهر شدن نتایج برروی دکمه Install کلیک نمایید تا کتابخانه نصب شود.

آیتم Manage Libraries از منو Tools نیز قابل دسترس است و البته با استفاده از کلید ترکیبی Ctrl+Shift+I نیز  ظاهر می شود.

نصب کتابخانه FastLED  

برای کنترل RGB LED های روی شیلد، کتابخانه Fast LED را در Arduino IDE نصب نمایید.

برای اینکار کافی است از منو Sketch وارد زیر منو Include Library شوید و آیتم Manage Libraries را انتخاب نمایید و در پنجره ظاهر شده مطابق تصویر رو به رو عبارت FastLED  را جستجو نمایید. بعد از ظاهر شدن نتایج برروی دکمه Install کلیک نمایید تا کتابخانه نصب شود.

کتابخانه FastLED

نصب کتابخانه DFRobot_SHT20

برای ارتباط با سنسور دما و رطوبت روی ماژول سنسور تگ، کتابخانه DFRobot_SHT20 را در Arduino IDE نصب نمایید.

برای اینکار کافی است از منو Sketch وارد زیر منو Include Library شوید و آیتم Manage Libraries را انتخاب نمایید و در پنجره ظاهر شده مطابق تصویر رو به رو عبارت FastLED  را جستجو نمایید. بعد از ظاهر شدن نتایج برروی دکمه Install کلیک نمایید تا کتابخانه نصب شود.

نصب کتابخانه DFRobot_VEML7700

برای ارتباط با سنسور نور محیطی روی ماژول سنسور تگ، کتابخانه DFRobot_VEML7700 را در Arduino IDE نصب نمایید.

برای اینکار کافی است از منو Sketch وارد زیر منو Include Library شوید و آیتم Manage Libraries را انتخاب نمایید و در پنجره ظاهر شده مطابق تصویر رو به رو عبارت FastLED  را جستجو نمایید. بعد از ظاهر شدن نتایج برروی دکمه Install کلیک نمایید تا کتابخانه نصب شود.

نصب کتابخانه pca95xx

برای ارتباط با ماژول رله 8 کاناله، کتابخانه pca95xx نوشته taubedonner  را در Arduino IDE نصب نمایید.

برای اینکار ابتدا به آدرس https://github.com/taubedonner/pca95xx مراجعه نمایید و کدها را به صورت Zip فایل دانلود نمایید.

 سپس کافی است از منو Sketch وارد زیر منو Include Library شوید و آیتم Add .ZIP Library را انتخاب نمایید و در پنجره ظاهر شده فایلی را که دانلود کردید انتخاب نمایید تا کتابخانه نصب شود.

آشنایی با کد

حال که کتابخانه های پیش نیاز را نصب کردید و حساب کاربری ubidots را ساخته اید، آماده هستید تا وارد نوشتن برنامه اصلی شوید.

عجله نکنید!! ابتدا نیاز است تغییراتی در کد زیر بدهید و بعد از آن استفاده کنید، لذا لطفا گام به گام با من همراه شوید تا هم کد را برایتان شرح دهم و هم تغییرات را باهم اعمال کنیم

  • در خطوط 1 تا 7 شیئ نمایشگر OLED را ایجاد کردیم و آدرس I2C آن را مشخص نمودیم.
  • در خطوط 10 تا 13 شیئ  RGB LED را ایجاد کردیم و پین مربوطه را از  روی مارکاژ برد استخراج و  تعریف  نمودیم
  • در خطوط 16 تا 20 شیئ های حسگرهای دما و رطوبت و نور محیطی را ایجاد کردیم.
  • در خطوط 23 و 29 پین های  مربوط به ارتباط UART و RESET ماژول GSM را  با دقت از روی مارکاژهای کیت و ماژول  استخراج و  تعریف کردیم. سپس اشیاء مورد نیاز را ایجاد نمودیم.
  • در خطوط 32 تا 34 پین های حسگر PIR و Magnet و بازر با با توجه به ماؤکاژ های برد و ماژول تعیین کردیم.
  • در خطور 37 و 38 آدرس I2C ماژول ProMake 8-CH Relay را  با توجه به وضعیت دیپ سوییچ های روی ماژول  استخراج و تعریف کردیم.
  • در تابع setup :
    • ارتباط سریال Debug را راه اندازی کردیم
    • چراغهای RGB LED را راه اندازی می کنیم
    • نمایشگر OLED را راه اندازی می کنیم
    • چیپ I/O Expander ماژول رله 8 کاناله را راه اندازی کرده و وضعیت همه رله ها را به صورت خاموش در می آوریم
    • ماژول GSM را روشن و با پارامترهای صحیح راه اندازی می کنیم و یک پیام با محتوای HELLO به شماره مالک می فرستیم.
    • در نهایت سنسورها را راه اندازی می کنیم تا آماده ورود به تابع loop شویم.
  • در تابع loop:
    • ابتدا  مقادیر حسگرها را می خوانیم و برروی صفحه نمایش چاپ می کنیم
    • اطلاعات دریافتی از ماژول GSM را که حاوی پیامک های دریافتی نیز هست را به دنبال دستور ارسال شده توسط مالک جستجو می کنیم
      • در صورت یافتن پیام ضمن بررسی آن وضعیت رله ها را نیز با توجه به دستور جدید به روز می کنیم.
    • سپس در صورتی که حسگرها باز شدن درب یا وجود حرکتی را احساس کرده باشند هشدار صوتی و چراغ گردان پلیسی را فعال می کنیم و برروی نمایشگر وضعیت را نمایش می دهیم
    • اما در صورتی که حسگرها وضعیت غیر عادی را گزارش نکرده باشند اطلاعات حسگرهای محیطی و عملگرها را نمایش می دهیم.
  • در تابع findCmd داده های دریافتی از ماژول GSM را به دنبال سرآیند “.A#” جستجو می کنیم و در صورت یافتن آن دستور پس از آن را تا دریافت “*” ذخیره کرده و آماده بررسی می کنیم.
  • در تابع checkCmd دستور دریافتی را بررسی می کنیم و با توجه به آن وضعیت دستگاه های متصل به رله ها را مشخص می کنیم
  • در تابع updateRelay با توجه به وضعیت دستگاه ها اقدام به تنظیم وضعیت رله های مربوطه می کنیم.
				
					//Display ==========================================
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"

#define OLED_I2C_ADDRESS 0x3C

SSD1306AsciiWire oled;

//RGB LEDs ==========================================
#include <FastLED.h>
#define LED_PIN     16
#define NUM_LEDS    2
CRGB leds[NUM_LEDS];

//Sensors ==========================================
#include "DFRobot_SHT20.h"
DFRobot_SHT20 sht20;

#include "DFRobot_VEML7700.h"
DFRobot_VEML7700 als;

// GSM UART Connection =================================
#include <SoftwareSerial.h>
#define ARD_RX_GSM_TX   4 // Arduino RX = GSM TX
#define ARD_TX_GSM_RX   7 // Arduino TX = GSM RX
SoftwareSerial gsmSerial(ARD_RX_GSM_TX, ARD_TX_GSM_RX); 

#define GSM_AT_BAUD     9600  
#define GSM_PWR_PIN     9

//Pins =================================
#define MAGNET_PIN  2
#define PIR_PIN     A0
#define BUZZ_PIN    5

//Relay Module===================
#include "pca95xx.h"
#define RELAY_ADDR 0x73

void setup(void)
{
  Serial.begin(9600);
  while (!Serial);

  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);

  Wire.begin();  
  oled.begin(&Adafruit128x32, OLED_I2C_ADDRESS);
  oled.setFont(Adafruit5x7);

  pca95xx_configure(RELAY_ADDR, PCA95XX_POL_DEFAULT_ALL, PCA95XX_OUT_ALL);
  pca95xx_out(RELAY_ADDR, 0xFF); // turn off all relays
  
  //Begin serial communication with Arduino and GSM Module
  gsmSerial.begin(9600);

  oled.clear();
  oled.print(F("Powering GSM ... "));

  pinMode(GSM_PWR_PIN,OUTPUT);
  //GSM POWER ON
  digitalWrite(GSM_PWR_PIN,LOW);
  delay(1000);
  digitalWrite(GSM_PWR_PIN,HIGH);
  
  oled.println(F("Done"));

  oled.print(F("Initing GSM ... "));
  delay(3000);
  gsm_send_serial("AT"); //Once the handshake test is successful, it will back to OK
  delay(300);
  gsm_read_serial();
  delay(1000);
  gsm_read_serial();
  delay(1000);
  gsm_read_serial();
  delay(1000);
  gsm_read_serial();
  delay(1000);
  gsm_read_serial();
  delay(1000);
  
  gsm_send_serial("ATE1"); 
  delay(300);
  gsm_send_serial("AT+CNMI=2,2,0,0,0"); 
  delay(300);
  gsm_send_serial("AT+CMGF=1");         //Set the module to SMS mode
  delay(300);
  
  gsm_send_serial("AT+CSMP=17,167,2,17");  //Set SMS Text Mode Parameters
  delay(300);
  gsm_send_serial("AT+CSCS=\"GSM\""); //Select TE Character Set
  delay(300);

  gsmSerial.println("AT+CMGS=\"YOUR_PHONE_NUMBER\"");  //Your phone number don't forget to include your country code, example +989123456789"
  delay(300);
  gsmSerial.print("HELLO");       //This is the text to send to the phone number, don't make it too long or you have to modify the SoftwareSerial buffer
  gsmSerial.print((char)0x1A);// (required according to the datasheet)
  gsm_read_serial();
  delay(1000);
  gsm_read_serial();
  delay(1000);
  gsm_read_serial();
  
  oled.println(F("Done"));

  oled.println(F("Initializing Sensors"));
  pinMode(BUZZ_PIN, OUTPUT);
  pinMode(MAGNET_PIN,INPUT_PULLUP);
  pinMode(PIR_PIN,INPUT);
  
  sht20.initSHT20();                         // Init SHT20 Sensor
  delay(1000);
  sht20.checkSHT20();                        // Check SHT20 Sensor
}

char str[15];
int idx=0;
bool cmdFound= false;

bool tvOn = false;
bool fanOn = false;
bool lightOn = false;

bool toggle = true;

void loop(void)
{
  float humd = sht20.readHumidity();         // Read Humidity
  float temp = sht20.readTemperature();      // Read Temperature
  float lux;
  als.getALSLux(lux);   // Get the measured ambient light value
  
  int doorOpened = digitalRead(MAGNET_PIN); // 0 close - 1 open
  int motionDetected = digitalRead(PIR_PIN);

  findCmd();
  if(cmdFound)
  {
    checkCmd();
    updateRelay();
    cmdFound=false;
    idx=0;
  }
 
  oled.clear(); // Clear screen
  if(motionDetected || doorOpened){
    if(toggle){
      analogWrite(BUZZ_PIN, 32);
      leds[0] = CRGB(255, 0, 0);
      leds[1] = CRGB(0, 0, 255);
      FastLED.show();
      toggle = false;
    }else{
      analogWrite(BUZZ_PIN, 250);
      leds[0] = CRGB(0, 0, 255);
      leds[1] = CRGB(255, 0, 0);
      FastLED.show();
      toggle = true;
    }
    if(motionDetected) oled.println("MOTION DETECTED!");
    if(doorOpened) oled.println("DOOR OPENED!");
  }else{
    analogWrite(BUZZ_PIN, 0);
    leds[0] = CRGB(0, 255, 0);
    leds[1] = CRGB(0, 255, 0);
    FastLED.show();
    oled.print("L:");
    oled.print(lux,2);
    oled.print(", T:");
    oled.print(temp,2);
    oled.println("°C");
    oled.print("H:");
    oled.print(humd,2);
    oled.println("% ");
    oled.println("Fan   Light  TV ");
    fanOn ? oled.print("ON     ") : oled.print("OFF    ");
    lightOn ? oled.print("ON    ") : oled.print("OFF   ");
    tvOn ? oled.println("ON  ") : oled.println("OFF ");
  }
  
  delay(500);
}

void gsm_read_serial()
{
  while(gsmSerial.available()) 
  {
    Serial.write(gsmSerial.read());
  }
}

void gsm_send_serial(String command) {
  Serial.println("Send ->: " + command);
  gsmSerial.println(command);
  long wtimer = millis();
  while (wtimer + 3000 > millis()) {
    while (gsmSerial.available()) {
      Serial.write(gsmSerial.read());
    }
  }
  Serial.println();
}

void findCmd() 
{
  while(gsmSerial.available()) 
  {
    if(gsmSerial.find("#A."))
    {
      while (gsmSerial.available()) 
      {
        char inChar=gsmSerial.read();
        str[idx++]=inChar;
        if(inChar=='*')
        {
          cmdFound=1;
          return;
        } 
      } 
    }
  }
}

void checkCmd()
{
   if(!(strncmp(str,"tv on",5)))
   {
     tvOn = true;
   }  
   else if(!(strncmp(str,"tv off",6)))
   {
     tvOn = false;
   }
   else if(!(strncmp(str,"fan on",6)))
   {
     fanOn = true;
   }
   else if(!(strncmp(str,"fan off",7)))
   {
     fanOn = false;
   }
   else if(!(strncmp(str,"light on",8)))
   {
     lightOn = true;
   }
   else if(!(strncmp(str,"light off",9)))
   {
     lightOn = false;
   } 
   else if(!(strncmp(str,"all on",6)))
   {
     tvOn = true;
     fanOn = true;
     lightOn = true;
   }
   else if(!(strncmp(str,"all off",7)))
   {
     tvOn = false;
     fanOn = false;
     lightOn = false;
   }
}

void updateRelay()
{
  uint8_t state = 0xFF;

  if(fanOn) state &= 0xFE;
  if(lightOn) state &= 0xFD;
  if(tvOn) state &= 0xFB;
  
  pca95xx_out(RELAY_ADDR, state);
}

				
			

بارگذاری کد برروی برد

حال در محیط Arduino IDE :

  • یک Sketch جدید ایجاد نماید و برنامه فوق را  داخل آن کپی نماید.
  • عبارت YOUR_PHONE_NUMBER را با شماره تلفتن همراه خود جایگزین نمایید.
  • حال Sketch را با نامی دلخواه مثل home-alarmذخیره نمایید.
  • بررسی کنید که کلید S1 روی کیت در وضعیت PROG قرار داشته باشد.
  • حال می توانید برنامه را برروی برد آردوینو نانو بارگذاری(Upload) نمایید.

تست اولیه

برای اینکه قبل از انجام تست میدانی از عملکرد درست مدار اطمینان حاصل کنید:

  • برد را روی میز کار خود قرار دهید و از درست بودن اتصالات و جای ماژول ها اطمینان حاصل نمایید.
  • از قرار داشتن سیم کارت در ماژول GSM اطمینان حاصل کنید و آنتن GSM مناسب را به آن متصل نمایید.
  • با استفاده از یک شارژر موبایل یا پاور بانک و یک کابل USB Type-C و اتصال آنها به کانکتور USB Type-C روی کیت تغذیه کیت، ماژول ها و آردوینو را تامین کنید.
  • دقت کنید که تغذیه مدار از طریق پورت USB رایانه شخصی به علت محدودیت جریان دهی این پورت ها باعث ریست شدن ماژول GSM هنگام رجیستر شدن در شبکه خواهد شد و مدار شما کار نخواهد کرد.

با برقرار شدن تغذیه علایم زیر مشاهده می شود:

  • برروی نمایشگر عبارت “…Powering GSM” نمایش داده می شود که پس از چند ثانیه عبارت Done در جلو آن ظاهر می شود.
  • سپس عبارت “… Initing GSM” در  خط بعد نمایش داده خواهد شد که پس از چند ثانیه با ارسال پیامک “HELLO” برای شما  عبارت Done در جلو آن ظاهر می شود.
  • سپس عبارت “Initializing Sensors” در خط بعد نمایش داده می شود که در صورت شناسایی ماژول سنسور و سالم بودن سنسور ها مقادیر حسگرها برروی صفحه نمایش داده می شود.
  • حال اگر حسگر حرکت PIR جنبشی را در محیط احساس کند و یا دو بخش حسگر آهنربایی از همدیگر دور شوند چراغ پلیسی توسط RGB LED ها به نمایش در می‌آید و بازر تولید صدا می کند.
  • حال در صورت ارسال هر یک از دستورات زیر از طریق پیامک شاهد تغییر در وضعیت رله ها و صفحه نمایشگر خواهید بود:
    • *A.tv on#
    • *A.tv off#
    • *A.fan on#
    • *A.fanoff#
    • *A.light on#
    • *A.light off#
    • *A.all on#
    • *A.all off#

بهبودهای نرم افزاری

همان طور که شاید تاکنون متوجه شده باشید این برنامه تا تبدیل شدن به یک دزدگیر هوشمند ایده آل فاصله زیادی  دارد. در ادامه به برخی بهبود های نرم افزاری که می شود در این برنامه لحاظ نمود اشاره خواهیم داشت

  • کنترل هوشمند: می توان بر اساس شرایط نور محیطی در مورد روشن یا خاموش شدن چراغ ها تصمیم گرفت. یا تصمیم مشابهی را در مورد روشن یا خاموش شدن فن تهویه بر اساس دما و رطوبت محیط گرفت.
  • ارسال وضعیت هشدار سرقت از طریق پیامک: ایجاد صدای آژیر و چراغ پلیسی می تواند سارقین را بترساند و از ادامه سرقت منصرف کند اما سارقین حرفه ای تر به سرعت به سراق دزدگیر رفته و آن را غیر فعال می کنند. شاید بر نباشد به جای تولید آژیر یک پیامک به مالک منزل و یا شماره های دیگر(مثل همسایگان) ارسال شود تا اقدامات جدی تری صورت گیرد.
  • افزایش دستورات قابل ارسال: با توجه به وجود 8 رله و قابلیت افزایش آن تا 64 رله می تواند دستورات بیشتری برای کنترل دیگر لوازم منزل و عملگرهای دیگر نیز به این سامانه اضافه نمود.
  • بهبود ارتباط با ماژول GSM: شاید با کمی دقت متوجه شده باشید که ارسال دستورات به ماژول GSM در این کد کاملا یک طرفه است و پاسخ های دریافتی از ماژول اصلا بررسی نمی شود. این امر باعث می شود در صورتی که دستورات نا موفق باشند عملکرد کیت دچار اختلال شود. لذا بهتر است پاسخ های دریافتی از ماژول را جهت اطمینان از انجام درست دستورات ارسال، بررسی نمود.

بهبودهای سخت افزاری

این نمونه اولیه شاید برای یک گلخانه کوچک در پاسیو منزل مناسب باشد اما برای گلخانه های اندکی حرفه ای تر نیاز به گسترش در سخت افزار وجود دارد. معماری ماژولار محصولات ProMake شما را در مسیر توسعه تنها نمی گذارد. چند مورد از بهبودهای سخت افزاری گلخانه هوشمند را باهم مرور می کنیم:

  1. افزایش عملگرها: احتمالا وجود دو رله برای کنترل دو عملگر  خیلی محدود کننده است، عملگرهای متعدد مثل: فن ها، چراغ ها، پمپ ها و هیترها و شیربرقی های متعدد نیاز کنترلی زیادی را می طلبد. برای توسعه این بخش می‌تواندبا اتصال ماژول ProMake Universal 8-CH Relay به کانکتور Grove روی کیت امکان کنترل 8 عملگر را داشته باشید. البته می توانید تا 8 عدد از این ماژول ها را به صورت آبشاری به هم متصل کنید و تا حداکثر 64 عملگر مختلف را کنترل نمایید.(البته برای گرفتن عملکرد صحیح نیاز است تغذیه مناسب را برای این ماژول ها فراهم کنید تا جریان کافی برای عملکرد رله ها فراهم باشد)
  2. افزایش سرعت و ظرفیت پردازش:  همان طور که شاید تا کنون مشاهده کرده باشید ماژول های Arduino Nano  استاندارد توان و ظرفیت پردازشی محدودی دارند و با بزرگ شدن برنامه شما به محدودیت های خود رسیده و امکان اجرای برنامه را ندارند و یا در اجرای برنامه با اشکالات غیر متعارف روبرو می شوند. برای حل این مشکل با استفاده از ماژول ProMake STM32 Nano می توانید از سرعت و ظرفیت بیشتر برای پردازش و تحلیل اطلاعات بهره ببرید.
  3. استفاده از پاور بانک: خوب اگر سارقان برق منزل را قبل از ورود قطع کنند این سامانه نیز از کار می افتد. برای اجتناب از این مشکل می بایست از یک پاور بانک در مسیر تغذیه نیز استفاده نمود. همچنین بهتر است وصل بودن برق را نیز با حسگر مربوطه پایش نمود تا در صورت قطع شدن برق هشدار به مالک ارسال شود.(بعضی سارقان برق را قطع می کنند و چند روزی را منتظر می مانند تا باتری های پشتیبان نیز خالی شود!!!)

    هشدار ایمنی: در صورتی که می خواهیدبرای کنترل عملگرها از رله استفاده کنید می بایست از تخصص و مهارت لازم برخوردار باشید. انجام این کار توسط افراد کم تجربه و ناوارد می تواند خطرات جانی و مالی جدی برای شما و دیگران به دنبال داشته باشد. خطر آتش سوزی در صورت عدم رعایت تناسب جریان نامی رله ها و عملگرها بسیار محتمل و گاهاً حتمی است.

    ماژول ProMake STM32 Nano

    STM32 NANO

    استفاده از قدرت STM32 در محیط Arduino IDE