Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:ccontasel:valentin.vintila [2024/05/05 14:18]
valentin.vintila [General Description]
pm:prj2024:ccontasel:valentin.vintila [2024/05/10 03:42] (current)
valentin.vintila [General Description]
Line 22: Line 22:
   * A device (perhaps, in the future, multiple devices) that will periodically ask the server for upcoming events.   * A device (perhaps, in the future, multiple devices) that will periodically ask the server for upcoming events.
  
 +=== The server ===
  
 +The server will store details about future and past events using a relational database (specifically,​ [[https://​www.postgresql.org/​|PostgreSQL]]). The web interface will be written from scratch in HTML, JavaScript (enhanced with [[https://​jquery.com/​|jQuery]]) and [[https://​sass-lang.com/​|Sass]]. These two components are glued together by a backend custom written in Go.
  
-=== The server ===+To provide high reproducibility,​ everything will be self-contained in a [[https://​www.docker.com/​|Docker]] container. 
 + 
 +=== The IoT device === 
 + 
 +The device that will remind the user of their tasks will need to connect to the server ​(meaning it requires network access) and will ping it at fixed time intervals to gain knowledge about upcoming events. A screen will provide the user with visual feedback, and, in case the user misses it, a buzzer will trigger as well. The reminder can be postponed (or silenced). 
 + 
 +To accomplish this, I figured an ESP32 is best suited. 
 + 
 +=== The complete picture === 
 + 
 +Everything I've just described can be seen in the following figure: 
 + 
 +{{:​pm:​prj2024:​ccontasel:​valentinvintila-sch-bloc.png?​600|}} 
 + 
 +=== Technology Used === 
 + 
 +This is a **software-heavy** project! With this being said, I would like to point out the exact concepts I've used that were taught during this class: 
 + 
 +  - **GPIO** - the GPIO pins are used to enable communication between the IoT device and the end user; 
 +  - **Interrupts** - when pressing a button, an interrupt will occur; 
 +  - **Timers** - to notify the user before a certain task is due, timers are needed; they are also used to communicate with the server; 
 +  - **I2C** - the device'​s display is controlled via the I2C protocol; 
 +  - **ADC** - since you are eager to deduct points, I am required to make bad decisions regarding my project - in this case, the buttons will use fewer GPIO pins for no reason other than to use ADC. 
 + 
 +==== Hardware Description ==== 
 + 
 +<note warning>​ 
 +Please note that this is a **software-heavy** project! 
 +</​note>​ 
 + 
 +<​note>​ 
 +It is also worth noting that this is just a draft (and will remain a draft until the project is complete), since //"the calculation at home does not match the one in the market"​ 💀// 
 +</​note>​ 
 + 
 +The server can be a repurposed old computer or, to simplify the process, a Raspberry Pi 4 Model B that I've had laying around :) 
 + 
 +The IoT device will be an ESP32 module connected to a bunch of buttons, a small display and a buzzer. 
 + 
 +=== Bill of Materials === 
 + 
 +  * 1 x ESP32 module 
 +  * 1 x LCD display 
 +  * 1 x Buzzer 
 +  * ~4 x Buttons 
 + 
 +As you can tell, there are plenty of external devices managed by the ESP32. 
 + 
 +==== Resources ====
  
-For this project, the server will be modeled by a Raspberry Pi 4 Model B because it is compact, it has Wi-Fi capabilities and, most importantly,​ it's what I've had laying around.+  * [1] [[https://​github.com|GitHub]]
pm/prj2024/ccontasel/valentin.vintila.1714907904.txt.gz · Last modified: 2024/05/05 14:18 by valentin.vintila
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0