%% Based on a TeXnicCenter-Template by Tino Weinkauf.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% HEADER
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper,twoside,10pt]{report}
% Alternative Options:
%	Paper Size: a4paper / a5paper / b5paper / letterpaper / legalpaper / executivepaper
% Duplex: oneside / twoside
% Base Font Size: 10pt / 11pt / 12pt


%% Language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[spanish]{babel} %francais, polish, spanish, ...
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\usepackage{lmodern} %Type1-font for non-english texts and characters

\usepackage{hyperref} %To include URL's.

\usepackage{listings} % To include source-code.

%% Packages for Graphics & Figures %%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{graphicx} %%For loading graphic files
%\usepackage{subfig} %%Subfigures inside a figure
%\usepackage{pst-all} %%PSTricks - not useable with pdfLaTeX

%% Math Packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}


%% Line Spacing %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\usepackage{setspace}
%\singlespacing        %% 1-spacing (default)
%\onehalfspacing       %% 1,5-spacing
%\doublespacing        %% 2-spacing


%% Other Packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\usepackage{a4wide} %%Smaller margins = more text per page.
%\usepackage{fancyhdr} %%Fancy headings
%\usepackage{longtable} %%For tables, that exceed one page


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% DOCUMENT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\pagestyle{empty} %No headings for the first pages.


%% Title Page %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{titlepage} %%You need a file 'titlepage.tex' for this.
%% ==> TeXnicCenter supplies a possible titlepage file
%% ==> with its templates (File | New from Template...).

%% Inhaltsverzeichnis %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tableofcontents %Table of contents
\cleardoublepage %The first chapter should start on an odd page.

\pagestyle{plain} %Now display headings: headings / fancy / ...

\chapter{Introducción.}
El protocolo RS-232 es un protocolo de comunicación serial asíncrono, esto es, que no tiene un orden de envío de datos entre los
dispositivos, por lo que se vuelve necesario el cuidar la sincronización del envío para evitar pérdidas de información o fallos en la
comunicación.

Otra de sus características principales es ser un protocolo punto a punto, esto es, que solamente permite la comunicación de un dispositivo con respecto a otro empleando una terminal de comunicación determinada. No permite la creación de redes.

El protoclo puede trabajarse de manera asíncrona o síncrona y tipos de canal simplex, half duplex o full duplex. En un canal simplex los datos siempre viajarán en una dirección, por ejemplo desde DCE a DTE. En un canal half duplex, los datos pueden viajar en una u otra dirección, pero sólo durante un determinado periodo de tiempo; luego la línea debe ser conmutada antes que los datos puedan viajar en la otra dirección. En un canal full duplex, los datos pueden viajar en ambos sentidos simultáneamente. Las líneas de handshaking de la RS-232 se usan para resolver los problemas asociados con este modo de operación, tal como en qué dirección los datos deben viajar en un instante determinado. \cite{PROT}

\chapter{Bases teóricas.}
\section{Protocolo RS-232}
Es un protocolo desarrollado para la comunicación serial de dispositivos sencillos, ampliamente utilizado debido a la facilidad de comunicación y las ventajas en coste que representa la comunicación serial. Hace uso de conectores de tipo DB-25, sin embargo, es común observar dispositivos con conectores de tipo DB-9, de 9 pines debido a su menor costo.

El interfaz eléctrico utiliza una conexión eléctrica asimétrica con circuitos no equilibrados, todos referenciados a tierra. Los estados lógicos son definidos por los siguientes niveles de voltaje \ref{RS}:

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/RS.eps}
	\caption{Especificaciones de voltaje del circuito RS-232. Tomada de \cite{RS232}}
	\label{RS}
\end{figure}

Como puede observarse, el estándar considera uno lógico a todo valor de voltaje entre -5 y -12 volts, y un cero lógico a aquellos valores entre 5 y 12 volts positivos, con una zona de transición (zona de operación prohibida) de 5 a -5 volts.

