본문 바로가기

Project

[학과 프로젝트] 스마트 디퓨저 🌸💐🌷🌹

🌱 2023년에 학교 수업으로 진행했던 내 첫번째 프로젝트 🌱

 

사용자의 기분에 따라 향을 추천해주는 AI SMART DIFFUSER 'PERDI'

Perdi란 ..  그냥 제가 혼자 생각해냈던 이름으로  향기(Perfume) + 디퓨저 (Diffuser) Per + Di = Perdi를 합쳐서 만든 단어입니다

 

그럼 노션에만 간단히 정리했던 저의 프로젝트 후기 작성을 시작해보겠습니다 ! !


💻기술 스택 💻

언어 - Python

서버 - Flask, AWS, putty

AI - Chat Gpt, NAVER CLOVA Sentiment


📷 발표회 사진 📷

 

처음 진행한 프로젝트(3개월 .. )기도 하고, 공부를 하면서 진행해서 간단한 기능 구현을 초반 목표로 하였습니다.


🎉 결과물 🎉

프로젝트 발표가 끝나고 집에서 사용할 수 있도록 구멍이 없는 공병으로 선택했고, 디퓨저만으로는 구분이 불가능해 다르다는 것을 보여주기 위해 향에 맞는 스티커를 제작해 공병 위에 붙여주었다.

 


⭐️ 프로젝트 후기 ⭐️

개인적인 바램으로는 디퓨저를 추출해 나누어 주기보다는 가습기처럼 방에 두고 AI와 사용자와 대화하며 그 날의 감정에 맞는 디퓨저를 시간을 조절해 디퓨저를 분사해 주는 시스템을 구성하고 싶었으나, 발표회가 목적이기에 나누어 주는 시스템으로 변경하게 되었다.

 

프로젝트 판넬 제작, 공병에 붙일 스티커 제작 등 프로젝트를 할수록 퍼디에 애정이 생겨 계속 새로운 것을 추가하고 싶고 보완하고 싶은 생각이 들었다. 세척 기능도 추가하고 싶고, 어플에 달력을 추가해 매일매일의 기분에 맞는 아이콘을 삽입해 주고 싶었지만 3개월 동안의 짧은 프로젝트라 추가 기능 구현이 어려워서 아쉬웠다. 😭

 

프로젝트의 기획부터 구현까지의 과정을 경험하며 정말 많은 것을 배웠다. 중간 중간 발생한 문제들로 인해 방향을 수정하는 과정에서 어려움을 겪기도 했지만, 오류를 해결할 때 느끼는 그 짜릿함도 정말 좋았고 재미있었다. 이러한 과정들 덕분에 개발자로서 많은 성장을 할 수 있었고, 앞으로 더 발전하기 위해 새로운 프로젝트들을 도전해야겠다는 생각이 들었다. 🔥


📱 - > 🙆‍♀️  ❗️ 동작과정 살펴보기 ❗️

  1. 우리가 먼저 음성으로 질문을 하고

<처음 질문> 안녕하세요 Perdi 입니다. 오늘 어떤 하루를 보내셨나요 ?

  1. 사람이 한 말에서 감정 분석을 해야한다

(긍정 / 부정 / 중립) 각각 횟수를 count 한다

  • 긍정 pos, 부정 neg, 중립 neu
  • 50% 이상인 것을 추출해 9가지 경우를 만든다 !
  1. chat gpt 호출해 사용자의 응답에 알맞는 대답 생성
  • 여기서 문장의 길이 조절 필요,
  • 대화의 응답 횟수를 count 해야함 (너무 많이 대화가 오가지 않게 !) 3~4회
  1. chat gpt의 대답을 어플에 보내준다
  2. chat gpt의 대답을 음성으로 읽어준다

<1~4> 3회 반복

  1. 정해둔 횟수가 채워지거나, 대화가 끝나면

긍정/부정/중립 count 한 것을 토대로 디퓨저를 설정해 아두이노에게 넘겨줘야 함

  1. 아두이노와 어플간 통신을 통해 정해진 디퓨저 향 추출
  • Android → Server와의 POST 통신을 통해 사용자의 대답 전달

📖 개발 시작 전 공부했던 기록 📖

API

= 한 프로그램에서 다른 프로그램으로 데이터를 주고받기 위한 방법(=code)

= 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 하는 인터페이스

우리의 경우 → 다른 회사에서 만든 기능을 가져와서 사용한다

 

