some cleaning and start of a new chap.

master
Ondřej Hruška 7 years ago
parent 3d8192644b
commit 4d9c5064f7
Signed by: MightyPork
GPG Key ID: 2C5FD5035250423D
  1. 4
      ch.discussion.tex
  2. 3
      ch.example_projects.tex
  3. 35
      ch.summary.tex
  4. BIN
      thesis.pdf
  5. 1
      thesis.tex

@ -12,7 +12,7 @@ The initial version of the project presented in this paper provides access to di
We developed a transaction-based binary protocol that is used by all three communication interfaces. As the implementation of the protocol would be an inconvenience for the user, we also developed software libraries in languages C and Python that implement it and provide high level access to the hardware module. It has been tested and verified that the Python library can be used from MATLAB scripts, should the user need MATLAB, e.g., for data processing or visualization. We developed a transaction-based binary protocol that is used by all three communication interfaces. As the implementation of the protocol would be an inconvenience for the user, we also developed software libraries in languages C and Python that implement it and provide high level access to the hardware module. It has been tested and verified that the Python library can be used from MATLAB scripts, should the user need MATLAB, e.g., for data processing or visualization.
To make the devices easy to reconfigure for the user, the configuration options--- such as, which features to enable and what pins to use for them---are represented by entries in INI configuration files. The user can access these files through a virtual mass storage with an emulated FAT16 file system presented to the host \gls{PC} on the \gls{USB} port. Because the file system emulation relies on a certain pattern of behavior from the host, it may not work well in all cases. This is mitigated by providing a programmatic access to the configuration files also through the communication interface. To make the devices easy to reconfigure for the user, the configuration options---such as, which features to enable and what pins to use for them---are represented by entries in INI configuration files. The user can access these files through a virtual mass storage with an emulated FAT16 file system presented to the host \gls{PC} on the \gls{USB} port. Because the file system emulation relies on a certain pattern of behavior from the host, it may not work well in all cases. This is mitigated by providing a programmatic access to the configuration files also through the communication interface.
\section{Results and Possible Applications} \section{Results and Possible Applications}
@ -46,7 +46,7 @@ Future development of the project might focus on expanding the number of support
The client libraries need to be tested on other operating systems, and the C library may be expanded to provide a higher level of comfort to the user. The library could be ported to more programming languages, such as Java or \CS, and graphical applications could be developed to make the device more approachable to users less familiar with programming. The client libraries need to be tested on other operating systems, and the C library may be expanded to provide a higher level of comfort to the user. The library could be ported to more programming languages, such as Java or \CS, and graphical applications could be developed to make the device more approachable to users less familiar with programming.
GEX Zero, with the Raspberry Pi Zero form factor, introduced the possibility of using Raspberry Pi add-on boards. It would be interesting to test the compatibility with different existing add-ons, and further to explore the possibility of designing custom ones. An add-on board could, for instance, implement the support circuitry needed for the \gls{DALI} bus, RS-485, or for current loop sensors. The \gls{CAN} bus has not been added to GEX because the hardware peripheral cannot be enabled at the same time as \gls{USB}; its addition with an add-on board, or a different microcontroller model, is an interesting possibility. GEX Zero, with the Raspberry Pi Zero form factor, introduced the possibility of using Raspberry Pi add-on boards. It would be interesting to test the compatibility with more such existing boards, and further to explore the possibility of designing custom ones. An add-on board could, for instance, provide access to the \gls{DALI} bus, RS-485, \gls{CAN}, or Ethernet.

@ -0,0 +1,3 @@
\chapter{Example Applications}
\todo[inline]{OwO}

