TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: alluzin en 31 de Octubre de 2011, 22:22:52
-
Hola a todos. En mi escuela me han dejado hacer un servidor web en el cual reporte las variables de un proyecto que ya tengo que es un controlador de temperatura que se comunica a una PC mediante un puerto usb .
Y el servidor lo tengo q hacer con Centos, Apache, Mysql y PHP. pero la verdad estoy perdido en estos temas, he leído algunos temas relacionados con estos temas pero me gustaría que me guiaran en que temas investigar y como empiezo a con esta aventura que se me hace muy interesante.
Mil gracias. :-/
-
No entiendo muy bien tu consulta, pero si puedo decirte que en internet hay muchisimos documentos sobre servidores con Centos y otras distribuciones Linux. Busca en google y veras que los encuentras y una vez tengas las cosas mas claras, puedes consultar las dudas, pero mas concretamente. De todos modos creo que este hilo deberia estar en OffTopic, ya que no tiene nada que ver con los PIC de forma directa.
Saludos.
-
Hola AcoranTF, creo q tienes razon no me explique muy bien. Empesare de nuevo, tengo un proyecto que es un control de temperatura el cual tiene un pic que se comunica a la PC via usb y esta información la gratifica en una aplicación de Visual C#, y lo que me dejaron en mi escuela es que todos esos datos los muestre en una pagina web. Y tengo q hacer en un servidor LAMP en Centos, pero la verdad no se ni como empezar, en primera tengo la duda de como en linux tomo esos datos y ya qe los tenga como subirlos a la pagina. Después como es que empiezo a desarrollar la pagina. Espero a hora si haberme explicado mejor :)
-
Esta sería una forma como yo lo haría:
- La misma aplicación que se comunica con el PIC, que reciba los datos de este y los guarde en una base de datos MySQL.
- Crear una página PHP que obtenga los datos de la base MySQL y los muestre en el navegador de acuerdo al formato que se desee.
Para la instalación del servidor LAMP, seguramente puedes encontrar una guía para CentOS, no debes tener problemas en seguirla.
-
Hola q tal GEO
gracias por tu ayuda, pero me surge una duda, la aplicación corre en Windows, esta aplicacion se podra ejecutar en Centos?, y ademas la PC reconoce al PIC como un dispositivo HID, y me supongo que los .dll son para windows nada mas no?
-
Tienes dos opciones:
- Portar la aplicación a Linux. Es probable que no necesites controladores para conectarte con el dispositivo, tendrías que usar la biblioteca HIDAPI http://www.signal11.us/oss/hidapi/ (yo he usado LibUSB, pero con comunicación bulk y no HID), el problema aquí sería con qué lenguaje o herramienta escribir la aplicación, ¿en qué lenguaje hiciste la aplicación para Windows?
- Que la aplicación Windows se comunique por red con la base de datos corriendo en la máquina con CentOS, creo que sería más sencillo pero necesitas dos equipos, el que corre Win y el que corre CentOS, aunque quizá esto en lugar de ser desventaja podría ser ventaja según como se desee ver.
-
OK Geo, creo que la segunda opción es buena pero mi profe dijo que lo queria todo el servidor desde un solo host. Y te comento que para el pic, el programa esta en C con el compilador CCS y para windows se desarrollo la aplicación en Visual C#.
Veo en el link q me mandaste que el ejemplo esta en C también.
-
Entonces no tienes de otra, tienes que portar la aplicación.
Ahora, en Linux también puedes programar en C# usando Mono, pero no se si te sea complicado poder acceder a la biblioteca HIDAPI (o alguna otra, te repito, yo no la he usado, solamente LibUSB). O si no tienes problemas con C/C++, pues adelante y por este camino :).
Otra opción, es que en lugar de "custom HID", el PIC funcione como un puerto serie virtual, Linux soporta esta clase y en prácticamente cualquier lenguaje que decidas utilizar habrá algún componente o biblioteca para acceder a puerto serie.
----------------------------
Edito: el compañero fabianjsm (http://www.todopic.com.ar/foros/index.php?action=profile;u=20311) ha publicado una aplicación en C++ que se comunica con el bootloader HID de Microchip, quizá te sirva de algo echarle una mirada al código (utiliza libusb):
http://www.todopic.com.ar/foros/index.php?topic=36534.0
-
De verdad me has ayudado mucho Geo gracias. Creo que si sera mejor hacer que el puerto usb simule un puerto serie virtual.
Después de leer los links que me mandaste, tengo duda si el bootloader es solo para grabar los PICS si necesidad de un grabador?
O también el bootloader me servirá para simular el puerto virtual?
-
El bootloader es el de Microchip, funciona como HID "custom", a lo que me refiero en específico es a que fabianjsm hizo una aplicación para Linux que se comunica con el PIC que tiene grabado dicho bootloader, te puede servir como ejemplo para la aplicación que necesitas correr en Linux si vas a trabajar con HID :).
Si lo trabajas como un puerto serie virtual, puedes hacer la aplicación p. ej. usando Mono, ya que manejas C#.
-
OK ya entiendo mejor.
Leí un poco mas acerca de USB CDC y con esto puedo simular el puerto serie virtual cierto no?. Y en el compilador CCS esta: "usb_cdc.h" y ademas en la pagina: USB CDC linux (http://www.ccsinfo.com/faq.php?page=linux_cdc) te dicen como usar el dispositivo en linux.
Con esto ya se podría reconocer mi proyecto con linux (teoricamente) no?
Si si se puede, es posible que con PHP o mysql tomar estos datos?
-
Con esto ya se podría reconocer mi proyecto con linux (teoricamente) no?
Si, pero aclaro, también se reconoce tal y como lo tienes ("custom HID"), te recomendé usar CDC porque sería más rápido/sencillo crear la aplicación puesto que cualquier lenguaje/herramienta que decidas utilizar incluye funciones/clases para comunicarse con puerto serie.
Si si se puede, es posible que con PHP o mysql tomar estos datos?
Si. Lo que te comento sería algo así:
PIC -> CDC -> Aplicación cliente (C#, Python, C++, etc.) -> MySQL -> Aplicación PHP -> Navegador web.
El PIC emula un puerto serie, la aplicación cliente en el servidor se comunica con el PIC para obtener los datos de la temperatura y los guarda en una base de datos MySQL.
Una página PHP extrae los datos de la base de datos y los muestra en el navegador ante una petición del usuario.
Otra forma, es comunicarte directo con el PIC, te puede servir echarle un ojo a este tema: http://www.todopic.com.ar/foros/index.php?topic=15846.0
El detalle aquí, es que necesitarías estar haciendo peticiones constantes al PIC para obtener todos los valores de temperatura, en la anterior estrategia, de esto se encarga la aplicación cliente.
-
Una disculpa por la demora pero he tenido mucho trabajo en la escuela. Pero me alegra contar que ya pude comunicar y enviar datos hacia Linux y verlos en minicom. Ahora me enfocare ala aplicación cliente. Y creo que la hare en C ya que es el lenguaje que tengo mas conocimientos. En este tema:http://www.todopic.com.ar/foros/index.php?topic=27146.0 (http://www.todopic.com.ar/foros/index.php?topic=27146.0) tsk usa la libreria LnxComm (que me pareció muy buena idea). Pero me surgen las dudas de que compilador usar, y como ligar todo esto con mysql.
Saludos
-
Si vas a utilizar lenguaje C, los archivos necesarios para desarrollar aplicaciones que conecten con MySQL vienen con la instalación del paquete mysqlclient (en Ubuntu me parece que es libmysqlclient-dev), después de tener instalado lo necesario, solo es cuestión de utilizar la API:
Conectando a MysQL en C bajo GNU/Linux (http://www.lastdragon.net/?p=322)
Tutorial MySQL en C con clase (http://c.conclase.net/mysql/index.php?cap=001#inicio)
Howto: Connect MySQL server using C program API under Linux or UNIX (http://www.cyberciti.biz/tips/linux-unix-connect-mysql-c-api-program.html)
Si usas otro lenguaje (como C#), debes revisar las bibliotecas (bindings) disponibles para el mismo.
La función de esta aplicación será leer lo que envíe el circuito a través del puerto USB y luego insertarlo a la base de datos. Después crearás una página en PHP que se conecte a la base de datos para extraer las temperaturas y mostrarlas en la página.