مهندسی برق و کامپیوتر

این ترموستات مجهز به میکروکنترلری پرسرعت می باشد که وظیفه کنترل هوشمند دما و ترموستات را بر عهده دارد، دارای نمایشگر سه گانه که نشانگر تنظیمات و طرز کار ماژول در یک نگاه است، تنظیم ساده، و عملکرد آسان از دیگر مزایای ماژول ترموستات و کنترل دما ۱۲v/10A مدل XH-W1401 است.

لازم به ذکر است که محدوده دمایی وسیع ۹- الی ۹۹ درجه سانتی گراد را اندازه گیری می کند، و دارای سنسور کابلی با طول مناسب است که کار جاگیری و قرارگیری در محل مورد نظر را بسیار ساده می کند.در تصویر فوق نحوه اتصالات و سیم بندی دستگاه به تصویر کشیده شده است، ولی شما می توانید با مشاهده فیلم ذیل آموزش رایگان کار با این دستگاه را داشته باشید:

این دستگاه مجهز به رله قطع و وصل خروجی ۱۰ آمپری بوده و می تواند در کنترلرهای دما، انکوباتورها، گلخانه ها، چیلر،  خشک کن های میوه و زعفران، دستگاه های جوجه کشی و … مورد استفاده قرار گیرد.

برای خرید یکی از بهترین ماژول های ترموستات و کنترل کننده دیجیتال دما با دقت بالا  به سایت فروشگاه مهندسی برق مراجعه فرمایید.

سوالی داشتید، در قسمت نظرات بپرسید، کارشناسان فنی مهندسی برق در اسرع وقت پاسخگو خواهد بود.

منتظر سایر آموزش های ما باشید!


«امتیاز بدید»


امتیاز کاربران:
۴٫۲۵
( ۱ رای)


ادامه مطلب

تا حالا برای بدست آوردن موقعیت مکانی باید یا از ماژولهای gps یا gsm استغاده می کردیم، یا از طریقی (با سیم و یا بیسیم) اطلاعات رو از گوشی و تبلت و لپتاپ می گرفتیم. ولی آیا راهی نیست که بتونیم بدون نیاز به موارد بالا مستقیم موقعیت رو بدست بیاریم؟؟ خوشبختانه چرا هست

هممون از سرویسهای google map و مشتقاتش استفاده کردیم و راجبش اطلاعات داریم. این سرویس از چند سال پیش امکاناتی رو اضافه کرده که سایتها و اپلیکیشن ها می توانند از طریق api گوگل، باهاش کار کنند و موقعیت مکانی مخاطبان سایت و برنامه را بدست بیاورند (البته با اجازه خود کاربر)
حالا چطوری؟؟؟

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

اما روش کار این سیستم چگونه است؟
دکلهای مخابراتی که با نام BTS یا Base Transceiver Station شناخته میشوند را همگی دیده ایم.. هر BTS دارای مشخصات منحصر بفردی در دنیا میباشد.. این مشخصات شامل موارد زیر میباشند : MCC یا Mobile Country Code که نشان دهنده کد کشور میباشد…MNC یا Mobile Network Code که کد اپراتور سرویس دهنده میباشد… LAC یا Location Area Code نشان دهنده کد منطقه میباشد و CellID که نشاندهنده کد آن دکل BTS در منطقه میباشد.. سیستم دزدگیر و ردیاب ماهواره ای خودرو با بدست آوردن این مشخصات از روی نزدکترین دکلهای اطراف که دارای سیگنال قویتری هستند و میانگین گیری کردن از موقعیت آنها نزدیکترین موقعیت را تخمین میزند..همانطور که گفته شد این تخمین نیازی به سیستم GPS نداشته و حتی در مکانهای مسقف نیز محدوده مکانی خودرو را تخمین میزند.

api چیست؟

مختصرا بخوام بگم یسری دستورات و روشی هست که (در اینجا) گوگل مشخص کرده که شما با این دستورات بسادگی میتونید درخواستهاتون رو بفرستید بهش وجوابها رو هم بگیرید.

گرفتن API KEY:
میخوایم با سرویس google geolocation کار کنیم. در ابتدا نیاز به یک api key مخصوص به خودمون داریم که پس از اینکه وارد اکانت گوگل خود شدید، میتوانید از طریق این لینک اون رو برای خودتان بسازید. البته برای باز شدن صفحه به دلیل اینکه این سرویس مثل تقریبا همه سرویسهای گوگل برای آیپی ایران بسته است نیازمند راهی جهت عبور از آن می باشید.به هر نحوی که خود می توانید وارد صفحه ذکر شده شوید و روی get a key کلیک کنید:
مرحله بعدش اگر قبلا پروژه ای ساخته باشید ازتون میخواد که یکی از اونها رو از تو لیست انتخاب کنید و یا اگر دفعه اول باشه  باید یه اسم برای پروژتون انتخاب کنید:
حال کلید داده شده را کپی و در یک جای امن ذخیره کنید.
قبل از ادامه مطلب پیشنهاد میکنم دوستان یسری اطلاعات درمورد انواع ارتباط با اینترنت و پروتکل های ارتباطیش و انواع درخواستها و … کسب کنند که برای کار با ماژولهای esp شدیدا مورد نیاز است. یکی از این اطلاعات هم شناخت و کار با فرمت json می باشد که اگه بتونید خوب باهاش کار کنید، پروژه های مشابه این پروژه براحتی میتونید راه اندازی کنید و با api مربوطه ارتباط برقرار کنید. پروژه هایی مثل دستورات صدا و کلامی ، اطلاعات آب وهوا و دما ، ساعت ntp و… برای راه اندازی و برنامه نویسی esp8266 از آردوینواستفاده شده است.
برنامه نویسی:
برنامش چیز خاصی نداره فقط باید درخواست رو تحت همون فرمت json ارسال و اطلاعات رو هم با همون فرمت دریافت کنید. خبر خوب اینکه یه دوست عزیزی این کاررو هم برامون انجام داده و کارمون رو راحت و آسون کرده در صفحه گیت هاب ایشون دو فایل آردوینو هست: یکی خروجی رو روی oled نشون میده و دیگری در پنجره سریال مانیتور. چون ما معمولا طول وعرض جغرافیایی بدست آورده را نه برای نمایش بلکه برای ارسال یا دیدن در نقشه و … نیاز دارم پس من از فایل Geolocation_without_display.ino استفاده کردم.
https://github.com/techiesms/Geolocation
فقط موارد زیررا بایدمتناسب با شرایط خودتان در فایل تغییر بدهید:
myssid و mypass » نام و پسورد مودم برای اتصال به اینترنت ماژولesp
homeMobileCountryCode همان mcc
key  همان api key که از گوگل گرفتیم
homeMobileNetworkCode» همان mnc
mcc و mnc رو میتونید از یکی ازاین دو لینک بگیرید: این لینک یا این لینک   که mccبرای ایران ۴۳۲ هست و mnc بستگی به اپراتور اینترنتتون داره.

