C++ laserquest

Status
Niet open voor verdere reacties.

Lanista

Gebruiker
Lid geworden
23 nov 2008
Berichten
35
Beste mensen,

Ik wil beginnen aan een laserquest game. En ik vroeg mij af of iemand mij in de goede richting kan pushen. Ik wil eerst maar is beginnen met een set aantal knoppen en LED's. De knoppen moeten geregistreerd worden door de computer. Dit zou ik heel graag wireless willen doen, maar USB of iets anders zou ook geen probleem zijn. Kan iemand me hierbij helpen?

groeten,
Lanista
 
Als je het over dat spelletje met die pakken hebt:

Ik zou een kleine microcontroller (hierna: uC) in een pak maken. Daaraan gekoppeld een lichtsensor die kijkt of (en door wie) je geschoten wordt. Deze data in een EEPROM (of eventueel flash) opslaan.
Dan via de UART van de uC uitlezen met de PC. (of eventueel via USB als je een duurdere uC neemt)
In de 'laser' straal zul je data mee moeten sturen over wie de straal afvuurt. Je zou dit kunnen doen door de straal te laten 'knipperen' met een bepaalde frequentie. Doe dit wél boven de 50 Hz anders zie je het natuurlijk. Voor dit 'knipperen' en decoderen van het knipperen zou je naar afstandsbediening-technieken kunnen kijken. Circuitsonline zal er vast wel een schema van op hebben staan.
 
Bedankt voor je reactie. Is het eigenlijk dan ook mogelijk om die data van het schieten realtime naar de computer te versturen? Dus stel dat je een itx computer op je rug draagt die steeds in verbinding staat met het wapen en sensor.
 
Alles kan natuurlijk, maar eenvoudig is het niet.
Bluetooth heeft bijvoorbeeld niet genoeg bereik, dus zit je al snel naar bijvoorbeeld wifi te kijken. Ook zou je het via een mobiel modem door kunnen bellen, maar goed....
Het probleem met wifi is dat er geen uC mee te krijgen zijn. Je zou dan een embedded-pc moeten kopen en die zijn duur plus onhandig groot. Óf je zou RS232 om moeten zetten naar ethernet en zo naar wifi, óf ineens naar wifi. Misschien bestaat daar wel iets voor, maar ik ben het nog nooit tegengekomen.
 
Alles kan natuurlijk, maar eenvoudig is het niet.
Bluetooth heeft bijvoorbeeld niet genoeg bereik, dus zit je al snel naar bijvoorbeeld wifi te kijken. Ook zou je het via een mobiel modem door kunnen bellen, maar goed....
Het probleem met wifi is dat er geen uC mee te krijgen zijn. Je zou dan een embedded-pc moeten kopen en die zijn duur plus onhandig groot. Óf je zou RS232 om moeten zetten naar ethernet en zo naar wifi, óf ineens naar wifi. Misschien bestaat daar wel iets voor, maar ik ben het nog nooit tegengekomen.

dus ik zou het zo moeten zien:

wapen schiet ---> data wordt naar RS232 verstuurd --> naar computer -> en die verzend het weer naar wifi?

Is er misschien ergens een website die iets in deze trant weergeeft?

bedankt weer.
 
ik bedoelde meer:
Je PAK:
wordt geraakt --> uController verwerkt en stuurt uit op rs232 --> conversie naar ethernet --> conversie naar Wifi.

Je PC:
wifi data ontvangen--> verwerken

en ik denk niet dat er zo iets kant en klaars op internet staat. Wel iedere stap op zich. Mag ik vragen waarom je dit gaat maken en wat je budget is? misschien dat er nog andere opties zijn die je kunt bekijken. Ik vind deze optie namelijk een beetje... euhm.. omslachtig
 
Laatst bewerkt:
ik bedoelde meer:
Je PAK:
wordt geraakt --> uController verwerkt en stuurt uit op rs232 --> conversie naar ethernet --> conversie naar Wifi.

Je PC:
wifi data ontvangen--> verwerken

en ik denk niet dat er zo iets kant en klaars op internet staat. Wel iedere stap op zich. Mag ik vragen waarom je dit gaat maken en wat je budget is? misschien dat er nog andere opties zijn die je kunt bekijken. Ik vind deze optie namelijk een beetje... euhm.. omslachtig

