USO DE HIDBOOTLOADER DE MICROCHIP CON PROTON

miborbolla

Bovino maduro
#1
USO DE HIDBOOTLOADER DE MICROCHIP CON PROTON


Hola Bakunos, pues aquí dejo una manera muy versátil de programar un microcontrolador de la serie 18f2550 o 18f4550 de microchip la cual al menos de manera personal y a una buena cantidad de “robóticos” de bajo presupuesto nos ha servido de manera soberbia. Sabemos de antemano que habrá por ahí una infinidad de puristas que podrán tener sus contras al modo en como funciona este sistema, pero bueno si son puristas o como decimos en México muy chinguetas; dejen en paz a los que no lo somos ya que solo pretendemos hacer cosillas con un microcontrolador de manera sencilla o amateur, sin pasar por el tedio casi infinito de aprender muchísimas cosas sobre los microcontroladores y tener todas las herramientas necesarias. Así que el presente proyecto esta enfocado a principiantes o hobistas interesados en obtener resultados casi inmediatos.

Si te interesa este proyecto podrás ver todo el documento en pdf descargando el link de descarga, que es el siguiente:


http://www.4shared.com/office/prbVvhkJ/USO_DE_HIDBOOTLOADER_DE_MICROC.html

Saludos y espero comentarios. :eolo:



Este post lo seguiré enriqueciendo en base al interés que puedan mostrar todos ustedes, ya que tengo varias aplicaciones basadas a partir de este sistema básico.
 

Zephyros

Bovino de la familia
#2
Una descripción del proyecto y unas imágenes vendrían muy bien al tema.

No soy purista y soy de los que piensan que en tanto un proyecto funcione, no importa qué métodos utilice.
 

Zephyros

Bovino de la familia
#4
¿Bajaste y te tomaste el tiempo de leer el PDF anexo?

te invito a que lo hagas
Ahora hasta por comentar de buena manera atacas verbalmente a los bakunos?

El que se debería tomar un tiempo para leer bien los comentarios es otro... ¬¬

Y sí, ya descargué el PDF, en cuanto tenga chance lo leeré a detalle.
 
#5
Decodificador de Control remoto SONY

Hola Bakunos: si alguien esta siguiendo el post, continuo compartiendo una primera sencilla aplicación que consiste en utilizar nuestra pequeña tarjeta inicial añadiendo 7 leds y un receptor infrarojo del tipo TSop-1140 que nos servirá para decodificar un control remoto SONY o uno “universal” programado como para una televisión SONY general, y que tal como presento el programa y el circuito encenderá el led correspondiente al botón numérico del transmisor infrarojo (del 1 al 7)
Obviamente ustedes podrán tomar idea de este básico sistema para hacer todo lo que gusten modificando el programa a sus necesidades.
Aquí el programa en PROTON:


'****************************************************************
'* Name : DECSONYIR.BAS *
'* Author : Miguel Angel Borbolla Bonomi *
'* Notice : Copyright (c) 2012 CIBERTLAN *
'* : All Rights Reserved *
'* Date : 06/03/2012 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************

Device = 18F2550
Declare PROTON_START_ADDRESS = $1000
Xtal = 48

Declare Sonyin_Pin = PORTB.0 ' se asigna el pin RB0 (pin 21) para recibir datos del receptor Infrarojo
Dim SONYIN_WORD As Word ' Se crea una variavle de "palabra completa" para recibir el tren de datos
' Se hace un ALIAS de el BYTE BAJO que contiene los comandos de la variable SONYIN_WORD
Dim SONY_COMMAND As SONYIN_WORD.LowByte
' Se hace un ALIAS de el Byte ALTO que contiene el tipo de systema de la variable SONYIN_WORD
Dim SONY_SYSTEM As SONYIN_WORD.HighByte

' Se crean alias del puerto B (Pin 22 al 28) con el nombre LEDX respectivamente

Symbol LED1 PORTB.1
Symbol LED2 PORTB.2
Symbol LED3 PORTB.3
Symbol LED4 PORTB.4
Symbol LED5 PORTB.5
Symbol LED6 PORTB.6
Symbol LED7 PORTB.7



All_Digital = On ' se asignas todas las entradas como digitales

While 1 = 1 ' Se crea un Loop Infinito
Repeat
SONYIN_WORD = SonyIn ' Se recive el tren de datos del receptor infrarojo
Until SONY_COMMAND<> 255 ' Se queda repitiendose la recepcion hasta que el byte bajo (comandos) sea diferente a 255

'Se procesa la informacion del comando recibido y se prende el led correspondiente

