نمونه سازی سریع با 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 بعدی خود آماده اید؟ تجربیات یا ابهامات خود را در نظرات به اشتراک بگذارید. من دوست دارم نحوه استفاده شما از این ابزارها را بدانم!