FunProject - Arduino ile e-Mail Posta Kutusu Yapımı
Güncelleme tarihi: 29 Oca 2022
Bu projede Amerikan posta kutusuna benzer bir email posta kutusu yaptım. Bu posta kutusu ile eğer bir email gelirse fiziksel olarak da anlayabilir siniz. Projede oldukça az malzeme olmasına rağmen yazılım kısmı biraz uğraştırdı diyebilirim.
Yazılım kısmında sadece email gelince oluşturduğum posta kutusu hareket etsin istemedim. Fiziksel olarak bildiri yapmasının yanında masaüstü ekranında da ekranın sağ alt köşesinde, bir popup pencere ile gelen bu emailin içeriğini göstermekteyim. Gelen mailleri bir json listede tutarak geriye dönük maillere de bakılabilmekte.
Yazılımın ön yüzünde yine ElectronJs ve ReactJs kullandım. Tabiki sadece bu iki teknolojiyi kullanmak yetmedi. Bu ikisi temel olmakla birlikte bir çok kütüphaneyi de yine bu projede kullandım.
Aşağıda gördüğünüz resim gelen email in ekranın sağ alt köşede görünümüdür.

Diğer hobi projelerim de olduğu gibi yine işin donanım kısmını anlatmakla başlayacağım. Bu iş için bir adet servo motor ve bir adet de Arduino Uno kullandım.
Bağlantı Şeması
Servo motorda üç adet bağlantı kablosu bulunmakta. Bir tanesini Arduino nun artı(5V) bir tanesi eksi(GND) diğerini de bir pine bağlamanız gerekmekte. Ben dokuzuncu pini servo pozisyonunu ayarlamak için kullandım.

Kullanılan Malzemeler
Servo Motor : https://www.robolinkmarket.com/tower-pro-micro-servo-9g-sg90?_sgm_campaign=product&_sgm_source=6171&_sgm_action=search

Cihaz Görüntüsü

Arduino Kodları
Arduino kısmında aslında pek bişi yok. Sadece gönderdiğim değerleri servo motora ileten bir kod blogu bulunmakta. Birde 1000 değerini servo pozisyonunu başlangıç değerine getirmek için kullanıyorum.
Projede kullandığım teknolojiler ve kütüphaneler:
Backend
C#
ASP .NET
Newtonsoft.JSON (https://www.newtonsoft.com/json)
Dakota framework (kendi oluşturduğum framework) (https://github.com/HakanUcaar/Dakota)
Frontend
ElectronJs (https://www.electronjs.org/)
ReactJS (https://tr.reactjs.org/)
Redux (https://redux.js.org/)
Material-UI (https://material-ui.com/)
Electron-edge-js (https://www.npmjs.com/package/electron-edge-js)
Custom-electron-titlebar (https://www.npmjs.com/package/custom-electron-titlebar)
mail-notifier (https://www.npmjs.com/package/mail-notifier)
Editör
VsCode
Backend Kodlarının Yazımı
Arka uç noktasının yazımında C# dilini ve .Net in gücünü kullandım. Daha önceki projelerde olduğu gibi yine kendi oluşturduğum bir framework olan Dakota frameworkü burada da kullandım.
Öncelikle bir class library projesi oluşturarak işe başladım. Daha sonra Newtonsoft json kütüphanesini ve kendi yazdığım Dakota frameworkü projeye ekledim.
Model kısmında da arayüz kısmında kaydedeceğim ayarların bilgisini yükleyeceğim class modellerini oluşturdum.
Ön uç da edge kütüphanesini kullanacağım için arka uç daki methodların ona uygun olması gerekiyordu. O yüzden asenkron olarak methodlarımı oluşturdum. Bu methodlardan birincisi Arduino ya bağlanmak, ikincisi yeni mail geldiğinde tetiklemek, üçüncüsünü de servoyu resetlemek için kullandım.

Frontend Kodlarının Yazımı
Ön kısımdaki ana uygulamayı tray icon başlayacak şekilde ayarladım. Çünkü aslında bu uygulama daha çok bir servis gibi çalışıyor.
Forma baktığınızda iki ana kısımdan oluşuyor birinci kısım header kısmı ve ikinci kısım gelen maillerin oluşturduğu liste.
Mail sunucunuzun IMAP ayarlarını açtıktan sonra, buradaki ayarlar kısmına bu bilgileri girmeniz gerekmektedir. Proje IMAP protokolü üzerinden çalışmaktadır.

Bir mail geldiğinde sağ altta popup şeklinde mail içeriği ile birlikte çıkmaktadır. Buradan mail içeriği okunabilir. Aşağıda örnek bir gif görebilirsiniz.

İki uç noktada oldukça fazla kod bulunmakta fakat bu kodları anlatmak çok uzun sürdüğü için sadece özet geçmenin daha faydalı olacağını düşündüm.
Detaylı incelemek isteyenler Github hesabımdan kaynak kodları inceleyebilirler.
Github
https://github.com/HakanUcaar/MakerProjectsBackend
https://github.com/HakanUcaar/MakerProjectsFrontend