sábado, 12 de diciembre de 2009

Semana Académica 2009 invierno Mecatronica



Esta vez me toco ser jurado y no me fue posible tomar tantas fotos como hubiese querido, pero aqui están algunas

AFASA

MEMCD

miércoles, 2 de diciembre de 2009

compilaKtechlabForoPicLinux

En el siguiente video veremos como se compila en Ubuntu 9.10 la aplicacion ktechlab desde el tarball, esta versión de ktechlab, que se ha denominado ktechlab-GcB, esta siendo desarrollada en el Foro -PIC Linux.


sábado, 28 de noviembre de 2009

ktechlab GCBasic sobre linux

De nuevo con ustedes, y escribiendo de rapido desde mi nuevo trabajo,:D, bien pues nadamas para postear que unos amigos del foro activo de PIC Linux, estan desarrollando un branch de buen software de simulacion de microcontroladores PIC, a los cuales ya les han agregado diversas funcionalidades y varios pic mas que son soportados, ademas de que el lenguaje basic que se utiliza para pasar de programación de diagramas de flujo, es ahora GCBasic, que en el mismo foro ha sido portado a Linux.

Se me hace una muy interesante propuesta de parte de este foro al cual pertenezco, y si alguien puede auxiliar, pues que sea bienvenido.

La pagina para descarga es la siguiente:

http://piclinux.svn.sourceforge.net/viewvc/piclinux/ktechlab-Gcb/branches/ktechlab-gcb-0.3.7-0.tar.gz?view=tar

Si quieres ver el hilo:
http://pic-linux.foroactivo.net/ktechlab-f6/ktechlab-gcb-t233.htm

La página del foro es la siguiente:
http://pic-linux.foroactivo.net/forum.htm

viernes, 13 de noviembre de 2009

Problemas con la reproducción de videos en Linux

Bueno si es muy cierto que el reproductor de Flash que instalamos cuando queremos ver videos de youtube no es del todo bueno. y pues cuando reproduces en formato de patalla completa, la imagen se va entrecortando, para esto existe una solución un poco diferente en entornos Linux, usar el plug in de VLC, y script para Grease Monkey, lo he probado y funciona bastante bien :D, solo espero que no se vea comprometida mi seguridad. Por cierto les dejo el dato de donde saque la información

http://beetonix.com/post/software/ver-videos-youtube-mozilla-firefox-sinflash/
http://userscripts.org/scripts/show/50771

jueves, 12 de noviembre de 2009

Java + CCS + Proteus + servos + rs232 + compim

El siguiente post trata de como podemos programar una aplicación desarrollada en JAVA, usando la libreria RXTX para comunicarse con un microcontrolador PIC16F877 simulado en proteus a través de componente COMPIM, para controlar posiciones simples de 3 servomotores. El desarrollo es interesante, ya que además no necesitas nada de hardware con estas herramientas para hacer las pruebas. El código de la comunicación se basa en la de que se muestra en picmania de RedPic.
Cabe mencionar que el desarrollo de este pequeño proyecto fué desarrollado por mis alumnos Ismael Pérez Amaro, Alejandra Karina Rojas Guzmán y Magdalena López Tiburcio de la carrera de Ing. en Sistemas Computacionales que cursan el 7to. Semestre en el ITST. a continuación coloco el texto e imagenes que me hicieron favor de redactar, así como los links de descarga.
************************************************************************************


http://www.scribd.com/doc/22497242/InterfazSerialJAVAPROTEUS

InterfazSerialJAVAPROTEUS

domingo, 8 de noviembre de 2009

Algunos truquillos que tome de algun lado

Bueno probando la maquina virtual VirtualBox que esta muy padre descidi instalar win2 por motivos de software que uso, pero bueno con eso de las actualizaciones y pues poner un inestable dentro de mi Linux daba cosa, así que decidi, poner las actualizaciones de seguridad, pero calro esta, que los win2 que tengo tienen parche en el ojo, asi que la solución de agregar al registro un archivo .reg ya no vale, ya que Ms decidio implementar el bloqueo por region, así que usando lo que esta publicado en estos links, me funciono muy bien y ahora si ya no hay problema de bloqueo

http://www.taringa.net/posts/info/2372214/Geographically-Blocked-PID---Windows-XP-Validation.html

http://www.taringa.net/posts/downloads/2123677/Serials-de-Oro-Para-Windows-XP-%5BFuncionan-100%25%5D.html

y bueno de paso instale el framework de googlecrome en lugar del motor por defecto del ie6, y pues la verdad va que vuela!!!, asi wue si eres asiduo usuario de ie, ponle el corazon del chrome y veras el cambio!!
http://www.google.com/chromeframe/eula.html

Visita Industrial A LV Mecatrónica 3ro

martes, 3 de noviembre de 2009

PulseAudio por fin!!

Bueno despues de estar jugando un rato con esto y no contento con la solución anterior, seguimos buscando y la solución la encontre en LaunchPad de Ubuntu. donde se explican los pasos a seguir

Bueno antes de llegar a esto decidi desinstalar ALSA, ya que pense que tanto alsa como pulseaudio querian el control de mi tarjeta, y pues así fué.

Ya que me quité ese problema de encima.
ahora al abrir el ajuste de volumen del panel de gnome (ya habia antes instalado pulseaudio de nuevo) ya me reconocia el hardware, cosa que antes no lo hacia.

mike@mike:~$ cd /etc/modprobe.d/

despues

mike@mike:~$ lspci -nn | grep -i audio
00:1b.0 Audio device [0403]: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller [8086:27d8] (rev 02)

mike@mike:~$ cat /proc/asound/card0/codec#* | grep Codec
Codec: SigmaTel STAC9250
Codec: Motorola Si3054

para entrar posteriormente al conf de alsa-base (este no lo desinstale)
mike@mike:~$ sudo nano alsa-base.conf


y al final se le agrego la siguiente línea
options snd-hda-intel model=laptop
y pues funciona!!

Fuentes:
https://help.ubuntu.com/community/HdaIntelSoundHowto

Solved for me with a small workaround after googleing a bit, it is not the best solution but it will suffice until an official fix is released. My hardware config:

jmr@wopr:/etc/modprobe.d
$ lspci -nn | grep -i audio
00:1b.0 Audio device [0403]: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller [8086:27d8] (rev 02)

jmr@wopr:/etc/modprobe.d
$ cat /proc/asound/card0/codec#* | grep Codec
Codec: Realtek ALC883
Codec: LSI Si3054

The workaround:

sudo gvim /etc/modprobe.d/alsa-base.conf

Add the following line at the end of the file:

options snd-hda-intel model=laptop

Finally after every reboot you must do:

killall pulseaudio
sudo alsa force-reload

Estrenando Karmic Koala y mis problemas :s Laptop Gateway

En hora buena el lanzamiento por parte de Canonical y la nueva versión de Ubuntu 9.10, muy bonito el cambio y las mejoras en lo gráfico se disfrutan mucho, sin embargo no habia notado el aspecto de la falta de audio!!!

Despues de Googlear un poco (quien no lo hace!) pues parecia que nadie tenia la misma lap que yo pero si el mismo problema, al instalar la actualización, simplemente te quedas sin audio :s

No es muy agradable realizar actividades sin música, así que pues manos a la obra

El problema:
Al abrir el icono de audio, no me detectaba ninguna tarjeta (PulseAudio)
el lspci me arroja que si hay una tarjeta de audio
alsamixer, me detecta muy bien mi tarjeta de audio

Solución:
poco metódica (workaround)

$sudo apt-get purge pulseaudio

:p
y ahora ya suena muy bien!!, pero al quedarme sin control sobre mi audio
$sudo apt-get install gnome-alsamixer

te lo instala en Aplicaciones --> Sonido y Video

Detalles de esta solución chapuzera:
las teclas de función no trabajan :s

Seguiré experimentando pero de mientras a seguir escuchando a Norah Jones :D

domingo, 1 de noviembre de 2009

Varios Temas