@ -1,27 +1,23 @@
\chapter{Summary} \chapter{Conclusion}
We developed an open source software and hardware platform providing access to hardware buses (SPI, \IIC, USART, and 1-Wire) and low-level circuitry from high-level user applications running on a \gls{PC}. The platform consists of a firmware for the STM32F072 microcontroller, three hardware prototypes, and software libraries in programming languages C and Python, the latter also compatible with MATLAB. The firmware may be used with the custom hardware or STM32 development boards. We have developed an open-source software and hardware platform providing access to \gls{GPIO} pins, hardware buses, and signal acquisition and generation functions controlled by high-level user applications running on a \gls{PC}.
The devices are connected to the \gls{PC} by one of three interfaces: \gls{USB} as a virtual COM port or using raw endpoint access, a hardware \gls{UART}, or a radio link with the nRF24L01+ transceiver. The platform consists of a FreeRTOS-based firmware for the STM32F072 microcontroller, three prototype hardware modules, and support software libraries in programming languages C and Python, the latter also compatible with MATLAB. The firmware may be used with the custom hardware, or with existing STM32 development boards.
The firmware is configured by editing INI files exposed in a virtual file system through a \gls{USB} connection, or programmatically via the communication interface. The configuration may be stored permanently in the \gls{MCU}'s flash memory, or temporarily in its \gls{RAM}. The devices are connected to the \gls{PC} by one of three interfaces: \gls{USB} as a virtual COM port or with raw endpoint access, a hardware \gls{UART}, or a radio link with the nRF24L01+ transceiver. Configuration is performed by editing INI files exposed in an emulated FAT16 file system through the \gls{USB} connection, or programmatically.
\noindent \noindent
The following features are available, implemented as independent functional blocks that can be used in one or more instances: The following features are available, implemented as independent functional blocks that can be enabled in any combination:
\begin{itemize}[itemsep=1pt] \begin{itemize}[itemsep=1pt]
\item \textbf{Digital input} with asynchronous pin change detection \item \textbf{Digital input} with asynchronous pin change detection
\item \textbf{Digital output} \item \textbf{Digital output} with pulse generation support
\begin{itemize}
\item Simultaneous update of up to 16 output pins
\item Pulse generation on any pin, with microsecond or millisecond resolution
\end{itemize}
\item \textbf{Digital communication interfaces:} \item \textbf{Digital communication interfaces:}
\begin{itemize} \begin{itemize}
\item \textbf{\gls{SPI}} with up to 16 slaves and multicast support \item \textbf{\gls{SPI}} with up to 16 slaves and multicast support
\item \textbf{\gls{I2C}} master \item \textbf{\gls{I2C}} master
\item \textbf{\gls{USART}} with optional RS-485 driver support \item \textbf{\gls{USART}} with optional RS-485 driver support
\item \textbf{1-Wire} master implementing the \gls{ROM} Search algorithm \item \textbf{1-Wire} master, implementing the \gls{ROM} Search algorithm
\end{itemize} \end{itemize}
\item \textbf{Analog signal acquisition} \item \textbf{Analog signal acquisition}
\begin{itemize} \begin{itemize}
@ -29,20 +25,19 @@ The following features are available, implemented as independent functional bloc
\item Isochronous sampling: fixed sample count, or a continuous stream \item Isochronous sampling: fixed sample count, or a continuous stream
\item Threshold-based triggering with a pre-trigger buffer \item Threshold-based triggering with a pre-trigger buffer
\end{itemize} \end{itemize}
\item \textbf{Analog signal output} \item \textbf{Analog signal generation}
\begin{itemize} \begin{itemize}
\item Sine, triangle, sawtooth, or rectangle waveform generation using \gls{DDS} \item Sine, triangle, sawtooth, or rectangle waveform generation using \gls{DDS}
\item \gls{DC} level output \item \gls{DC} level output
\item Optional dithering with a noise signal
\end{itemize} \end{itemize}
\item \textbf{Frequency, pulse width, and duty cycle measurement}
\item \textbf{Pulse counting}
\item \textbf{\gls{PWM} signal generation}
\item \textbf{NeoPixel RGB \gls{LED} strip control} \item \textbf{NeoPixel RGB \gls{LED} strip control}
\item \textbf{Multi-channel shift register loading} \item \textbf{Frequency, pulse width, and duty cycle measurement}
\item \textbf{Capacitive touch sensing} \item \textbf{Pulse counting}
\item \textbf{\gls{PWM} signal generation}
\item \textbf{Multi-channel shift register loading}
\item \textbf{Capacitive touch sensing}
\end{itemize} \end{itemize}
The developed platform may be used as an learning aid, as an inexpensive development tool replacing professional laboratory equipment, or for automation purposes, taking advantage of its hardware interfacing capabilities with a control program running on a PC. The developed platform may be used as an learning aid, as an inexpensive development tool replacing professional laboratory equipment, or for automation purposes, taking advantage of its hardware interfacing capabilities to connect to multiple sensors and actuators.
Future development shall focus on expanding support to other hardware platforms, improving the software library, and adding support to other programming languages. Future development may focus on expanding support to other \gls{MCU} models, adding new features, improving the software libraries, and providing a more user-friendly control interface.

Binary file not shown.

@ -47,6 +47,7 @@
\part{Results} \part{Results}
\input{ch.discussion} \input{ch.discussion}
\input{ch.example_projects}
\input{ch.summary} \input{ch.summary}
\newpage \newpage

Loading…
Cancel
Save