If SONY_COMMAND=0 Then High LED1
If SONY_COMMAND=1 Then High LED2
If SONY_COMMAND=2 Then High LED3
If SONY_COMMAND=3 Then High LED4
If SONY_COMMAND=4 Then High LED5
If SONY_COMMAND=5 Then High LED6
If SONY_COMMAND=6 Then High LED7

DelayMS 1000 ' espera 1 segundo
PORTB=0 ' Se borra el contenido del puerto B y se repite el Loop para recibir otro dato.
Wend

Y aquí el diagrama correspondiente que viene en PDF de este documento donde viene embebido el Diagrama.

http://www.4shared.com/office/Hu146NmS/decodificador_sony.html?


Una ves Compilado el programa solo resta Grabar el archivo .HEX correspondiente con programa via el “HIDBootloader (Windows).exe”

Ya comentado en el primer Documento del proyecto, la forma de hacerlo .

El receptor Infrarojo TSop-1140, se consigue muy fácilmente en tiendas especializadas o prácticamente cualquier receptor genérico de los que vienen en DVD, Videocaseteras, televisores viejos, etc, etc. Este receptor cuesta unos 15 pesos y es una manera muy barata de poder enviar comandos a nuestro Micro controlador utilizando escasamente un solo pin de nuestro micro controlador.

Aquí dejo el Datasheet del Receptor Infrarojo:

http://www.4shared.com/office/mvSoxasZ/305097_DS.html

Espero les sirva, en particular tanto personalmente como varios compañeros hemos utilizado una buena variedad de receptores Infrarojos de procedencia igualmente variada en la que algunos no tienen nomenclatura pero igualmente nos han funcionado perfectamente, solo deben tener especial cuidado en programar su control remoto como para manejar una televisión SONY.

Una observación mas, es dejar por sentado que este protocolo es particularmente el de Sony, ya que muchas veces existe la confusión con el protocolo RC5 de philips, que si bien son muy parecidos, definitivamente son totalmente diferentes.

Aquí hay algunos links con el detalle del protocolo.

http://picprojects.org.uk/projects/sirc/sonysirc.pdf

Saludos
 
#6
qtal hermao oie se me hace excelente tu aporte ahorita ando buscando una aplicacion asi de buena , pero me preguntaba si tendras alguna con bluethott o con usb te agradeceria me enviaras una respuesta de antemano gracias
 
#7
Así en corto te comento que para comunicación serial vía bluetooth utilizo el modulo siguiente:

http://www.4shared.com/office/b-DgNHCg/GP-GC021_Ver10_EN.html

Estos módulos los consigo a razón de unos 140 a 180 pesos mexicanos cada uno, y no hacen otra cosa que traspasar de manera totalmente transparente el protocolo RS232 desde sus patillas dispuestas para conectarte a tu microcontrolador. Dicho de otra forma lo que sale de tu pin TX del microcontrolador lo conectas a RX del modulo Bluethoot y del mismo modo conectas el pin RX del microcontrolador a TX del modulo Bluetooth. y la configuracion de la comunicacion la haces a 9600 baudios, ya que este modulo en particular solo funciona a este baudaje.

Por el lado de la PC, obviamente requieres tener tu modulo bluetooth instalado (un Dongle o el que pudiese venir instalado de fabrica), y desde ahí "descubrir" tu nuevo dispositivo, que en este caso puede diferir entre las versiones de windows, sin embargo jamas he tenido algún problema en encontrar el dispositivo, el cual queda relacionado a un puerto serial. y desde el hyperterminal de windows o dentro del Proton IDE utilizando la herramienta "Serial Cominicator" puedes hacer tu primeras pruebas, para ya después pasar a visual basic, delphy o el programa de desarrollo que gustes.

Estos módulos no dan mas de 10 metros de distancia en la comunicación, pero para mis cacharros que hago me son suficientes, existen por supuesto otros modulos mas avanzados en distancia y baudaje, pero igualmente en el precio.

En el siguiente ejemplo envió el dato resultante del receptor de control remoto via el puerto serial (bluetooth):

Declare PROTON_START_ADDRESS = $1000
Xtal = 48
Declare Hserial_Baud 9600
Declare Sonyin_Pin = PORTB.0
Dim SONYIN_WORD As Word ' Create a WORD variable to receive the SIRC data
' Alias the COMMAND byte to SONYIN_WORD low byte
Dim SONY_COMMAND As SONYIN_WORD.LowByte
' Alias the SYSTEM byte to SONYIN_WORD high byte
Dim SONY_SYSTEM As SONYIN_WORD.HighByte