El costo que pagamos en México por Internet, realmente es alto, y aunado a esto nuestro gobierno trata de imponer un impuesto por el uso de las comunicaciones basadas en este medio, sin embargo en nuestro país, el costo por Mb es muy alto, comparado con el costo en Japón, además de que la penetración de la banda ancha en nuestro país si es ciertamente importante. Por esta razon creo que lo primero, debe bajarse el costo por Mb, y no tasarlo con un impuesto:
nota:
http://gizmodo.com/5390014/internet-speeds-and-costs-around-the-world-shown-visually

Si te gusta las ideas de Win2, no te culpo, yo también he sido, y soy usuario, pero sin embargo, tampoco creo que sea la gran panacea; para mi mala suerte, las aplicaciones que han sido desarrolladas para la ciencia de la Electrónica, son todas para windows, (Si ya se! que corren algunas bajo wine o puedo poner una VM, pero me refiero a versiones nativas) a excepcion de LAbview en su version 8.6 que esta muy buena.
Bueno si quieres saber un poco mas sobre Microsoft puedes leer el siguiente artículo:

http://mononeurona.org/pages/display/764

PrePa Abierta

El día de ayer con mucho agrado, estuve laborando de nuevo en prepa abierta, como siempre con mis clases de Matemáticas :D

Los temas que estamos viendo son Lógica y Conjuntos (La base para Matemáticas Discretas).
Los chicos se ven muy entusiasmados y les deseo la mejor de las suertes en este nuevo bloque de materias que estamos iniciando

lunes, 26 de octubre de 2009

Curso de Diseño de Tarjetas de Circuito Impreso con Eagle






Hola a todos aqui les presento unas fotos del curso que estoy impartiendo en el ITST a los alumnos del 3er Semestre de Ingeniería Mecatrónica, sobre el diseño de placas de circuitos impresos.

Mas de Tlacotli


Hola de nuevo, pues el dia de hoy estuve trabajando con el Tlacotli un rato, aunque solo un poco, estuve buscando la forma de como interactuán las fuerzas en los engranajes del codo, que son los que por el momento me están dando problemas.

Vulnerabilidad en Firefox por Microsoft

En días pasados, al iniciar a navegar por internet con el firefox 3.5 que tengo instalado en máquina, en WindowsXP, me aparecio un mensaje que se me hizo muy curioso,

El plug in Windows Presentation Foundation (WPF) y .NET Framework Assistant deberían de ser desactivados, ya que provocan una gran vulnerabilidad en el sistema.

A esto le dí aceptar. y pues no paso a más,

Sino que leyendo el email que me llega de un grupo GNU-Linux, del autor Gengis Khan Toledo, mencionando que el fallo de seguridad que tenia el Firefox, es debido precisamente, a que Microsoft a desatendido esta vulnerabilidad adrede, ya que últimamente, por lo que he visto de visitas en mi blog, la mayoría de los exploradores usados son FireFox en sus diversos sabores.

Creo que esa fué una política muy mala, al introducir una vulnerablidad, mediante un plug in a Firefox. ¿Hasta donde querrá llegar MS?

Cabe mencionar que aun así, me siento tranquilo, ya que Firefox ha tomado las medidas correspondientes y tapado ese hoyo en la seguridad, inclusive estando en Win2XP.
Mas Info
Fuente: http://www.rebelion.org/noticia.php?id=93521
http://blogs.zdnet.com/security/?p=4614&tag=content;col1
¿venganza?
http://www.theinquirer.es/2009/09/25/microsoft-contra-chrome-frame-es-inseguro.html

viernes, 23 de octubre de 2009

Biblioteca Digital

¡buenas noches! :D

Esta ocasión, la búsqueda que he estado haciendo con motivos de mi tesis de maestría, me he encontrado con una agradable sorpresa, la biblioteca digital de Jesús, de la Junta de Andalucía, en España, quien de manera muy profesional, nos ofrece toda una gama de documentos, manuales, cuadernos técnicos, sobre algunas herramientas que trabajan como software libre, tales como OpenOffice, GIMP, Inkscape, y trata también, sobre software libre.

Les recomiendo que se den una vuelta por el sitio, es muy bueno.

http://www.jesusda.com/docs/ebooks/#book-firefox

sábado, 26 de septiembre de 2009

domingo, 20 de septiembre de 2009

Tlacotli aun mas pruebas

:D aqui presentando mas pruebas del trabajo con Tlacotli


Tlacotli primeras pruebas

:D Hoy estoy muy contento ya que ayer probamos 3 servos del proyecto Tlacotli (si ves la barra lateral ahi esta una foto junto con otros proyectos) pero ahora ya con un nuevo mecanismo de soporte y ademas el manejo del mismo, aqui les dejo el video

Pruebas con GAMBAS y el Puerto Serie desde SSH

Buenos días!!, aqui posteando esto, pues ya finalizaron las pruebas que estaba haciendo con Gambas 2 y el puerto Serial, el día de ayer probamos la aplicacion desarrollada, en una Desktop y por medio de ssh en modo gráfico accedimos al server, desde una lap.

La respuesta del micro que esta conectado al puerto serial, responde al caracter enviado colocando en el textArea correspondiente S_1 + o S_1 - segun sea el caso de avance o retroceso en la posicion del servomotor, pero bueno ahora colocaremos el video y algunas notas que postee en el Foro de PIC Linux

Bueno aqui estan ya las correcciones


http://www.filefactory.com/file/a0a2a6h/n/mmm-testserial_0_0_5_orig_tar_gz

y bueno un video de como funciona ya este programa


Para grabar el escritorio use gtk-RecordMyDesktop y para los acercamientos use un efecto de Compiz Fusion
para convertir los videos a .AVI que genera el gtk-RecordMyDesktop use la consola con el mencoder, muy bueno, muy rápido y sencillo, el comando usado fue

mike@mike:~$ mencoder testRS232viaSSh.ogv -o testRS232viaSSh.avi -oac mp3lame -ovc lavc
Saludos!!

martes, 15 de septiembre de 2009

NI, SolidWorks Bring Virtual Prototyping to Mechatronics Design

Ya no solo encontramos que los softwares de diseño CAD son más avanzados, sino que también ahora ya se están integrando, para lograr un fin, tal es el caso de Labview y SolidWorks, así mismo podemos encontrar lo mismo con Altium Designer y SolidWorks; veo que ahora en lugar de buscar la especilizacion en alto grado, la tendencia hasta hoy es la interdisciplinariedad, esto nos lleva a que cada vez tendgamos una relación mas estrecha entre las diferentes areas.


NI, SolidWorks Bring Virtual Prototyping to Mechatronics Design: "After almost three and a half years of collaboration, SolidWorks and Nation..."

sábado, 12 de septiembre de 2009

Servomotor funcionando Bajo Linux

Saludos, aqui coloco el post que tengo en el foro de linux para pics y electrónica, espero les guste, cualquier comentario se los agradeceré

Bueno ya es de día!! y por fin ha subido el video donde se muestra como podemos controlar el servomotor con Gambas usando el Puerto Serial, bueno por el momento solo es un servo, pero mas adelante colocaremos mas servos para mover un mecanismo. y bueno creo que con esto doy terminado el hilo, y en la parte de proyectos continuaré con las siguientes partes y por menores.



Aqui coloco los fuentes para instalar, solo recuerda que debes tener el runtime de Gambas 2 en tu caja Linux y la version que trabajo es 2.8 de Gambas



Download testSerial_Paquetes.tar.bz2 from FileFactory.com
El hosting tiene ads y cosillas de esas, pero como usamos linux, pues no nos preocupemos
saludos!!!

Pruebas casi finales, aun falta ensamblar!!

Ya casi esta listo!, bueno, ya dandole toques finales para que sea funcional mi prueba con Gambas, después de unos meses de estar trabajando con esto, pues la verdad ha sido bien satisfactorio, el ver que ya esta mas vivo el programa.

El código, se ha quedado como se muestra, solo que hemos hecho un pequeño trucaje al servo que mostre en fotos anteriores, puesto que se transporto el potenciometro del servo que lleva interno, a una parte externa, de estar forma se hizo, debido a que el mecanismo de gusano sinfin + corona, exigia dos cosas:

  • El servo pudiera dar vueltas completas y varías, debido a la relacion que hay entre los engranajes
  • El posicionamiento del eje deberia ser exacto, con respecto a la horizontal que forma con la base.