언어 선정 → FrameWork의 러닝커브 조사 → FrameWork 선정

  • 러닝커브 (= 개발 언어/기술을 배우는데 필요한 시간)

FrameWork = 뼈대 / 기본구조

→ 틀 안에 이미 제어 흐름에 대한 주도성이 내제되어 있다

프레임 워크 위에 개발한 클래스를 등록하고, 프레임워크가 흐름을 주도하는 중에 개발자가 만든 애플리케이션 코드를 사용한다.

프로그래밍 규칙이 정해져 있다

 

JAVA → Spring

Python → Django, Flask

 

Django(장고) / 러닝커브가 높음 (어려움)

플라스크에 비해 사용자가 많아서 자료 찾기 수월

but) 플라스크보다 약 10배 많은 코드라인

프레임워크가 복잡함 / 틀에만 잘 맞추면 큰 프로젝트 가능(자유도가 낮음)

속도가 빠르고 유지 보수 편리

 

Flask(플라스크) / 장고에 비해 러닝커브가 낮아 빠른 학습

상대적으로 사용자가 적다

간단한 Framework를 지향

Framework - 뼈대역할

기본 기능 제공에 다양한 확장 모듈을 이용할 수 있는 구조라 자유도가 높다

API 서버처럼 요청과 응답이 매우 확정적인 경우에는 가벼운 flask 개발이 더 효율적임

 

우리가 만약 다른 언어를 사용하게 된다면

통신때문에 소켓?이 필요해서 과정 하나가 더 추가 (시간 부족할 것 같아서)

아예 처음부터 언어를 정해야 함

 

⭐️ 기본적인 틀 10월 중순 전에 완성

→ 그 이후부터 본격적인 기능 추가

 

JSON = 웹과 컴퓨터 프로그램에서 데이터를 교환하기 위해 데이터 객체를 속성 * 값 쌍 형태로 표현하는 형식

인터페이스 = 상호간의 소통(읽기/쓰기)을 위해 만들어진 접점

 

API를 찾고 거기 나와 있는 언어 공부

언어 선정 → FrameWork의 러닝커브 조사 → FrameWork 선정

  • 러닝커브 (= 개발 언어/기술을 배우는데 필요한 시간)

📋 회의를 준비했던 기록들 📋

처음 기능을 시작할 때

영상 속처럼 그냥 버튼을 클릭해서 말이 나오게 할 것인지?

혹은 빅스비/ 시리처럼 불러서 시작할 것인지

만약에 불러서 시작한다면 → 향기(Perfume) + 디퓨저 (Diffuser) Per + Di = 퍼디


내가 생각한 기능 - 스마트 디퓨저 기능을 참조

향기 조절이 가능하게 1~5단계 OR 타이머 조절 기능

실제 스마트 디퓨저가 있음

  • 디퓨저 원액을 안개처럼 분사시켜 기류를 타고 흘러나가는 방식으로 뿌려준다
  • 앱을 통해 분사시간 / 분사주기 / 분사 방향 선택 가능
  • but) 기분에 맞게 향 선택은 불가능 한 것 같음 / 원하는 오일을 기계에 끼우는 방식이거나 하나의 향
  • 아니면 좋았던 향을 선호도 표시할 수 있게 해서

평소에 기분이 아니더라도 그 향이 생각날 때 다시 분사 가능하게

인간의 감정을 10가지로 구분하기

보통의 사람들은 기분이 어떠냐고 물어보면 대부분 긍정적인 대답을 하고 / 발표 날의 분위기도 긍정적일 것 같아서 긍정의 비율이 더 많아야 할 것 같다.

 

따라서 긍정 6: 부정 4 OR 긍정 7 : 부정 3 으로 나눈다.

 

위의 표를 참조해 보는 것도 좋을 것 같다.

 

세척 기능 추가하기 (가능하다면 !!!!!!!)

→ 왜냐하면 공병의 입구가 작아 깔대기로 디퓨저를 공병에 넣어야 하는데, 세척 기능이 없다면 향이 섞일 가능성이 있다


[참고자료]

다들 너무 사랑하고 감사합니다. 전 이 게시글들이 없었다면 프로젝트를 무사히 끝내지 못했을 겁니다 .. 💗 💗 💗 💗 💗 💗 

AI

파이썬을 사용하여 OpenAI ChatGPT API를 이용하여 AI 음성 어시스턴트를 구축하는 방법 | ChatGPT 무료

Speech-to-Text: 자동 음성 인식  |  Google Cloud

stt (Speech-To-Text)

 

