Bitácora+Sensores+y+Programa+de+control+de+la+Central

Bitácora de Sensores y Programa de manejo de la Central

Alumnos:
 * //- Paredes, Aldana//
 * // - Zampaglione, Gastón (ZampaglioneGaston@yahoo.com.ar) //

Fecha de comienzo:
 * //- Lunes 30 de julio del 2012-09-06//

__Introducción del Proyecto __ En esta parte del proyecto el objetivo es lograr la comunicación de los sensores con la computadora donde se encuentra alojado el programa de control de la central, para luego enviar una alerta de helada al usuario mediante la comunicación con la parte del proyecto del “__Llamado telefónico de aviso de alerta__”, es decir:
 * //- Se debe lograr el correcto funcionamiento de los sensores (Anemómetro, Veleta, Sensor de Temperatura y Sensor de Humedad)//
 * // - Se debe lograr que a su vez haya una comunicación serie entre los sensores y la computadora, enviando estos un paquete de datos en código ASCII el cual el programa deberá decodificar y montar en una matriz de datos que luego será mostrada al usuario mediante una interfaz gráfica. //
 * // - Luego de cumplir con los pasos anteriores el programa deberá determinar si existe peligro de una helada (o no) y advertir al usuario mediante una comunicación con la parte del proyecto del Llamado de alerta. //

__** Bitácora del Proyecto **__


 * Semana 1 //(24/07/12 al 27/07/12)// **

Los primeros días se conocieron a los distintos grupos y el objetivo general del proyecto en si. Se comenzó mirando un video filmado por los primeros estudiantes que se dedicaron a trabajar en Bryn Gwyn en donde están expresados objetivos como trabajar en conjunto con los alumnos de la localidad de Bryn Gwyn y salvar las cosechas de esta misma localidad de las heladas negras.

En cuanto al programa, comencé a leerlo de a partes para así comprenderlo, ya que había sido empezado por otra generación anterior de alumnos. Se observaron algunos errores menores que me propuse corregir mediante comprendía el programa.




 * Semana 2 //(30/07/12 al 03/08/12)// **

En esta semana empezamos a comprender las partes del proyecto con la ayuda de Diego Correa, el cual comenzó a guiarnos en el proyecto. Luego procedió a hablar con cada uno de nosotros de la parte que nos había sido dada, como por ejemplo, ayudándome con el lenguaje en el que está escrito el programa (Visual Basic) y el funcionamiento de algunas partes del mismo.


 * Semana 3 //(06/08/12 al 10/08/12)// **

En este periodo de tiempo comencé a crear una nueva interfaz para el trabajo, adecuándola ahora al uso de solo una central en lugar de tres como en los años anteriores. Tomando módulos y algunos formularios del programa original, como la interfaz para ingresar al programa mediante un PassWord y la pantalla de configuración mediante la que se configuran los sensores a través de la PC.




 * Semana 4 //(13/08/12 al 17/08/12)// **

Aquí se agrega un nuevo integrante a mi grupo de trabajo, Aldana Paredes, con la cual comenzamos a hablar sobre dividirnos el trabajo, es decir, se acordó que uno trabajaría más con el Hardware y otro con el Software.

Ella comenzó a leer la información presente en esta Wiki para así comprender la utilización de los sensores mientras iba siendo asesorada por Susana Collovati.


 * Semana 5 //(20/08/12 al 24/08/12)// **

Al comenzar el Lunes, Diego vino a hablar con nosotros pidiéndonos que comenzáramos dedicándonos al Hardware, porque primero debíamos lograr enviar un paquete de datos a la PC antes de utilizar el programa de la central. Viendo esto comenzamos a mirar los circuitos de los sensores y entender su funcionamiento, así como la de la placa con el PIC.


 * Semana 6 //(27/08/12 al 31/08/12)// **

Comenzamos a tener algunas complicaciones con las placas construidas, puesto que no todos los circuitos que se encontraban en el Trabajo final presentado en año pasado eran los realmente utilizados, como la placa en la que se encuentra el PIC. Se empezaron a tomar medidas como pensar en rehacer las placas, pero antes debíamos comprobar si las que tenías ya hechas funcionaban.


 * Semana 7 (03/09/12 al 07/09/12) **