Esto se puede ver claramente en la siguiente imagen

Lamentablemente, la corona que va con el gusano sin fin, al estar hecha de aluminio, y soportar una gran fuerza, pues, los dientes sufrieron los estragos, desgastandose, me comenta, Ruben, que sería mejor que dichos engranes fueran hechos de bronce, espero que consigamos una pieza pronto

El codigo fuente, hasta el momento, es el que presente en post anteriores, y el programa lo deje trabajando un buen de horas solo conectado con la tarjeta de control de servomotores y funciona de forma muy adecuada, detalles aun hay muchos, sin embargo, prodria decir, ¡Ya casí esta listo!


Falta el video donde se ve como se mueve el servo con el slider del GUI desarrollado, en este momento esta de subida.

Codigo Fuente para control de servos por RS232 Gambas



  • Responder citando
  • Editar/Borrar este mensaje



Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje maigke el Lun 7 Sep 2009 - 19:39

Esta es la Parte de la comunicacion

Código:

' Gambas class file

'Variables Globales

PUBLIC flag1 AS Boolean = FALSE
PUBLIC flag2 AS Boolean = FALSE
PUBLIC fTermine AS Boolean = FALSE ' bandera para indicar que ya acabo de mover un servo

'Variables para posicionamiento
PUBLIC S1Pos1 AS Integer PUBLIC S2Pos1 AS Integer PUBLIC S3Pos1 AS Integer PUBLIC S4Pos1 AS Integer
PUBLIC S5Pos1 AS Integer
PUBLIC S1Pos2 AS Integer PUBLIC S2Pos2 AS Integer PUBLIC S3Pos2 AS Integer PUBLIC S4Pos2 AS Integer
PUBLIC S5Pos2 AS Integer

'Variables para HOME
PUBLIC s1 AS Integer PUBLIC s2 AS Integer PUBLIC s3 AS Integer PUBLIC s4 AS Integer PUBLIC s5 AS Integer
PUBLIC vini1 AS Integer PUBLIC vfin1 AS Integer PUBLIC vini2 AS Integer PUBLIC vfin2 AS Integer PUBLIC vini3 AS Integer
PUBLIC vfin3 AS Integer PUBLIC vini4 AS Integer PUBLIC vfin4 AS Integer PUBLIC vini5 AS Integer PUBLIC vfin5 AS Integer
PUBLIC tempo AS Integer

PUBLIC SUB Form_Close()
IF ttyUSB.Status = Net.Active THEN CLOSE ttyUSB
END


'***************************Seccion para la comunicacion del puerto serial
'Esta parte es bastante modificable

PUBLIC SUB Check_Status()
ChkDSR.Value = ttyUSB.DSR
ChkDTR.Value = ttyUSB.DTR
ChkCTS.Value = ttyUSB.CTS
ChkRTS.Value = ttyUSB.RTS
ChkDCD.Value = ttyUSB.DCD
ChkRNG.Value = ttyUSB.RNG
END

PUBLIC SUB Form_Open()
cmdVelocidad.Index = cmdVelocidad.Find("115200") 'Lo que sigue no es valido separa las lineas indicadas por ';'
vini1 = 0; vfin1 = 0; vini2 = 0; vfin2 = 0; vini3 = 0; vfin3 = 0; vini4 = 0; vfin4 = 0; vini5 = 0; vfin5 = 0; sldS1.Value = 250
sldS2.Value = 250; sldS3.Value = 250; sldS4.Value = 250; sldS5.Value = 250
END

PUBLIC SUB Button1_Click()
ME.Close
END

PUBLIC SUB cmdAbreCierra_Click()
IF ttyUSB.Status = Net.Active THEN
CLOSE ttyUSB
cmdAbreCierra.Text = "Abre"
ELSE
'Linea de parametros
ttyUSB.PortName = txtPortText.Text
ttyUSB.Speed = cmdVelocidad.Text
ttyUSB.Parity = cmbParidad.Index
ttyUSB.DataBits = cmbDataBits.Text
ttyUSB.FlowControl = cmbControlFlujo.Index
ttyUSB.StopBits = cmbBitParo.Text
ttyUSB.Open()
Check_Status()
TextArea1.Text = "Puerto Abierto : " & ttyUSB.PortName & " Ajustes : " &
ttyUSB.Speed & " , " & ttyUSB.Parity & " , " & ttyUSB.DataBits & " , " &
ttyUSB.StopBits & " , " & Chr(13) & Chr(10)
cmdAbreCierra.Text = "Cierra"
ENDIF
END

'Funcion para leer puerto serial RS232
PUBLIC SUB ttyUSB_Read()
DIM s AS String
IF TabStrip1.Text = "Configuracion" THEN
READ #ttyUSB, s, Lof(ttyUSB)
TextArea1.Text = TextArea1.Text & s
ELSE IF TabStrip1.Text = "Servo 1" THEN
READ #ttyUSB, s, Lof(ttyUSB)
TextArea2.Text = TextArea2.Text & s
ELSE IF TabStrip1.text = "Servo 2" THEN
READ #ttyUSB, s, Lof(ttyUSB)
TextArea3.Text = TextArea3.Text & s
ELSE IF TabStrip1.Text = "Servo 3" THEN
READ #ttyUSB, s, Lof(ttyUSB)
TextArea4.Text = TextArea4.text & s
ELSE IF TabStrip1.Text = "Servo 4" THEN
READ #ttyusb, s, Lof(ttyUSB)
TextArea5.Text = TextArea5.text & s
ELSE IF TabStrip1.Text = "Servo 5" THEN
READ #ttyUSB, s, Lof(ttyUSB)
TextArea6.Text = TextArea6.Text & s
ENDIF
END

PUBLIC SUB ttyUSB_RNGChange(ival AS Boolean)
ChkRNG.Value = ival
END

PUBLIC SUB ttyUSB_DTRChange(ival AS Boolean)
ChkDTR.Value = ival
END

PUBLIC SUB ttyUSB_DSRChange(ival AS Boolean)
ChkDSR.Value = ival
END

PUBLIC SUB ttyUSB_CTSChange(ival AS Boolean)
ChkCTS.Value = ival
END

PUBLIC SUB ttyUSB_DCDChange(ival AS Boolean)
ChkDCD.Value = ival
END

PUBLIC SUB ttyUSB_RTSChange(ival AS Boolean)
ChkRTS.Value = ival
END

PUBLIC SUB ChkDTR_Click()
ttyUSB.DTR = ChkDTR.Value
Check_Status
END

PUBLIC SUB ChkRTS_Click()
ttyUSB.RTS = ChkRTS.Value
Check_Status
END

PUBLIC SUB cmbControlFlujo_Click()
ttyUSB.FlowControl = cmbControlFlujo.Index
END
Esta parte es la que envia los datos a los seis servos upps, ¿de cuál fumé? si son solo 5 Laughing

Código:

'************************************************************************************************
PUBLIC SUB cmdAtras_Click()
IF ttyUSB.Status = Net.Inactive THEN
Message("Primero abre el Puerto")
ELSE
PRINT #ttyUSB, "a"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "A"
WAIT 0.3 'Este retardo es para el parpadeo, entre colores, pero no tiene mucho caso
ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
ENDIF
END