برنامه تعیین موقعیت مکانی با ماژول ESP8266:

/*********************************************************************  This is the code for Fetching your location from Google Geolocation API
   
  This code is provided by 
  techiesms
*********************************************************************/
 
 
[URL=https://www.مهندسی برق.ir/forums/usertag.php?do=list&action=hash&hash=include]#include[/URL]  <ESP8266HTTPClient.h>
[URL=https://www.مهندسی برق.ir/forums/usertag.php?do=list&action=hash&hash=include]#include[/URL]  <ArduinoJson.h>
[URL=https://www.مهندسی برق.ir/forums/usertag.php?do=list&action=hash&hash=include]#include[/URL]  "ESP8266WiFi.h"
 
 
char myssid[] = "SSID"         // your network SSID (name)
char mypass[] = "PASS"          // your network password
 
 
 
 
//Credentials for Google GeoLocation API...
const char* Host = "www.googleapis.com";
String thisPage = "/geolocation/v1/geolocate?key=";
String key = "YOUR_API_KEY";
 
 
int status = WL_IDLE_STATUS;
String jsonString = "{n";
 
 
double latitude    = 0.0;
double longitude   = 0.0;
double accuracy    = 0.0;
int more_text = 1; // set to 1 for more debug output
 
 
 
 
 
 
 
 
void setup()   {
  Serial.begin(115200);
 
 
 
 
  Serial.println("Start");
  // Set WiFi to station mode and disconnect from an AP if it was previously connected
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
  Serial.println("Setup done");
  // We start by connecting to a WiFi network
  Serial.print("Connecting to ");
  Serial.println(myssid);
  WiFi.begin(myssid, mypass);
 
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(".");
 
 
 
 
}
 
 
 
 
void loop() {
 
 
  char bssid[6];
  DynamicJsonBuffer jsonBuffer;
  Serial.println("scan start");
  // WiFi.scanNetworks will return the number of networks found
  int n = WiFi.scanNetworks();
  Serial.println("scan done");
  if (n == 0)
    Serial.println("no networks found");
  else
  {
    Serial.print(n);
    Serial.println(" networks found...");
 
 
    if (more_text) {
      // Print out the formatted json...
      Serial.println("{");
      Serial.println(""homeMobileCountryCode": 432,");  // this is a real UK MCC
      Serial.println(""homeMobileNetworkCode": 19,");   // and a real UK MNC
      Serial.println(""radioType": "gsm",");          // for gsm
      Serial.println(""carrier": "Vodafone",");       // associated with Vodafone
      //Serial.println(""cellTowers": [");                // I'm not reporting any cell towers
      //Serial.println("],");
      Serial.println(""wifiAccessPoints": [");
      for (int i = 0; i < n; ++i)
      {
        Serial.println("{");
        Serial.print(""macAddress" : "");
        Serial.print(WiFi.BSSIDstr(i));
        Serial.println("",");
        Serial.print(""signalStrength": ");
        Serial.println(WiFi.RSSI(i));
        if (i < n - 1)
        {
          Serial.println("},");
        }
        else
        {
          Serial.println("}");
        }
      }
      Serial.println("]");
      Serial.println("}");
    }
    Serial.println(" ");
  }
  // now build the jsonString...
  jsonString = "{n";
  jsonString += ""homeMobileCountryCode": 432,n"; // this is a real UK MCC last 234
  jsonString += ""homeMobileNetworkCode": 19,n";  // and a real UK MNC lasr 27
  jsonString += ""radioType": "gsm",n";         // for gsm
  jsonString += ""carrier": "Vodafone",n";      // associated with Vodafone
  jsonString += ""wifiAccessPoints": [n";
  for (int j = 0; j < n; ++j)
  {
    jsonString += "{n";
    jsonString += ""macAddress" : "";
    jsonString += (WiFi.BSSIDstr(j));
    jsonString += "",n";
    jsonString += ""signalStrength": ";
    jsonString += WiFi.RSSI(j);
    jsonString += "n";
    if (j < n - 1)
    {
      jsonString += "},n";
    }
    else
    {
      jsonString += "}n";
    }
  }
  jsonString += ("]n");
  jsonString += ("}n");
  //--------------------------------------------------------------------
 
 
  Serial.println("");
 
 
  WiFiClientSecure client;
 
 
  //Connect to the client and make the api call
  Serial.print("Requesting URL: ");
  Serial.println("https://" + (String)Host + thisPage + "AIzaSyCYNXIYINPmTNIdusMjJloS4_BXSOff1_g");
  Serial.println(" ");
  if (client.connect(Host, 443)) {
    Serial.println("Connected");
    client.println("POST " + thisPage + key + " HTTP/1.1");
    client.println("Host: " + (String)Host);
    client.println("Connection: close");
    client.println("Content-Type: application/json");
    client.println("User-Agent: Arduino/1.0");
    client.print("Content-Length: ");
    client.println(jsonString.length());
    client.println();
    client.print(jsonString);
    delay(500);
  }
 
 
  //Read and parse all the lines of the reply from server
  while (client.available()) {
    String line = client.readStringUntil('r');
    if (more_text) {
      Serial.print(line);
    }
    JsonObject& root = jsonBuffer.parseObject(line);
    if (root.success()) {
      latitude    = root["location"]["lat"];
      longitude   = root["location"]["lng"];
      accuracy   = root["accuracy"];
    }
  }
 
 
  Serial.println("closing connection");
  Serial.println();
  client.stop();
 
 
  Serial.print("Latitude = ");
  Serial.println(latitude, 6);
  Serial.print("Longitude = ");
  Serial.println(longitude, 6);
  Serial.print("Accuracy = ");
  Serial.println(accuracy);
 
}

اجرا:
پس از کامپایل و اجرا در پنجره سریال مانیتور، مقدار دو عبارت
Latitudeو Longitude طول و عرض جغرافیایی ما هستند.
نمایش:
برای مشاهده میتوانید از این لینک استفاده کرده ، مقادیر بالا را درآن جایگزین کرده و در مرورگر کروم یا … لینک مذکور رو اجرا کنید

https://www.google.com/maps/@Latitude,Longitude,18z
۱۸z میزان زوم تصویر می باشد.

لینک مطلب در انجمن: https://www.مهندسی برق.ir/forums/thread78943.html

نویسنده: digi-rx

نوشته تعیین موقعیت مکانی با ماژول ESP8266 اولین بار در وب سایت تخصصی برق و الکترونیک پدیدار شد.

ادامه مطلب

با اینکه ساخت ساعت‌های دیجیتالی را نمی‌توان از جذاب‌ترین پروژه‌های (DIY (Do It Yourself به‌حساب آورد، اما هنوز هرساله علاقه‌مندان زیادی آن‌ها را در اشکال و اندازه‌ های مختلف می‌سازند. بسیاری از ساعت‌های دیجیتالی خانگی (ساخته‌شده توسط علاقه‌مندان) با استفاده از اتصال بردهای آردوینو یا میکرو کنترل‌های دیگر به یک تراشه‌ی ساعت زمان واقعی یا (RTC (real time clock به دست می‌آید. اگر از مواد باکیفیت در ساخت ساعت استفاده شود، دقت آن میتواند بسیار خوب باشد.

محصولی که عموماً به اسم «ساعت‌های اتمی» یا «ساعت‌های دیجیتالی» شناخته می‌شود برای رفع مشکلات تنظیم دستی ساعت، تاریخ و خطاهای زمانی، به بازار عرضه شد. آن‌ها تقریباً به هر شکل و اندازه‌ای که می‌توان متصور شد پدید آمدند.
این ساعت‌ها از سیستم نقل‌وانتقال رادیویی WWV که توسط فورت کولینز (CO) معرفی شد پیروی می‌کنند و مکانیزم‌های احتساب زمان خود را با سیستم بازخورد ساعت اتمی که برای این نوع نقل‌وانتقال مورد استفاده قرار می‌گیرد، هماهنگ می‌کنند. این موضوع دقت محاسبه و نمایش زمان آن‌ها را تضمین می‌کند. ساعت‌های این‌چنینی معمولاً نیازمند تنظیم اولیه دستی یا انتخاب ساعت رسمی توسط مصرف‌کننده هستند، ولی بعضی از آن‌ها گزینه‌ای کنترلی برای تنظیم دستی زمان ندارند.
مکانیزم ساعت در کامپیوترهای شخصی متفاوت عمل می‌کند. کامپیوترهای شخصی معمولاً (RTC (real-time clock خود را با استفاده از یک نوع استاندارد اینترنتی که «زمان معین شبکه» یا «network time protocol» (به‌اختصار NTP) نامیده می‌شود، تنظیم می‌کنند.

بنا به مرجع ویکی‌پدیا:

«پروتکل NTP، یک پروتکل شبکه برای هماهنگ‌سازی ساعت بین کامپیوترها در شبکه‌های اطلاعاتی به‌صورت بسته‌ای-سوئیچینگ و متغیر-پنهانی، می‌باشد.
هدف NTP هماهنگ‌سازی تمام کامپیوترهای مرتبط، با زمان بین‌المللی تعیین‌شده (UTC) با خطایی در حد چند میلی‌ثانیه هست.
معمولاً NTP توانایی حفظ دقت زمان را در حد چند ده میلی‌ثانیه در محیط اینترنت عمومی داراست و همچنین میتواند در شرایط ایده آل به دقتی نظیر یک میلی‌ثانیه در محدوده‌ی اینترنت محلی دست پیدا کند.»
طراحی یک ساعت دیجیتالی بر پایه‌ی NTP نیازمند دسترسی به اینترنت می‏باشد که ممکن است بهای تمام‌شده را بالا ببرد، اما امکان طراحی یک ساعت ساده را به دو دلیل فراهم می‏سازد. اول اینکه نیاز به باطری داخلی برای حفظ تنظیمات ساعت از میان برداشته می‌شود. زمانی که تغذیه‏ ی ساعت قطع می‏شود، هنگام وصل مجدد آن ارتباط اینترنت دوباره برقرارشده و ساعت خود را با زمان صحیح به‌صورت خودکار تنظیم می‌کند. دوم اینکه احتیاجی به امکان تنظیم دستی ضرورتی نخواهد داشت، چراکه تنظیمات زمان و تاریخ تماماً اتوماتیک انجام می‏گیرد.

دستگاه‌های خانواده ‏ی ESP8266 امکان دسترسی ارزان و بی‌دردسر به اینترنت را فراهم می‎آورند، پس طبیعی است که از این دستگاه‌ها در یک ساعت NTP استفاده شود.

قطعات خانواده‌ی ESP8266 مشخصاتی اساسی را به اشتراک می‌گذارند که شامل موارد زیر است:

  • ۸۰۲٫۱۱ b/g/n
  • وای‌فای مستقیم p2p)، soft-AP)
  • بسته‏ ی داخلی پروتکل TCP/IP
  • حالت ۸۰۲٫۱۱b + 19.5 dBm قدرت خروجی
  • حسگر داخلی دما
  • سازگاری با انواع آنتن‌ها
  • نشتی جریان خاموشی کمتر از ۱۰ میکرو آمپر
  • پردازنده‏ ی مرکزی داخلی و کم‌مصرف ۳۲ بیتی با توان مضاعف نسبت به یک پردازنده ‏ی نرم ‏افزاری
  • مصرف حالت آماده‌به‌کار کمتر از ۱ میلی وات (DTIM3)
  • SDIO 2.0,SPI,UART,ADC,EEPROM

به‌عبارت‌دیگر ماژول‌های خانواده ‏ی ESP8266 امتیازاتی نظیر مصرف کم، قدرت خروجی RF بالا و توانایی پشتیبانی از استانداردهای فعلی۸۰۲٫۱۱ موردنیاز برای ارتباطات وای‌فای را، فراهم می‏سازند. ضمن اینکه با بسیاری از واسط‌های سخت‌افزاری استاندارد صنعتی سازگار بوده و می‏توانند به‌عنوان پردازنده ‏ی نرم‌افزاری در مدل‌های مختلف عمل کنند، چنان‌که در این نمونه مشاهده می‏شود، ESP8266 یک قطعه‏ ی ۳٫۳ ولتی DC است.

دو چیز استفاده از این قطعات را جذاب‏تر می‌نماید. نخست اینکه بسیاری از ماژول‌های ESP8266 را می‏توان به قیمت تک‌فروشی زیر ۴ دلار خریداری کرد. ثانیاً این قطعات قابل‌برنامه‌ریزی در محیط IDE بوردهای آردوینو می‌باشند، لذا برنامه‌نویسان آردوینو مجبور به یادگیری زبان برنامه‏ نویسی دیگری برای استفاده از آن‌ها نخواهند بود.
در این مقاله، سعی کردم طراحی و ساخت یک ساعت دیجیتالی ساده ‏ی NTP بر پایه‏ ی ESP8266 که یک نمایشگر LCD را به کار می‌بندد، ارائه دهم. در حقیقت، من یک‌ گونه ESP8266 را با نام NodeMCU LUA Amica استفاده کردم، به دلیل داشتن پایه‏ های متعدد IO دیجیتالی که اتصال راحت به نمایشگر را میسر می‏سازد. این ساعت دارای یک میکرو سوئیچ است که (در صورت تعریف و پیاده‌سازی حالت day light saving) کاربر را قادر می‏سازد با فشار آن ساعت را از حالت day light saving خارج نماید.

طراحی این ساعت باعث شد استفاده کردن از قابلیت‌ها و وجوه دیگرِ ESP8266 را که تا قبل از این به کار نبرده بودم را، تجربه کنم؛ به‌علاوه‌ی استفاده از واسط سخت‌افزار SPI برای راه‌اندازی نمایشگر LCD و EEPROM داخلی برای ذخیره‌سازی و بازیابی شاخص وضعیتیDST .

سخت‌افزار

جدول قطعات سخت‌افزاری موردنیاز برای ساخت این ساعت‌های NTP را نشان می‌دهد. همان‌طور که خواهید دید تهیه آن‌ها چنان سخت و گران نیست. شکل ۱، یک‌شکل و دیاگرام اولیه و خاموش اتصالات برای ساعت NTP را نشان می‌دهد. شکل ۲، طرح سیم‌کشی شده و در حال کار را بر روی برد بورد نمایش می‌دهد.

نکته: هیچ رابطه ‏ای بین رنگ سیم‌ها در شکل ۱ و ۲ وجود ندارد.

همان‌طور که نشان داده شد ساعت از طریق یک کابل USB و یک ماژول منبع ولتاژ USB تغذیه می‌شود. اتصالات سیم به سیم در جدول‌۱ نشان داده‌شده است. گزینه‎های انتخاب پایه‏های GPIO نیز در این جدول نشان داده‌شده‌اند. خطوط I/O به این شکل در کدنویسی آردوینو اشاره و تعریف شده‌اند. نمایشگر LCD به کار برده شده دارای یک ورودی کارت حافظه‏ ی میکرو SD و واسط برای استفاده از ESP8266، می‏باشد. موارد اشاره‌شده در این پروژه خاص موردنیاز نبودند.

نرم‌افزار

نرم‌افزار موردنیاز برای ساعت NTP تحت ESP8266، توسط محیط برنامه‌نویسی آردوینو کدنویسی شده بود. بدین منظور به مقالات قبلی من و یا فصل‌هایی از منابع رجوع کنید که در آن‌ها از مهیاسازی محیط برنامه‌نویسی آردوینو به‌منظور استفاده از دستگاه‌های نوع ESP8266 بر روی کامپیوتر بحث شده است. مطمئن شوید که از سربرگ ابزار گزینه ‏ی (NodeMCU 1.0 (ESP-12E Moduleرا به‌عنوان نوع بورد خود انتخاب کنید.

نرم‌افزار ساعت NTP ESP8266 در لینک مقاله در دسترس بوده و Lindley_ESP8266NTPClock.zip نام‌گذاری شده‌است. برای استفاده از نرم‌افزار آن را unzip نموده و بعد از کپی از فایل مرجع ESP8266NTPClock آن را به کتابخانه یا همان فایل‌های مرجع آردوینو انتقال دهید.
همان‌قدر که سخت‌افزار این ساعت ساده و پیش پا افتاده به نظر می‏آید، برنامه ‏ها و نرم‌افزارهای اساسی آن قدری درهم و پیچیده‌تر می‌باشد. ۷ فایلی که برای راه‌اندازی و شکل‌دهی کدنویسی نیاز است در جدول ۲ توضیح داده‌شده‌است. کد عملگر نمایشگر ESP8266_ST7735 برای امکان استفاده از واسط سخت‌افزاری SPI در ESP8266، با کتابخانه یا مرجع Adafruit ST7735 سازگار شده‏ است. اگر شما قصد دارید از یک نمایشگر متفاوت استفاده کنید، مجبور خواهید بود یک عملگر مناسب پیدا کرده و یا خودتان آن را بنویسید. به‌اضافه‌ی فایل‌های بالا، یک فایل مرجع آردوینو نیز مورد نیاز هست. نسخه‌ای از کتابخانه‌هایی که برای ساخت این ساعت NTP استفاده‌شده، به فایل zip این مقاله اضافه‌شده است.
فراموش نکنید که کتابخانه‌ها و فایل‌های مرجع باید در آدرس Arduino/libraries از کامپیوتر مورداستفاده نصب‌شده و برای شناسایی آن‌ها توسط محیط برنامه‌نویسی آردوینو، این برنامه باید راه‌اندازی مجدد شود.
بسیاری از کدهای موردنیاز برای شکل‌دهی ساعت NTP بسیار سرراست و به‌آسانی قابل‌درک هستند. فقط کد NTP در فایل NTP.h کمی پیچیده می‏باشد. برای بازیابی زمان، نیازمند دریافت آدرس IP از یک سرور زمانی در آدرس اشتراک عمومی time.nist.gov با استفاده از گزینه‏ی hostbyname (میزبانی با نام) هستید، همان‌طور که در دستور زیر نشان داده‌شده است. اگر هنگام عملکرد ساعت آدرس timeServerIP را زیر نظر گرفته باشید، احتمالاً دیده‌اید که درخواست زمان در یک الگوریتم Round-Robin) RR) میان سرورها در time.nist.gov می‏چرخد.
اگر سروری برای درخواست دادن زمان پیدا کردید، باید یک بسته ‌(UDP (packet که با مقادیر آماده‌شده همخوانی داشته باشد ایجاد نموده و به‌صورت یک پکیج بفرستید. لینک زیر را برای نمونه‌های بیشتر از زمینه‌ها و محتویات پکیج درخواست ببینید:

https://tools.ietf.org/html/rfc5905#section-7.3

دستور sendNTPPacket نیز آن را انجام می‌دهد:

وقتی پکیج درخواست فرستاده شد، شما منتظر جواب خواهید ماند. در آن جواب یک نشانگر زمان (۴ بایتی که از ۴۰ امین بایت پاسخ شروع می‌شود) زمانی را که پکیج فرستاده بود، واگذار می‌کند. واحد استفاده‌شده در این بسته، تعداد ثانیه از سال ۱۹۰۰ تا این لحظه بوده و عدد بسیار بزرگی است. این مقدار به زمان Unix (که تعداد ثانیه‏های اکنون تا تاریخ یکم ژانویه‌ی ۱۹۷۰ بود) با کاستن تعداد ثانیه‌های مابین سال‌های ۱۹۰۰ تا ۱۹۷۰، تغییر پیدا کرد.

این رمهندسی برق بعدها به‌وسیله‌ی اصلاح زمانی منطقه‌ای تغییر و تائید شد. این اصلاح در کتابخانه‌ی زمانی مورداستفاده قرارگرفته و به زمان و تاریخ دقیقی که این ساعت نمایش می‌دهد، تبدیل شده است.

دستور getNTPTime اطلاعات زیر را دریافت می‌کند:

چیدمان کلی برای کاربران نرم‌افزار ساعت NTP

نرم‌افزار ساعت NTP باید قبل از شروع به کار دقیق، شکل‌دهی و سازگار شود. تمام موارد شکل‌دهی برای کاربران را در فایل ESP8266NTPClock.ino file می‏توانید بیابید. لطفاً کدهای جدول زیر را در فایل جاگذاری کنید:

اولین و مهم‌ترین کار این است که کد مربوطه را با اسم کاربری SS و رمز عبور وای فای اینترنت خود مطابقت دهید، وگرنه ساعت قادر به دسترسی به اینترنت و به‌تبع آن به سرورهای NTP که زمان را در اختیار می‌گذارند، نخواهد بود. در مرحله بعد باید زمانی را که برای منطقه شما پیش‌بینی‌شده تنظیم کنید. زمان‌های محلی معین‌شده را می‌توان در لینک زیر یافت:

https://en.wikipedia.org/wiki/List_of_UTC_time_offsets

سپس باید تصمیم بگیرید که ساعت شما از گزینه‌ی DST استفاده کند یا خیر و هم‌چنین ساعت باید در حالت ۱۲ ساعته کار کند یا حالت ۲۴ ساعته. اگر از DST در ساعت استفاده می‌کنید USE_DST باید درست تنظیم شود، در صورت تنظیم شدن یا نشدن، به‌هرحال DST دائماً تحت تأثیر است. گزینه HOUR_FORMAT_12 را درست انتخاب کنید تا ساعت در حالت ۱۲ ساعته کار کند، وگرنه در حالت ۲۴ ساعته شروع به کار خواهد کرد.
برنامه زمانی می‌تواند تبدیل‌شده و بر روی دستگاه NodeMCU بارگذاری شود که اطلاعات کاملاً شکل‌دهی و سازگاری داده‌شده باشند و تمام فایل‌های مرجع موردنیاز بر روی محیط برنامه‌نویسی آردوینو نصب‌شده باشند.

عملکرد ساعت NTP

ساعت باید بلافاصله با بارگذاری و نصب شدن برنامه شروع به کار کند. شکل ۳ نمایشگر ساعت را در اثنای اتصال آن به وای‌فای شبکه اینترنت محلی نشان می‌دهد. اگر این تصویر به ساعت نمایشگر نشان داده‌شده در شکل ۴ تغییر نکند، نشان‌دهنده‌ی آن است که مشکلی در برقراری ارتباط با وای‌فای اینترنت وجود دارد. اگر چنین بود به برنامه مراجعه کرده، مقادیر WIFI_PASS و WIFI_SSID را بررسی و در صورت لزوم اصلاح نمایید تا وای‌فای شبکه به کار بیفتد.
همان‌طور که اشاره شد صفحه‌ی اتصال به وای‌فای زمانی که ارتباط وای‌فای برقرار شد باید به صفحه‌ی نمایش ساعت در شکل ۴ تغییر کند. اگر ساعت برای استفاده از حالت DST برنامه‌ریزی نشده باشد، کار تمام است. ساعت باید تا زمانی که تغذیه می‌شود به کار خود ادامه دهد و زمان خود را هر ۵ دقیقه با سرور زمانی NTP هماهنگ و تنظیم خواهد کرد. این موضوع ساعت را کاملاً دقیق می‌کند.
اگر ساعت برای اعمال حالت DST تطبیق داده‌شده باشد (USE_DST انتخاب‌شده باشد) تنظیم آن بر روی حالت DST درصورتی‌که در آن تاریخ DST در حال اجرا باشد (بین ماه‌های آوریل تا نوامبر در آمریکا)، به کاربر بستگی دارد. حالت DST جزء تنظیمات معمول و اولیه‌ی ساعت نمی‌باشد، پس کاربر باید دکمه آن را تا زمانی که نوشته‌ی DST بر روی گوشه‌ی سمت راست بالای صفحه ظاهر شود، فشار دهد. متوجه خواهید شد که ساعت در حال نمایش، وقتی حالت DST وارد عمل می‌شود تغییر خواهد کرد. فشار مجدد دکمه‌ی DST ساعت را از حالت DST خارج می‌کند.
مادامی‌که ساعت انرژی دریافت می‌کند، به کار خود ادامه خواهد داد. اگر اتصال اینترنت دچار مشکل شود، ساعت زمان خود را حفظ کرده و نمایش می‌دهد. اگر وای‌فای قطع شود، اما ساعت همچنان فعال باقی‌مانده باشد، زمانی که مشکل اینترنت حل شد نیاز به راه‌اندازی مجدد خواهد داشت و درنتیجه هماهنگ‌سازی NTP از سر گرفته می‌شود. اگر هم ساعت و هم مودم اینترنت هم‌زمان خاموش شوند، ساعت خودش راه‌اندازی مجدد شده منتظر برقراری اتصال اینترنت می‌ماند و سپس خودکار به شبکه وصل می‌شود.
اگر ساعت در شرایط کاری و عملیاتی باشد، زمان و تاریخ هر یک دقیقه به‌روزرسانی می‌شوند. در طول روز عکس خورشید در گوشه‌ی سمت چپ بالای صفحه نمایش داده می‌شود. نماد خورشید بعد از حدود ساعت ۸ عصر جای خود را به نماد ماه می‌دهد.
وقتی زمان DST رسید و گذشت، کاربر ملزم خواهد بود که با فشار دادن دکمه‌ی DST که مخصوص خاموش و روشن کردن این حالت است، به ساعت اطلاع داده و آن را تنظیم کند. به‌جز آن، مورد عملی تکرارشونده‌ی دیگری که از کاربر توقع رود، برای نگهداری و استفاده وجود ندارد.

به‌عنوان آخرین نکته، وضعیت فعال DST هر بار با فشار داده شدن میکروسویچ DST در حافظه‌ی EEPROM ماژول ESP8266 ثبت شد. برگرداندن ساعت به وضعیت صحیح، حالت DST بعد از هر بار قطع و وصل شدن یا خاموش و روشن شدن آن ضروری است.

فایل Misc.h را برای کدهای خواندن و نوشتن بر روی حافظه‌ی EEPROM مطالعه کنید.
امیدوارم از زمانی که با من اینجا گذراندید، لذت برده باشید و ساختن یک ساعت دیگر با طراحی خودتان را متصور شده، در دستور کار قرار داده باشید.

  • توجه داشته باشید: وقتی زمان صرفه جویی در تابستان روشن است (DST)نمایش داده می‌شود.
  • آیکون خورشید در طول روز نمایش داده شده می‌شود.

دانلود فایل های مورد نیازNTP

منبع: این مطلب در مجله مهندسی برق شماره ۱۴ منتشر شده است

ادامه مطلب

تا حالا شده بخواهید لامپ ها، وسایل، درب و سایر سیستم ها و تجهیزات منزل یا محل کار خود رو کنترل کنید، در اینجا به شما دستگاهی رو معرفی می کنیم که بتونید ۱۲ دستگاه رو به حالت های مختلفی روشن/خاموش کنید.

فیلم زیر رو ببینید:

این محصول یک برد گیرنده را شامل می شود که با استفاده از آن می توان از راه دور وسایل الکتریکی مختلفی را کنترل کرد برای تحریک آن لازم است یک ریموت ۱۲ کانال با فرکانس کاری مشابه نیز تهیه گردد.

ویژگی‌ها:

  • دارای جعبه اختصاصی با کیفیت بالا
  • دارای ۱۲ کانال با رله ۱۰ آمپری
  • تغذیه برد گیرنده با ولتاژ ۱۲ ولت
  • کارکرد در فرکانس ۳۱۵MHz
  • در دسترس بودن تمام پایه های رله ( NC-COM-NO )
  • استفاده در فاصله ۱۰۰ متری در فضای باز

بدین وسیله به راحتی می توانید با کمک یک ریموت کدفیکس ۱۲کاناله چندین وسیله را از طریق رله خاموش و روشن نمایید. بدیهی است تنظیم کدها در بین فرستنده(ریموت) و گیرنده باید یکسان باشد.

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

حالتهای کاری:

  • لحظه ای : یعنی تا مادامی که دکمه ریموت را فشار دهید، خروجی وصل است.
  • الاکلنگی : در این حالت همواره فقط یک کانال وصل است و بقیه کانال ها قطع می باشند، یعنی مثلا وقتی رله شماره ۱ فعال است و کلید شماره ۲ تحریک می شود، همه رله ها از جمله رله شماره ۱ قطع و تنها رله شماره ۲ وصل خواهد شد.
  • حافظه ای (لچ) : یعنی با فشردن یک کلید ریموت، کانال مربوطه وصل و با دوباره فشردن همان کلید، کانال قطع می گردد.

کاربردها:

  • درب های اتوماتیک
  • انواع لوسترها
  • انواع لوازم برقی خانگی یا صنعتی
  • انواع پمپ ها
  • انواع چراغ های تزئینی و ویترینی
  • و….

خرید تجهیزات معرفی شده، در فروشگاه مهندسی برق:


ادامه مطلب

مدار فرستنده اف ام با کیفیت بالا ( High Fidelity FM Transmitter )

پخش رادیو FM با استفاده از تکنولوژی مدولاسیون فرکانس ( Frequency Modulation = FM ) پخش می شود. برای دستیابی به پخش عالی موسیقی و گفتار، تمام فرکانس های صوتی از ۰ تا ۱۵ کیلوهرتز را باید انتقال داد. در این پست نحوه ساخت یک مدار فرستنده اف ام با کیفیت بالا را خواهید آموخت که با استفاده از قطعات ساده و در دسترس قابل ساخت است.

فرکانس خروجی این فرستنده با استفاده از حلقه فاز قفل شده ( PLL ) روی ۹۶ مگاهرتز تنظیم و قفل شده است.

جزئیات مدار فرستنده اف ام با کیفیت بالا

این مدار از چند جزء تشکیل شده است:

  •  IC1 = 74AC74 : دو فلیپ فلاپ نوع D با تریگر لبه مثبت
  • IC3 and IC5 = CD4060 : شمارنده دودویی
  • IC6 = LM386 : تقویت کننده صوتی توان پایین
  • IC4 = CD4046 : حلقه فاز قفل شده ( PLL )
  • IC2 = 7805 : رگولاتور ولتاژ
  • و چندین جزء دیگر…

مدار فرستنده اف ام با کیفیت بالا ( High Fidelity FM Transmitter )

بلوک دیاگرام مدار فرستنده FM

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

بلوک دیاگرام مدار فرستنده اف ام با کیفیت بالا

جزئیات بلوک دیاگرام

  • Audio Amplifier : تقویت کننده صوتی
  • RF Oscillator : نوسان ساز موج رادیویی
  • Antenna : آنتن (یک قطعه سیم به طول ۷۸ سانتیمتر)
  • VHF Prescaler : کاهش دهنده سطح سیگنال خروجی نسبت به سیگنال ورودی باند VHF
  • CMOS Divider : تقسیم کننده CMOS
  • PLL Comparator : مقایسه گر PLL
  • Crystal OSC/REF Frequency 750KHZ : نوسان ساز کریستالی با فرکانس مرجع ۷۵۰ کیلوهرتز
  • Loop Filter : فیلتر حلقه

طرز کار مدار فرستنده اف ام با کیفیت بالا

ترانزیستور T1 همراه با مقاومت R1، R2 و R3، خازن های C2 و C5، کویل L1، خازن ترمینال VC1 و دیود Varactor D1، یک نوسانگر تحت کنترل ولتاژ (VCO) را در پیکربندی Pierce تشکیل می دهند.

IC1 به عنوان یک دستگاه VHF Prescaler عمل می کند و فرکانس نوسانگر را به یک چهارم تقسیم می کند.

خروجی RF سطح پایین از طریق L1 به حالت نیمه خاموش می رود و به پین ​​۳ از IC1 از طریق C3 و به آنتن از طریق C4 تغذیه می شود.

خروجی ۲۴ مگاهرتزی (۹۶ مگاهرتز / ۴) از Prescaler دیجیتال توسط شمارنده باینری IC3 تقسیم می شود. این سیگنال در پین ۵ (Q5) موجود است.

نوسان ساز مرجع PLL

IC5 به عنوان یک نوسان کننده مرجع برای PLL استفاده می شود که فرکانس پایدار ۷۵۰kHz را در پین ۷ آن تولید می کند. IC4 دو سیگنال ۷۵۰kHz ارائه شده به پین ​​۳ و ۱۴ آن را مقایسه می کند و سپس بزرگترین فرکانس را تعیین می کند. نتیجه در پین ۱۳ آن، که سوئیچ بین ۱۲ و ۰ ولت است، در دسترس است.

فیلترها

پین ۱۳ از IC4 به یک فیلتر متشکل از R10 و C16 متصل می شود.

C16 به ولتاژ DC متصل می شود و بنابراین ولتاژ کنترل را برای مدار کنترل فرکانس نوسان فرستنده و دیود varactor از طریق R11 و R14 فراهم می کند.

R13 و C17 یک فیلتر دیگر را تشکیل می دهند.

هر دو فیلتر دارای مقاومت های تعدیل کننده، R12 و R13، برای کاهش میزان کنترل حلقه است. بدون این مقاومت ها، مدار کنترل بیش از یک فرکانس اشتباه را تصحیح می کند و موجب خطای فرکانس بزرگتر و در جهت مخالف می شود.

اصلاح فرکانس

سیگنال خطا از پین ۱۳ از IC4 فیلتر شده و به دیود وارکتور متصل می شود تا فرکانس را اصلاح کند. در نتیجه، نوسانگر تثبیت شده و به یک کریستال ۱۲ مگاهرتزی ارجاع داده می شود، که پایداری کریستال را به ارمغان می آورد. اما نوسانگر هنوز هم می تواند سیگنال های صوتی ± ۷۵kHz (مدولاسیون فرکانس باند فرکانس) را مدوله کند. اگر کریستال به طور مستقیم نوسانگر را کنترل می کرد، این غیر ممکن بود.

هنگامی که فرستنده در ابتدا روشن می شود، برای چند ثانیه اجازه کوپل فرکانس را می دهد. این یک مزاحم کوچک است اما اجازه می دهد فرکانس مدولاسیون فرستنده تا ۱۰Hz پایین تر باشد.

ورودی های صدا

ورودی صوتی استریو از جک های صوتی JACK1 و JACK2 گرفته شده و در R15 و R16 ترکیب شده است.

VR2 برای کنترل صدا است. فرکانس صوتی تقویت شده (AF) از IC6 به دیود varactor از طریق R17 و C23 برای مدولاسیون فرکانس سیگنال RF تغذیه می شود.

آنتن

یک قطعه سیم (طول ۷۸ سانتیمتر) را به خروجی RF به عنوان یک آنتن وصل کنید. شما می توانید از یک تقویت کننده RF خارجی در خروجی RF برای تقویت سیگنال به سطح ۱W استفاده کنید.

ساخت و آزمایش مدار

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

مدار چاپی مدار فرستنده اف ام با کیفیت بالا

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

لیست قطعات مدار

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

لیست قطعات مدار فرستنده اف ام با کیفیت بالا

مراحل ساخت

  • فرستنده را در یک جعبه پلاستیکی کوچک قرار دهید.
  • از کابل های محافظتی با کیفیت خوب برای اتصالات صوتی ورودی استفاده کنید.
  • توصیه می شود از یک منبع تغذیه تنظیم شده ۱۲V DC برای تغذیه مدار استفاده نمایید.

روشن کردن و تنظیمات مدار

همانطور که گفته شد، فرکانس عملکرد فرستنده ۹۶ مگاهرتز است.

  • VR2 را روی حداقل تنظیم کنید.
  • VC1 را تنظیم کنید تا ولتاژ نقطه تست TP4 به ۳٫۶V تا ۴٫۲V برسد.
  • VR1 کنترل بی حرکتی برای ترانزیستور T2 است و باید در موقعیت متوسط ​​قرار گیرد.
  • LED1 باید روشن شود تا یک فرکانس قفل در ۹۶ مگاهرتز نشان داده شود.
  • سیگنال صوتی را در JACK1 یا JACK2 ارسال کنید.
  • این سیگنال از طریق آنتن ANT.1 در ۹۶ مگاهرتز منتقل خواهد شد.
  • گیرنده FM را روی فرکانس ۹۶ مگاهرتز تنظیم کنید.
  • شما باید قادر به شنیدن سیگنال فرستاده شده در گیرنده FM خود باشید.
  • شما همچنین می توانید از تلفن همراه خود در صورت داشتن گیرنده FM داخلی استفاده کنید.

تست و عیب یابی مدار

از جدول زیر برای عیب یابی و اندازه گیری نقاط تست استفاده کنید:

جدول عیب یابی مدار فرستنده اف ام با کیفیت بالا

دانلود نقشه ها

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

دانلود

موفق و پیروز باشید…

 

منبع: EFY

ادامه مطلب

نقل قول نوشته اصلی توسط P.Paimard
نمایش نوشته ها

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

رونوشت

کلام شما ۱۰۰% صحیح هست !!!
شاید بعضی از عزیزان بپرسند چرا ؟ چون متروی رابط بین شهر و فرودگاه یکی از پیشرفته ترین متروهای جهان است ! فرودگاه ایکا با داشتن ۷۰۰ گیت خروجی و خدمات گسترده (اینترنت پرسرعت مجانی<و هزاران خدمات دیگر ) !
بروزترین ناوگان هوایی در منطقه متعلق به این مملکت است ! از همه مهمتر برخورد پرسنل فرودگاه و پرسنل … بسیار عالی با مسافران (همیشه باید از میزان برخورد خوب WOW گفت)

اما در مورد ارزان نگه اشتن ارز ؟ قیمت ارز در کدام کشور عقب افتاده دنیا یک شبه ۱۵و ۲۰ % بالا می رود ؟ آیا حتما باید قیمت یک دلار آمریکای جنایتکار به ۱۰۰/۰۰۰ ریال « برسد و سیر صعودی داشته باشد ، تا عده ای از این طریق کاسب باشند؟

ادامه مطلب

در دنیای کامپیوتر و برنامه نویسی به مجموعه از داده های از نوع کاراکتر اصطلاحا رشته یا String گفته می شود. این نوع از داده ها با تشکیل یک مجموعه از کاراکترهای مشخص توانایی ایجاد کلمات را برای ما امکان پذیر کرده اند. راه های بسیاری برای ارسال داده ها وجود دارد که روش های متفاوت سیمی و بی سیم را شامل می شود. در این مقاله قصد داریم این داده ها را با استفاده از ماژول NRF و Arduino ارسال کنیم. با این ماژول و امکانات و نحوه کار با آن در پست های قبلی آشنا شده اید.

ابتدا نگاهی اجمالی به مشخصات کلی این ماژول ارزان و پرکاربرد می اندازیم:

  • ولتاژ کاری : ۳٫۳V
  • فرکانس کاری : ۲٫۴GHz
  • نرخ انتقال داده : ۲MBPS
  • جریان مصرفی : در حد mA
  • مدولاسیون:  GFSK
  • دارای کریستال ۱۶MHz
  • ارتباط با ماژول های دیگر تا ۶ ماژول و ایجاد شبکه محلی

کاربرد NRF

  • رادیو کنترل ها
  •  شبکه های سنسوری
  • VoiP
  • گجت های پوشیدنی

برای ایجاد یک سیستم ارتباطی بی سیم به یک فرستنده و گیرنده نیاز داریم. برای فرستنده از یک برد Arduino و یک ماژول NRF و در طرف گیرنده نیز از همین اجزا استفاده می کنیم و برای مشاهده داده های منتقل شده از Serial Monitor در نرم افزار Arduino استفاده می کنیم.

 

شماتیک مداری ارسال و دریافت String با استفاده از NRF

 

در اینجا برد UNO را به صورت پیشفرض انتخاب کرده ایم ولی تلاش شده تا اتصالات به صورت یونیورسال باشد هر برد Arduino امکان پیاده سازی داشته باشد. پین های CE و CSN را میتوان برای هر پایه دیجیتال تعریف کرد در اینجا ما از پایه ۷و۸ استفاده کردیم.

سورس کد فرستنده ارسال و دریافت String با استفاده از NRF

سورس کد گیرنده ارسال و دریافت String با استفاده از NRF

 

برای کامپایل برنامه به کتابخانه NRF برای Arduino نیاز داریم. نصب کتابخانه های Arduino هم در پست های قبلی آموزش داده شده است.

لینک کتابخانه : https://github.com/nRF24/RF24/archive/master.zip

 

در این برنامه از ۳ کتابخانه استفاده شده است

  • SPI کتابخانه مربوط به ارتباط سریال از طریق SPI می باشد.
  • NRF24L01 مربوط به راه اندازی ماژول می باشد.
  • RF24 مربوط به کنترل دیتاهای فرستاده شده و دریافت شده می باشد.

برای تست و استفاده از برنامه میتوانید با استفاده از ابزار Serial Monitor درArduino IDE متن منتقل شده از طرف فرستنده را در سمت گیرنده مشاهده کنید.

 

ادامه مطلب

اکنون ساعت ۲۱:۳۴ برپایه ساعت جهانی (GMT – گرینویچ) +۳٫۵ می باشد.

ادامه مطلب

اکنون ساعت ۱۷:۱۵ برپایه ساعت جهانی (GMT – گرینویچ) +۳٫۵ می باشد.

ادامه مطلب

یکی از مناسب ترین ماژول های موجود برای پخش فایل های صوتی ماژول DF Player Mini است که قابلیت پخش فایل های MP3 و WMV با کیفیت مطلوب را دارد. این ماژول کوچک با یک خروجی ساده می تواند مستقیما به اسپیکر متصل شود.

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

ویژگی ها:

  • ولتاژ تغذیه: ۳٫۲ تا ۵ ولت
  • جریان مصرفی در حالت آماده به کار: ۲۰ میلی آمپر
  • دارای شیار MicroSD با قابلیت پشتیبانی از فرمت های FAT16 و FAT32 تا حجم ۳۲GB
  • فرمت های صوتی: MP3 و WMV
  • پروتکل ارتباطی : سریال ( UART ( Rx Tx
  • نرخ پیش فرض سریال: ۹۶۰۰
  • قابل اتصال به USB
  • قابلیت کنترل کامل پخش از طریق کلیدها
  • پشتیبانی از نرخ نمونه برداری ۴۸KHz,44KHz
  • خروجی DAC با رزولوشون ۲۴ بیت
  • کنترل پخش به سه صورت I/O,Serial,ADC
  • قابلیت افزایش یا کاهش حجم صدا
  • دارای ۳۰ سطح برای حجم صدا
  • ۶ مد اکولایزر
  • قابلیت پخش ترتیبی یا تکرار یک آهنگ
  • دسته بندی فایل ها تا ۱۰۰ پوشه و ۲۵۵ آهنگ در هر پوشه
  • نشانگر LED وضعیت پخش
  • خروجی صدا استریو
  • قابلیت اتصال مستقیم به بلندگو
  • حداکثر توان خروجی صدا: ۳ وات
  • قابل استفاده با باتری
  • قابل استفاده با بردهای آردوینو و سایر میکروکنترلر ها

کاربردها:

  • سیستم های الکترونیکی گویا
  • کاربردهای تبلیغاتی
  • برد صوتی آسانسور
  • هشدار دهنده های صوتی
  • راهنماهای الکترونیکی
  • خانه های هوشمند
  • و هر پروژه ای که به پخش صدا  نیاز داشته باشد

 

فیلم راه اندازی :

توضیحات بیشتر به همراه نحوه عملکرد پروژه را میتوانید در ویدئوی زیر مشاهده کنید

پایه های ماژول :

 

 

فایل دیتاشیت

توضیحات:

ماژول DFPlayer می‌تواند به طور مستقل بدون استفاده از میکروکنترلر نیز به همراه یک عدد باتری و کلید راه‌اندازی شود.همچنین می‌توان این ماژول را به یک آردوینو و میکروکنترلر متصل نمود و با استفاده از پروتکل سریال اقدام به راه اندازی آن نمود.

در این پروژه یک Micro SD را به ماژول DF PLAYER متصل میکنیم و با استفاده از پورت سریال آردوینو و ۴ عدد تک سوئیچ آن را کنترل می‌کنیم. با استفاده از تک یوئیچ ها عملیات Next, Previous, افزایش ولوم و کاهش ولوم را انجام می‌دهیم.

با توجه به شکل زیر اتصالات ماژول و برد آردوینو UNO را انجام میدیم :

اتصالات

پین VCC ماژول را به ۵ ولت آردوینو

پین RX ماژول را به پایه ۱۰ آردوینو

پین TX ماژول را به پایه ۱۱ آردوینو

SPk_1 و SPk_2 ماژول را به اسپیکر متصل می‌کنیم.

همپنین ۴ عدد تک سوئیچ به پین‌های IO-1,IO-2,ADKEY-1,ADKEY-2 متصل می‌کنیم .

 

 کد برنامه:
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(10);  //Set volume value. From 0 to 30
  myDFPlayer.play(1);  //Play the first mp3
}

void loop()
{
  static unsigned long timer = millis();
  
  if (millis() - timer > 3000) {
    timer = millis();
    myDFPlayer.next();  //Play next mp3 every 3 second.
  }
  
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  }
}

void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }

کتابخانه مورد استفاده در این پروژه کتابخانه DFRobotDFPlayerMini میباشد.

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

https://www.مهندسی برق.ir/2016/10/15/%D8%A2%…۲%D8%A7%D8%B1/

 

نوشته آموزش ساخت MP3 Player با استفاده از آردوینو و ماژول DF Player اولین بار در وب سایت تخصصی برق و الکترونیک پدیدار شد.

ادامه مطلب