Symbol LED1 PORTB.1
Symbol LED2 PORTB.2
Symbol LED3 PORTB.3
Symbol LED4 PORTB.4
Symbol LED5 PORTB.5
Symbol LED6 PORTB.6
Symbol LED7 PORTB.7



All_Digital = On ' Make all pins digital mode
HRSOut "Probando recepcion de control remoto Sony",13,0
While 1 = 1 ' Create an infinite loop
Repeat
SONYIN_WORD = SonyIn ' Receive a signal from the infrared sensor
Until SONY_COMMAND<> 255 ' Keep looking until a valid header found

If SONY_COMMAND=0 Then High LED1
If SONY_COMMAND=1 Then High LED2
If SONY_COMMAND=2 Then High LED3
If SONY_COMMAND=3 Then High LED4
If SONY_COMMAND=4 Then High LED5
If SONY_COMMAND=5 Then High LED6
If SONY_COMMAND=6 Then High LED7
HRSOut "Comando ", Dec SONY_COMMAND ,13,0 'AQUI ES DONDE EL DATO ES ENVIADO AL PUERTO SERIAL (BLUETOOTH)

'DelayMS 1000
PORTB=0
Wend

espero te sirva como primer acercamiento a bluetooth, en cuanto al USB apenas estoy trabajando en ello, así que no tengo algo en claro que comentar. Como siempre debo destacar que este ejemplo sirve en mi tarjeta con HIDbootloader, si quieren que funcione en un microcontrolador sin bootloader deberan eliminar la linea que dice:

Declare PROTON_START_ADDRESS = $1000

Recibe un cordial saludo y si tienes dudas o algún comentario con gusto estoy para ayudar, los diagramas aunque a mi parecer es obvio ya que tienes tando el datasheet del modulo bluetooth y del microcontrolador, pero si tienes dudas como dije al comienzo esto es una explicacion en corto.

Miguel A. Borbolla B.
 

gvz

Bovino adicto
#8
una pregunta, en comparacion tu crees que es mas facil proton que css o c18 en com usb?? esque ya me fastidie usar tantas librerias
 

miborbolla

Bovino maduro
#9
una pregunta, en comparacion tu crees que es mas facil proton que css o c18 en com usb?? esque ya me fastidie usar tantas librerias
Es una pregunta difícil de contestar, ya que yo mismo soy victima de infinidad de librerías y lenguajes (compiladores) sin embargo tratare de ser lo mas breve y conciso al respecto de como logre avanzar entre este universo de información.

Lo primero que se debe tener muy bien fundamentado es lo que significa la comunicación entre un micro controlador y una PC, que considero es lo que me preguntas. Y por tanto debe tenerse experiencia en la comunicación mas famosa, documentada y popular que existe y es la comunicación serie o rs-232. Si ya se tiene una buena experiencia al respecto y ya se hace lo que se quiere por medio de este protocolo y me refiero a pasar variables entre los dos mundos (PC y Microcontrolador) saber manipular los bits y los bytes, es el momento de poder pensar en otro protocolo como el USB.

Hablando del puerto USB en particular, como todos sabrán existen muchas formas de configurar o utilizarlo, ya que soporta muchísimas tramas o protocolos dentro de si mismo, por ejemplo se puede "emular" un puerto serie (rs232) a través del puerto USB y es en este protocolo yo sugeriría a todos, que comencemos a migrar ya que nos ahorraremos muchos dolores de cabeza, tratando de entender cosas y parámetros que ni tenemos idea de lo que hablamos (al menos esa fue mi particular experiencia).

Regresando a tu pregunta el proton, tiene una buena librería para emular el protocolo RS-232 a través del USB o al menos yo la entendí mas o menos fácil, y fue así que comprendí todo el asunto de lo que involucran los parámetros de cada uno de los dos mundos, el del Microcontrolador y el de la PC. El lenguaje BASIC (proton) es un modo muy fácil de programar, sin la "elegancia" del lenguaje C++ y puede gastar mucha ram y rom de tu microcontrolador,pero eso si, podrás hacer cosas muy pero muy rápidas sin preocuparte mucho de la complejidad dentro del microcontrolador o de la PC.

SAludos
 

gvz

Bovino adicto
#10
ahh ok, esque lo x ejemplo en ccs puedo modificar las librerias para reducir el consumo de ram, c18 es un poco mas complejo, por los protocolos y funcionamiento conosco bien usb, pero proton parece mas simple, y x lo mismo mas consumo de ram, a si ke mi pregunta se reduce a esto, que tanto te deja proton modificar sus librerias?
 

gvz

Bovino adicto
#11
ah y ke usas para las interfaces del lado del host, esque yo manejo vb.net 2010, .net 4 y a veces me atoro con ese lenguaje
 
Arriba