STT (Speech-to-Text)

 

api.ncloud-docs.com

 

빠른 시작: API를 사용하여 음성을 텍스트로 변환하기  |  Cloud Speech-to-Text 문서  |  Google Cloud

 

빠른 시작: API를 사용하여 음성을 텍스트로 변환하기  |  Cloud Speech-to-Text Documentation  |  Google Clo

Vertex AI의 최신 멀티모달 모델인 Gemini 1.5 모델을 사용해 보고 최대 2백만 개의 토큰 컨텍스트 윈도우를 사용해 무엇을 빌드할 수 있는지 확인해 보세요. Vertex AI의 최신 멀티모달 모델인 Gemini 1.5

cloud.google.com

 

음성 text 변환

Natural Language API를 사용한 항목 및 감정 분석 | Google Cloud Skills Boost

 

자연어 처리를 통한 감정 분석

OpenAI Platform

 

Google Cloud Flatform

Android Server 통신

안드로이드에서 POST방식으로 DATA 전달하기

 

안드로이드에서 POST방식으로 DATA 전달하기

안드로이드를 공부하게 되면 웹은 건드리지 않을 것이란 생각은 내 망상이였다. 안드로이드에 웹은 반드시 필요한 존재임에 틀림없다. 안드로이드와 서버의 관계를 살펴보면 안드로이드에서

kgu0724.tistory.com

 

[Java] Java로 HTTP GET, POST 통신하기

 

[Java] Java로 HTTP GET, POST 통신하기

최근에 프로젝트를 진행하면서 Java로 외부 API를 활용하여 데이터를 얻어와야 하는 일이 생겼습니다. 그래서 Java로 HTTP 통신을 하는 방법에 대해 공부해보았습니다. Oracle JDK 11 버전을 사용했으며

limdevbasic.tistory.com

 

[안드로이드] Retrofit2를 사용한 GET/POST 서버통신 with Kotlin

 

[안드로이드] Retrofit2를 사용한 GET/POST 서버통신 with Kotlin

Retrofit 2란? Retrofit은 Square에서 만든 라이브러리입니다. Android에서 HTTP API통신을 원할하고 편하게 사용하게 해줍니다. Github : github.com/square/retrofit square/retrofit A type-safe HTTP client for Android and the JVM.

yang-droid.tistory.com

 

184. (java/자바) HttpURLConnection 사용해 post body json 방식 데이터 요청 및 응답 값 확인 실시

 

184. (java/자바) HttpURLConnection 사용해 post body json 방식 데이터 요청 및 응답 값 확인 실시

/* =========================== */ [ 개발 환경 설정 ] ​ 개발 툴 : Eclipse 개발 언어 : Java /* =========================== */ ​ /* =========================== */ [소스 코드] package ex5; import java.io.BufferedReader; import java.io.IOEx

kkh0977.tistory.com

 

서버

AWS 서버 구축하기 #3 - 개발환경 세팅

 

AWS 서버 구축하기 #3 - 개발환경 세팅

공부를 위해 AWS 에 가입 해 봤습니다. https://hermeslog.tistory.com/671 AWS 서버 구축하기 #1 - AWS 가입 공부를 위해 AWS 에 가입 해 봤습니다. AWS는 12개월동안 프리티아 계정(무료계정) 사용이 가능합니다.

hermeslog.tistory.com

 

[Web server] 외부에서 내 웹서버(PC)에 접속하기 (포트포워딩, 방화벽)

 

[Web server] 외부에서 내 웹서버(PC)에 접속하기 (포트포워딩, 방화벽)

최근 VPN 서버를 만들일이 있어서 이것저것 세팅하다가 구글에 제대로 된 정보가 몇 없어서 다른 분들께 도움이 되고자 글을 남깁니다. Apache 웹 서버를 사용했습니다. 공유기 밑에 있는 내 서브

kibbomi.tistory.com

 

3. AWS EC2서버에 putty로 접속하기

 

3. AWS EC2서버에 putty로 접속하기

AWS EC2 서버에 접속할 수 있는 방법은 3가지로 독립 실행형 SSH 클라이언트, Session Manager, EC2 인스턴스 연결(브라우저 기반 SSH 연결) 이 있습니다. 3가지 방법 모두 추가 설치및 설정이 필요합니다.

sujinisacat.tistory.com

 

'Project' 카테고리의 다른 글

[K-해커톤12] 수상후기  (2) 2024.11.17
[kotlin] 기본 문법 정리  (2) 2024.11.14