PUBLIC SUB cmdAdelante_Click()
IF ttyUSB.Status = Net.Inactive THEN
Message("Primero abre el puerto")
ELSE
PRINT #ttyUSB, "11"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "1"
WAIT 0.3
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
ENDIF
END
'**************************************************************************
'Control del primer servo
'Para el envio de datos, fue probada la tarjeta con varios valores
'en el tiempo medido por osciloscopio, cuando la tarjeta es reiniciada
'con escala de 0.5ms por division, el tiempo en alto esta establecido a 1500ms
'tomado este valor como referencia, el slider y el spinbox, tienen el valor de
'250 de forma inicial, ya fueron medidos los tiempos de forma repetida, para
'verificar la presición del numero de datos enviados a la tarjeta.
PUBLIC SUB spnboxS1_Change()
DIM maximo AS Integer
DIM i AS Integer
sldS1.Value = spnboxS1.Value
vfin1 = spnboxS1.Value
tempo = 0
tempo = Abs(vfin1 - vini1)
'TextArea2.Text = "Vini1=" & vini1 & " Vfin1= " & vfin1 & " ciclo= " & tempo
'wait 1
IF (vfin1 - vini1) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "AAA"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "A"
WAIT 0.1 'Este retardo es importante, ya que la tarjeta no responde muy rápido
ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
NEXT
maximo = 0
ELSE
ENDIF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "111"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "1"
WAIT 0.1
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
NEXT
maximo = 0
ELSE
ENDIF
ENDIF
vini1 = vfin1
tempo = 0
fTermine = TRUE
END
'**********************************************************************************
PUBLIC SUB sldS1_Change()
DIM maximo AS Integer
DIM i AS Integer
spnboxS1.Value = sldS1.Value
vfin1 = spnboxS1.Value
tempo = 0
tempo = Abs(vfin1 - vini1)
'TextArea2.Text = "Vini1=" & vini1 & " Vfin1= " & vfin1 & " ciclo= " & tempo
'WAIT 1
IF (vfin1 - vini1) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "A"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "A"
WAIT 0.1
ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
NEXT
maximo = 0
ELSE
ENDIF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "1"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "1"
WAIT 0.1
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
NEXT
maximo = 0
ELSE
ENDIF
ENDIF
vini1 = vfin1
tempo = 0
fTermine = TRUE
END
'***********************************************************************************
'Control del segundo servo
PUBLIC SUB spnboxS2_Change()
DIM maximo AS Integer
DIM i AS Integer
sldS2.Value = spnboxS2.Value
vfin2 = spnboxS2.Value
tempo = 0
tempo = Abs(vfin2 - vini2)
'Usese solo en caso de que olvide el cable de comicacion como a mi me paso :(
'TextArea3.Text = "Vini2=" & vini2 & " Vfin2= " & vfin2 & " ciclo= " & tempo
' WAIT 1
IF (vfin2 - vini2) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "B"
ToolButton3.Background = &FF0000&
ToolButton3.Text = "B"
WAIT 0.1 'Este retardo es importante, ya que la tarjeta no responde muy rápido
ToolButton4.BackColor = &00FF00&
ToolButton4.Text = ""
NEXT
maximo = 0
ELSE
ENDIF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "2"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "2"
WAIT 0.1
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
NEXT
maximo = 0
ELSE
ENDIF
ENDIF
vini2 = vfin2
tempo = 0
END
'**********************************************************************************
PUBLIC SUB sldS2_Change()
DIM maximo AS Integer
DIM i AS Integer
spnboxS2.Value = sldS2.Value
vfin2 = spnboxS2.Value
tempo = 0
tempo = Abs(vfin2 - vini2)
IF (vfin2 - vini2) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "B"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "B"
WAIT 0.1
ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
NEXT
maximo = 0
ELSE
ENDIF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "1"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "1"
WAIT 0.1
ToolButton2.Background = &00FF00&
ToolButton2.text = ""
NEXT
maximo = 0
ELSE
ENDIF
ENDIF
vini2 = vfin2
tempo = 0
fTermine = TRUE
END
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'Control del tercer servo
PUBLIC SUB spnboxS3_Change()
DIM maximo AS Integer
DIM i AS Integer
sldS3.value = spnboxS3.Value
vfin3 = spnboxS3.Value
tempo = 0
tempo = Abs(vfin3 - vini3)
IF (vfin3 - vini3) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "C"
ToolButton5.BackColor = &FF0000&
ToolButton5.Text = "C"
WAIT 0.1
ToolButton5.BackColor = &00FF00&
ToolButton5.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "3"
ToolButton6.BackColor = &FF0000&
ToolButton6.Text = "3"
WAIT 0.1
ToolButton6.BackColor = &00FF00&
ToolButton6.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini3 = vfin3
tempo = 0
fTermine = TRUE
END

PUBLIC SUB sldS3_Change()
DIM maximo AS Integer
DIM i AS Integer
spnboxS3.value = sldS3.Value
vfin3 = sldS3.Value
tempo = 0
tempo = Abs(vfin3 - vini3)
IF (vfin3 - vini3) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "C"
ToolButton5.BackColor = &FF0000&
ToolButton5.Text = "C"
WAIT 0.1
ToolButton5.BackColor = &00FF00&
ToolButton5.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "3"
ToolButton6.BackColor = &FF0000&
ToolButton6.Text = "3"
WAIT 0.1
ToolButton6.BackColor = &00FF00&
ToolButton6.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini3 = vfin3
tempo = 0
fTermine = TRUE
END
'***********************************************************************************************************
'Control del 4to servo
PUBLIC SUB spnboxS4_Change()
DIM maximo AS Integer
DIM i AS Integer
sldS4.value = spnboxS4.Value
vfin4 = spnboxS4.Value
tempo = 0
tempo = Abs(vfin4 - vini4)
IF (vfin4 - vini4) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "D"
ToolButton7.BackColor = &FF0000&
ToolButton7.Text = "D"
WAIT 0.1
ToolButton7.BackColor = &00FF00&
ToolButton7.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "4"
ToolButton8.BackColor = &FF0000&
ToolButton8.Text = "4"
WAIT 0.1
ToolButton8.BackColor = &00FF00&
ToolButton8.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini4 = vfin4
tempo = 0
fTermine = TRUE
END

PUBLIC SUB sldS4_Change()
DIM maximo AS Integer
DIM i AS Integer
spnboxS4.value = sldS4.Value
vfin4 = sldS4.Value
tempo = 0
tempo = Abs(vfin4 - vini4)
IF (vfin4 - vini4) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "D"
ToolButton7.BackColor = &FF0000&
ToolButton7.Text = "D"
WAIT 0.1
ToolButton7.BackColor = &00FF00&
ToolButton7.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "4"
ToolButton8.BackColor = &FF0000&
ToolButton8.Text = "4"
WAIT 0.1
ToolButton8.BackColor = &00FF00&
ToolButton8.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini4 = vfin4
tempo = 0
fTermine = TRUE
END
'***********************************************************************************************************
'control Servo 5
PUBLIC SUB spnboxS5_Change()
DIM maximo AS Integer
DIM i AS Integer
sldS5.value = spnboxS5.Value
vfin5 = spnboxS5.Value
tempo = 0
tempo = Abs(vfin5 - vini5)
IF (vfin5 - vini5) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "E"
ToolButton9.BackColor = &FF0000&
ToolButton9.Text = "E"
WAIT 0.1
ToolButton9.BackColor = &00FF00&
ToolButton9.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "5"
ToolButton10.BackColor = &FF0000&
ToolButton10.Text = "5"
WAIT 0.1
ToolButton10.BackColor = &00FF00&
ToolButton10.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini5 = vfin5
tempo = 0
fTermine = TRUE
END

PUBLIC SUB sldS5_Change()
DIM maximo AS Integer
DIM i AS Integer
spnboxS5.value = sldS5.Value
vfin5 = sldS5.Value
tempo = 0
tempo = Abs(vfin5 - vini5)
IF (vfin5 - vini5) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "E"
ToolButton9.BackColor = &FF0000&
ToolButton9.Text = "E"
WAIT 0.1
ToolButton9.BackColor = &00FF00&
ToolButton9.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "5"
ToolButton10.BackColor = &FF0000&
ToolButton10.Text = "5"
WAIT 0.1
ToolButton10.BackColor = &00FF00&
ToolButton10.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini5 = vfin5
tempo = 0
fTermine = TRUE
END
'***********************************************************************************************************
La última parte del código borra los textareas y manda a posicionar al servo, aqui hay una parte importante con un ciclo while - wend, y tiene mucho que ver la bandera que puse en cada seccion de movimiento de servos, ya que sin esta bandera no se saldría de dicho ciclo. Very Happy

Código:

'Area de borrados de textAreas, cada text area solo contendra la info necesaria para su propio servo
PUBLIC SUB cmdBorrar_Click()
TextArea2.Text = ""
END

PUBLIC SUB Button2_Click()
TextArea3.Text = ""
END

PUBLIC SUB Button3_Click()
TextArea4.Text = ""
END

PUBLIC SUB Button4_Click()
TextArea5.Text = ""
END

PUBLIC SUB Button5_Click()
TextArea6.Text = ""
END