Ik ga dit maken om zelf meer ervaring te krijgen met dit soort systemen. Budget vind ik niet echt belangrijk. 100euro--1000euro-2000euro.....

Ik zag net al op het internet een apparaat dat het 232 signaal naar wifi kan omzetten:
wifi232

Bedankt weer voor de hulp
 
Laatst bewerkt:
Ik zag net al op het internet een apparaat dat het 232 signaal naar wifi kan omzetten:
wifi232

Ziet er goed uit!
Ik weet niet of je ervaring hebt met uControllers? Zo niet: dan kan ik je de stk500 starterkit aanraden. Lekker simpel, geschikt voor een redelijke variatie controllers en veel documentatie.
de Controller die hier bijvoorbeeld mooi mee samengaat is de Atmega32. Deze is nog te krijgen in Pdip uitvoering, dus lekker simpel te solderen. Ook zit er een uart ondersteuning in, dus met een extra chipje zoals de max232 heb je je communicatie vrij snel overeind.
Ook zitten er een handvol timers in die je kunt gebruiken voor het "coderen/decoderen" van het licht signaal
 
Ziet er goed uit!
Ik weet niet of je ervaring hebt met uControllers? Zo niet: dan kan ik je de stk500 starterkit aanraden. Lekker simpel, geschikt voor een redelijke variatie controllers en veel documentatie.
de Controller die hier bijvoorbeeld mooi mee samengaat is de Atmega32. Deze is nog te krijgen in Pdip uitvoering, dus lekker simpel te solderen. Ook zit er een uart ondersteuning in, dus met een extra chipje zoals de max232 heb je je communicatie vrij snel overeind.
Ook zitten er een handvol timers in die je kunt gebruiken voor het "coderen/decoderen" van het licht signaal


bedankt weer voor de info, ik ga is even bekijken of ik ermee overweg kan!
 
Ik wou het zeg maar zo doen:

Je pak:
sensor -> uC -> rs 232 -> usb in computer -> met wifi verstuurd hij data naar de "hoofdcomputer" -> retourneerd waardes voor de LED's enz.

Dus iedereen heeft dan een computer in zijn pak zitten die wifi uitzend en verzend. Is het dan ook echt mogelijk dat er een signaal terug gestuurd wordt die aan het wapen bv verteld dat hij nog 9 van de 10 ammo over heeft of zoiets?
 
sensor -> uC -> rs 232 -> usb in computer -> met wifi verstuurd hij data naar de "hoofdcomputer" -> retourneerd waardes voor de LED's enz.

een uC is een soort 'computer'. Dus je kunt het ook in deze stappen doen:
sensor -> uC -> mux232 (voor com) -> wifi -> hoofdcomputer.

Is het dan ook echt mogelijk dat er een signaal terug gestuurd wordt die aan het wapen bv verteld dat hij nog 9 van de 10 ammo over heeft of zoiets?

Dat is één mogelijkheid. Ik zou zelf voor de makkelijkere oplossing gaan door dat gewoon door de microcontroller af te laten handelen:
Code:
int leven = 10;
while(1)
{
    if ( is_geraakt ) // wordt natuurlijk wat anders
    {
        leven--;
        SendToPc(leven); // of zoeiets
        if (leven == 0) 
        {
            Dood = true;
            break;
        }
    }
}
 
Het wordt allemaal wat begrijpelijk. Ik codeer heel veel dus daar ligt het bij mij niet aan, maar als het gaat om hardware/software op deze manier te koppelen heb ik er niet veel kaas van gegeten. Vindt het wel super interessant. Ik had ook nog even naar die starterskit gekeken en dat lijkt me echt een goed begin voor mij.

Ik neem wel aan, als je de mux232/rs232 in je usb doet, dat je zelf met codering deze data kunt ontvangen/verzenden. c++ of iets dergelijks!

zo zie ik het nu:

player1 wapen laser = 51 Hz
player2 wapen laser = 52 Hz
player3 wapen laser = 53 Hz
player4 wapen laser = 54 Hz
..........enz