En esta semana hemos visto como era la conexión de los cables, entre los dos circuitos, el circuito del MAX232, y el de transmisión de datos con el PIC (16F628A), en el informe no teníamos ningún dato, todo fue por deducción y análisis del circuito, de la placa micro controladora. La probamos y hemos visto que se producía un cortocircuito en un puente realizado. Seguimos buscando la falla.


 * Semana 8 (10/09/12 al 14/09/12) **

En esta semana lo que pudimos hacer es preparar la placa del circuito impreso que se encarga de transmitir datos con del PIC 16f628A, o sea empezar a rehacerla y seguir verificando cual es el error de la placa antes realizada.


 * Semana 9 (17/09/12 al 20/09/12) **

Al estar en la semana del estudiante y encontrarse el colegio en duelo no se realizó ningún avance.


 * Semana 10 (25/09/12 al 27/09/12) **

En esta semana se presentaron orales sobre los avances realizados sobre el proyecto.


 * Semana 11 (01/10/12 al 04/10/12) **

Bueno esta semana seguimos con el proyecto, hemos probado las placas, la de transmisión pudimos ver su problema y funciona, no produce más cortocircuito, el MAX 232, funciona, y el sensor de temperatura y humedad también, por ahora no hay ninguno problema. Nos falta ver el funcionamiento de la veleta y el anemómetro.

