راه اندازی ماژول شبکه توسط آردوینو

راه اندازی شبکه توسط آردوینو و با ماژول وای فای CC3000 ساخته شرکت Texas Instruments دارای ابعادی کوچک و با کاربری آسان است و به راحتی میتوانید در پروژه های آردوینو خود از آن استفاده نمایید.  این  ماژول از ارتباط SPI (نه UART !) استفاده می کند و میتوانید داده های خود را با سرعت مورد نیاز به ماژول بدهید یا از آن بگیرید. این ماژول دارای پایه وقفه می باشد و میتواند این پایه به عنوان ارتباط آسنکرون مورد استفاده قرار بگیرد. این ماژول از استاندارد 802.11b/g و روش های رمزگذاری open/WEP/WPA/WPA2 ، TKIP و AES نیز پشتیبانی می کند. پیاده سازی پروتکل های TCP/IP به صورت داخلی همراه با سوکت BSD به همراه پشتیبانی از TCP و UDP در هر دو حالت کلاینت و سرور از جمله ویژگی های این ماژول است.

Features:

Supply Voltage: 3.3V - 12V

Host Interface: SPI @ 16MHZ

Throughput (TCP): ~4Mbps

IEEE 802.11 b/g Compliant

WEP, WPA/WPA2 (AES and TKIP - Personal) Security Modes

FCC, IC, CE, and TELEC Certified

Onboard WIMAX Antenna

Optional External Antenna Connection

ماژول وای فای CC3000

قطعات مورد نیاز :

برای اجرای این پروژه نیاز به قطعات زیر دارد :

  • 1 عدد برد آردوینو
  • 1 عدد برد آماده ماژول CC3000
  • 1 عدد رله 5V
  • 1 عدد دیود یکسوساز
  • 1 عدد LED
  • 1 عدد مقاومت 220 اهم
  • 1 عدد برد بورد و تعدادی سیم جامپری

برای بخش نرم افزاری این پروژه علاوه بر نرم افزار آردوینو، نیاز به کتابخانه Adafruit’s CC3000 و CC3000 MDNS دارید. همچنین از کتابخانه aREST به منظور ارسال فرمان به رله از طریق ماژول نیز استفاده خواهیم کرد.

دانلود لایبری CC3000 برای آردوینو

دانلود لایبری CC3000_MDNS

دانلود لایبری aREST

مراحل اجرای راه اندازی شبکه توسط آردوینو :

مطابق شکل زیر قطعات مدار را به برد آردوینو متصل نمایید :

سخت افزار این پروژه بسیار ساده است ، دارای دو بلوک هست مدار بلوک ماژول و بلوک رله ، ماژول را به پایه های SPI وصل کنید و رله را هم به یکی از پایه های GPIO آردوینو که در اینجا ما به 8 وصل کرده ایم. بشرح زیر بقیه پایه ها را هم وصل کنید.

  • پایه IRQ ماژول CC3000 را به پایه شماره 3 برد آردوینو متصل نمایید.
  • پایه های SPI را به برد آردوینو به ترتیب MOSI ، MISO ، CLK به پایه های 11 ، 12 ، 13 متصل نمایید.
  • پایه Vin را به تغذیه +5V برد آردوینو و همچنین پایه های GND را متصل نمایید.
  • پایه شماره 8 برد آردوینو را به یک بیس ترانزیتوسر برای سوئیچ رله متصل نمایید. (مطالق توضیحات زیر)
  • به منظور محافظت از مدار در هنگام قطع و وصل رله، دیود یکسوساز را به سیم پیچ رله متصل نمایید.
  • امیتر ترانزیستور را به زمین و یک طرف رله را هم به +5 ولت برد آردوینو وصل کنید. به شکل زیر توجه کنید.
مطلب پیشنهادی:  چند مثال از راه اندازی Lcd tft 2.4 با آردوینو

مثال نحوه استفاده از ترانزیستور در حالت سوئیچ برای راه اندازی رله

در شکل زیر یک نمونه از صحیح رله به برد آردوین نشان داده شده است. همانطور که میبنیید از یک ترانزیستور برای این منظور کمک گرفته شده است از ترانزیستور هایی مانند 2N2222 یا 2N3904 میتوانید برای این منظور هم استفاده کنید. همانطور که در شکل میبینید در این مثال برای قطع وصل یک لامپ 220 ولت از رله و استفاده شده پس در نتیجه باید از ترانزیستور برای این منظور استفاده شود.اتصال رله به برد آردوینو