1. laser schiet met 52Hz op één sensor van een andere speler (bv speler 1)
2. Sensor van speler 1 speelt de 52Hz waarde door aan de uC
3. De uC ziet dat het speler 2 is en stuurt die waarde via de USB naar de computer

optie1
4. wifi - > hoofdcomputer registreerd dat speler 2 , speler 1 heeft doodgeschoten

optie2
4. uC zet zelf deze waarde om en zet alle LED's uit van speler 1
 
Ik neem wel aan, als je de mux232/rs232 in je usb doet, dat je zelf met codering deze data kunt ontvangen/verzenden. c++ of iets dergelijks!

Ik geloof dat je door de bomen het bos kwijt bent, ik zal proberen wat dingen op te klaren, maar ben niet echt een goede leraar :)
De uC heeft een uart. De uart heeft een Rx en Tx lijn (Receive & Transmit) hieraan koppel je een max232 chip. Deze chip zet deze signalen om naar RS232, dat is hetzelfde protocol als waar je computer met com-poorten mee werkt (geen usb dus). Aan de andere kant van de max232 zet je het kastje die RS232 omzet naar wifi. Dan kan het draadloos verzonden worden naar de PC.

zo zie ik het nu:

player1 wapen laser = 51 Hz
player2 wapen laser = 52 Hz
player3 wapen laser = 53 Hz
player4 wapen laser = 54 Hz

Dat kan. Maar als je 1 vaste frequentie neemt met een soort "patroon/codering" wordt het uitlezen veel makkelijker. Bijvoorbeeld een frequentie van 100 Hz en dan:

player1 wapen laser = 1000000000 100000000 100000000 100000000 etc etc etc
player2 wapen laser = 1100000000 110000000 110000000 110000000 etc
player3 wapen laser = 1010000000 101000000 101000000 101000000
(lsb-first code)

De '1' is dan laser aan, de '0' is laser uit. Op deze manier kun je met bovenstaande codering 2^10 = 1024 verschillende pakken aansluiten op één systeem zonder dat ze op elkaar gaan storen :)

1. laser schiet met 52Hz op één sensor van een andere speler (bv speler 1)
2. Sensor van speler 1 speelt de 52Hz waarde door aan de uC
3. De uC ziet dat het speler 2 is en stuurt die waarde via de USB naar de computer

Niet helemaal. Je moet er rekening mee houden dat een sensor geen intelligentie heeft. Zodoende kan een sensor niet zien wat de frequentie is, of zoals in mijn voorbeeld: de code/id-nummer.
Je moet dus de sensor aan de uC aansluiten en dan met een vaste frequentie gaan kijken of de ingang van de uC (waar de sensor aanzit) "hoog" of "laag" is. Dit houdt in dat de sensor actief danwel niet is.
Als je zoals in mijn suggestie een vaste frequentie gebruikt is dit betrekkelijk eenvoudig te maken.
Vervolgens kijk je door wie je ben doodgeschoten en dat geef je door aan de PC (via Uart->rs232->wifi [lucht] -->pc)
 
Beste Niek,

Ik begrijp dus dat de sensor alleen een object is dat een signaal opvangt of niet. (aan/uit)
De uC is juist het "intelligente" gedeelte dat de code leest en verwerkt.

player1 wapen laser = 1000000000 100000000 100000000 100000000 etc etc etc

gelukkig heb ik een beetje opgelet bij natuurkunde op school haha (ook alweer tijdje geleden). Als je dus de laser insteld op 100Hz, verstuurd hij voor player1 100x per seconde de code 1000000000 mee. De sensor ontvangt een signaal en slaat op HOOG, stuurt het signaal door aan de uC. De Uart speelt het stukje code door aan de rs232 enz..

Ik wou eigenlijk ook goed geluid afspelen als je geraakt wordt of schiet. De spelers wil ik dan een eigen computer op de rug doen. Kan ik dan niet meteen het signaal van de rs232 via USB doorspelen naar de computer op de rug? En dat die het dan via wifi aan de hoofdcomputer doorspeelt?

En omdat je dan de computer op de rug hebt, kan die meteen bepalen welk geluid hij moet afspelen!

Bedankt voor de goede :thumb: uitleg.
 
Laatst bewerkt:
Ik begrijp dus dat de sensor alleen een object is dat een signaal opvangt of niet. (aan/uit)
De uC is juist het "intelligente" gedeelte dat de code leest en verwerkt.