La interfaz se utiliza a una razón de menos de 20Kbps para una distancia menor de 15m. En la práctica se pueden exceder estos límites utilizando cables de baja capacidad en entornos eléctricamente poco ruidosos.


El protoclo RS-232 normal en el conector tipo DB-9 utilizado en esta práctica es el siguiente \ref{RS2}:

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/RS2.eps}
	\caption{Conector del circuito RS-232 con indicación de cada uno de sus significados.}
	\label{RS2}
\end{figure}

\section{MikroC for PIC32}

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/Mikro.eps}
	\caption{Logo de MikroC.}
	\label{Mikro}
\end{figure}

MikroC for PIC32 es un entorno de programación de sistemas embebidos, esto es, sistemas que no dependen de una computadora y que son dedicados a realizar una tarea específica. Carecen de la versatilidad de una computadora y sus recursos son más limitados, sin embargo, son mucho más compactos y eficientes en realizar la tarea específica para la cual son programados.

Un modelo popular debido a la facilidad y amplios recursos que poseen es el microcontrolador de tipo PIC, creados por la empresa Mikroelektronica \cite{Mikroe}. Al ser hardware propietario, no tienen la misma apertura que otros microcontroladores como el Arduino, sin embargo tienen la ventaja de tener soporte de la empresa y apoyo técnico.

De estos, la versión utilizada para la elaboración de esta práctica es el PIC32, versión de microcontroladores PIC caracterizados por altas prestaciones y una tasa de transferencia de datos de 32MBytes, lo cual los hace altamente potentes en sus labores de procesamiento y altamente eficientes, requiriendo únicamente 3.3 volts para operar.

El lenguaje utilizado por la empresa es conocido como MikroC, el cual es una versión muy similar al lenguaje C convencional, con algunas instrucciones específicas para los microcontroladores. Al ser de nivel medio su aprendizaje es mucho más sencillo que el uso de otros lenguajes como Ensamblador.

\chapter{Desarrollo de la practica.}

\section{Materiales.}
\begin{itemize}
 \item Módulo RS-232 - Integrado MAX232.
 \item 2 Terminal block de 2 terminales.
 \item 4 Capacitores de 4.7 uF.
 \item Base para circuito integrado de 8 pines.
 \item Conector DB-9 hembra.
 \item Alambre para puente.
\end{itemize}

\section{Herramientas.}
\begin{itemize}
 \item Cautín 30 Watts.
 \item Cable convertidor DB-9 serial macho a USB.
 \item Computadora portátil.
 \item Aplicación MikroC for PIC32.
 \item Aplicación HID-Bootloader de Mikroelektronica.
 \item Microcontrolador MINI-32 PIC32MX534F064H.
\end{itemize}

\section{Desarrollo.}
\begin{enumerate}
 \item Para el desarrollo de la práctica se elaboró una aplicación para el microcontrolador MINI-32 que emplea el PIC32MX534F064H utilizando el software MikroC for PIC32, el cual es una versión elaborada específicamente para el PIC32. Dicha aplicación puede observarse en el Apéndice \ref{A}.

\item Una vez elaborada la aplicación, se hace clic en el botón compilar y se generará un ejecutable .hex que deberá ser cargado en el microcontrolador MINI-32. En la figura \ref{1} puede observarse la compilación del archivo.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/1.eps}
	\caption{Compilación de programa de prueba UART en MikroC for PIC32.}
	\label{1}
\end{figure}

\item Posteriormente debe cargarse en el microcontrolador, para lo cual se hace uso del HID-Bootloader que provee la compañía Mikroelektronika, creadora de estos dispositivos. En la figura \ref{2} puede observarse la apertura del programador

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/2.eps}
	\caption{Apertura del programador HID-Bootloader.}
	\label{2}
\end{figure}

