Finish the System design chapter

The commit contains mainly clarifications based on a huge number
of inserted references alonw with some more glossary entries.
master
Peter Babič 8 years ago
parent 557b628881
commit e7fb8cf64d
  1. 18
      analytical.tex
  2. 2
      glossaries.tex
  3. 151
      tukethesis.bib
  4. BIN
      tukethesis.pdf

@ -71,7 +71,7 @@ They are also divided to a hardware part and software part. Software is easier t
\section{System design}
The first mandatory software requirement asks for a web server. It is entirely possible for every measuring device to contain its own web server. However, multiple points are requiring separate parts to work as a \textbf{system}. Two common system structures are \textit{centralised} and \textit{decentralised}.
Decentralised (peer-to-peer) systems are harder to build but are more fail-proof. Since fail-proofness is not mentioned in the requirements, centralised system might suffice.
Decentralised (peer-to-peer) systems\cite{vu2009peer} are harder to build but are more fail-proof. Since fail-proofness is not mentioned in the requirements, centralised system might suffice.
Using centralised system means, that the measuring devices will use one separate accessory, from now called the \textbf{server node}, to do most of the work on the software side. The work includes, but is not limited to, receiving the measured data, storing them, hosting the web server with the \gls{gui} containing all necessary options and information, handling the \gls{usb} or communication with a \gls{cloud} and so on. The block diagram for a server node, depicting required blocks can be seen in the figure \ref{f:serv_node})
@ -83,7 +83,7 @@ The measuring devices, from now on called \textbf{client nodes}, will consist of
\subsection{Hardware components breakdown}
For the \textbf{server node}, a complete working solution already exists, ready to be employed. The \textbf{GL.inet board}, described in more detail in the chapter \ref{s:glinet}, is greatly sufficient in all required aspects, and thus should be used for this purpose.
Luckily, a particular part of the required functionality for the client is already integrated as a \textbf{ESP-8266 module}, described in more detail in the chapter \ref{s:esp8266}. The module contains the TCP/IP stack, micro-controller (application processor) running the user program, \gls{wlan} and light indication, all in one piece, so this greatly simplifies the design process and allows for more focus on the actual measurement circuitry. The actual ESP-12E module should be used, because of the available certification, which allows it to be introduced on the market later. It was shown in the figure \ref{f:esp-12e}.
Luckily, a particular part of the required functionality for the client is already integrated as a \textbf{ESP-8266 module}, described in more detail in the chapter \ref{s:esp8266}. The module contains the \gls{tcpip} stack, micro-controller (application processor) running the user program, \gls{wlan} and light indication, all in one piece, so this greatly simplifies the design process and allows for more focus on the actual measurement circuitry. The actual ESP-12E module should be used, because of the available certification\cite{online:2ADUIESP-12}, which allows it to be introduced on the market later. It was shown in the figure \ref{f:esp-12e}. The \gls{pwm} is present there too, so sound indication requires just an additional sound emitting device.
Talking about the measurement circuitry, the viable candidate is MAX78615 \cite{online:MAX78615} with the companion \gls{ic} MAX78700 \cite{online:MAX78700}. The couple \ref{f:schem_block} should be used, because it provides multiple ways of same voltage level communication with the processor, galvanic isolation via the pulse transformer for improved circuitry protection, great precision, accuracy and utility. The shunt resistor is utilised as a way of obtaining measurements, described in the sub-chapter \ref{ss:pmic}.
@ -93,21 +93,21 @@ Talking about the measurement circuitry, the viable candidate is MAX78615 \cite{
\caption{The proposed block diagram of a schematic of a \textit{client node} focusing on measuring part of the circuit}\label{f:schem_block}
\end{figure}
For the protection against fire a standard electric fuse or self-regenerative fuse should be used. The circuit protection against high voltage should be solved with an isolated DC-to-DC converter or with the linear transformer coupled with the linear voltage regulator. Since the former one is either expensive or hard to design, the choice should fall on the latter.
For the protection against fire a standard electric fuse or a resettable \gls{ptc} fuse\cite{wright2004electric} should be used. The circuit protection against high voltage should be solved with an isolated DC-to-DC converter\cite{carr1996linear} or with the linear transformer coupled with the linear voltage regulator\cite{2008linear}. Since the former one is either expensive or hard to design, the choice should fall on the latter.
The remaining parts of the client node block diagram \ref{f:client_node} not yet mentioned are switching and sound indication. Either a mechanical relay or a semiconductor device, such as a thyristor or a \gls{ssr} isolated by an opto-coupler will do. Mechanical relays tend to be larger and produce sound noise, have slow response time, but have inbuilt separate isolation and are capable of switching higher currents without additional thermal issues than their semiconductor counterparts. The disadvantages of the mechanical relay are not relevant here, thus the choice is obvious.
The remaining part of the client node block diagram \ref{f:client_node} not yet mentioned is switching. Either a mechanical relay or a semiconductor device, such as a thyristor or a \gls{ssr} isolated by an opto-coupler\cite{trzynadlowski2015introduction} will do. Mechanical relays tend to be larger and produce sound noise, have slow response time, but have inbuilt separate isolation and are capable of switching higher currents without additional thermal issues than their semiconductor counterparts\cite{blume2008electric}. The disadvantages of the mechanical relay are not relevant here, thus the choice is obvious.
\subsection{Software components breakdown}
As with the hardware components, again, starting with the server node, the board should work alongside the \textbf{OpenWRT} \gls{os}, again, described in a deeper detail in the sub-chapter \ref{ss:openwrt}. It allows for relatively easily configurable network connections and the web-server.
As with the hardware components, again, starting with the server node, the board should work alongside the \textbf{OpenWRT} \gls{os}, again, described in a deeper detail in the sub-chapter \ref{ss:openwrt}. It allows for relatively easily configurable network connections\cite{rosen2013linux} and the web-server.
The web-server should be handled by some package already available for installation into the OpenWRT distribution. There are various choices. Ordered in an ascending order by their complexity, the most common ones are: \texttt{uhttpd}, \texttt{lighttpd}, \texttt{Apache} and \texttt{nginx}. The resource requirements are proportional to the complexity, and since GL.inet is not an extremely powerful machine, the choice should fall on the more lightweight one from the beginning of the list, with just as many features as absolutely necessary.
The web-server should be handled by some package already available for installation into the OpenWRT distribution. There are various choices. Ordered in an ascending order by their complexity, the most common ones are: \texttt{uhttpd}, \texttt{lighttpd}, \texttt{Apache} and \texttt{nginx}. The resource requirements are proportional to the complexity, and since GL.inet is not an extremely powerful machine, the choice should fall on the more lightweight one from the beginning of the list, with just as many features as absolutely necessary\cite{adelstein2007linux}.
As far as a choice for the programming/scripting language goes, there are three rather good choices: \texttt{Python}, \texttt{PHP} and \texttt{Lua}. There is no exact way to choose - it all depends on the confidence and the efficiency of the implementer, which one fits the best. Any available language will do. However, it should be noted, that \texttt{Lua}, is somewhat superior choice, since two influential software solutions for the proposed system are written in it. On the side of the OpenWRT, we are speaking about the web configuration interface called \texttt{LuCi}, while \texttt{NodeMCU} is a \texttt{Lua} eco-system based on ESP-8266. Both solution are relatively mature and open-source, so the programmer can refer to them easily.
As far as a choice for the programming/scripting language goes, there are three rather good choices: \texttt{Python}, \texttt{PHP} and \texttt{Lua}. There is no exact way to choose - it all depends on the confidence and the efficiency of the implementer, which one fits the best. Any available language will do. However, it should be noted, that \texttt{Lua}, is somewhat superior choice, since two influential software solutions for the proposed system are written in it. On the side of the OpenWRT, we are speaking about the web configuration interface called \texttt{LuCi}\cite{weidner2013linux}, while \texttt{NodeMCU}\cite{kurniawannodemcu} is a \texttt{Lua} eco-system based on ESP-8266. Both solution are relatively mature and open-source, so the programmer can refer to them easily.
Another choice lies in the way of storing the measured data on the server. For a local storage, one can either use plain text format for very simple data, or a data-base of some sort, preferably a relational one. If a data-base is to be chosen, the \texttt{SQLite} is a good choice - it was already noted, that the computational resources are at premium. Everything marketed as lightweight has an edge here. For a remote storage, there is a plethora of cloud-based solutions, ready to employ and use, so this is a very good choice, if an internet connection is available.
Another choice lies in the way of storing the measured data on the server. For a local storage, one can either use plain text format for very simple data, or a data-base of some sort, preferably a \gls{rdbms}\cite{sumathi2007fundamentals}. If a data-base is to be chosen, the \texttt{SQLite}\cite{allen2011definitive} is a good choice - it was already noted, that the computational resources are at premium. Everything marketed as lightweight has an edge here. For a remote storage, there is a plethora of cloud-based solutions, ready to employ and use, so this is a very good choice, if an internet connection is available.
On a client side of a proposed system, there are again three main language options. The first one is the already mentioned \texttt{Lua}. This language is simple, yet not terribly popular. The availability of the design resources might be limited. Second one is the ruler of the micro-controller world, plain \texttt{C}, suited for more experienced programmer, but providing the highest flexibility. The third choice is to use \texttt{C++} based eco-system, derived from \Gls{arduino}. This choice is far more superior, because it provides access to enormous resources and libraries readily available on the Internet with and addition to (mostly) cross-compatible code, which is a nice bonus.
On a client side of a proposed system, there are again three main language options. The first one is the already mentioned \texttt{Lua}. This language is simple, yet not terribly popular. The availability of the design resources might be limited. Second one is the ruler of the micro-controller world\cite{van2001programming}, plain \texttt{C}, suited for more experienced programmer, but providing the highest flexibility. The third choice is to use \texttt{C++} based eco-system, derived from \Gls{arduino}. This choice is far more superior, because it provides access to enormous resources and libraries\cite{seneviratne2015internet} readily available on the Internet with and addition to (mostly) cross-compatible code, which is a nice bonus.
\subsection{External components}

@ -67,6 +67,8 @@
\newacronym{qfn}{QFN}{Quad Flat No-leads}
\newacronym{ssr}{SSR}{Solid-state relay}
\newacronym{hdd}{HDD}{Hard-disk drive}
\newacronym{ptc}{PTC}{Positive thermal coefficient}
\newacronym{rdbms}{RDBMS}{Relational Data-base management system}
\newglossaryentry{ethernet}{
name=ethernet,

@ -206,3 +206,154 @@
note = {(Accessed on 13/04/2016)}
}
@book{2008linear,
title={Linear Integrated Circuits},
isbn={9780070648180},
url={https://books.google.sk/books?id=rvvMkSM7O84C},
year={2008},
publisher={McGraw-Hill Education (India) Pvt Limited},
pages={561}
}
@book{carr1996linear,
title={Linear Integrated Circuits},
author={Carr, J. and Carr, J.},
isbn={9780080938455},
url={https://books.google.sk/books?id=-qcICQ5Zf6IC},
year={1996},
publisher={Elsevier Science},
pages={182}
}
@book{wright2004electric,
title={Electric Fuses, 3rd Edition},
author={Wright, A. and Newbery, P.G. and Institution of Electrical Engineers},
isbn={9780863413995},
lccn={2006494121},
series={Energy Engineering Series},
url={https://books.google.sk/books?id=DxJHlzRADvgC},
year={2004},
publisher={Institution of Engineering and Technology},
pages={15}
}
@online{online:2ADUIESP-12,
author = {Shenzhen Anxinke technology co., LTD - 2ADUI},
title = {FCC ID 2ADUIESP-12},
url = {https://fccid.io/2ADUIESP-12},
note = {(Accessed on 14/04/2016)}
}
@book{trzynadlowski2015introduction,
title={Introduction to Modern Power Electronics},
author={Trzynadlowski, A.M.},
isbn={9781119003229},
lccn={2015025129},
url={https://books.google.sk/books?id=qBfICgAAQBAJ},
year={2015},
publisher={Wiley},
pages={85}
}
@book{blume2008electric,
title={Electric Power System Basics for the Nonelectrical Professional},
author={Blume, S.W.},
isbn={9780470185803},
series={IEEE Press Series on Power Engineering},
url={https://books.google.sk/books?id=\_mXaEA986xIC},
year={2008},
publisher={Wiley},
pages={163}
}
@book{rosen2013linux,
title={Linux Kernel Networking: Implementation and Theory},
author={Rosen, R.},
isbn={9781430261964},
series={Books for professionals by professionals},
url={https://books.google.sk/books?id=96V4AgAAQBAJ},
year={2013},
publisher={Apress}
}
@book{adelstein2007linux,
title={Linux System Administration},
author={Adelstein, T. and Lubanovic, B.},
isbn={9780596009526},
lccn={2007299673},
series={O'Reilly Series},
url={https://books.google.sk/books?id=-jYe2k1p5tIC},
year={2007},
publisher={O'Reilly Media},
pages={162}
}
@book{weidner2013linux,
title={Linux headless with PC Engines ALIX: },
author={Weidner, M.},
isbn={9781291599619},
url={https://books.google.sk/books?id=o8EuBAAAQBAJ},
year={2013},
publisher={LULU Press},
pages={86}
}
@book{kurniawannodemcu,
title={NodeMCU Development Workshop: },
author={Kurniawan, A.},
url={https://books.google.sk/books?id=XP9ICgAAQBAJ},
publisher={PE Press}
}
@book{vu2009peer,
title={Peer-to-Peer Computing: Principles and Applications},
author={Vu, Q.H. and Lupu, M. and Ooi, B.C.},
isbn={9783642035142},
lccn={2009938717},
url={https://books.google.sk/books?id=kd8\_AAAAQBAJ},
year={2009},
publisher={Springer Berlin Heidelberg}
}
@book{allen2011definitive,
title={The Definitive Guide to SQLite},
author={Allen, G. and Owens, M.},
isbn={9781430232261},
series={Books for professionals by professionals},
url={https://books.google.sk/books?id=-5zk12NiBBQC},
year={2011},
publisher={Apress}
}
@book{sumathi2007fundamentals,
title={Fundamentals of Relational Database Management Systems},
author={Sumathi, S. and Esakkirajan, S.},
isbn={9783540483977},
lccn={2006935984},
series={Studies in Computational Intelligence},
url={https://books.google.sk/books?id=RjnNA0GW0wsC},
year={2007},
publisher={Springer Berlin Heidelberg}
}
@book{van2001programming,
title={Programming Microcontrollers in C},
author={Van Sickle, T.},
isbn={9781878707574},
lccn={00134094},
series={Electronics \& Electrical},
url={https://books.google.sk/books?id=i62vDVOJ3YgC},
year={2001},
publisher={LLH Technology Pub.}
}
@book{seneviratne2015internet,
title={Internet of Things with Arduino Blueprints},
author={Seneviratne, P.},
isbn={9781785281914},
url={https://books.google.sk/books?id=jv9\_CwAAQBAJ},
year={2015},
publisher={Packt Publishing},
pages={42}
}

BIN
tukethesis.pdf (Stored with Git LFS)

Binary file not shown.
Loading…
Cancel
Save