'Rutina de grabar las posiciones de los servos

PUBLIC SUB cmdGrabar_Click()
IF flag1 = FALSE AND flag2 = FALSE THEN
cmdGrabar.Text = "Grabar"
S1Pos1 = spnboxS1.Value
S2Pos1 = spnboxS2.Value
S3Pos1 = spnboxS3.Value
S4Pos1 = spnboxS4.Value
S5Pos1 = spnboxS5.Value
flag1 = TRUE
ELSE IF flag1 = TRUE AND flag2 = FALSE THEN
S1Pos2 = spnboxS1.Value
S2Pos2 = spnboxS2.Value
S3Pos2 = spnboxS3.Value
S4Pos2 = spnboxS4.Value
S5Pos2 = spnboxS5.Value
flag2 = TRUE
ELSE
Message.Error("Solo dos posiciones")
cmdGrabar.Text = "Borra"
S1Pos1 = 0
S1Pos2 = 0
S2Pos1 = 0
S2Pos2 = 0
S3Pos1 = 0
S3Pos2 = 0
S4Pos1 = 0
S4Pos2 = 0
S5Pos1 = 0
S5Pos2 = 0
flag1 = FALSE
flag2 = FALSE
END IF
END

PUBLIC SUB cmdHome_Click()
s1 = spnboxS1.Value
s2 = spnboxS2.Value
s3 = spnboxS3.Value
s4 = spnboxS4.Value
s5 = spnboxS5.Value
TextArea1.text = "Home ha sido selecionado con las siguientes
posiciones " & s1 & " " & s2 & " " & s3 & " "
& s4 & " " & s5
'TabStrip1.Action =
END

PUBLIC SUB ToolButton11_Click()
'Ir a home
'Colocamos una bandera que se llama fTermine que nos indica si un ciclo de envio de datos ya termino
' ahora preguntamos si los valores del spinbox y del valor dado como home son iguales
' esto pasa si un eje no lo mueves desde un inicio, en caso de ser cierto, pues entonces
' no hace nada, ya que si no se pone el if por alguna razon entra en un bucle infinito
' si los valores actuales del spinbox y de la pos de home no son iguales,
' mandamos a modificar ahora el valor del spinbox, enviando los correspondientes
' a través del puerto serial
fTermine = FALSE
IF (spnboxS1.Value <> s1) THEN
spnboxS1.Value = s1
WHILE fTermine = FALSE
WEND
END IF
fTermine = FALSE
IF (spnboxS2.Value <> s2) THEN
spnboxS2.Value = s2
WHILE fTermine = FALSE
WEND
END IF
fTermine = FALSE
IF (spnboxS3.Value <> s3) THEN
spnboxS3.Value = s3
WHILE fTermine = FALSE
WEND
END IF
fTermine = FALSE
IF (spnboxS4.Value <> s4) THEN
spnboxS4.Value = s4
WHILE fTermine = FALSE
WEND
END IF
fTermine = FALSE
IF (spnboxS5.Value <> s5) THEN
spnboxS5.Value = s5
WHILE fTermine = FALSE
WEND
END IF
'Ir a la posicion 1
'Ir a la posicion 2
'Regresar a home
END

Gambas primeras pruebas con el nuevo software

Hola a todos!!, bueno aqui estoy dando avances del proyecto que llevamos Twisted Evil , bueno pues he seguido trabajando con GAMBAS con el Puerto serial y con un adaptador USB-RS232, el cual en el post anterior mencione que me funcionaba muy bien!!, bueno, pues les comento que el anterior interfaz tuve que abandonarla ya que no me gusto mucho y se revolvio todo el codigo Sad , sin embargo decidi comenzar casi desde cero con la interfaz, pero basandome en los códigos anteriores que puse al inicio de este hilo y de los ejemplos que he estado haciendo.

Bueno ahora en lugar de un solo panel colocamos un panelStrip que son las solapas o pestañas, para que en cada una de ellas estuviera el control de un servomotor, controlando el ancho del pulso por medio del envio de caracteres ascii, a través de un spinbox y de un slider, pero ahora ya mas separado, con un textArea, donde se puede visualizar la respuesta del micro, unos botones que puse como indicadores LEDs ( bueno simulandolos cyclops ) y pues por el momento un grabado de posicionado home.

Ya medimos los anchos de pulsos con un oscilosocipio y la variacion que tiene es muy aceptable, digamos unos 20us de variacion de ancho de pulso, pero como estos servo, van a unos engranajes un tanto grandes, esta variacion no me perjudica mucho, bueno esta respuesta es empirica aun, luego nos meteremos con los numeritos What a Face

Lo que aun nos falta, es que grabe mas posiciones, que sea mas raṕido, bueno eso por el momento no creo que sea posible debido al
formato de datos que acepta el micro, luego lo reprogramamos, que este mas bonita la GUI, mmmm y bueno las sugerencias que me hagan favor de hacerme. Smile

Una disculpa de antemano si no coloco imagenes, pero aqui esta retringido el servicio de internet y todo lo que es multimedia, no pasa, si alguien me sugiere el uso de TOR y privoxy se lo agradezco, pero realmente no quiero romper las politicas ya que me dejarian sin servicio al localizarme, ademas de que seria facil ya que sus servidores Linux esta bien configgurados.

Las imagenes las colacaré al rato cuando esté en casa. Les coloco de mientras el código

Rolling Eyes Me dice que el post es muy largo!!!

domingo, 6 de septiembre de 2009

Un nuevo elemento al softwa libre :D

Hola a todos de nuevo, bueno aunque ya tiene tiempo que lo sabia, pues hasta hoy me he animado postear esto, y es que ahora mi vida a cambiado mucho, pues tengo a mi lado a una mujer muy amorosa, bella y además muy sincera, y que además será la madre de el bebé que ya viene en camino :D, esto de ser padre, hace tiempo que lo ansiaba, pero las ocupaciones y el trabajo no me habian dejado el tiempo como para meditarlo, hasta apenas hace unos dos meses, y pues ambos nos animamos, espero que este proyecto de vida que estoy iniciando hace poco, sea muy próspero y que todo nos salga maravillosamente.

sábado, 5 de septiembre de 2009

El 555 elimina la necesidad de un microcontrolador para el control de un Driver de Led de potencia

Leyendo mi email, me encontre con la nota de que muchas veces dedicamos tiempo a programar un micro y usamos sus recursos para realizar temporizaciones, sin embargo, el autor de este artículo, nos propone, usar un tempirizador 555 para generar una señal de reloj, en lugar de un microcontrolador y a la vez sugiere que usemos de mejor forma los recursos que incluye el micro. Es una buena nota espero le den lectura :D

http://www.edn.com/article/CA6685964.html?nid=4736&rid=16052552
(link en ingles)

martes, 1 de septiembre de 2009

Nueva prueba de comunicacion serial con GAMBAS

Hola a todos de nuevo!

Bien, pues el dia de hoy y despues de varios infructuosos intentos de hacer la comunicacion con la aplicacion que estoy desarrollando, me puse a pensar un poquito Laughing

Me volví a fijar en el archivo que viene de ejemplo en GAMBAS 2, y pues ya que me cayo el 20, decidi, de nuevo emplear todas las opciones de la conexion por el puerto serial, y bueno ahora usando la interfaz usb-serie, que por cierto para linux no requiere de algún tipo en partícular de driver.

basado en esto y analizando mas a conciencia el código de ejemplo vi los siguientes aspectos

1. Existe una funcion para abrir el puerto (Demasiado obvio, pero por esto mismo me equivoque en el anterior), no unicamente se pasan los paramtros, sino que tambien, se hace necesario un chequeo de estado pasando a unos indicadores chkbox los valores de algunos valores importantes de la comunicacion serial como son Ring, DCD, CTS, etc. en este caso, si todo va bien, al hacer el chequeo, unicamente se marcarán DTR, RTS (Data Terminal Ready - Request to Send) Que nos indican que la terminal de datos esta lista para funcionar y que ademas esta en petición para enviar datos
Fuente: http://www.beyondlogic.org/serial/serial.htm

2. Una parte de asignación de cambio de valores booleanos a los chkbox de los pines del RS232