\item Abierto el programador e inicializado el microcontrolador presionando el botón \textbf{RESET}, se selecciona el directorio en el cual se encuentra el archivo .hex producto de la compilación del programa. En la figura \ref{3} puede observarse la conexión del microcontrolador una vez se ha hecho clic en el botón RESET, tras lo cual se tienen 5 segundos para hacer clic en el botón \textit{Connect} (Conectar).

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/3.eps}
	\caption{Conexión al microcontrolador.}
	\label{3}
\end{figure}

\item Se hace clic en \textit{Load Hex} (Cargar .Hex) y se selecciona el archivo que se encuentra en la carpeta donde se compiló la aplicación, tal y como se observa en la figura \ref{4}.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.5]{Images/4.eps}
	\caption{Selección del archivo .hex.}
	\label{4}
\end{figure}

\item Se hace clic en el botón \textit{Upload} (Cargar) y se espera. Ésto cargará el archivo al microcontrolador que entonces realizará infinitamente las acciones programadas. En la figura \ref{5} se observa el proceso de carga.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/5.eps}
	\caption{Carga del archivo .hex.}
	\label{5}
\end{figure}

\item Posteriormente se procede a la elaboración del circuito MAX-232. Para ello se utilizó el esquemático que se ilustra a continuación en la figura \ref{6} puede observarse la conexión del circuito MAX232 hacia un microcontrolador PIC32MX460F512L. La única diferencia consiste en la localización de los pines RX y TX del microcontrolador, que se detallan en el siguiente punto.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/6.eps}
	\caption{Esquema de conexión del circuito MAX-232, tomado de \cite{MikroC}.}
	\label{6}
\end{figure}

\item Las salidas del circuito MAX-232 se conectan a los pines D2 y D3 del circuito tal y como se observa en la figura \ref{7} para el PIC32MX534F064H.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/7.eps}
	\caption{Pines del microcontrolafor MINI-32, tomado del manual de \cite{MikroC}.}
	\label{7}
\end{figure}

\item Una vez conectado, se conecta el cable convertidor DB-9 a serial al conector en el circuito armado del MAX-232. En la figura \ref{8} se observa dicha conexión.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.1]{Images/8.eps}
	\caption{Circuito MAX-232 conectado a la computadora por medio del convertidor DB-9 a USB serial.}
	\label{8}
\end{figure}

\item Después es necesario probar la recepción adecuada del circuito, para lo cual se utiliza un programa llamado Hyperterminal, nativo de Windows y que permite supervisar la entrada y salida de una red. En este caso se abre una nueva sesión de Hyperterminal y se selecciona un nuevo nombre para la conexión. Se hace clic en OK tal y como se observa en la figura \ref{9}.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/9.eps}
	\caption{Inicialización de una nueva conexión en Hyperterminal.}
	\label{9}
\end{figure}

\item Se selecciona el puerto COM que coincide con el que el equipo reconoció perteneciente al cable convertidor DB-9 a serial usb. En este caso el puerto reconocido es el COM7, tal y como se observa en la figura \ref{10}. Se hace clic en OK. En el apéndice \ref{B} se indica cómo reconocer a qué puerto pertenece.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/10.eps}
	\caption{Selección del puerto COM.}
	\label{10}
\end{figure}

\item Se selecciona el nivel de baudios de operación del dispositivo. En este caso se elige 9600 que es el valor programado en la aplicación elaborada en MikroC for PIC32. En caso que se hubiera programado otro valor de baudios, se seleccionará en el menú desplegable tal y como se observa en la figura \ref{11}. Se hace clic en OK y se tendrá configurada la conexión.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/11.eps}
	\caption{Selección del valor en baudios, en este caso de 9600 baudios.}
	\label{11}
\end{figure}

