برنامه نویسی

نمونه سازی سریع با Wokwi، ESP32 و AWS IoT Core

1. مقدمه

در توسعه پروژه IoT، زمان‌های چرخش سریع برای اعتبارسنجی ایده‌ها و تسریع توسعه بسیار مهم است. ابزارهایی مانند عجب (یک شبیه ساز میکروکنترلر) و ESP32 به شما این امکان را می دهد که بدون وابستگی به سخت افزار فیزیکی، نمونه های اولیه بسازید، در حالی که AWS IoT Core اتصال دستگاه ها به ابر را برای مدیریت داده ها در زمان واقعی ساده می کند.

در این آموزش، من شما را گام به گام برای راه اندازی یک محیط شبیه سازی، برنامه ریزی یک ESP32 و اتصال آن به AWS IoT Core راهنمایی می کنم. شما یاد خواهید گرفت که چگونه از این ابزارها برای کشف پتانسیل پروژه های اینترنت اشیا، از شبیه سازی گرفته تا ابر استفاده کنید.


2. ابزار و الزامات

برای دنبال کردن این آموزش، شما نیاز دارید:

  • عجب: شبیه ساز میکروکنترلر سازگار با ESP32.
  • مرورگر وب: Wokwi به طور کامل در مرورگر شما اجرا می شود، بدون نیاز به نصب اضافی.

3. اجرای پروژه

هدف

یک حسگر DHT22 را شبیه سازی کنید که دما و رطوبت را اندازه گیری می کند و داده ها را با استفاده از AWS IoT Core به ابر ارسال می کند.

ایجاد پروژه

برای سرعت بخشیدن به توسعه، من یک پروژه پایه در Wokwi آماده کرده ام: نسخه ی نمایشی AWS IoT Core. این شامل یک راه اندازی اولیه برای خواندن داده ها از حسگر DHT22 و ارسال آن به ابر با استفاده از MQTT است.

کد پایه

فایل secrets.h پروژه مکانی است که در آن اعتبار AWS IoT خود را پیکربندی خواهید کرد:

#include 
#define SECRET
// Edit and set thing name
#define THINGNAME "esp32poc"

// WiFi credentials
const char WIFI_SSID[] = "Wokwi-GUEST";
const char WIFI_PASSWORD[] = "";

// AWS IoT Core endpoint
const char AWS_IOT_ENDPOINT[] = "*****.iot.us-east-1.amazonaws.com";

// Amazon Root CA
static const char AWS_CERT_CA[] PROGMEM = R"EOF(
-----BEGIN CERTIFICATE-----
*
-----END CERTIFICATE-----
)EOF";

// Client Certificate
static const char AWS_CERT_CRT[] PROGMEM = R"KEY(
-----BEGIN CERTIFICATE-----
*
-----END CERTIFICATE-----
)KEY";

// Client Private Key
static const char AWS_CERT_PRIVATE[] PROGMEM = R"KEY(
-----BEGIN RSA PRIVATE KEY-----
*
-----END RSA PRIVATE KEY-----
)KEY";
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا، باید مقادیر را با مقادیر حساب AWS خود جایگزین کنید. این فایل همچنین حاوی کلیدها و گواهی های لازم است.

فایل اصلی شامل توابع از پیش تعریف شده مانند connectAWS() برای ایجاد اتصال و publicMessage() برای ارسال داده است. در زیر گزیده ای از حلقه اصلی آورده شده است:

void setup()
{
  Serial.begin(115200);
  connectAWS(); //permite la conexion a AWS IoT Core
  dht.begin(); // inicializa la libreria dht
  Wire.begin(); // inicializa la libreria wire
  timeClient.begin(); // inicializa la libreria ntp
  timeClient.setTimeOffset(0);
}