3. La implementación de la función de lectura, usando el comando READ a través de un flujo (stream) que viene del objeto instanciado hacia el Puerto Serial. y almacenandolo en una cadena llamada s.

4. El envio de datos, es la parte que personalizamos, para poder enviar datos, primero debemos verificar que se encuentre activo el puerto serie, esto se hace usando el siguiente comando

IF ttyUSB.Status = Net.Inactive THEN

posterior a esto puede colocar una ventana de mensaje o algún otro tipo de dato; en el ELSE usted podrá colocar el envio de los datos, para nosotros fué más facil el pensar en trabajarlo con un PRINT a través de flujo (stream) #ttyUSB, quedando de esta forma

PRINT #ttyUSB, "a" 'Esto envia el caracter ascii de la letra 'a' por el puerto serial, siempre y cuando este abierto dicho puerto.

para el envio de los datos use, dos commmandButton, que envian únicamente una letra por cada clic, y un slider con un spinbox, como lo hice en el programa anterior, pero ademas, coloque, dos toolbutton, que ya se que no son para eso pero los use como indicadores cyclops cambiando de color cuando un dato ha sido enviado.

Tuve problema primero, pues al enviar cantidades pequeñas de datos, es decir, unas 3 letrs, todo trabajaba a la perfección, el problema se sucitó, cuanod enviaba mas de 10 elementos, y pues esto se moría, y bueno como se arreglo mas o menos el asunto, espero en verdad encontrar una mejor solución.

Colocando un wait 0.1 que genera un retardo de 100ms, tiempo suficiente para que enie el dato y le de chance a nuestro programa que responda de forma adecuada, de hecho así lo hizo!!!

les dejo el código fuente que hemos realizado

Código:

' Gambas class file
'Midiendo con el Osciloscopio, el ancho de pulso de la tarjeta mide 1500us
'si con en programa, suponemos que por cada caracter que envie al micro, un servo tendrá un
'movimiento de un grado, parece que este dato es totalmente erroneo, a pesar de que los
'calculos esten bien realizados.

'Para iniciar el programa solo manda caracteres, pero creo que estos incluyen muchos
'CR & LF en los cuales el micro al recibirlos se ataranta.
'como recibi muchos datos y tambien los envia, es impresindible que solo
'envie una señal cuando yano reciba datos, pero como asegurarnos que ha recibido
'el correcto numero de pulsos, que no sea a traves del uso del printf
' y/o de alguna incorrecta inicializacion de otro dispositivo
' el uso de wait, realmente ha hecho que el programa sea muy lento

'Variables Globales

PUBLIC vini1 AS Integer
PUBLIC vfin1 AS Integer

PUBLIC tempo AS Integer




PUBLIC SUB Form_Close()
IF ttyUSB.Status = Net.Active THEN CLOSE ttyUSB
END


'***************************Seccion para la comunicacion del puerto serial
'Esta parte es bastante modificable

PUBLIC SUB Check_Status()

ChkDSR.Value = ttyUSB.DSR
ChkDTR.Value = ttyUSB.DTR
ChkCTS.Value = ttyUSB.CTS
ChkRTS.Value = ttyUSB.RTS
ChkDCD.Value = ttyUSB.DCD
ChkRNG.Value = ttyUSB.RNG


END

PUBLIC SUB Form_Open()
cmdVelocidad.Index = cmdVelocidad.Find("115200")
vini1 = 0
vfin1 = 0
sldS1.Value = 90
END



PUBLIC SUB Button1_Click()

ME.Close

END



PUBLIC SUB cmdAbreCierra_Click()

IF ttyUSB.Status = Net.Active THEN
CLOSE ttyUSB
cmdAbreCierra.Text = "Abre"
ELSE
'Linea de parametros
ttyUSB.PortName = txtPortText.Text
ttyUSB.Speed = cmdVelocidad.Text
ttyUSB.Parity = cmbParidad.Index
ttyUSB.DataBits = cmbDataBits.Text
ttyUSB.FlowControl = cmbControlFlujo.Index
ttyUSB.StopBits = cmbBitParo.Text

ttyUSB.Open()
Check_Status()
TextArea1.Text = "Puerto Abierto : " & ttyUSB.PortName & " Ajustes : " &
ttyUSB.Speed & " , " & ttyUSB.Parity & " , " & ttyUSB.DataBits & " , " &
ttyUSB.StopBits & " , " & Chr(13) & Chr(10)
cmdAbreCierra.Text = "Cierra"
ENDIF
END

PUBLIC SUB ttyUSB_Read()
DIM s AS String


IF TabStrip1.Text = "Configuracion" THEN
READ #ttyUSB, s, Lof(ttyUSB)
TextArea1.Text = TextArea1.Text & s
ELSE IF TabStrip1.Text = "Servo 1" THEN
READ #ttyUSB, s, Lof(ttyUSB)
TextArea2.Text = TextArea2.Text & s
ENDIF
END


PUBLIC SUB ttyUSB_RNGChange(ival AS Boolean)

ChkRNG.Value = ival

END

PUBLIC SUB ttyUSB_DTRChange(ival AS Boolean)

ChkDTR.Value = ival

END

PUBLIC SUB ttyUSB_DSRChange(ival AS Boolean)

ChkDSR.Value = ival

END

PUBLIC SUB ttyUSB_CTSChange(ival AS Boolean)

ChkCTS.Value = ival

END

PUBLIC SUB ttyUSB_DCDChange(ival AS Boolean)

ChkDCD.Value = ival

END

PUBLIC SUB ttyUSB_RTSChange(ival AS Boolean)

ChkRTS.Value = ival

END

PUBLIC SUB ChkDTR_Click()

ttyUSB.DTR = ChkDTR.Value
Check_Status

END

PUBLIC SUB ChkRTS_Click()

ttyUSB.RTS = ChkRTS.Value
Check_Status

END

PUBLIC SUB cmbControlFlujo_Click()

ttyUSB.FlowControl = cmbControlFlujo.Index

END



'************************************************************************************************
'Esta parte corresponde a los controles que se encuentran en el tab SERVO 1
'Los primeros son dos botones con dos toolbuttons que sirven como leds indicadores
'La segunda parte corresponde a un spinbox y aun slider

PUBLIC SUB cmdAtras_Click()

IF ttyUSB.Status = Net.Inactive THEN
Message("Primero abre el Puerto, NO JODAS")
ELSE
PRINT #ttyUSB, "a"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "A"
WAIT 0.3 'Este retardo es para el parpadeo, entre colores, pero no tiene mucho caso
ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
ENDIF
END

PUBLIC SUB cmdAdelante_Click()

IF ttyUSB.Status = Net.Inactive THEN
Message("Primero abre el puerto NO JODAS")
ELSE
PRINT #ttyUSB, "11"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "1"
WAIT 0.3
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
ENDIF
END
'**************************************************************************
PUBLIC SUB spnboxS1_Change()
DIM maximo AS Integer
DIM i AS Integer

sldS1.Value = spnboxS1.Value
vfin1 = spnboxS1.Value
tempo = 0

tempo = Abs(vfin1 - vini1)

IF (vfin1 - vini1) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "AAA"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "A"
WAIT 0.1 'Este retardo es importante, ya que la tarjeta no responde muy rápido

ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
NEXT
maximo = 0
ELSE
Message.Info("NO JODAS A")
ENDIF

ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "111"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "1"
WAIT 0.1
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
NEXT
maximo = 0
ELSE
Message.info("NO JODAS 1")
ENDIF
ENDIF
vini1 = vfin1

END
'**********************************************************************************
PUBLIC SUB sldS1_Change()
DIM maximo AS Integer
DIM i AS Integer

spnboxS1.Value = sldS1.Value
vfin1 = spnboxS1.Value
tempo = 0

tempo = Abs(vfin1 - vini1)

IF (vfin1 - vini1) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "AAA"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "A"
WAIT 0.3
ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
NEXT
maximo = 0
ELSE
Message.Info("NO JODAS A")
ENDIF

ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "111"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "1"
WAIT 0.3
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
NEXT
maximo = 0
ELSE
Message.info("NO JODAS 1")
ENDIF
ENDIF
vini1 = vfin1


END

PUBLIC SUB cmdBorrar_Click()

