My Final Project example
This is where I will start defining my final project idea and start to get use to the documentation process.
Final Result
I designed a device to help me release frustration when my computer crashes. I can vent my anger by hitting this device. The device will automatically send an angry feedback email to the computer company. After being hit, the LCD screen on the device will display a crying face and show the message "Email Sent.
Summary Slide:
Video:
Hero Shots
Idea and Sketch
I am a recent graduate animator. I like digital multimedia interactive art, and that's why I join the fab academy. My final project is an emotional release device. When I am rendering animations, my computer tends to freeze during the rendering process. This makes me feel very frustrated and angry, but due to budget constraints, I cannot immediately replace it with a more expensive computer. Therefore, I want to create a device to vent my anger. When the computer freezes, I can use this device to vent my anger by hitting it. The device will automatically send an angry feedback email to the computer company, and the LCD screen on the device will display a crying face and the message "Email sent" after the device is been hit. This will help me release my anger.
3D Model
The following is the 3D model of the final project created according to my idea.
The following is the button mold model created according to my idea.
Downlod Links
Model3D Printing
3D printing of the base.
3D printing of the mold.
2D Design
I added a broken heart to express that my current mood is very bad.
PCB Design and Produce
Downlod Links
furniture cutting pathProgramming
#include
#if defined(ESP32)
#include
#elif defined(ESP8266)
#include
#endif
#include
#define WIFI_SSID "FORMSHOP_Wi-Fi5"
#define WIFI_PASSWORD "formshop"
#define SMTP_HOST "smtp.office365.com"
#define SMTP_PORT 587
#define AUTHOR_EMAIL "m1195198263@outlook.com"
#define AUTHOR_PASSWORD "meng190510118"
#define RECIPIENT_EMAIL "meng.mqz@gmail.com"
#include "DFRobot_RGBLCD1602.h"
DFRobot_RGBLCD1602 lcd(/*lcdCols*/ 16, /*lcdRows*/ 2); //16 characters and 2 lines of show
SMTP_Message message;
SMTPSession smtp;
void smtpCallback(SMTP_Status status);
void setup() {
Serial.begin(115200);
pinMode(D2, OUTPUT);
Serial.println();
Serial.print("Connecting to AP");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
Serial.println("");
delay(200);
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.println();
smtp.debug(1);
smtp.callback(smtpCallback);
}
void loop() {
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(voltage);
lcd.init();
lcd.setCursor(5, 0);
lcd.print("^");
lcd.setCursor(10, 0);
lcd.print("^");
lcd.setCursor(6, 1);
lcd.print("----");
lcd.setCursor(4, 1);
lcd.print("*");
lcd.setCursor(12, 1);
lcd.print("*");
lcd.setCursor(3, 0);
lcd.print("|");
lcd.setCursor(13, 0);
lcd.print("|");
lcd.setCursor(3, 1);
lcd.print("|");
lcd.setCursor(13, 1);
lcd.print("|");
if (voltage > 2.5) {
lcd.init();
lcd.init();
lcd.setCursor(1, 0);
lcd.print("@");
lcd.setCursor(1, 1);
lcd.print(":");
lcd.setCursor(6, 0);
lcd.print("@");
lcd.setCursor(6, 1);
lcd.print(":");
lcd.setCursor(3, 1);
lcd.print("^");
lcd.setCursor(8, 0);
lcd.print("Email");
lcd.setCursor(11, 1);
lcd.print("sent");
ESP_Mail_Session session;
session.server.host_name = SMTP_HOST;
session.server.port = SMTP_PORT;
session.login.email = AUTHOR_EMAIL;
session.login.password = AUTHOR_PASSWORD;
session.login.user_domain = "";
SMTP_Message message;
message.sender.name = "Meng";
message.sender.email = AUTHOR_EMAIL;
message.subject = "ESP Test Email";
message.addRecipient("Sara", RECIPIENT_EMAIL);
(If you want to use this code, please replace the {} symbols in the following sentence with <>, it follows the logic of web programming.) String htmlMsg = "
{div style=\"color:#2f4468;\"}{h1}Complaint Regarding Poor Performance Leading to Frequent Computer Crashes/h1>p>Dear Customer Service Department,/p>p>I am
writing to express my dissatisfaction and complaint regarding the performance of your company's computer product. Since purchasing this computer, I have been
experiencing frequent crashes, which have caused significant inconvenience and disruption to my usage./p>p>Firstly, I want to highlight that the performance of
this computer is below expectations. I paid close attention to the specifications when making the purchase, but after using it for some time, I noticed frequent lagging,
slow responsiveness, and even system crashes when running common software applications. This has created numerous difficulties for me in completing tasks on time and enjoying
a smooth entertainment experience./p>p>Secondly, I am deeply disappointed with the after-sales service provided by your company. I have contacted customer support multiple times seeking solutions, but the responses
I received were merely suggesting simple restarts or basic system clean-ups. Unfortunately, these methods have not resolved the issue, and the computer continues to experience frequent crashes. I am hoping to receive
more professional and effective technical support to help me address this problem./p>p>As a consumer, I believe I have the right to receive a high-quality computer that functions properly. I purchased this computer with
the intention of improving my work efficiency and overall quality of life, but the current situation is completely contrary to that. I kindly request that your company take my concerns seriously and provide me with a
reasonable solution or offer the option of a refund or replacement./p>p>I have no doubts about the quality of your company's products, and I believe that your company has the capability to address this issue. I sincerely
hope that you will give due attention to this matter and respond to my email promptly so that we can work together to find a resolution. I am hopeful for a satisfactory outcome that will restore my confidence in your company's
products./p>p>Thank you for taking the time to read and consider my complaint. I look forward to your response.{/p}{p}Yours sincerely,{/p}{/div}";
message.html.content = htmlMsg.c_str();
message.text.charSet = "us-ascii";
message.html.transfer_encoding = Content_Transfer_Encoding::enc_7bit;
if (!smtp.connect(&session)) {
Serial.println("Error connecting to SMTP server");
} else {
if (!MailClient.sendMail(&smtp, &message)) {
Serial.println("Error sending Email, " + smtp.errorReason());
} else {
Serial.println("Email sent successfully!");
}
}
}
}
void smtpCallback(SMTP_Status status) {
Serial.println(status.info());
if (status.success()) {
Serial.println("----------------");
ESP_MAIL_PRINTF("Message sent success: %d\n", status.completedCount());
ESP_MAIL_PRINTF("Message sent failled: %d\n", status.failedCount());
Serial.println("----------------\n");
struct tm dt;
for (size_t i = 0; i < smtp.sendingResult.size(); i++) {
SMTP_Result result = smtp.sendingResult.getItem(i);
time_t ts = (time_t)result.timestamp;
localtime_r(&ts, &dt);
ESP_MAIL_PRINTF("Message No: %d\n", i + 1);
ESP_MAIL_PRINTF("Status: %s\n", result.completed ? "success" : "failed");
ESP_MAIL_PRINTF("Date/Time: %d/%d/%d %d:%d:%d\n", dt.tm_year + 1900, dt.tm_mon + 1, dt.tm_mday, dt.tm_hour, dt.tm_min, dt.tm_sec);
ESP_MAIL_PRINTF("Recipient: %s\n", result.recipients.c_str());
ESP_MAIL_PRINTF("Subject: %s\n", result.subject.c_str());
}
Serial.println("----------------\n");
}
}
Downlod Links
codeBill of Materials
Most of the materials I used were provided by the laboratory, and a few were purchased by myself.
1、What will it do?
1.1 I am a recent graduate in animation, and I am passionate about digital multimedia interactive art, which is why I joined the Fab Academy. My final project is an emotional release device. When rendering animations, my computer often crashes during the process, leading to frustration and anger. Due to budget constraints, I cannot immediately replace it with a more expensive computer. Therefore, I want to create a device to vent my anger. When the computer crashes, I can release my frustration by hitting this device. After being hit, the device will automatically send an angry feedback email to the computer company. The LCD screen on the device will also display a crying face and the message 'Email Sent' after being hit. This will help me better release my anger.
2、Who has done what beforehand?
2.1 I have never seen an interactive installation on this theme.However, I want my device to be robust enough to withstand my pounding, so I designed it in the shape of a button. I searched online for some reference images of buttons.
2.2 I knew nothing about the Internet of Things (IoT), so I took the initiative to learn how to send emails through the IoT for my project.
3、 What will you design?
3.1 Appearance: In the shape of a button, I won't incorporate too many decorations to ensure the durability of the product. To prevent injury during pounding, I'll create a mold for it to obtain a silicone button.
3.2 Function: I can vent my frustration by hitting this device. The device will automatically send an angry feedback email to the computer company. Meanwhile, after being hit, the LCD screen will display a crying face and show the message "Email Sent." This will help me release my anger.
4、What materials and components will be used?
4.1 Materials: 3d printing filament、Silica gel、sticker、screw.
4.2 Components: Microcontrol board(Xiao ESP-32)、Screen、压力传感器.
5、Where will they come from?
5.1 Some from our lab, others I need to buy on Taobao.
6、 How much will they cost?
6.1 About 150 RMB
7、What parts and systems will be made?
7.1 Button: A silicone material ensures that my hand won't get injured.
7.2 Sturdy Base: A robust base that won't break due to applying excessive force.
8、What processes will be used?
8.1 Mold Making for the Silicone Button and Fabrication of the Button Itself
8.2 Modeling and 3D Printing of the Base
8.3 Input and output testing.
8.4 Integret them together.
8.5 Test and modify.
8.6 Applying maximum force to the device to test its resilience.
9、What questions need to be answered?
9.1 Can it truly withstand my powerful strikes?
9.2 Will my hand get injured after striking the device?
9.3 Will my anger decrease after striking the device?
10、How will it be evaluated?
10.1 Able to successfully send emails.
10.2 Able to successfully display the text I want on the screen.
10.3 The design meets my requirements.