안녕하세요 여러분, Arduino IoT Cloud의 스케줄러 위젯을 사용하여 5 개의 릴레이를 예약 제어하기 위해 wokwi 시뮬레이션을 사용한 경험을 공유하고 싶습니다. 여기에 제작 방법에 대한 짧은 비디오가 있으며 유용하고 관심을 가져 주셔서 감사합니다.
아두이노 IoT 클라우드를 사용하여 ESP32(웍위 시뮬레이션)에 연결된 OLED 디스플레이로 5개의 릴레이를 예약 제어하는 방법은 무엇인가요? 단계는 다음과 같습니다:
1. 이 웍위 프로젝트를 엽니다: https://wokwi.com/projects/396738675898696705
2. 아두이노 IoT 클라우드(https://cloud.arduino.cc)를 열고 계정을 생성한 후 로그인합니다.
3. Thing을 생성하고 CloudSchedule 유형으로 5개의 변수를 추가한 후 각각 jadwal1, jadwal2, jadwal3, jadwal4, jadwal5로 이름을 지정하고 접근 권한을 설정합니다: 읽기 및 쓰기, 업데이트 권한을 설정합니다: 변경으로 설정합니다.
4. Thing에 변수를 추가한 후 다음 단계는 Thing을 장치에 연결하는 것입니다. 장치를 선택합니다: ESP32 개발 모듈을 선택하고 ID 및 비밀 키 장치를 저장합니다. Wokwi 프로그램에서 장치 ID 및 비밀 키 코드를 새 ID 및 비밀 키 장치로 바꿉니다.
5. 대시보드 생성, 스케줄러 위젯을 선택하고 시작 시간, 기간, 반복 시간을 설정한 후 보기 버튼(눈 이미지)을 눌러 대시보드를 실행합니다.
6. 웍위 시뮬레이션을 실행합니다. 스케줄러 위젯 설정에 따라 5개 릴레이의 켜짐/꺼짐이 결정되며, OLED 디스플레이에 릴레이의 상태와 켜짐 시간이 표시됩니다. 자세한 내용은 이 블로그를 참조하세요:
https://bermainwokwi.blogspot.com/p/koneksi-dengan-arduino-iot-cloud.html#tiga 간략히
코드
// Code generated by Arduino IoT Cloud
#include <ArduinoIoTCloud.h>
#include <Arduino_ConnectionHandler.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(128, 64, &Wire, -1);
const char DEVICE_LOGIN_NAME[] = "373bb0e9-5f46-48b8-8f42-f73a1e9a359d";
const char SSID[] = "Wokwi-GUEST";
const char PASS[] = "";
const char DEVICE_KEY[] = "1tRg0UWO#tbA7r?xeS20xgUOz";
void onJadwal1Change();
void onJadwal2Change();
void onJadwal3Change();
void onJadwal4Change();
void onJadwal5Change();
time_t UnixTime;
unsigned long skr = 0;
String waktu;
bool r1 = false, r2 = false, r3 = false, r4 = false, r5 = false;
int a = 0, b = 0, c = 0, d = 0, e = 0;
CloudSchedule jadwal1;
CloudSchedule jadwal2;
CloudSchedule jadwal3;
CloudSchedule jadwal4;
CloudSchedule jadwal5;
void initProperties() {
ArduinoCloud.setBoardId(DEVICE_LOGIN_NAME);
ArduinoCloud.setSecretDeviceKey(DEVICE_KEY);
ArduinoCloud.addProperty(jadwal1, READWRITE, ON_CHANGE, onJadwal1Change);
ArduinoCloud.addProperty(jadwal2, READWRITE, ON_CHANGE, onJadwal2Change);
ArduinoCloud.addProperty(jadwal3, READWRITE, ON_CHANGE, onJadwal3Change);
ArduinoCloud.addProperty(jadwal4, READWRITE, ON_CHANGE, onJadwal4Change);
ArduinoCloud.addProperty(jadwal5, READWRITE, ON_CHANGE, onJadwal4Change);
}
WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS);
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
for (;;);
}
delay(1500);
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
pinMode(23, OUTPUT);
pinMode(19, OUTPUT);
pinMode(18, OUTPUT);
pinMode(5, OUTPUT);
pinMode(17, OUTPUT);
}
void loop() {
ArduinoCloud.update();
if (jadwal1.isActive()) {
digitalWrite(23, HIGH);
r1 = true;
}
else {
digitalWrite(23, LOW);
r1 = false;
}
if (jadwal2.isActive()) {
digitalWrite(19, HIGH);
r2 = true;
}
else {
digitalWrite(19, LOW);
r2 = false;
}
if (jadwal3.isActive()) {
digitalWrite(18, HIGH);
r3 = true;
}
else {
digitalWrite(18, LOW);
r3 = false;
}
if (jadwal4.isActive()) {
digitalWrite(5, HIGH);
r4 = true;
}
else {
digitalWrite(5, LOW);
r4 = false;
}
if (jadwal5.isActive()) {
digitalWrite(17, HIGH);
r5 = true;
}
else {
digitalWrite(17, LOW);
r5 = false;
}
if (millis() - skr > 1000) {
UnixTime = ArduinoCloud.getLocalTime();
waktu = ctime(&UnixTime);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print(waktu.substring(0, 11));
display.print(waktu.substring(20));
display.print(" ");
display.println(waktu.substring(11, 19));
if (r1) {
a++;
display.print("R1:ON.......");
display.println(a);
} else {
a = 0;
display.println("R1:OFF.........");
}
if (r2) {
b++;
display.print("R2:ON.......");
display.println(b);
} else {
b = 0;
display.println("R2:OFF.........");
}
if (r3) {
c++;
display.print("R3:ON.......");
display.println(c);
} else {
c = 0;
display.println("R3:OFF.........");
}
if (r4) {
d++;
display.print("R4:ON.......");
display.println(d);
} else {
d = 0;
display.println("R4:OFF.........");
}
if (r5) {
e++;
display.print("R5:ON.......");
display.println(e);
} else {
e = 0;
display.println("R5:OFF.........");
}
display.display();
skr = millis();
}
}
void onJadwal1Change() {
}
void onJadwal2Change() {
}
void onJadwal3Change() {
}
void onJadwal4Change() {
}
void onJadwal5Change() {
}
Wokwi 회로
'ESP32' 카테고리의 다른 글
직렬 통신을 통해 ESP32, Arduino Uno를 Arduino IoT Cloud에 연결 (0) | 2024.05.20 |
---|---|
ESP32 Arduino IoT Cloud의 Color 위젯을 Wokwi의 RGB LED와 OLED 디스플레이로 연결 (1) | 2024.05.19 |
ESP32 Arduino IoT Cloud Google 시트를 사용하여 4개의 센서 그래프를 표시 (0) | 2024.05.17 |
아두이노 Nano ESP32 빠른 가이드 1 - 시작 & FAQ (0) | 2024.05.15 |
ESP32 Wokwi 시뮬레이션 및 Arduino IoT Cloud 기반 릴레이 제어 (0) | 2024.05.06 |
프로그래밍 예제를 통해 ESP32 버튼 시작하기 (0) | 2024.04.03 |
DHT11 센서를 사용한 ESP32 BLE 온도 및 습도 모니터링 시스템 (0) | 2024.04.02 |
ESP32 BLE를 사용하여 LED 제어하기 (0) | 2024.04.01 |
더욱 좋은 정보를 제공하겠습니다.~ ^^