\item Se alimenta el circuito MAX-232 con 5 volts de corriente directa y se observará que en la consola de la Hyperterminal se mostrará el mensaje programado en el microcontrolador PIC32MX534F064H. En la figura \ref{12} se observa la conexión realizada en la cual se alimenta el circuito utilizando un Arduino Mega 2560 como fuente de voltaje constante de 5 volts CD.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/12.eps}
	\caption{Conexión del circuito RS-232 a la computadora, tras lo que se logrará la comunicación serial.}
	\label{12}
\end{figure}

\item Finalmente se observa en la consola el mensaje programado tal y como se ve en la figura \ref{13}.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/13.eps}
	\caption{Conexión en operación.}
	\label{13}
\end{figure}


\end{enumerate}

\chapter{Conclusiones.}
Mediante la elaboración de esta práctica se obtuvieron conocimientos referentes a la elaboración del circuito para el protocolo de comunicación RS-232, el cual es un protocolo punto a punto altamente utilizado en la industria para la comunicación de dispositivos simples.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% BIBLIOGRAPHY AND OTHER LISTS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% A small distance to the other stuff in the table of contents (toc)
\addtocontents{toc}{\protect\vspace*{\baselineskip}}

%% The Bibliography

\begin{thebibliography}{breitestes Label}
	\bibitem{PROT} Wikipedia: RS-232. Visto por última vez: 2013-02-06. \url{http://es.wikipedia.org/wiki/RS-232} 
	\bibitem{MikroC} MikroC for PIC32 Compiler Help. 
	\bibitem{RS232}ESPElectronicDesign - Protoclo RS-232C. Visto por última vez: 2013-02-06. \url{http://www.espelectronicdesign.com/Protocolos/protocolo_RS232.php}
	\bibitem{Mikroe}Mikroelektronica. Visto por última vez: 2013-02-06. \url{http://www.mikroe.com/}
\end{thebibliography}


%% The List of Figures
\clearpage
\addcontentsline{toc}{chapter}{List of Figures}
\listoffigures

%% The List of Tables
%\clearpage
%\addcontentsline{toc}{chapter}{List of Tables}
%\listoftables


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% APPENDICES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\appendix
\chapter{Programa de prueba de puerto UART por protocolo RS-232.} \label{A}
\begin{lstlisting}
void main() {
//Disable all special features and only leave the I/O ports.
AD1PCFG = 0XFFFF;

//Initialize UART at 9600 bauds.
UART1_Init(9600);

//Give a delay of 200 miliseconds to let the UART stabilize.
DELAY_MS(200);

//Send a trial message.
UART1_Write_Text("Start.");

while(1)
{
   //Endlessly send Test Message.
   UART1_Write_Text("Hello");
   DELAY_MS(200);
}

}
\end{lstlisting}

\chapter{Localizar el puerto COM al cual pertenece\\ el conector convertidor DB-9 a USB serial.} \label{B}
Para localizar el puerto utilizado por el convertidor DB-9 a USB serial, se requiere acceder al administrador de dispositivos, en el cual se observarán todos los dispositivos conectados a la computadora. Para ello se siguen los siguientes pasos:

\begin{itemize}
 \item Se hace clic en Inicio, y clic derecho en MI PC / Equipo tal y como se observa en la figura \ref{PC}.
\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/PC.eps}
	\caption{Apertura de propiedades del sistema.}
	\label{PC}
\end{figure}

\item Se selecciona el Administrador de dispositivos como se muestra en la figura \ref{PC1}.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/PC1.eps}
	\caption{Apertura del administrador de dispositivos.}
	\label{PC1}
\end{figure}

\item Finalmente, abierto el administrador de dispositivos, se hace clic en la pestaña de puertos COM y LPT y se busca el que indica Prolific to Serial COM Port como se muestra en la figura \ref{PC2}.

\begin{figure}[h!]
	\centering
		\includegraphics[scale = 0.7]{Images/PC2.eps}
	\caption{Puertos COM disponibles.}
	\label{PC2}
\end{figure}

\end{itemize}

\end{document}

