s

مقدمه

در این اموزش یک ماژول ژیروسکوپ به esp32متصل شده است و با استفاده از این ماژول می توان شتاب در محور های x y zبرای سرور ارسال می شود و می توانید دیتا هارا بر روی داشبرد ببینید

کلید واژه ها
esp32,ADXL345,انالوگ,

وسایل مورد نیاز

#نوعتعدادخرید
1esp321
2سیم جامپر2
3برد بورد1
4ماژول ADXL3451

پیش نیاز ها

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

  1. ابتدا نرم افزار اردوینو را دانلود و نصب کنید
  2. به منو File بروید و گزینه Preferencesرا بزنید
  3. boardFile -> arduino Preferences
  4. متن زیر را وارد کنید
  5. https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

    boardpaste link
  6. بعد از افزودن لینک ها برنامه را باز و بسته کرده تا لینک به مخازن برنامه اضافه شوند
  7. به منو tools رفته و از بخش Borads manager ... را بزنید
  8. boardesp32 اضافه شده است
  9. در قسمت search بنویسید Esp32 و برد را نصب کنید
  10. boardesp32 اضافه شده است
  11. بعد اینکه برد نصب شده باید نوع برد Arduino را عوض کنیم
  12. boardesp32 اضافه شده است
  13. افزودن کتابخانه مورد نیاز iotkaran
  14. tools-> manager Library

    boardافزودن کتابخانه iotkaran
  15. تایپiotkaran در بخش جستجو
  16. boardافزودن کتابخانه iotkaran

توضیحات تکمیلی

معرفی پایه ها در اموزش بخش قبل انجام شده است

چون ماژول ADXL345 از پروتکل I2C استفاده می کند باید کتابخانه Wire.h را صدا بزنیم

اولین قدم افزودن کتابخانه iotkaran می باشد که با استفاده از دستور include انجام می دهیم

ادرس سنسور را مشخص می کنیم این ادرس از دیتاشیت به دست امده است

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

نام wifi و پسورد wifi را وارد کنید تا میکرو بتواند به مودم متصل شود و به اینترنت دسترسی داشته باشد

یک شی از کتابخانه می سازیم

() Setup

سریال میکرو را راه اندازی می کنیم

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

نکته

از ان جایی که ما برای برقراری ارتباط از i2c استفاده می کنیم می بایست برای صحبت با ماژول بیت هایی را برای ماژول ارسال کنیم و این پروسه باید بیت ،بیت انجام شود.

جهت شروع ارتباط میکرو برای ارسال دیتا از تابع() beginTransmission استفاده می کنیم

با استفاده از تابع می کنیم ()write به کدام رجیستر می خواهیم دسترسی داشته باشیم

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

مشخص کردن مود دستگاه که حالت sta باشد تا esp بتواند به مودم متصل شود

چک کردن وضعیت مودم در این بخش از کد تا زمانی که ماژول به وای فای مورد نظر متصل نشده،هر 500میلی ثانیه ،در سریال مانیتور نقطه چاپ میکند.و زمانی که متصل شد از این حلقه خارج میشود

نمایش ip دستگاه

اتصال به سرور iotkaran

احراز هویت توسط سرور iotkaran

() loop

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

در این قسمت با استفاده از کتابخانه جیسون اردوینو یک کلید به نام Y Z X تعریف می کنیم و مقدار سنسور را در ان می ریزیم و مقدار شتاب هارا در ان قرار می دهیم

در این بخش با تعریف یم کتغیر string و سریالایز کردن مقادیر جیسون این مقادیر در متغیر output ریخته می شود

در این بخش که بخش نهایی می باشد بااستفاده از تابع ()IK.status وضعیت سرور را چک کرده و در صورت متصل بودن دستگاه به سرور اقدام به ارسال اطلاعات به سرور م کنیم با استفاده از تابع ()IK.send

اگر اتصال با سرور قطع شده باشد این بخش صدا زده می شود و پیامی بر روی سریال نمایش داده می شود که سرور قطه است و میکرو سعی می کند دوباره به سرور متصل شود و احراز هویت کند

و در اخر نیز یک تاخیر نیم ثانیه می گزاریم

شماتیک

rشماتیک برد

کد کامل

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 #include <Wire.h> // Wire library - used for I2C communication #include <Iotkaran.h> int ADXL345 = 0x53; // The ADXL345 sensor I2C address float X_out, Y_out, Z_out; // Outputs #define Token "your token" const char* ssid = "ssid modem"; const char* password = "password modem"; Iotkaran IK; void setup() { Serial.begin(115200); Wire.begin(); // Initiate the Wire library Wire.beginTransmission(ADXL345); // Start communicating with the device Wire.write(0x2D); // Access/ talk to POWER_CTL Register - 0x2D Wire.write(8); // (8dec -> 0000 1000 binary) Bit D3 High for measuring enable Wire.endTransmission(); delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); IK.connect("server.Iotkaran.ir" , 2323); //Enter a host address and port IK.authentication(Token); } void loop() { // === Read acceleromter data === // Wire.beginTransmission(ADXL345); Wire.write(0x32); // Start with register 0x32 (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(ADXL345, 6, true); // Read 6 registers total, each axis value is stored in 2 registers X_out = ( Wire.read() | Wire.read() << 8); // X-axis value X_out = X_out / 256; //For a range of +-2g, we need to divide the raw values by 256, according to the datasheet Y_out = ( Wire.read() | Wire.read() << 8); // Y-axis value Y_out = Y_out / 256; Z_out = ( Wire.read() | Wire.read() << 8); // Z-axis value Z_out = Z_out / 256; DynamicJsonDocument doc(1536); doc["action"] = "status"; doc["data"]["datas"]["x"] = X_out; doc["data"]["datas"]["y"] = Y_out; doc["data"]["datas"]["z"] = Z_out; doc["method"] = "request_set"; String Output; serializeJson(doc, Output); if (IK.status()) { Serial.print("Send to server: "); Serial.println(Output); IK.send(Output); } else { Serial.println("The client disconnected"); IK.reconnect("server.Iotkaran.ir" , 2323); IK.authentication(Token); } delay(500); }

اپلود کد

  1. در برنامه اردوینو یک برگه جدید باز می کنیم
  2. dFile -> arduino Preferences
  3. جهت اپلود کد می بایست پورت سریال دستگاه متصل را انتخاب کنیم (توجه شماره com با پورت کامپیوتر در ارتباط است و بسته به پورت دارای شماره های مختلفی می باشد )
  4. programFile -> arduino Preferences
  5. کد کامل را جایگزاری می کنیم و گزینه اپلود را می زنیم
  6. sFile -> arduino Preferences
  7. و در اخر پنجره سریال را باز کرده
  8. dFile -> arduino Preferences
  9. واطلاعات را در ترمینال به نمایش در می اید
  10. File -> arduino Preferences

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

کامنت ها