PC fjärrkontroll: Uppgraderingar[bilder]

Berätta om dina pågående projekt.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

PC fjärrkontroll: Uppgraderingar[bilder]

Inlägg av Rick81 »

Jag har byggt en trådlösfjärrkontroll till min PC. Jag har slaktat en gammal gamepad och gjort ett nytt kretskort. Kretskortet innehåller en PIC, Kjell o CO AM-modul mottagare, 16 knappar och en analog "mushastighetsspak" samt motstånd och dioder.

Till PC har jag byggt en mottagare som består av en PIC, Kjell o CO AM modul mottagare, lysdiod och är kopplad till PC via parallellporten.

I PC har jag ett C++ med win32API program där man kan välja upp till 3 tangenter per knapp eller musfunktioner. 4 olika lägen finns, för nuvarande
1 = surfning, program,filhantering 2 = spel 3 = winamp 4 = VLC vilka lätt kan programmeras om via ett annat program.

Allt fungerar utmärkt, men jag funderar på att fixa lite saker.
1) göra om parallell kommunikationen till USB. Har skaffat PIC 18 serien med inbyggd USB men har problem att få in det i mitt C++ program. Antar att det smidigaste är att göra en virtuel serieport. Har någon några länkar eller erfarenhet av bibliotek för detta? Och var kan man hitta lämpliga bibliotek

2) Kjell o CO modulerna är lätta att använda, har bra räckvidd men de har för lång "startup" tid....dvs från man börja sända tills datan är stabil tar uppemot 50 ms vilket ger en märkbar fördröjning när man spelar spel. Någon som vet något bättre alternativ, som inte är för dyrt, alt. kretsschema på en krets som är bättre.
Senast redigerad av Rick81 31 december 2005, 17:20:48, redigerad totalt 1 gång.
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg av jack »

Välkommen till forumet!

Bilder? :)

Ungefär hur lång räckvidd är det ungefär?
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Inlägg av Rick81 »

Jag kan fixa bilder i helgen.
Räckvidden täcker åtminstone överallt på en 3:a på 76 kvadrat, även på balkongen genom betongväggar och annat. Har inte testat max räckvidd.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Re: PC fjärrkontroll: Uppgraderingar

Inlägg av cykze »

Rick81 skrev:1) göra om parallell kommunikationen till USB. Har skaffat PIC 18 serien med inbyggd USB men har problem att få in det i mitt C++ program. Antar att det smidigaste är att göra en virtuel serieport. Har någon några länkar eller erfarenhet av bibliotek för detta? Och var kan man hitta lämpliga bibliotek
libusb (eller Windows-porten libusb-win32) är rätt smidigt. Jag tror knappast att det kan vara enklare. Man går igenom en lista på vilka enheter som finns inkopplade till USB-portarna och väljer sedan den man vill kommunicera med. Själva kommunikationen består bara av en funktion. Jag har använt det för att kommunicera med en AVR som kör USB (Low-Speed) med control-överföringar. libusb fungerar under Windows, Linux och MacOS X utan att man ska behöva göra några ändringar.

Att låta PIC:en agera serieport kan ju också vara ett alternativ. Frågan är vilket sätt som är enklast.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Inlägg av Rick81 »

Här kommer bilderna:

Den omgjorda gamepaden(jag vet det är fult med genomskinligt):
Bild
observera analoga spaken högst upp till höger, används till att ändra mushastighet

Bild

Bild
mottagaren som använder sig av parallellporten

Bild
mottagaren för USB

Bild
C++ programmet. Ettorna visar vilken knapp som är intryckt AD = ad värdet
Senast redigerad av Rick81 31 december 2005, 17:58:00, redigerad totalt 1 gång.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Snyggt gjort! :) Hur gjorde du med USB-programmeringen i Windows?
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Inlägg av Rick81 »

cykze skrev:Snyggt gjort! :) Hur gjorde du med USB-programmeringen i Windows?
Jag har laddat ned biblioteket som du föreslog och tittat lite på det. Verkar vara precis det jag behöver. Har du någon kod man kan få titta på? Är det anpassat för Borland kompilatorn? Jag använder Borland för klassen som sköter parallellporten.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Kod: Markera allt

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <usb.h>

int	main()
{
	struct usb_bus *bus;
	struct usb_device *dev;

	usb_init();
	usb_find_busses();
	usb_find_devices();

	for(bus=usb_get_busses(); bus; bus=bus->next)
		for(dev=bus->devices; dev; dev=dev->next)
				printf("Vendor: 0x%04X Product: 0x%04X\n", dev->descriptor.idVendor, dev->descriptor.idProduct);
	
	return 0;
}
Prova den koden först. Den bör lista alla USB-enheter. I Windows ska du nog installera "Filter Driver" först. Den bör göra så att alla installerade enheter kan kommas åt från libusb.

Det andra alternativet ("Device Driver") som det står om på libusb-win32 är att man tar en exempel-inf-fil och sedan redigerar den och väljer att ladda den när man blir ombedd att installera en drivrutin. Prova sedan med programmet "testlibusb-win.exe" som tydligen ska följa med i paketet för att se om din enhet kan hittas.

Läs mer under rubriken "Installation".

Jag har inte testat libusb under Windows än (ska göra det när jag får tid). Men läser man under Development->Using så verkar det som att det finns färdiga libs för Borlands BCC-kompilator. Du får prova lite.

Kolla även den lilla dokumention som finns på http://libusb.sourceforge.net/doc/
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Inlägg av Rick81 »

Jag får inte lib USB att funka. Testprogrammet hittar min USB enheter, men när jag testar koden

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <usb.h>

int main()
{
struct usb_bus *bus;
struct usb_device *dev;

usb_init();
usb_find_busses();
usb_find_devices();

for(bus=usb_get_busses(); bus; bus=bus->next)
for(dev=bus->devices; dev; dev=dev->next)
printf("Vendor: 0x%04X Product: 0x%04X\n", dev->descriptor.idVendor, dev->descriptor.idProduct);

return 0;
}

så får jag följande felmeddanden:

Error: Unresolved external '_usb_init' referenced from C:\BORLAND\BCC55\BIN\USBT
EST.OBJ
Error: Unresolved external '_usb_find_busses' referenced from C:\BORLAND\BCC55\B
IN\USBTEST.OBJ
Error: Unresolved external '_usb_find_devices' referenced from C:\BORLAND\BCC55\
BIN\USBTEST.OBJ
Error: Unresolved external '_usb_get_busses' referenced from C:\BORLAND\BCC55\BI
N\USBTEST.OBJ

Den hittar usb.h sen vet jag inte varför den klagar. Någon ide?
Senast redigerad av Rick81 7 januari 2006, 00:31:21, redigerad totalt 2 gånger.
sprawl
Inlägg: 299
Blev medlem: 9 juni 2004, 13:01:33
Ort: Göteborg

Inlägg av sprawl »

det är i länkningen du får problemet, antingen har du inte länkat med det libbet som följer med förmodligen någon fil som slutar med .lib. Eller så har borland ett annat format på namnen av funktionerna och det går inte så enkelt att länka med ett lib som är gjort till en annan kompilator.

/andreas
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Inlägg av Rick81 »

Jag håller på och tittar lite på USB i PIC182455. Mycket register. Någon som har programmerat med USB i PIC18 serien och kan bidra med lite kod? Vet inte vad alla olika bitarna betyder. Ett fungernade program att titta på konfiguration av USB skulle underlätta.
Skriv svar