TextArea2.Text = ""

END

PUBLIC SUB cmdColor_Click()

cmdColor.text = "Rojo"
FMain.BackColor = &H00FF0000&

END








Lo mas padre de todo esto es que si funciona aunque lento pero funciona.

Prueba de Interfaz USB-RS232 Linux + minicom

Hola a todos!!, despues de como 20 días sin avance, y bueno por fin podre mas o menos seguir adelante con esto !!!

Espero que no hayan pensado que deje abandonado pero bueno, poe el momento y asi como que de rápido, por fin consegui una interfaz serial usb, y eso es lo que estaba deteniendo mucho.

acabo de probar mi tarjeta controladora de servos con la interfaz usb-rs232 y minicom, que es una aplicacion muy padre de comunicacion serial para linux en linea de comandos., para que podamos usar la interfaz haremos lo siguiente.

conectar nuestro cable
abrir una terminal
teclear el siguiente comando $dmesg y esperar que nos diga algo como esto
[ 2106.356084] usb 3-1: new full speed USB device using uhci_hcd and address 3
[ 2106.521639] usb 3-1: configuration #1 chosen from 1 choice
[ 2106.525273] pl2303 3-1:1.0: pl2303 converter detected
[ 2106.545611] usb 3-1: pl2303 converter now attached to ttyUSB0

En este caso la interfaz es reconocida por ubuntu de forma automática como ttyUSB0, ahora solo toca configura el minicom.

para esto tecleamos

minicom -s
+-----------------------------------------------------------------------+
| A - Dispositivo Serial : /dev/ttyUSB0 |
| B - Localización del Archivo de Bloqueo : /var/lock |
| C - Programa de Acceso : |
| D - Programa de Salida : |
| E - Bps/Paridad/Bits : 115200 8N1

Al terminar si estamos en una lap, conviene guardar la configuracion,
así que al salir, pues a guardar como

| Salvar configuración como dfl |<--- Esta!!
| Salvar configuración como.. |
| Salir |

y pues a comunicarse!!.
+--------------------------------------
boxpic> 1
> S_1 +
1
> S_1 +
2
> S_2 +
2
> S_2 +
3
> S_3 +
3
> S_3 +
4
> S_4 +
4
> S_4 +
5
> S_5 +
+-----------------------------------------

La verdad el programa del microcontrolador no tiene muchos printf
ya que estos se acaban la memoria, entonces, mejos solo uso los necesarios

El unico detalle que hasta el momento le veo es el siguiente.
cuando cierro el minicom, automáticamente se desconecta la interfaz USB-RS

y entonces tengo sacar el cable y conectarlo de nuevo. espero, que en el
siguiente post, pues ya tenga mas avances!

Por cierto hoy no coloco imagenes por que ando de prisas, hoy, voy a la casa
de mi novia, y pues voy por ella!! cheers cheers cheers

martes, 25 de agosto de 2009

Linux

Bueno despues de recetarme algunos videos en el youtube, mientras platicaba con una amiga que por cierto dice que le gusta dormir, pero leo que mintio en ese aspecto, sino no habria de estar escribiendo unas notas ni estudiando, jojojoj es broma es una buena amiga y compañera del sistema, bueno pues mientras conversaba veia tambien unos videos que me parecieron muy buenos, espero les agraden.





lunes, 24 de agosto de 2009

Zoyatlcoponi, palma que florece

El trabajo de un grupo de mujeres artesanas de Huatlatauca, estado de Puebla, México.

Kakiwin Tutunaku

Centro ecoturístico que promueve la cultura Totonaca, abierto a toda clase de grupos que quieran participar de esta experiencia. Llame para reservar y disfrutar de la gastronomía indígena, música, danza regional y de la amabilidad de las mujeres totonacas

Mujeres bordadoras y tejedoras

El trabajo de un grupo de mujeres artesanas de Chachahuantla, estado de Puebla, México.

Xochimiahuetl - Flor que florece

La flor que florece es un reportaje sobre mujeres organizadas de la Sierra del estado de Puebla, ellas fabrican y venden sus productos, sin embargo, sus productos no se desplazan tan fácilmente,vean que tan bueno es el trabajo de las mujeres poblanas

Tamachij - chihualt, hecho a mano

Esta vez, presento una serie de videos donde se ven las artesanias que hacen las mujeres que se organizan en grupos comunitarios, cada una de ellas hacen un trabajo que está de más, decir que es excelente, sin embargo mal pagado, los videos me los recomendo mi hermana, son muy interesantes, veanlos.

drawtiming | Get drawtiming at SourceForge.net


Este post es de un programa en Linux que sirve para documentar tus circuitos a través de diagramas de tiempo, que son creados en un archivo gif.

Es realmente sencillo usarlo, ya que su sintaxis es facil de aprender :D, para quienes tienen GNU/Debian o alguna derivada en mi caso Ubuntu, pues unicamente usen

#apt-get install drawtiming

para ubuntu
$sudo apt-get install drawtiming

ya que este instaldo, crea una carpeta y en tu editor de textos planos favorito, crea un archivo txt que describa el funcionamiento de tu circuito.

para correr el programa, abre una consola ubicandola en la carpeta donde este tu archivo txt, y teclea el siguiente comando.

$drawtiming --output salida.gif entrada.txt

Puedes cambiarles los nombres :D como tu gustes.

Saludos!!

drawtiming | Get drawtiming at SourceForge.net

Shared via AddThis

sábado, 22 de agosto de 2009

Por fin me organizare mas

Bueno espero que esto no sea una llamarada de petate, como se dice en la jerga publica!!. pues la razon de mi anterior comentario es por lo siguiente, ya que soy una persona muy olvidadiza, pues tengo que generalmente anotar todo lo que hago, pues bueno y como ando en estas ondas de software libre, pues me puse a averiguar de que forma podria estar mas o menos al dia en mis actividades.

Bueno pues aunque tengo evolucion como calendario, como que no me gusta mucho, ademas de que presento el problemita de que no siempre tengo la lap encendida, pues bien primero que nada me puse a buscar un buen calendario y leyendo por la red me encontre que a la mayoria de las personas les gusta thunderbird de mozilla, sin embargo como que no me llama mucho la atención, así que me puse a indagar un poco mas y encontre Sunbird, un producto símil al anterior que pertenece incluso a la Mozilla, entonces lo revise y esta muy agradeble. lo pueden revisar en esta pagina

http://www.mozilla.org/projects/calendar/sunbird/screenshot.html

para instalar .- mike@nasty$ sudo apt-get install sunbird

Sin embargo como les comentaba, pues no siempre trae uno la lap prendida, y pues muchos de como yo supongo, su bateria no sirve!, y pues necesita alimentacion externa y bien eso es todo un rollo; entonces pues el celular tambien es una buena herramienta como recordatorio, pero es muy incomodo estar tecleando todo el tiempo en el para poner tus citas.

Al igual buscando en la red, me encontre con el siguiente link

http://www.esubuntu.com/sonyericsson_desde_linux_ubuntu

Ya que mi cel es un sony, w310i, pues me parecio perfecto y baje la aplicacion llamada wammu, que me sincroniza muy bien mi celular, y me deja organizar de una forma muy rapida mi cel y toda la info que tengo en el, pues ahora con esta aplicacion puedo estar trabajando mi cel con Wammu y mis citas en la lap con Sunbird.

Pero esto de trabajar con dos calendarios no es como que muy adecuado, así que lo mejor de esto es que puedo exportar los calendarios entre ambos programas y son muy compatibles!!!

Wammu <----> Sunbird
solo que el formato a exportar debe ser el ics en ambos casos, y eso te dará muy buenos resultados, asi, en caso no tener a la mano el cel, pero tengo la lap abierta, actualizo micalendario en Sunbird, y posteriormente cuando no use la lap, solo sincronizo el calendario con wammu, y en caso de no tener la lap, pues uso el celular, y cuando use la lap por mucho tiempo como el dia de hoy, unicamente sincronizo mi Sunbird con el cel y asi tendré mi informacion mas o menos al día.