Correct!

gelukkig heb ik een beetje opgelet bij natuurkunde op school haha (ook alweer tijdje geleden). Als je dus de laser insteld op 100Hz, verstuurd hij voor player1 100x per seconde de code 1000000000 mee. De sensor ontvangt een signaal en slaat op HOOG, stuurt het signaal door aan de uC. De Uart speelt het stukje code door aan de rs232 enz..

Ja zoiets. Ik zat zelf te denken aan 10x per seconde een code van 10 bits == 100 bits per seconde == 100 Hz. De code is binair vertaalbaar naar een decimaal nummer. Daar ben je van op de hoogte?

Ik wou eigenlijk ook goed geluid afspelen als je geraakt wordt of schiet. De spelers wil ik dan een eigen computer op de rug doen. Kan ik dan niet meteen het signaal van de rs232 via USB doorspelen naar de computer op de rug? En dat die het dan via wifi aan de hoofdcomputer doorspeelt?

Welke computer op de rug heb je het over? Die heb je in principe niet nodig he? Ik zou zo'n kant en klaar chippie met een geluidje erin kopen (zo'n irritant ding uit een muziekmakende kerstkaart bijv). Speakertje eraan en klaar.
Als je een embedded pc moet kopen voor ieder pak, dan zit je tegen een 1000 euro PER PAK aan. Ik neem aan dat dat niet de bedoeling kan zijn.
Als je het rekenwerk aan de uC (==soort computer) overlaat en voor derest alleen een paar sensoren en wifi verbinding moet kopen, kun je met een 100 euro ook wel klaar zijn. Exc de kosten van de ontwikkelingskit natuurlijk, maar die is ook niet zo duur en je hebt er in principe jarenlang plezier van!
 
Laserquest

Beste Niek,

tis alweer een tijdje geleden maar zou je mij nog een keer kunnen helpen. Ik zat was te zoeken naar een stk500 starterkit maar kan ze in NL nergens krijgen (of ik zoek gewoon niet goed). Heb jij misschien zelf nog zo'n kitje thuis liggen? Bedankt weer
 
Jazeker heb ik er nog 1 thuis liggen, maar die wou ik zelf graag houden. :)

Hier zou je er 1 kunnen kopen:
http://www.antratek.nl/Atmel.html

Koop er dan meteen even een atMega32 bij (a 7-8 euro) dat is een wat krachtigere uC dan die er bij zit
 
laserquest

Bedankt weer voor je hulp. Ik weet dat je mij al een keer hebt uitgelegd dat ik een sensor moet kopen enz enz. Ik vroeg mij af of je wat gedetailleerder hierop in kunt gaan.

Want ik weet van jou dit:
Sensor -> uController Uart -> MAX 232 - > RS232 (duurdere kunnen ook USB) -> PC

Ik vroeg mij dus af of ik via c# .NET een controller kan aansturen. Bv dat ik zeg hoeveel kogels er per magazijn in zitten, hoeveel 'levens' er nog over zijn enz.

Hoop dat ik beetje duidelijk ben.

groeten,
Lanista
 
Want ik weet van jou dit:
Sensor -> uController Uart -> MAX 232 - > RS232 (duurdere kunnen ook USB) -> PC

Dat zou ik inderdaad doen

Ik vroeg mij dus af of ik via c# .NET een controller kan aansturen. Bv dat ik zeg hoeveel kogels er per magazijn in zitten, hoeveel 'levens' er nog over zijn enz.

uControllers zijn helaas alleen te programmeren in C en/of Assembly. Ik ben er zelfs al een paar tegen gekomen die ook in C++ geprogrammeerd kunnen worden, maar C# (nog?) helaas niet.

Het probleem met uControllers is dat ze enorm weinig geheugen en processor snelheid hebben. C# staat er niet om bekend dat het zuinig met system-resources omgaat. Dus zodoende....
 
laserquest

Het is echt een super website die je me gegeven hebt.
Hoe zou jij het nu aanpakken? wat connect ik ongeveer met elkaar? wil kunnen schieten, dus een drukknop, de uController....hmzz. Graag weer wat assistentie

bedankt.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan