Interfaz puerto serie PicRS232 v2.00 (beta)

Estoy diseñando un nuevo interfaz, por ahora muy básico sobre el control del puerto serie y un PIC 16F84A.

Tengo un diseño simple del PicRS232 v2.00. Pueden probarlo y me comentan:

1) Si le interesa otro diseño de la Interfaz para dejarlo más cómodo y bonito me man ideas y lo haré.

2) Por ahora es funcional, pueden probarlo y avisar si a usted también le funciona.

3) ¿Alguna suerencia? Cualquier cosita, sea algún texto a añadir, color de algo, etc me vale.

Un coridal saludo.

PD: Por otro lado estoy investigando una interfaz del puerto paralelo y manual incluido.
 

Adjuntos

  • picrs232_v2.00_beta.jpg
    picrs232_v2.00_beta.jpg
    64 KB · Visitas: 2,273
  • PicRS232_v2.00.rar
    5.9 KB · Visitas: 576
jejeje gracias, es vverdad y lo se. También puse derecta. Lo que envía son tramas de byte que detecta el PIC.

Lo han hecho funcionar. Eso quería saber. Dentro de un rato pongo el código fuente.

Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.IO.Ports;          // No olvidar desde aquí.
using System.Diagnostics;

namespace PicRS232
{
    public partial class Form1 : Form
    {
        // Utilizaremos un string como buffer de recepción.
        string Recibidos;
        public Form1()
        {
            InitializeComponent();
            // Abrir el puerto mientras se ejecuta la aplicación.
            if (!serialPort1.IsOpen)
            {
                try
                {
                    serialPort1.Open();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            // 
            serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Recepcion);
        }

        // Al recibir los datos.
        private void Recepcion(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            // Acumular caracter recibido en buffer.
            Recibidos += serialPort1.ReadExisting();

            // Invocar un proceso de tramas.
            this.Invoke(new EventHandler(Actualizar));
        }

        // Procesar los daros recibidos.
        private void Actualizar(object s, EventArgs e)
        {
            richTextBox_visualizar_mensaje.Text = Recibidos;
        }

        private void button_t_Click(object sender, EventArgs e)
        {
            byte[] mBuffer = new byte[1];
            mBuffer[0] = 0x74; // ASCII letra "t".
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }

        private void button_b_Click(object sender, EventArgs e)
        {
            byte[] mBuffer = new byte[1];
            mBuffer[0] = 0x62; // ASCII letra "b".
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }

        private void button_a_Click(object sender, EventArgs e)
        {
            byte[] mBuffer = new byte[1];
            mBuffer[0] = 0x61; // ASCII letra "a".
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }

        private void button_l_Click(object sender, EventArgs e)
        {
            byte[] mBuffer = new byte[1];
            mBuffer[0] = 0x6C; // ASCII letra "l".
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }

        private void button_Espacio_Click(object sender, EventArgs e)
        {
            byte[] mBuffer = new byte[1];
            mBuffer[0] = 0x20; // ASCII letra "Espacio".
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            statusStrip1.Items[0].Text = DateTime.Now.ToLongTimeString();
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void acerdaDeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show(@"PicRS232 v2.00 (Beta)
            
Está en fase de pruebas. Comprueba si este programa
funciona o si detecta cualquier fallo y lo comunica
por e-mail a:
            
metaconta@gmail.com

Con colaboración www.forosdeelectronica.com", "Acerca de...",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void webToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Process.Start("IExplore.exe", "http://www.pic16f84a.org/");
        }

        private void blogToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Process.Start("IExplore.exe", "http://electronica-pic.blogspot.com/");
        }

        private void foroToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Process.Start("IExplore.exe", "https://www.forosdeelectronica.com/");
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            byte[] mBuffer = new byte[1];
            mBuffer[0] = 0x20; // ASCII letra "Espacio".
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }
    }
}
 

Adjuntos

  • PicRS232_v2.01.rar
    5.9 KB · Visitas: 259
Última edición:
Es el lenguaje de los C#.

Voy a intentar hacer que se pueda cambiar la configuración de los puertos series y seleccionar trabas de bytes seleccioables. Estas tramas se podrá guardar en .xml para recuperar los datos.
 
Última edición:
Estoy mejorando la configuración del puerto serie. Me falta la hora de enviar los bytes que usted desea.

Ya puedes descargar la nueva versión y sacar conlcusiones.

dddd.gif

Gracias por colaborar.
 

Adjuntos

  • PicRS232_v2.02.rar
    8.2 KB · Visitas: 195
Hola:

dfgvdfeeeeeeeeeeeeeeeeeeeee.gif


Probando la v2.03 ya puedes ingresar sin ver el código fuente cualquier carácter del teclado. También puedes seleccionar puertos COM. Se peude Maximizar el programa. Una comodidad para los que van a usar esta interfaz.

Ya en la v2.04 estoy haciendo pruebas de grabar un log en un .txt o .log de la entrada de datos desde el PIC.

Descarga PicRS2232 v.203, opina lo que te ha parecido o das una sugerencia de cualquier comentario para mejorarlo para todos y todas del foro y visitantes.

Otra cosa, en los 4 botones principales junto con el botón STOP, están enumerados con números del 1--2--3--4. Para algunos/as les parece mejor en letras. A--B--C--D. Haré algo para que lo puedan cambiar como deseen.

NOTA
:
Si lo desean. ¿Alguien le interesa guardar datos en una base de datos como MySQL?





EDITO:

Tengo la v2.04 mejorada visualmente, con más botones que me faltaron del OFF, ahor ya incluido. Ya puedes guardar la configuración en XML.
 

Adjuntos

  • PicRS232_v2.03.rar
    14.6 KB · Visitas: 148
  • PicRS232_v2.04.rar
    16.8 KB · Visitas: 187
Última edición:
Hola de nuevo:

Ya pueden probar la V2.05 (beta)
rgdfgsdvfgggggggggggggggggg.gif

Código:
; ZONA DE DATOS **********************************************************************

    LIST        P=16F84A
    INCLUDE        <P16F84A.INC>
    __CONFIG    _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

    CBLOCK   0x0C        
    TeclaPulsada                    ; Va a guardar el contenido de la tecla pulsada.
    MensajeApuntado                    ; Va a guarda la dirección del mensaje apuntado.
    ENDC

#DEFINE  Salida_1        PORTB,3        ; Define dónde se sitúan las salidas.
#DEFINE  Salida_2        PORTB,2
#DEFINE  Salida_3        PORTB,1
#DEFINE  Salida_4        PORTB,0

TECLA_1_ON        EQU    't'                ; Código de las teclas utilizadas.
TECLA_2_ON        EQU    'b'
TECLA_3_ON        EQU    'a'
TECLA_4_ON        EQU    'l'
TECLA_1_OFF        EQU 'y'
TECLA_2_OFF        EQU 'n'
TECLA_3_OFF        EQU 's'
TECLA_4_OFF        EQU 'k'
TECLA_TODO        EQU 'p'
TECLA_PARADA    EQU    ' '                ; Código de la tecla espaciadora, (hay un espacio,
                                    ; tened cuidado al teclear el programa).
; ZONA DE CÓDIGOS ********************************************************************

    ORG    0
Inicio
    call    LCD_Inicializa
    call    RS232_Inicializa
    bsf        STATUS,RP0                ; Configura como salidas las 4 líneas del
    bcf        Salida_1                ; del Puerto B respetando la configuración del
    bcf        Salida_2                ; resto de las líneas.
    bcf        Salida_3
    bcf        Salida_4
    bcf        STATUS,RP0
    call    Parado                    ; En principio todas las salidas deben estar 
Principal                            ; apagadas.
    call    RS232_LeeDato            ; Espera a recibir un carácter.
    call    TesteaTeclado
    goto    Principal

; "Mensajes" ----------------------------------------------------------------------------
;
Mensajes
    addwf    PCL,F
Mensaje_PARADA
    DT "Sistema PARADO", 0x00
Mensaje_TODO
    DT "Todo ACTIVADO", 0x00
Mensaje_1_ON
    DT "Relay 1: ON", 0x00
Mensaje_2_ON
    DT "Relay 2: ON", 0x00
Mensaje_3_ON
    DT "Relay 3: ON", 0x00
Mensaje_4_ON
    DT "Relay 4: ON", 0x00
Mensaje_1_OFF
    DT "Relay 1: OFF", 0x00
Mensaje_2_OFF
    DT "Relay 2: OFF", 0x00
Mensaje_3_OFF
    DT "Relay 3: OFF", 0x00
Mensaje_4_OFF
    DT "Relay 4: OFF", 0x00

; Subrutina "TesteaTeclado" -------------------------------------------------------------
;
; Testea el teclado y actúa en consecuencia.

TesteaTeclado
    movwf    TeclaPulsada            ; Guarda el contenido de la tecla pulsada.
    xorlw    TECLA_1_ON                ; ¿Es la tecla del movimiento hacia adelante?
    btfsc    STATUS,Z
    goto    R_1_ON                ; Sí, se desea movimiento hacia adelante.
;
    movf    TeclaPulsada,W            ; Recupera el contenido de la tecla pulsada.
    xorlw    TECLA_2_ON                ; ¿Es la tecla del movimiento hacia atrás?
    btfsc    STATUS,Z
    goto    R_2_ON                    ; Sí, se desea movimiento hacia atrás.
;
    movf    TeclaPulsada,W            ; Recupera el contenido de la tecla pulsada.
    xorlw    TECLA_3_ON                ; ¿Es la tecla del movimiento hacia la izquierda?
    btfsc    STATUS,Z
    goto    R_3_ON                ; Sí, se desea movimiento hacia la izquierda.
;
    movf    TeclaPulsada,W            ; Recupera el contenido de la tecla pulsada.
    xorlw    TECLA_4_ON                ; ¿Es tecla del movimiento hacia la derecha?
    btfsc    STATUS,Z
    goto    R_4_ON                    ; Sí, se desea movimiento hacia la derecha.
;
    movf    TeclaPulsada,W            ; Recupera el contenido de la tecla pulsada.
    xorlw    TECLA_1_OFF                ; ¿Es tecla del movimiento hacia la derecha?
    btfsc    STATUS,Z
    goto    R_1_OFF                    ; Sí, se desea movimiento hacia la derecha.
;
    movf    TeclaPulsada,W            ; Recupera el contenido de la tecla pulsada.
    xorlw    TECLA_2_OFF                ; ¿Es tecla del movimiento hacia la derecha?
    btfsc    STATUS,Z
    goto    R_2_OFF                    ; Sí, se desea movimiento hacia la derecha.
;
    movf    TeclaPulsada,W            ; Recupera el contenido de la tecla pulsada.
    xorlw    TECLA_3_OFF                ; ¿Es tecla del movimiento hacia la derecha?
    btfsc    STATUS,Z
    goto    R_3_OFF                    ; Sí, se desea movimiento hacia la derecha.
;
    movf    TeclaPulsada,W            ; Recupera el contenido de la tecla pulsada.
    xorlw    TECLA_4_OFF                ; ¿Es tecla del movimiento hacia la derecha?
    btfsc    STATUS,Z
    goto    R_4_OFF                    ; Sí, se desea movimiento hacia la derecha.
;
    movf    TeclaPulsada,W            ; Recupera el contenido de la tecla pulsada.
    xorlw    TECLA_TODO                ; ¿Es tecla del movimiento hacia la derecha?
    btfsc    STATUS,Z
    goto    R_TODO                    ; Sí, se desea movimiento hacia la derecha.
;
    movf    TeclaPulsada,W            ; Recupera el contenido de la tecla pulsada.
    xorlw    TECLA_PARADA            ; ¿Es la tecla de parada?.
    btfss    STATUS,Z
    goto    Fin                        ; No es ninguna tecla de movimiento. Sale.
Parado
    bcf        Salida_1                ; Como se ha pulsado la tecla de parada se
    bcf        Salida_2                ; desactivan todas las salidas.
    bcf        Salida_3
    bcf        Salida_4
    movlw    Mensaje_PARADA
    goto    Visualiza
R_TODO
    bsf        Salida_1                ; Como se ha pulsado la tecla de parada se
    bsf        Salida_2                ; desactivan todas las salidas.
    bsf        Salida_3
    bsf        Salida_4
    movlw    Mensaje_TODO
    goto    Visualiza
R_1_OFF
    bcf        Salida_1
    movlw    Mensaje_1_OFF
    goto    Visualiza
R_2_OFF
    bcf        Salida_2
    movlw    Mensaje_2_OFF
    goto    Visualiza
R_3_OFF
    bcf        Salida_3
    movlw    Mensaje_3_OFF
    goto    Visualiza
R_4_OFF
    bcf        Salida_4
    movlw    Mensaje_4_OFF
    goto    Visualiza
R_1_ON
    bsf        Salida_1
    movlw    Mensaje_1_ON
    goto    Visualiza
R_2_ON
    bsf        Salida_2
    movlw    Mensaje_2_ON
    goto    Visualiza
R_3_ON
    bsf        Salida_3
    movlw    Mensaje_3_ON
    goto    Visualiza
R_4_ON
    bsf        Salida_4
    movlw    Mensaje_4_ON

; Según el estado de las salidas visualiza el estado del sistema en el visualizador LCD y en
; el monitor del ordenador.

Visualiza
    movwf    MensajeApuntado            ; Guarda la posición del mensaje.
    call    LCD_Borra                ; Borra la pantalla del modulo LCD.
    movf    MensajeApuntado,W        ; Visualiza el mensaje en la pantalla
    call    LCD_Mensaje                ; del visualizador LCD.
    call    RS232_LineasBlanco        ; Borra la pantalla del ordenador.
    movf    MensajeApuntado,W
    call    RS232_Mensaje            ; Lo visualiza en el HyperTerminal.
    call    RS232_LineasBlanco
Fin    return

    INCLUDE  <RS232.INC>
    INCLUDE  <RS232MEN.INC>
    INCLUDE  <LCD_4BIT.INC>
    INCLUDE  <LCD_MENS.INC>
    INCLUDE  <RETARDOS.INC>
    END

Saludo.
 

Adjuntos

  • PicRS232_v2.05.zip
    17.8 KB · Visitas: 194
Última edición:
Buenas:

Probando el circuito emulado. Ahora puedes descargar PicRS232 v2.06 que lo único que se añadió por el momento la opacidad de la aplicación, esquema en proteus y el Virtual Port COM para hacer la simulación.

Descarga directa del Virtual RS232:
http://www.eltima.com/download/vspd.exe

1) Virtual RS232.
2) PicRS232.
3) Proteus simulación.

¿Alguna conclusión?
 

Adjuntos

  • PicRS232_v2.06.zip
    70.4 KB · Visitas: 216
Se ha añadido la Tabla ASCII y los códigos fuentes ASM en Ver del menú.

Por ahora veo ya suficientes las mejoras para entregarlo completo tal como está con instalador incluido.

Si deseas o tienes ideas e incluso algún consejo avisa antes de preparlo todo a distribución.
Gracias.

asciiii.gif












EDITO:


Hola:

1- Ahora mismo se está preparando la beta v2.08, con la características de que puedas enviar un e-mail a tu correo desde PicRS232 como avisos de alertas de algo que desees. Por ahora esta función funciona muy bien, aún así hay que pulirlo. Puedes dar ideas.

rfttrecfrchoirycxgno54ynox8.gif

2- Por otro lado se intentará corregir mejor el LCD 16x2 de Hitachi HD44780A00, compatible también el HD44780A02.

Ver el archivo adjunto 22720

3-
Por ahora les dejo una aplicación a parte del envio de e-mail con C# (más adelante se hará con C++ y VB .net). Por ahora sólo está configurado para gmail, es decir debes usar tu cuenta gmail para poder enviar correo a cualquiera ocmo hotmail, yahoo, etc. Esto esta idea es para saber si hay alguna alarma desde el puerto serie o PIC que desees, aquí ya estamos hablando de domótica.

wwwwwwwwwwwwwwwwwwwqqqqqqqq.gif

El archivo a descargar se llama email.ar y es funcional. (No abusen enviando email a la gente cada dos por tres).

Saludo.
 

Adjuntos

  • PicRS232_v2.07.zip
    94.7 KB · Visitas: 178
  • email.rar
    4.1 KB · Visitas: 152
Última edición:
Actualización:

Se ha incluido en la interfaz en el menú "Ver-->PIC 16F88", es decir, el código fuente para el PIC16F88 portado desde el 16F84. Funciona muy bien.

En el enlace de abajo puedes descargar el código fuente del 16F88 y 16F84A con el esquema simulador del Proteus incluido. También la interfaz PicRS232 v2.09 con el .XML generado para no tener que configurar nada.

77.gif


maspic.gif


Recuerda, en el programa a los colaboradores se puede poner su nick, su página personal, etc por aportar ideas y mejorarlo.

También se lo puedes descargar por aquí.
http://www.pic16f84a.org/index.php?...ngel-acaymo&catid=52:angelproyectos&Itemid=90

Saludo y Feliz año nuevo 2010.
 

Adjuntos

  • PicRS232_v209.zip
    481.1 KB · Visitas: 200
Última edición:
Me gustaría probar este proyecto pero nunca he utilizado PROTEUS ni el VIRTUAL SERIAL PORT. Si no es mucho pedir Meta, tendrás una guía o manual para hacer la configuración de estas herramientas.

Esto es lo que tengo:

- MPLAB IDE con PICSTART PLUS
- PROTEUS 7 DEMOSTRATION
- VIRTUAL SERIAL PORT DRIVER 6.9
- NET FRAMEWORK 4
- PicRS232_V2.6 (META)
- 2015_RS232_ Gobierno

Entiendo los programa pero no se como implementar la simulación. Gracias de ante mano...
 
Mini tutorial para poder simular el Proteus con el Virtual Serial.

1)
Descarga PicRS232 v2.10 beta.

2) Dentro del archivo llamado PicRS232 v2.zip lo descomprimes y en su interior te encuentrar otros archivos.

3)
Ten en mente con qué PIC quieres trabajar, por ahora sólo uso el 16F84A y el 16F88. Me imagino que el 16F84A es más fácil de encontrar en el mercado y lo usaremos para este ejemplo.

4) Hay un archivo que se llama 16F84A.DSN. Es el proyecto que vamos a usar en el Proteus v7.6. Como podrás ver, falta un archivo de la extensión .hex que debes crear en el MPLAB.

5) En el archivo 16F84A.zip, al descomprimirlo encontrarás una carpeta llamada proyecto, dentro de ella encontrarás un archivo llamado PicRS232.mcp que es el que debes abrir, en él se encuentra el proyecto completo del MPLAB para compilarlo. Usaremos el MPLAB v8.43 que es el que fue compilado (también con una versión superior funciona).

Crea una carpeta en C:\ (yo la tengo en H:\) y llámala PIC16F84A, dentro de ella metes la carpeta Proyecto donde tienes todos los archivos necesarios para compilarlo.

001ded.gif


002sqs.gif


Se abrirá la ventana como esta de abajo:
003eoe.gif


Asegúrate que esté el proyecto seleccionado como indica en la imagen de abajo.
004wsw.gif


A compilar como indica abajo.
005frf.gif


Ya puedes mirar en la carpeta C:\PIC16F84A\Proyecto\RS232 para encontrar el archivo .hex.

6) Descarga directamente el Virtual Serial para simular el puerto serie o vete a la página oficial que es esta: http://www.eltima.com/products/vspdxp/

7) Abres el Virtual Serial y fíjate en el recuadro marcado en rojo como muesta en la imagen de abajo.

006iqi.gif


Debes estar en COM1 y COM2 así que márcalo como muestra abajo, después pulsa el botón "Add Pair" como indica abajo en flecha roja.
007lil.gif


Podrás ver cuando el puerto está abierto o cerrado como también los bytes enviados y recibidos.
008.gif


8) Antes de iniciar el simulador Proteus 7.6, inicias el PicRS232 como puedes ver abajo, así no te dará aviso de puertos cerrados o en uso. Si no te ejecuta el PicRS232 debes instalar el FrameWork que puedes descargar desde la Web de MicroSoft en este enlace de abajo.

Descargar FrameWork 4.0

009.gif


9) Ahora nos centramos en Proteus en este caso la versión 7.6. (Hace tiempo ya que no actualiza y no se el motivo). Arbimos el ISIS y con el archivo 16F84A.DSN y nos muestra la imagen de abajo.

010.gif


10) Hacemos doble clic con el ratón en el PIC16F84A y se abre una ventaja que muestra abajo. Cuando acabes de buscar el archivo .hex, pulsa el botón Ok.

011.gif


11) Como dije antes, PicRS232 debe estar abierto, luego pulsa el botón Play del simulador de Proteus. Ya podrás jugar con la simulación para saber como funciona. Puedes usar el Virtual Terminar para ver la simulación. Pincha en él para que te obedesca, los botones son los que tienes grabado en el 16F84A.asm.

TECLA_1_ON EQU 't' ; Código de las teclas utilizadas.
TECLA_2_ON EQU 'b'
TECLA_3_ON EQU 'a'
TECLA_4_ON EQU 'l'
TECLA_1_OFF EQU 'y'
TECLA_2_OFF EQU 'n'
TECLA_3_OFF EQU 's'
TECLA_4_OFF EQU 'k'
TECLA_TODO EQU 'p'
TECLA_PARADA EQU ' '
012.gif


Con el PicRS232 cuando veas el mensaje desde el PIC como muestra abajo, ya indica que el programa anda bien. Puedes pulsar los botones que deseas y comprobar su funcionamiento.
013.gif


12) Mientras tanto, poco a poco voy montando un proyecto real de prueba. Cuando me funcione del todo, lo haré en una buena pcb y con caja incluido. Eso sin contar que tengo en mente en usar el 16F887, un PIC de 40 pines que me vale para usar 8 entradas digitales, 8 salidas digitales, unas cuentas entradas analógicas, sobre todo, controlar este proyecto por Internet bajo PHP o por página Web y C#.

modelo01.jpg


Poco a poco voy a soldar los componentes que me falta, con el tiempo pongo el progreso en fotos su final vídeos en youtube.

Puedes descargar este minitutorial portado a PDF.
 

Adjuntos

  • Tutorial PicRS232 v2 beta.pdf
    323.1 KB · Visitas: 572
Última edición:
Atrás
Arriba