Algo importante, cuando inicias Wammu por primera vez, yo opte por una autodeteccion, ya que no soy ducho en esto de los celulares, y pues me detecto muy bien el celular indicandole que estoy en una conexion USB, posteriormente, cuando ya me detecto el celular, me pide a que velocidad se piensa comunicar, ahi, muestra las velocidades de comunicacion, como si se tratase de un simple cable serial :D y bueno yo escogi la velocidad de 19600bps, que me parecio la mas adecuada, aunque tiene velocidades superiores, no quise abusar en esta prueba.

Ahora ya puedo usar mi cel no unicamente como memoria, sino tambien puedo controlar mi cel desde ubuntu.

Detalles
SO Ubuntu 9.04
RAM 2GB
dd 160GB
uP Intel Core2 duo T4300
instalar wammu
mike@nasty$ sudo apt-get install wammu

miércoles, 19 de agosto de 2009

El secreto de shamir

Bien pues este post lo lei en Blog Hacktivista, y pues me resulto muy interesante la forma en como un password es dividido en partes, para la seguridad del mismo y siempre y cuando este pass sea muy complejo y se te olvide. Lee el post esta muy interesante

El Secreto De Shamir. - Blog Hacktivista

Por cierto una amiga que es ing en sistemas, me comento sobre la navegacion anonima, sin embargo ya no le he visto conectada, supongo que le cacharon haciendo el tunel, pero no corrio riesgo su chamba por lo que se sigue trabajando bien (y).

Bueno me comento de privoxy y de pidgin que es lo que usaba en windows, ahora estoy por probar tor bajo ubuntu 9.04, alguien se anima. Aquí esta el vínculo para verificarlo.

Tor en Juanty

tomado del blog rm -rf / :D

Curso de aprendizaje basado en competencias ITST


Bueno aqui les presento unas fotos de nuestro curso de aprendizaje basado en compentencias desde el 17 al 20 de agosto de 2009. Arriba nuestra muy amable compañera de desarrollo académico de Libres, quién nos impartió el curso.






martes, 18 de agosto de 2009

Un poco aburrido

Bueno estas notas es solo para comentar que hoy estoy un poco aburrido y cansado pues hoy encontre unos módulos para un control cnc piratas :s

Esta situación, pues no me favorece en nada ya que la tarjeta de potencia de motores a pasos de un torno cnc pequeño, sigue sin funcionar,....

que poca!

viernes, 14 de agosto de 2009

PDF a RTF

Con esto de la web 2.0 y sus cosas, podemos visualizar este blog, pero no solo nos ofrece servicios de comunicación, sino también nos ofrece múltiples servicios. Uno de ellos la siguiente página nos ofrece de forma gratuita el subir un archivo pdf, que no este encriptado ni protegido por contraseña (hasta el momento esos son los que he probado) para convertirlos a un formato editable, como lo es Formato de Texto Enriquecido, comunmente llamado RTF, que podrás abrir y editar en tu procesador de textos favorito, como Word de Microsoft o Writer de Open Office.

Les dejo el link
PDF2Word Online: Convert PDF to Word for Free

Shared via AddThis

jueves, 13 de agosto de 2009

Por fin le entendi a lo del toolchain de piklab para integracion con sdcc








Por fin!

Mensaje maigke el Sáb 8 Ago 2009 - 8:32

Bueno despues de dejar esto de la integracion de piklab con el pickit2 y sdcc que tengo en casa Very Happy, pues ya despues de releer un buen Idea y bien debido a que soy lenton, pues ya comprendí!!

Lo unico que hize despues de volver sobre mis pasos, y encontrarme con los mismos problemas de hace un tiempo, decidí, reiniciar todo de nuevo. y lo único que agregue en Proyecto- Oopciones de Proyecto -- Toolchain --- Linker -- Camiarlo a personalizado, afortunadamente me quedaba con las opciones por defecto, bueno pues me coloque sobre la línea de texto y agregue la línea

libc18f.lib

y presione el boton de Add.

esto me dio el siguiente resultado!

sdcc -mpic16 -p18f2550 -V --debug -I/home/mike/PIC/reloj_test/ -c reloj.c
+ "/usr/bin/sdcpp" -nostdinc -Wall -std=c99 -I"/home/mike/PIC/reloj_test/" -Dpic18f2550 -D__18f2550 -DSTACK_MODEL_SMALL -obj-ext=.o -DSDCC_MODEL_SMALL -DSDCC=280 -DSDCC_REVISION=5117 -DSDCC_pic16 -D__pic16 -I"/usr/bin/../share/sdcc/include/pic16" -I"/usr/share/sdcc/include/pic16" -I"/home/mike/PIC/reloj_test/" "reloj.c"
sdcc -mpic16 -p18f2550 -V --debug -Wl-c -Wl-m -I/home/mike/PIC/reloj_test/ -oreloj.hex reloj.o libc18f.lib
using default linker script "/usr/share/gputils/lkr/18f2550.lkr"
+ "/usr/bin/gplink" -I"/usr/bin/../share/sdcc/lib/pic16" -I"/usr/share/sdcc/lib/pic16" -c -m -w -r -o reloj.hex reloj.o crt0i.o libc18f.lib pic18f2550.lib libsdcc.lib
*** Éxito ***
Parsing COFF file: /home/mike/PIC/reloj_test/reloj.cof
Device name: "18F2550"

Otro error que habia cometido, es que en la parte izquierda en la barra de proyecto, agregue el codigo objeto generado cuando unicamente compile el archivo, en este caso se llama reloj.o.

Muchas gracias espero que a alguien mas le sea de ayuda

sunny

Ahora seguiremos con las lecturas de los demas post para el echar a andar el pickit2 en piklab

***************************************************************************************************************
Gracias a todos ya he podido hechar a andar mi programador pickit2 con piklab!!
programando en sdcc, bueno pues que sucedia, no tenia los devs del la libreria libusb, por eso mismo tenia problemas para instalar el pk2cmd
Hecho eso, de acuerdo a Risanti http://pic-linux.foroactivo.net/piklab-f3/pickit-2-firmware-1x-en-piklab-t87.htm?highlight=piklab , tenia que solo hacer un
$sudo make install, y bueno de cualquier forma modifique las variables de ambiente en el .bashrc, aunque creo que esta demas.
al igual, como indica Risanti,
Risanti escribió:Hola a todos..

Lo siguiente es cambiar el firmware del pickit 2 para lo cual podemos descargar las distintas versiones desde
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1960

además con el comando pk2cmd -d PK2V012000.hex 'actualizamos firmware tiene que ser 1.20
En piklab configuramos el programador FIRMWARE PICKIT 2 1.X .....comprobamos la conexion que este correcto.. y listo


Aunque
la he probado con algunos pic funciona bien.. no se si sera un problema
de la version 1.20 del pickit pero no puedo programar pic 16F88. pero
otros los pogramos sin problemas...

Para programar 16F88 estoy usando pickit con version 2.32 conjuntamente con pikdev http://pic-linux.foroactivo.net/otros-f19/pickit-2-trabajando-pikdev-v-110-t86.htm#199



Atte.
Risanti

Mis resultados obtenidos ya por el piklab fueron estos

Conectando Firmware PICkit2 1.x en Puerto USB con el dispositivo 18F2550...
Versión de firmware es 1.20.0
set Vdd = 5 V and Vpp = 12 V
Establecer destino auto alimentado: false
Target Vdd = 4.99519 V
Target Vpp = 11.924 V
Conectado.
Enter normal mode
Already in requested mode.
Id leída: 18F2550 (rev. 5)
Programando memoria de dispositivo...
protected: code=false data=false
Borrando dispositivo
Escribir memoria: Memoria de código
start=0x000000 nbWords=0x004000 total=0x004000 force=false varOffset=false varSize=false
Verificar memoria: Memoria de código
start=0x000000 nbWords=0x004000 total=0x004000 force=false varOffset=false varSize=false
Escribir memoria: Datos EEPROM
Verificar memoria: Datos EEPROM
Escribir memoria: User IDs
Verificar memoria: User IDs
Escribir memoria: Bits de configuración
Verificar memoria: Bits de configuración
Programación exitosa.

maigke
Participante
Participante

Cantidad de envíos: 24
Fecha de inscripción: 12/04/2009
Edad: 31
Localización: Mexico


Volver arriba