void loop()
{
  h = dht.readHumidity();
  t = dht.readTemperature();

  timeClient.update();
  if (isnan(h) || isnan(t))
  {
    Serial.println(F("Failed to read data from DHT sensor!"));
    return;
  }

  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.println(F("°C "));

  publishMessage(); // publica el mensaje mediante MQTT a AWS IoT Core
  client.loop();
  delay(1000);
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد منابع در AWS

برای انجام یک اثبات سریع مفهوم می توانیم از گزینه استفاده کنیم چیزها از AWS IoT.

توضیحات تصویر

از این گزینه می توانیم یک منبع ایجاد کنیم چیز که با یک دستگاه مرتبط خواهد بود، اگرچه ما می توانیم چندین منبع برای این اثبات مفهوم ایجاد کنیم، اما فقط یک منبع ایجاد خواهیم کرد.

توضیحات تصویر

هنگام ایجاد منبع، می‌توانیم به آن یک نام اختصاص دهیم و پیکربندی‌های اضافی اضافه کنیم، اما در این مورد فقط باید یک نام به آن اختصاص دهیم.

توضیحات تصویر

هنگامی که ما یک دستگاه جدید را ثبت می کنیم، به یک گواهی نیاز داریم تا بتوانیم به AWS IoT متصل شویم، در این صورت از گزینه پیشنهادی که تولید خودکار گواهی جدید است استفاده خواهیم کرد.

توضیحات تصویر

به عنوان آخرین مرحله، لازم است که یک خط مشی امنیتی را با گواهینامه مرتبط کنیم.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:REGION:ACCOUNT_ID:client/esp32poc"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/esp32poc/sub"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Publish",
      "Resource": "arn:aws:iot:REGION:ACCOUNT_ID:topic/esp32poc/pub"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": "arn:aws:iot:REGION:ACCOUNT_ID:topic/esp32poc/sub"
    }
  ]
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به یاد داشته باشید که جایگزین کنید REGION y ACCOUNT_ID با مقادیر مربوط به پیکربندی شما.

توضیحات تصویر

در پایان ایجاد منبع، لازم است گواهی ها و کلیدهای ایجاد شده به صورت خودکار برای ما دانلود شود.

توضیحات تصویر

تنظیمات اعتبار

هنگامی که منبع ما ایجاد شد، می توانیم اعتبار خود را در فایل Secrets.h پروژه wokwi پیکربندی کنیم.

برای متغیر

const char AWS_IOT_ENDPOINT[]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما از نام دامنه ای که می توانیم در منوی تنظیمات دامنه AWS IoT پیدا کنیم استفاده خواهیم کرد.

توضیحات تصویر

برای متغیر

static const char AWS_CERT_CA[] PROGMEM = R"EOF(
-----BEGIN CERTIFICATE-----
***
-----END CERTIFICATE-----
)EOF";
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما از محتوای فایل استفاده خواهیم کرد AmazonRootCA1.pem

برای متغیر

static const char AWS_CERT_CRT[] PROGMEM = R"KEY(
-----BEGIN CERTIFICATE-----
***
-----END CERTIFICATE-----
)KEY";
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما از محتوای فایلی که به آن ختم می شود استفاده خواهیم کرد -certificate.pem.crt

برای متغیر

static const char AWS_CERT_PRIVATE[] PROGMEM = R"KEY(
-----BEGIN RSA PRIVATE KEY-----
*
-----END RSA PRIVATE KEY-----
)KEY";
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما از محتوای فایلی که به آن ختم می شود استفاده خواهیم کرد -private.pem.key


4. آزمون ارتباط

پس از اتمام تنظیمات پروژه wokwi، می‌توانیم اجرای آن را با استفاده از دکمه شبیه‌سازی شروع کنیم.

توضیحات تصویر

شروع شبیه سازی ممکن است چند ثانیه طول بکشد اما پس از آن می توانیم اجرا را نظارت کنیم، در خروجی کنسول می توانیم پیام های پروژه را ببینیم.

توضیحات تصویر

اگر از کلاینت تست AWS IoT استفاده کنیم، می‌توانیم ببینیم که چگونه پیام‌ها به موضوعی که قبلاً پیکربندی کرده‌ایم ارسال می‌شوند. AWS_IOT_PUBLISH_TOPIC.

توضیحات تصویر


5. نتیجه گیری

این آموزش نشان می‌دهد که چگونه ابزارهایی مانند Wokwi و AWS IoT Core به شما اجازه می‌دهند تا به سرعت ایده‌ها را بدون سخت‌افزار فیزیکی تأیید کنید. شبیه‌سازی توسعه اولیه را تسریع می‌کند و ادغام با AWS IoT Core مسیر ساده‌ای را برای مقیاس پروژه‌ها به محیط تولید تضمین می‌کند.

اگر در IoT شروع کرده اید یا به دنبال راه هایی برای نمونه سازی سریع هستید، این ترکیب از فناوری ها گزینه ای عالی برای صرفه جویی در زمان و منابع است.

برای ایجاد پروژه IoT بعدی خود آماده اید؟ تجربیات یا ابهامات خود را در نظرات به اشتراک بگذارید. من دوست دارم نحوه استفاده شما از این ابزارها را بدانم!

نوشته های مشابه

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

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

دکمه بازگشت به بالا