Nos aconsejaron que primero, hagamos un plano de las conexiones del proyecto, y ensamblemos la placa a una madera, así nos producíamos problemas en su funcionamiento. -Aldana


 * Semana 12 (08/10/10 al (11/10/12) **

Esta semana nos encargamos de ver la programación con la placa del MAX 232, y la del PIC 16F628A (transmisión), como usar el Hyper Terminal, nos faltaría probar los programas del año pasado, y corregir lo que está mal, aprendimos a usar el programa CCS, queríamos hacerlo desde ahí, como transmitía la palabra Bryn Gwyn. -Aldana


 * Semana 13 (15/10/10 al (18/10/12) **

En el comienzo de esta semana recibimos una nueva PC para trabajar, la que se uso originalmente en el proyecto en el año 2007. Ahí encontré el programa original y luego de hacer ciertos retoques simple el programa parece andar perfectamente. Ahora debemos adecuar el PIC junto al MAX 232 y lograr una comunicación con la PC, agregando una nueva y mejor ficha de conexión serie e intentando descifrar el Pin Out del circuito que tenemos, puesto que, como previamente dicho, no es el mismo indicado en los informes del año pasado.  -Gastón




 * <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Semana 14 (23/10/10 al (25/10/12) **

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Comenzé a trabajar con las placas de comunicación con la PC, conectando una ficha de puerto serie a la salida del MAX232. Luego de observar los circuitos de los diferentes años con asistencia de Luis, logramos descifrar el PinOut de la placa que tenemos físicamente y así poder dejar todo preparado para realizar las pruebas la semana 15 <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">El fin de semana dedique un poco de tiempo a la Wiki, organizándola un poco y creando unos botones Flash para las distintas secciones de esta.

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;"> -Gastón


 * <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Semana 15 (29/10/10 al (01/11/12) **

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Tuve un comienzo de semana bastante prometedor ya que pude corroborar la funcionalidad de por los menos 2 de los 3 sensores mediante mediciones con el osciloscopio, y el MAX232. Sin embargo sospechamos que el PIC se encuentra en blanco o con un programa no funcional.

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Luego de que mi compañera junto a Diego leyeran el PIC, me comentaron que el programa dentro de este parecía andar correctamente, pero una mala maniobra ocasionó que se rompiera.

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Al parecer este es el único lugar donde se encuentra alojado el programa original, por lo que debería buscarse una forma de leer lo que tiene e intentar extraerlo. <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">-Gastón


 * <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Semana 16 (05/11/10 al (08/11/12) **

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Los primeros días de la semana comenzamos con Diego realizando un programa simple que debería probar la funcionalidad del puerto serie que se está utilizando.

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">El miércoles Susana me dio una idea de cómo extraer el programa del PIC roto para tener una o más copias de resguardo. Sin embargo, ese mismo día, Diego me solicito que empezará a realizar un programa nuevo para poder verificar si se puede lograr una transmisión con el sistema implementado por el grupo de Matías y Lautaro. Este programa recibiría los datos de un PIC para mostrarlos en pantalla.

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Más tarde estuvimos debatiendo como iba a ser el envió de los datos. Este comenzará avisándole al programa que empieze a recibir los datos cuando se envie un Byte completo con ocho "1".

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Luego se procederán a enviar los datos de Temperatura, Humedad, Velocidad del viento y finalmente Dirección de este último, en ese orden. En pocas palabras, el proceso sería el siguiente:

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">"A,B,C,D"
 * 1) <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Se envía "11111111" para avisar el inicio de la transmisión.
 * 2) <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Luego se enviaría en código ASCII los siguientes datos de prueba:

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">El programa entonces deberá traducir ese código ASCII y descifrar que valor es cada cual mediante la ayuda de las comas:

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">El prototipo de la interfaz sería el siguiente:
 * 1) <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">El programa leería esto: "6544664467446844", siendo así 44 la coma, 65 la A, 66 la B, 67 la C y 68 la D.
 * 2) <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Luego lo traduciría y lo mostría en pantalla indicando el valor de cada una de las variables.



<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Para la programación de este se utilizará principalmente el MSComm (MSComm.Input) y un traductor de código ASCII a decimal, para así poderlo mostrar en pantalla de forma legible.

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">-Gastón


 * <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Semana 17 (12/11/10 al 15/11/12) **

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">En esta semana se presentaron orales sobre los avances realizados sobre el proyecto. <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;"> Se extrajo el programa el PIC, el cual se encuentra en hexadeximal: <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">


 * <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Semana 18 (19/11/12 al 22/11/12) **

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">Esta semana no me encontraré presente a causa de un viaje estudiantil, pero realizé el programa el fin de semana para que al volver ya podamos realizar la prueba de transmisión.

Dim cadena As String 'Va a guardar una cadena de caracteres de la forma que lo manda el PIC: "A,B,C,D". Dim datos As String 'Es una array de cadenas que guardas los datos enviados por el PIC en orden. Dim Fso As Object Dim Archivo As Object Dim Flag As Boolean

'Este procedimeinto de evento se encarga de abrir o cerrar el puerto cada vez que hacemos click. 'Evitamos errores preguntando si el puerto esta abierto o cerrado.

Private Sub Command1_Click If Command1.Caption = "Iniciar serie" Then If Not MSComm1.PortOpen Then MSComm1.Open Command1.Caption = "Cerrar Puerto"

End If Else If MSComm1.PortOpen Then MSComm1.Close Command1.Caption = "Iniciar serie" End If End If End Sub

Private Sub Command2_Click If Command2.Caption = "Iniciar Captura de Datos" Then If Fso = Nothing Then Set Fso = CreateObject("Scripting.FileSystemObject") 'Creamos un archivo con el método CreateTextFile 'Escribimos lineas Set Archivo = Fso.CreateTextFile(App.Path & "Mediciones " & Date & " " & Time & " .txt", True) Command2.Caption = "Detener Captura" Flag = True End If

Else If Not Fso = Nothing Then Command2.Caption = "Iniciar Captura de Datos" Flag = False 'Cerramos el fichero Archivo.Close Set Fso = Nothing Set Archivo = Nothing End If End If End Sub

Private Sub Form_Unload(Cancel As Integer) If MSComm1.PortOpen Then MSComm1.Close If Not Fso = Nothing Then Archivo.Close Fso = Nothing Archivo = Nothing End If End Sub

'Escribimos lineas Private Sub MSComm1_OnComm

'Se guardan los datos de la recepión en la variable cadena y se limpia el buffer de entrada. cadena = MSComm1.Inpu

'La función Split subdivide la cadena en varias subcadenas, delimitadas por el carater "," (coma). datos = Split(cadena, ",")

'Este IF se encarga de detectar si se reciben una cantidad distintas de subcadenas de las esperadas. 'En el caso de recibir más o menos sale de la subrutina e ignora los datos. If UBound(datos) <> 4 Then Exit Sub

'Las función Asc se encarga de obtener el valor numérico de un caracter en ASCII. 'Luego la función Str se encarga de convertir número en texto, luego le asignamos 'ese texto a cada etiqueta, para luego ser mostrada en pantalla.

lbltem.Caption = Str(Asc(datos(0))) lblhum.Caption = Str(Asc(datos(1))) lblvel.Caption = Str(Asc(datos(2))) lbldir.Caption = Str(Asc(datos(3))) If Flag Then Archivo.Writeline (Time & ", " & "Temp: " & Str(Asc(datos(0))) & ", Humedad: " & Str(Asc(datos(1))) & ", Dirección Viento: " & Str(Asc(datos(2))) & ", Velocidad Viento: " & Str(Asc(datos(3)))) End If End Sub


 * <span style="font-family: Arial,sans-serif; font-size: 18.6667px;">Semana 19 (19/11/12 al 22/11/12) **

<span style="background-color: white; font-family: Arial,sans-serif; font-size: 14pt;">Esta semana me encargue del programa del PIC que se encuentra en hexadecimal pasarlo a un archivo .asm (Assembler) con el programa Icprog y la ayuda del profesor Matias Lasarte lo hice, vi el programa, sin comentarios, el cual tuve que comprenderlo y agregarlo, me pidieron que identificar los registros, etiquetas, sub rutinas, bueno gracias a eso lo ordene y pude hacerlo funcionar, corrigiendo los errores y armando un nuevo mapa de memoria,después <span style="background-color: white; font-family: Arial,sans-serif; font-size: 14pt;">lo simule en el Proteus 7.7. Después me pidieron que me fijara que transmitía el PIC con el Hyper Terminal de la PC, lo conecte con un cable USB/R232 que me presto Diego y vi en la computadora que mostraba ruido, o sea letras en código ASCII.

<span style="font-family: Arial,sans-serif; font-size: 14pt;">Lo que nos <span style="font-family: Arial,sans-serif; font-size: 19px; line-height: 27px;">faltaría es tener el funcionamiento del programa <span style="font-family: Arial,sans-serif; font-size: 19px; line-height: 27px;">transmisión y la veleta con su respectivo programa. <span style="font-family: Arial,sans-serif; font-size: 19px; line-height: 27px;">


 * <span style="font-family: Arial,sans-serif; font-size: 18.6667px;">Semana 20 (26/11/12 al 29/11/12) **

<span style="font-family: Arial,sans-serif; font-size: 18.6667px;">A comienzos de esta semana depure finalmente el programa para utilizar con la transmisión, dejanlo sin el error que se presentaba al crear el objeto FSO para guardar las mediciones y al abrir el puerto: (Se podrán observar los cambios en rojo)



Dim cadena As String 'Va a guardar una cadena de caracteres de la forma que lo manda el PIC: "A,B,C,D". Dim datos As String 'Es una array de cadenas que guardas los datos enviados por el PIC en orden. Dim Fso As Object Dim Archivo As Object Dim Flag As Boolean Dim Nombre As String

'Este procedimeinto de evento se encarga de abrir o cerrar el puerto cada vez que hacemos click. 'Evitamos errores preguntando si el puerto esta abierto o cerrado.

Private Sub Command1_Click If Command1.Caption = "Iniciar Serie" Then If Not MSComm1.PortOpen Then MSComm1.PortOpen = True Command1.Caption = "Cerrar Puerto" End If Else If MSComm1.PortOpen Then MSComm1.PortOpen = False Command1.Caption = "Iniciar Serie" End If End If End Sub

Private Sub Command2_Click If Command2.Caption = "Iniciar Captura de Datos" Then Set Fso = CreateObject("Scripting.FileSystemObject")

'Creamos un archivo con el método CreateTextFile Nombre = "C:\" & Format(Date, "Medium Date") & " " & Split(Time, ":")(0) & "-" & Split(Time, ":")(1) & "-" & Split(Time, ":")(2) & " Medicion.txt" Set Archivo = Fso.CreateTextFile(Nombre, True) Command2.Caption = "Detener Captura" Flag = True

Else Command2.Caption = "Iniciar Captura de Datos" Flag = False

'Cerramos el fichero Archivo.Close Set Fso = Nothing Set Archivo = Nothing End If End Sub

Private Sub Form_Unload(Cancel As Integer) If MSComm1.PortOpen = True Then MSComm1.PortOpen = False If Command2.Caption = "Detener Captura" Then Archivo.Close Set Fso = Nothing Set Archivo = Nothing Flag = False End If End Sub

'Atiende los eventos de recepción del puerto. Cada vez que recibe 7 datos se inicia este evento. Private Sub MSComm1_OnComm

'Se guardan los datos de la recepión en la variable cadena y se limpia el buffer de entrada. cadena = MSComm1.Input

'La función Split subdivide la cadena en varias subcadenas, delimitadas por el carater "," (coma). datos = Split(cadena, ",")

'Este IF se encarga de detectar si se reciben una cantidad distintas de subcadenas de las esperadas. 'En el caso de recibir más o menos sale de la subrutina e ignora los datos. If UBound(datos) <> 4 Then Exit Sub

'Las función Asc se encarga de obtener el valor numérico de un caracter en ASCII. 'Luego la función Str se encarga de convertir número en texto, luego le asignamos 'ese texto a cada etiqueta, para luego ser mostrada en pantalla. lbltem.Caption = Str(Asc(datos(0))) lblhum.Caption = Str(Asc(datos(1))) lblvel.Caption = Str(Asc(datos(2))) lbldir.Caption = Str(Asc(datos(3)))

If Flag = True Then Archivo.WriteLine (Time & ", " & "Temp: " & Str(Asc(datos(0))) & ", Humedad: " & Str(Asc(datos(1))) & ", Dirección Viento: " & Str(Asc(datos(2))) & ", Velocidad Viento: " & Str(Asc(datos(3)))) End If End Sub

´Esta subrutina esta siendo utilizada para probar el funcionamiento del objeto FSO. No es necesaria para el funcionamiento del programa Private Sub Timer1_Timer If Flag = True Then Archivo.WriteLine ("La hora es: " & Split(Time, ":")(0)) End If End Sub

__**<span style="font-family: Arial,sans-serif; font-size: 18.6667px;">Archivo en VB: **__ <span style="font-family: Arial,sans-serif; font-size: 18.6667px;">



<span style="font-family: Arial,sans-serif; font-size: 18.6667px;">Al transcurrir la semana se actualizará la wiki con fotos y comentarios de la feria INTEC, en la cual se estará presentando un trabajo en conjunto con el grupo de Transmisión (Matías y Lautaro).

__ INTEC 2012 __ A comienzos de la feria se presentaron diversos inconvenientes con el trabajo de los chicos de Transmisión, los cuales fueron siendo superados con el transcurso de las horas. Al final del primer día pudimos recibir la cadena de datos, pero solo en el ambiente del taller, puesto que en la feria había demasiada interferencia. Al no encontrarse Lautaro presente, ayudé a Matías con todas las cosas que pude.



Ya en el segundo día la mayoría de los problemas fueron resueltos, por lo que probamos la funcionalidad del programa que había realizado, el cual, luego de unos pequeños cambios en el las propiedades del Mscomm, anduvo perfectamente. Estos cambios se debían a que los datos entregados eran: "1111111, A, B, C, D", siendo así cinco datos en lugar de cuatro. Por esta razón hubo que hacer una pequeña modificación en el Ubound, colocando 5 en lugar de 4, y realizando a su vez un aumento en la propiedad Rthersold de 7 a 8. En la página "Herramientas y Programa de control 2012" se podrá encontrar todo lo necesario para la utilización del programa y el programa en si. @Herramientas y Programa de Control 2012





<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 18.6667px;">-Gastón