تست جداگانه قطعات :

میتوانید رله خود را توسط کد زیر تست نمایید :

/*Relay Test Code https://melec.ir */
const int relay_pin = 8; // Relay pin
void setup() {
Serial.begin(9600);
pinMode(relay_pin,OUTPUT);
}

void loop() {
// Activate relay
digitalWrite(relay_pin, HIGH);
// Wait for 1 second
delay(1000);
// Deactivate relay
digitalWrite(relay_pin, LOW);
// Wait for 1 second
delay(1000);
}

عملکرد برنامه :

کافی است آن را بر روی برد آپلود نمایید و رله هر 1 ثانیه قطع و وصل می شود و LED خاموش و روشن می شود.

استفاده از ماژول WiFi :

حال میخواهیم این رله را توسط ماژول وای فای CC3000 کنترل کنیم. در این پروژه ماژول پروتکل TCP را برای ما راه اندازی می کند و ما در آردوینو یک وب سرور طراحی میکنیم. این وب سرور میتواند به درخواست هایی که به آن ارجاع می شود پاسخ دهد. ابتدا کدهای مربوط به آردوینو را بررسی میکنیم و سپس به کدهای بخش سرور می پردازیم.

یک پروژه نمونه دیگر با شیلد ethernet شامل چیپ wiznet W5100  را میتوانید  ببینید. با آردوینو یک وب‌سرور بسازید

هدف اول متصل کردن برد آردوینو به وای فای است و سپس طراحی یک وب سرور و بررسی اتصال به پروتکل TCP و سپس تغییر وضعیت رله متناسب با کد دریافت شده.

مطلب پیشنهادی:  کنترل موتور DC به وسیله بلوتوث

بخش های مهم کد :

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

#include <Adafruit_CC3000.h>
#include <SPI.h>
#include <CC3000_MDNS.h>
#include <Ethernet.h>
#include <aREST.h>

در این بخش کد باید مشخصات WiFi را مشخص نمایید، به عنوان مثال نام وای فای و پسورد آن و همچنین شماره پورت آن (معمولا عدد 80)

// WiFi network (change with your settings!)
#define WLAN_SSID "yourNetwork" // cannot be longer than 32 characters!
#define WLAN_PASS "yourPassword"
#define WLAN_SECURITY WLAN_SEC_WPA2 // This can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, 
// WLAN_SEC_WPA or WLAN_SEC_WPA2

// The port to listen for incoming TCP connections
#define LISTEN_PORT 80

سپس کدهای مربوط به CC3000 قرار می گیرند و استفاده از aREST و پیاده سازی سرور :

// Server instance
Adafruit_CC3000_Server restServer(LISTEN_PORT); // DNS responder instance
MDNSResponder mdns; // Create aREST instance
aREST rest = aREST();

در تابع ()setup ماژول CC3000 را به شبکه متصل می کنیم :

cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY);

کامپیوتر چگونه میداند که باید کدها را به کجا ارسال کند؟ یک روش این است که کدها را اجرا کرده و آدرس IP ماژول CC3000 را به دست آوریم و سپس کد مربوط به سرور را تصحیح کنیم. اما به جای این کار ما از کتابخانه CC3000 MDNS استفاده می کنیم. با استفاده از این کتابخانه یک نام مشخص برای ماژول تعیین میکنیم و این نام را به صورت مستقیم در کد مربوط به سرور استفاده می کنیم.

این کار با استفاده از کد زیر انجام می شود :

if (!mdns.begin("arduino", cc3000)) {
while(1);
}

در این بخش منتظر بسته های دریافتی می مانیم :

restServer.begin();

سپس کدهای مربوط به تابع () loopرا که دائما اجرا می شوند می نویسیم. ابتدا باید سرور mDNS را به روز نماییم :

mdns.update();

سرور پیاده سازی شده بر روی برد آردوینو منتظر می ماند تا درخواستی برای آن ارسال شود.

Adafruit_CC3000_ClientRef client = restServer.available();
rest.handle(client);

