ผู้เขียนบทความ: นายนัทธพงศ์ แขกพงศ์COE#15
คณะวิศวกรรมศาสตร์:สาขาวิศวะคอมพิวเตอร์
วิชา:04-513-201 การโปรแกรมคอมพิวเตอร์ขั้นสูง 1/2566
1.ความเป็นมาและความสำคัญของปัญหา
ความเป็นมา: ปัญหาการจัดการขยะเกิดขึ้นเนื่องจากการเพิ่มปริมาณขยะที่สร้างขึ้นในโลกในระยะเวลาที่ผ่านมา นอกจากนี้ การทิ้งขยะอันสะสมอย่างไม่รับผิดชอบและการทิ้งขยะในที่ที่ไม่เหมาะสมก็เป็นปัจจัยที่ทำให้ปัญหาเกิดขึ้นมากขึ้น
ความสำคัญของปัญหา: ปัญหาการจัดการขยะมีความสำคัญเนื่องจากมีผลกระทบทั้งต่อสิ่งแวดล้อมและสุขภาพมนุษย์ การสะสมขยะที่ไม่มีการจัดการที่ถูกต้องสามารถทำให้เกิดปัญหาสิ่งแวดล้อม เช่น มลพิษทางอากาศและน้ำ นอกจากนี้ การจัดการขยะไม่ดีอาจเสียหายต่อสุขภาพมนุษย์และสังคมด้วย ประเด็นนี้เรียกให้ทุกคนร่วมมือกันหาวิธีการจัดการขยะที่ยั่งยืนและมีประสิทธิภาพเพื่อลดผลกระทบที่เกิดขึ้นต่อโลกและคนในมุมมองทั้งระยะสั้นและระยะยาว
2.วัตถุประสงค์
1.ลดการสะสมขยะ : วัตถุประสงค์อาจเป็นการลดปริมาณขยะที่คุณสร้างขึ้นในชีวิตประจำวันโดยการลดการใช้บริการสินค้าที่ใช้แล้วทิ้งหรือการรีไซเคิลของวัสดุที่ใช้
2.สร้างแรงบันดาลใจในสังคม : วัตถุประสงค์อาจเป็นการสร้างโครงการหรือกิจกรรมในชุมชนของคุณเพื่อเสริมสร้างการตระหนักในปัญหาการจัดการขยะและส่งเสริมการมีส่วนร่วมของคนในการแก้ไขปัญหานี้
3.สร้างธุรกิจยั่งยืน : วัตถุประสงค์อาจเป็นการเริ่มต้นธุรกิจที่เกี่ยวข้องกับการจัดการขยะหรือเทคโนโลยีที่สามารถช่วยในการลดปัญหาขยะและส่งเสริมการใช้วัสดุรีไซเคิล
4. ภายในกระบวนการการผลิต : วัตถุประสงค์อาจเป็นการใช้วิธีการผลิตที่ยั่งยืนและลดการสร้างขยะในกระบวนการผลิตของบริษัทหรือองค์กร.
3.ขอบเขต
- ข้อมูลสำคัญ : ระบุข้อมูลหรือข้อมูลที่จำเป็นต้องใช้ในโครงการหรือกิจกรรมนั้น ๆ เพื่อให้ทราบว่ามีทรัพยากรเพียงพอหรือไม่เพื่อดำเนินการ.
- เป้าหมายและผลผลิต : ระบุเป้าหมายหลักและผลผลิตที่คุณต้องการที่จะบรรลุผ่านโครงการหรือกิจกรรมนี้.
- ระยะเวลา : กำหนดระยะเวลาที่คุณต้องการใช้ในการดำเนินโครงการหรือกิจกรรม รวมถึงกำหนดเวลาสิ้นสุดหรือกำหนดเวลาสำหรับขั้นตอนย่อย.
- ทรัพยากร : ระบุทรัพยากรที่คุณต้องการใช้ เช่น งบประมาณ, บุคลากร, เทคโนโลยี, หรืออุปกรณ์.
- ข้อจำกัด : ระบุข้อจำกัดหรือข้อกำหนดที่ต้องเป็นไปตาม เช่น ข้อกำหนดจากลูกค้าหรือข้อบังคับกฎหมาย.
- ส่วนที่ไม่รวม : ระบุสิ่งที่ไม่อยู่ในขอบเขตของโครงการหรือกิจกรรม ซึ่งเป็นสิ่งที่ควรหลีกเลี่ยง.
4.ประโยชน์ที่คาดว่าจะได้รับ
- ลดค่าใช้จ่าย : การจัดการขยะที่ดีอาจช่วยลดค่าใช้จ่ายในการบริหารขยะและการทำความสะอาดสาธารณะ รวมถึงค่าใช้จ่ายในการจัดการกับปัญหาสิ่งแวดล้อมที่เกิดขึ้นจากขยะไม่ที่ถูกทิ้ง.
- สิ่งแวดล้อม : การลดปริมาณขยะที่ส่งลงสู่ถังขยะที่สุดท้ายสามารถลดการมลพิษทางอากาศและน้ำ และช่วยประหยัดทรัพยากรธรรมชาติ เช่น ไม้และน้ำ.
- สุขภาพ : การจัดการขยะที่ดีสามารถลดความเสี่ยงต่อสุขภาพมนุษย์ โดยลดการสะสมขยะที่ทำให้เกิดโรคติดเชื้อและแมลงพาหะ.
- ชุมชนที่สวยงาม : การทำให้พื้นที่สาธารณะมีลักษณะที่สวยงามและบรรยากาศดีสามารถสร้างความพึงพอใจและสร้างสัมพันธ์ที่ดีในชุมชน.
- สร้างโอกาส : การจัดการขยะที่ยั่งยืนอาจสร้างโอกาสในการสร้างงาน, สนับสนุนธุรกิจที่เกี่ยวข้อง, หรือสร้างโครงการสำหรับชุมชน.
- สร้างความตระหนัก : การกระทำที่ดีในการจัดการขยะสามารถสร้างความตระหนักในปัญหาการจัดการขยะและสิ่งแวดล้อมในสังคม โดยเป็นต้นแบบที่ดีสำหรับผู้อื่น.
5.ทฤษฎีและงานอื่นที่เกี่ยวข้อง
1.ESP32 เป็นชิปไมโครคอนโทรลเลอร์ที่มาพร้อม WiFi มาตรฐาน 802.11 b/g/n และบลูทูธเวอร์ชั่น 4.2 เป็นรุ่นต่อยอดความสำเร็จของ ESP8266 โดยในรุ่นนี้ได้ออกมาแก้ไขข้อเสียของ ESP8266 ทั้งหมด
2.RELAY รีเลย์ คืออุปกรณ์อิเล็กทรอนิกส์ที่ทำหน้าเปรียบเสมือนสวิตซ์สำหรับตัดต่อในวงจรควบคุมอัตโนมัติ
3.แบตเตอรี่ เป็นอุปกรณ์ที่ประกอบด้วย เซลล์ไฟฟ้าเคมี หนึ่งเซลล์หรือมากกว่า ที่มีการเชื่อมต่อภายนอกเพื่อให้กำลังงานกับอุปกรณ์ไฟฟ้า แบตเตอรี่มี ขั้วบวก และ ขั้วลบ
4.มอเตอร์เกียร์ (Geared Motor) มอเตอร์เกียร์ คือ มอเตอรฺ์ที่ประกอบติดกับเกียร์ทด ทำให้ได้รอบการทำงานที่ต้องการโดยไม่ต้องต่ออุปกรณ์ทดรอบภายนอก
5.Arduino IoT Cloud Application เป็นแอพพลิเคชั่น ที่มีความคล้ายคลึงกับ Blynk แต่มีความสามารถในการรองรับ Code โปรแกรมที่แตกต่างกันในบางส่วนเล็กน้อย ซึ่งหากทำงานเกี่ยวกับ Arduino เจ้าแอพพลิเคชั่น Arduino IoT Cloud จะทำงานได้รวดเร็วกว่า และไม่มีดีเลย์ การตอบสนองจะไวกว่าแอพ Blynk
6.ผลการดำเนินงาน
Diagram : การทำงานของระบบ
ขั้นตอนที่ 1ภาพรวมโมดูลของระบบ
โดยในการทดลองนี้เราสร้างมามารถควบคุมสั่งทางระไกลได้ เราจะส่งข้อมูลให้ Blynk และ Blynk จะส่งสันญาณให้MicrocontrolleESP32 ประมวลผลหลังจากนั้น Microcontroller ESP32 ก็จะสั่งการให้ ตัว Relay ทำงานตามที่เราต้องการ แล้วมอเตอร์ก็จะทำงาน โดยในโครงงานนี้เราจะใช้Microcontroller ESP32 ในการควบคุมและส่งข้อมูลต่างๆ ให้ Hardware ทุกตัวในระบบนี้ ซึ่งเราจะต้องเขียนฟังก์ชั่นต่างๆของระบบตามที่เราต้องการ และอัปโหลดลงตัวMicrocontroller ESP32 เพื่อให้ Hardwareทุกตัวในระบบทำงานตามที่เราต้องการ แบตเตอร์รี่ทำหน้าที่จ่ายไฟ
โค้ดในส่วนของ Main Code
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
const char ssid[] = “c2xn_.ig”;
const char pwd[] = “e200346za”;
#define BLYNK_SERVER “blynk.cloud”
#define BLYNK_TEMPLATE_ID “TMPL6F7k2ranI”
#define BLYNK_DEVICE_NAME “esp32”
#define BLYNK_AUTH_TOKEN “aIcqgQbJyS45_2oD0CDLMLzJABOJdaGh”
class Robot {
public:
Robot() : cleanserPin(17) {
wheelpin[0] = 21;
wheelpin[1] = 19;
wheelpin[2] = 18;
wheelpin[3] = 5;
}
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pwd, BLYNK_SERVER);
Serial.println(“Test Blynk”);
for (int i = 0; i < 4; i++) {
pinMode(wheelpin[i], OUTPUT);
digitalWrite(wheelpin[i], 1);
}
pinMode(cleanserPin, OUTPUT);
digitalWrite(cleanserPin, 1);
}
void run() {
Blynk.run();
}
void setWheelPins(int pin1, int pin2, int pin3, int pin4) {
wheelpin[0] = pin1;
wheelpin[1] = pin2;
wheelpin[2] = pin3;
wheelpin[3] = pin4;
}
void setCleanerPin(int pin) {
cleanserPin = pin;
}
void moveForward() {
digitalWrite(wheelpin[0], 0);
digitalWrite(wheelpin[2], 0);
digitalWrite(wheelpin[1], 1);
digitalWrite(wheelpin[3], 1);
}
void moveBackward() {
digitalWrite(wheelpin[0], 1);
digitalWrite(wheelpin[2], 1);
digitalWrite(wheelpin[1], 0);
digitalWrite(wheelpin[3], 0);
}
void turnLeft() {
digitalWrite(wheelpin[0], 0);
digitalWrite(wheelpin[2], 1);
digitalWrite(wheelpin[1], 1);
digitalWrite(wheelpin[3], 1);
}
void turnRight() {
digitalWrite(wheelpin[0], 1);
digitalWrite(wheelpin[2], 0);
digitalWrite(wheelpin[1], 1);
digitalWrite(wheelpin[3], 1);
}
void stop() {
for (int i = 0; i < 4; i++) {
digitalWrite(wheelpin[i], 1);
}
}
void startCleanser() {
digitalWrite(cleanserPin, 0);
}
void stopCleanser() {
digitalWrite(cleanserPin, 1);
}
private:
int wheelpin[4];
int cleanserPin;
};
Robot myRobot;
BLYNK_WRITE(V0) {
int value = param.asInt();
if (value == 1) {
myRobot.moveForward();
} else {
myRobot.stop();
}
}
BLYNK_WRITE(V1) {
int value = param.asInt();
if (value == 1) {
myRobot.moveBackward();
} else {
myRobot.stop();
}
}
BLYNK_WRITE(V2) {
int value = param.asInt();
if (value == 1) {
myRobot.turnLeft();
} else {
myRobot.stop();
}
}
BLYNK_WRITE(V3) {
int value = param.asInt();
if (value == 1) {
myRobot.turnRight();
} else {
myRobot.stop();
}
}
BLYNK_WRITE(V4) {
int value = param.asInt();
if (value == 1) {
myRobot.startCleanser();
}
}
BLYNK_WRITE(V5) {
int value = param.asInt();
if(value == 1) {
myRobot.stopCleanser();
}
}
void setup() {
myRobot.setup();
}
void loop() {
myRobot.run();
}
7.ผลสรุปผลการทดลอง
จากผลการทดลองระบบควบคุม รถเก็บขยะ ช่วงแรกๆจะมีปัญหา กดปุ่ม แล้ว มอเตอร์ทำงานบ้างและไม่ทำงานบ้าง และได้ทำการแก้ ต่างๆ หรือจะเป็นความเร็วรถที่เคลื่อที่เร็วไปแต่ก็ทำการแก้ไข้จนสำเร็จ