doc.tex (6324B)
1 \documentclass{article} 2 \usepackage[utf8]{inputenc} 3 \usepackage[greek,english]{babel} 4 \usepackage{alphabeta} 5 \usepackage{fancyhdr} 6 \usepackage{listings} 7 \usepackage{mathtools} 8 \usepackage{xcolor} 9 \usepackage{graphicx} 10 \usepackage{siunitx} 11 \usepackage{float} 12 13 \title{Ενσωματωμένα Συστήματα - Τελική Εργασία} 14 \author{Χρήστος Μαργιώλης - 19390133} 15 \date{Ιανουάριος 2022} 16 17 \begin{document} 18 19 \begin{titlepage} 20 \maketitle 21 \begin{figure}[t!] 22 \begin{center} 23 \includegraphics[scale=0.3]{./res/uniwalogo.png} \\ 24 \Large 25 \textbf{Πανεπιστήμιο Δυτικής Αττικής} \\ 26 \large 27 Τμήμα Μηχανικών Πληροφορικής και Ηλεκτρονικών Υπολογιστών 28 \end{center} 29 \end{figure} 30 \end{titlepage} 31 32 \renewcommand{\contentsname}{Περιεχόμενα} 33 \tableofcontents 34 \pagebreak 35 36 \section{Πληροφορίες} 37 \subsection{Λίστα υλικών -- BOM} 38 \begin{itemize} 39 \item Microchip PIC16F877A - I/P μικροελεγκτής. 40 \item Adafruit BME280 σένσορας θερμοκρασίας, υγρασίας και πίεσης. 41 \item 16x2 LCD οθόνη. 42 \item 1x \SI{16}{\mega\hertz} κρυσταλλικός ταλαντωτής. 43 \item 2x \SI{10}{\kohm} αντίσταση. 44 \item 2x \SI{330}{\ohm} αντίσταση. 45 \item 1x \SI{10}{\kohm} ποτενσιόμετρο. 46 \item 2x \SI{22}{\pico\farad} κεραμεικός πυκωντής. 47 \item 2x LED 48 \item 2x κουμπί. 49 \item Καλώδια. 50 \item 3x AAA μπαταρίες (4.5V) ή μπαταρία 9V με 5V διαιρέτη τάσης. 51 \end{itemize} 52 53 \subsection{Κόστος παραγωγής} 54 55 Οι τιμές υπολογίστηκαν με βάση τα τιμολόγια του https://www.digikey.com. \\ 56 57 Για 100 τεμάχια: 58 \begin{center} 59 \begin{tabular}{|l|l|} 60 \hline 61 \textbf{Μέρος} & \textbf{Τιμή} \\ 62 \hline 63 PIC16F877A & \$706 \\ 64 BME280 & \$1495 \\ 65 LCD & \$365 \\ 66 \hline 67 Σύνολο & \$2566 \\ 68 \hline 69 \end{tabular} 70 \end{center} 71 72 Για 1500 τεμάχια: 73 \begin{center} 74 \begin{tabular}{|l|l|} 75 \hline 76 \textbf{Μέρος} & \textbf{Τιμή} \\ 77 \hline 78 PIC16F877A & \$10.590 \\ 79 BME280 & \$22.420 \\ 80 LCD & \$5.470 \\ 81 \hline 82 Σύνολο & \$38.480 \\ 83 \hline 84 \end{tabular} 85 \end{center} 86 87 'Οχι και ό,τι πιο οικονομικό έχει βγει... 88 89 \subsection{Θερμοκρασίες λειτουργίας} 90 91 \begin{center} 92 \begin{tabular}{|l|l|} 93 \hline 94 \textbf{Μέρος} & \textbf{Εύρος θερμοκρασίας} \\ 95 \hline 96 PIC16F877A & $\SI{-40}{\celsius} \sim \SI{85}{\celsius}$ \\ 97 BME280 & $\SI{-40}{\celsius} \sim \SI{85}{\celsius}$ \\ 98 LCD & $\SI{-20}{\celsius} \sim \SI{70}{\celsius}$ \\ 99 \hline 100 \end{tabular} 101 \end{center} 102 103 Οπότε, παίρνοντας υπόψη την οθόνη LCD η οποία έχει το μικρότερο 104 εύρος θερμοκρασίας λειτουργίας, το σύστημα είναι ασφαλές να 105 λειτουργήσει στους $\SI{-20}{\celsius} \sim \SI{70}{\celsius}$. 106 107 \section{Ανάπτυξη συστήματος} 108 109 Στο directory \lstinline{schem/} βρίσκονται όλα τα αρχεία 110 σχετικά με το σχηματικό (αρχεία KiCAD και PDF). 111 112 \subsection{Σχηματικό} 113 \begin{center} 114 \includegraphics[width=\linewidth]{./res/schem.png} 115 \end{center} 116 117 \subsection{Κώδικας} 118 Η ανάπτυξη του κώδικα έγινε σε λειτουργικό FreeBSD 13.0 με την χρήση του 119 \lstinline{sdcc} C compiler, και το \lstinline{pk2cmd} για την 120 επικοινωνία του μικροελεγκτή με το PICKit2 -- τον προγραμματιστή. 121 'Εχω αναλύσει την διαδικασία αυτή σε μορφή οδηγού στην ιστοσελίδα 122 μου και στο FreeBSD Wiki: https://wiki.freebsd.org/Microcontrollers/PIC. 123 124 Στο directory \lstinline{src/} βρίσκεται όλος ο κώδικας του συστήματος. 125 Το \lstinline{Makefile} είναι υπεύθυνο για την μεταγλώττιση και φόρτωση 126 του προγράμματος στο PIC. Η επιλογές που μπορούν να δωθούν στο \lstinline{Makefile} 127 είναι οι εξής: 128 129 \begin{itemize} 130 \item Καμία επιλογή: Μεταγλωττίζει το πρόγραμμα. 131 \item \lstinline{clean}: Καθαρίζει το directory από τα αρχεία 132 που παράγει ο compiler. 133 \item \lstinline{erase}: Διαγράφει την μνήμη του PIC. 134 \item \lstinline{flash}: Φορτώνει το πρόγραμμα στο PIC. 135 \end{itemize} 136 137 Στον κώδικα έχει υλοποιηθεί ο Timer0 του PIC, driver για την οθόνη LCD, 138 υλοποιήση του προτοκώλλου I$^2$C και driver για τον σένσορα BME280. 'Εχει 139 υλοποιηθεί μόνο ό,τι είναι απολύτως απαραίτητο για το σύστημα. 140 141 Αν και στην εκφώνηση αναφέρεται ότι ο σένσορας θερμοκρασίας και υγρασίας 142 πρέπει να είναι αναλογικός, χρησιμοποίησα ψηφιακό, λόγω του ότι στο μαγαζί 143 όπου προμηθεύτηκα τα υλικά δεν υπήρχε αναλογικός σένσορας σε απόθεμα. 144 145 \subsection{Εικόνες} 146 147 \begin{figure}[H] 148 \centering 149 \rotatebox{270}{\includegraphics[width=\linewidth]{res/main.jpg}} 150 \caption{Βασική λειτουργία.} 151 \end{figure} 152 153 154 \begin{figure}[H] 155 \centering 156 \includegraphics[width=\linewidth]{res/side.jpg} 157 \caption{Πλάγια λήψη.} 158 \end{figure} 159 160 \begin{figure}[H] 161 \centering 162 \rotatebox{270}{\includegraphics[width=\linewidth]{res/button.jpg}} 163 \caption{Λειτουργία κατά την πίεση του κουμπιού.} 164 \end{figure} 165 166 \begin{figure}[H] 167 \centering 168 \rotatebox{270}{\includegraphics[width=\linewidth]{res/pickit.jpg}} 169 \caption{Προγραμματισμός του συστήματος με το PICKit2.} 170 \end{figure} 171 172 \end{document}