حال میتوانیم به سادگی پروژه را با وای فای تست نماییم. کدها را با نام و پسورد وای فای خود تغییر و بر روی برد آپلود نمایید. پنجره سریال را در نرم افزار آردوینو باز کرده و به دنبال آدرس IP برد خود بگردید. دراینجا برای ما این آدرس 192.168.1.103 است.

مرورگر خود را باز کنید و به آدرس زیر بروید.

192.168.1.103/digital/8/1

مشاهده خواهید کرد که رله به صورت اتوماتیک وصل شده است.

طراحی رابط کاربری برای رله :

در این بخش رابط کاربری (یک صفحه وب)پروژه خود را طراحی میکنیم. این واسط دارای 2 بخش است : فایل HTML که شامل کدهای واسط است و کدهای Javascript بخش کلاینت که کلیک های بخش واسطر را پردازش می کند. این واسط بر مبنای پروژه aREST.js نوشته می شود که به منظور کنترل آسان وای فای از طریق کامپیوتر نوشته شده است.

مطلب پیشنهادی:  تغییر شدت نور LED با آردوینو

ابتدا فایل HTML را بررسی می کنیم که نام آن interface.html است. در ابتدا کتابخانه های مورد نیاز اضافه شده اند :

<head>
<meta charset = utf-8 />
<title> Relay Control </title>
<link rel = "stylesheet" type = "text/css" 
href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" type = "text/css" href = "style.css">
<script type = "text/javascript" 
src = "https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type = "text/javascript" 
src = "https://cdn.rawgit.com/Foliotek/AjaxQ/master/ajaxq.js"></script>
<script type = "text/javascript" 
src = "https://cdn.rawgit.com/marcoschwartz/aREST.js/master/aREST.js"></script>
<script type = "text/javascript" 
src = "script.js"></script>
</head>

سپس دو کلید به واسط اضافه شده اند. یک کلید برای روشن کردن رله و دیگری برای خاموش کردن آن.

<div class = 'container'>
<h1>Relay Control</h1>
<div class = 'row'>
<div class = "col-md-1">Relay</div>
<div class = "col-md-2">
<button id = 'on' class = 'btn btn-block btn-success'>On</button>
</div>
<div class = "col-md-2">
<button id = 'off' class = 'btn btn-block btn-danger'>On</button>
</div>
</div>
</div>

همچنین ما به یک فایل Javascript سمت کلایت نیاز داریم تا کلیک های بر روی کلیدها را پردازش نماییم. همچنین یک قطعه کد مربوط به اتصال mDNS به نام مربوط به سخت افزار آردوینو می شود. اگر این بخش را در کد آردوینو تغییر دادید، باید آن را در این بخش نیز تغییر دهید.

// Create device
var device = new Device("arduino.local");
// Button

$('#on').click(function() {
device.digitalWrite(8, 1);
});

$('#off').click(function() {
device.digitalWrite(8, 0);
});

صفحه طراحی شده با کدهای HTML شبیه صفحه ای مانند شکل زیر است :

راه اندازی شبکه توسط آردوینو

با کلیک بر روی هر یک از دکمه های زیر بلافاصله وضعیت رله نیز تغییر خواهد کرد. توانستید یک چراغ قابل کنترل با Wi-Fi بسازید!

البته توسط این پروژه میتوانید چیزهای بسیار بیشتری را کنترل نمایید. فقط توجه نمایید که رله باید توانایی اعمال توان مورد نیاز برای وسایلی که میخواهید به آن متصل نمایید را داشته باشد. با توجه به اینکه در ایران بیشتر از ماژول ESP8266 استفاده میشود بنظرم آموزش راه اندازی ماژول ESP8266 را حتما بخونید. همچنین با AVR و کدویژن نیز یک پروژه مشابه با اترنت انجام شده با عنوان پروژه کنترل رله از طریق شبکه اترنت (وب سرور روی میکروکنترلر) میتوانید ان را نیز بسازید و با کابل شبکه به شبکه وصلش کنید. مزیت آن نسبت به این ارزانتر بودن ان است.امیدوارم مطالب آموزشی براتون مفید واقع شده باشه.

درباره ی محمد حسین کوهی قمصری

دانشجوی کارشناسی برق گرایش الکترونیک

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *