2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

17
2007 Von: Sascha Tippmann Christian Krieger 1 Sascha Tippmann, Christian Krieger

Transcript of 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Page 1: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

2007Von:

Sascha TippmannChristian Krieger

1Sascha Tippmann, Christian Krieger

Page 2: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Einleitung

• Die ersten Schritte• Kommunikation und Ansteuerung• Schaltplan BT Auto • Quellcode Tiny in Bascom• Quellcode Windows GUI• Abschliessend

2Sascha Tippmann, Christian Krieger

Page 3: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Die ersten Schritte

• Verständnis der Servos bzw. PWM Signal• Signalerzeugung des PWMs, erstes Tiny

Programm• Kommunikation mit Serieller Schnittstelle• Ansteuerung mittels Serieller Schnittstelle

3Sascha Tippmann, Christian Krieger

Page 4: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Kommunikation und Ansteuerung

• Verwendete Materialien:- HBX Bonzer (Modellauto)- 2x Tiny 2313- Bluetooth Adapter- Signalwandler Max232- Schaltrelais ULN2003A- Gabellichtschranke- etliche elektronische Bauelemente

4Sascha Tippmann, Christian Krieger

Page 5: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Kommunikation und Ansteuerung

• Verwendung einer Windows GUI mit Gamepad

• Wichtig! Baudrate , Clockrate , Paraty Bits etc. müssen identisch sein für fehlerfreie Kommunikation

• BT Adapter leitet Datenströme an Max weiter• Max wandelt Signale RS232 in TTL-Signal• ULN als Schalter für Lichtanlage etc.

5Sascha Tippmann, Christian Krieger

Page 6: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Schaltplan BT Auto 1

Sascha Tippmann, Christian Krieger 6

Page 7: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Schaltplan BT Auto 2

7Sascha Tippmann, Christian Krieger

Page 8: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Quellcode Tiny'004.BAS: UART-Empfänger ohne Interrupt'Hardware: MAX232 an PD0/PD1, Nullmodemkabel zum PC'---------------------------------------------------$regfile = "ATtiny2313.DAT" 'AT90S2313-Deklarationen$crystal = 8000000 'Quarz: 8MHz$baud = 9600 'Baudrate der UART: 9600 BaudConfig Servos = 2 , Servo1 = Portb.2 , Servo2 = Portb.4 , Reload = 10Config Portb = Output #b-pins als OutputConfig Pind.3 = Input

Enable Interrupts #Aktivierung der InterruptsServo(1) = 90 'LenkungServo(2) = 95 'GasDim I As Byte

Portd.3 = 1 'Pullup Widerstand einschalten

Do If Usr.rxc = 1 Then 'Wenn Byte empfangen... I = Udr If Pind.3 = 0 Then #Falls CD fehlt, -> Mittelstand Servo(1) = 90 Servo(2) = 95

Else Portb.1 = 0 If I < 128 And I > 59 Then Servo(1) = I End If If I > 188 And I < 252 Then I = I - 128 Servo(2) = I End If 'If I = "D" Then' Servo(2) = 95' Servo(1) = 90' End If End If Else Usr.rxc = 0 End If

Loop

End

8Sascha Tippmann, Christian Krieger

Page 9: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Quellcode Tiny 2 Speed$regfile = "ATtiny2313.dat"$crystal = 8000000

$hwstack = 28$swstack = 32$framesize = 32

Config Portb.1 = Output

Portb.1 = 1

Config Pind.3 = Input

Led3 Alias Portb.1

Portd.3 = 1 'Internen Pull-up Widerstand einschalten

Config Int1 = RisingOn Int1 Isr_von_int1 'Interrupt-Routine

On Timer0 Ontimer0Config Timer0 = Timer , Prescale = 1024 , Capture Edge = Rising

Enable Timer0Enable Int1Enable Interrupts 'Interrupts global

Dim I As IntegerDim C As Byte

I = 0C = 0

DoLoopEnd

Ontimer0:I = I + 1024If I >= 31250 ThenI = 0Printbin CC = 0End IfReturn

Isr_von_int1:C = C + 1'Toggle Led3Return

9Sascha Tippmann, Christian Krieger

Page 10: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Quellcode WinGUI (Ausschnitte)

Serielles Interface:hCom = CreateFile(pccom, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

if(INVALID_HANDLE_VALUE == hCom) { //Handle Error return false; }

//Get port status portSuccess = GetCommState(hCom, &dcb); if(!portSuccess) { //Handle Error return false; }

dcb.BaudRate = CBR_9600; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT;

10Sascha Tippmann, Christian Krieger

portSuccess = SetCommState(hCom, &dcb);

if(!portSuccess) { //Handle error return false;

}

portSuccess = SetCommMask (hCom, EV_RXCHAR); if(!portSuccess) { return false; } SerialReader *p_sread = new SerialReader(); p_sread->Create(getHandle(),frame); p_sread->Run(); return true;

Page 11: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

while(true) {

if(joyGetPosEx(JOYSTICKID1,&joyData) == JOYERR_NOERROR) {

Xpos =joyData.dwRpos;

Ypos = joyData.dwYpos;

Ypos = (Ypos/1092)+60;//Ypos = -Ypos + 308;

Ypos = Ypos + 132;Xpos = (Xpos/1092)+67;

if(Ypos > 251) Ypos = 251;

if(Ypos != Ypos_old || Xpos != Xpos_old) { status = wxString("") << "X = " << Xpos << "\nY = " << Ypos; WriteFile(hCom, &Xpos, sizeof(Xpos), &bytesSent, over); WriteFile(hCom, &Ypos, sizeof(Ypos), &bytesSent, over);

}

Xpos_old = Xpos;Ypos_old = Ypos;if (joyData.dwButtons & JOY_BUTTON1){// bt_press = true;

// WxButton2->SetLabel("Gamepad an");

}

if (joyData.dwButtons & JOY_BUTTON2){

//bt_press = true;}

Sascha Tippmann, Christian Krieger 11

Quellcode WinGUI (Ausschnitte)Joystick:

Page 12: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

void SerialReader::Create(HANDLE phCom,CarFrm *frm){ hCom = phCom; frame = frm; over = new OVERLAPPED; over->Offset = 0; over->OffsetHigh = 1; over->hEvent = CreateEvent (NULL, FALSE, FALSE, NULL); wxThread::Create();}

void *SerialReader::Entry(){ bool bTest = false; DWORD d_size; char r_data;

double i = 0.; while(1) { bTest = ReadFile(hCom, &r_data, 1, &d_size, over); while(!bTest) { bTest = GetOverlappedResult(hCom,over, &d_size,false); }

i = (double)r_data; i=i*0.38*3.6; //Umdrehungen pro s * U in M * 3.6 = km/h frame->set_kmh(i); }

return 0;}

Sascha Tippmann, Christian Krieger 12

Reader:

Quellcode WinGUI (Ausschnitte)

Page 13: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Bilder

Sascha Tippmann, Christian Krieger 13

Page 14: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Bilder

AVR - Programmer

Sascha Tippmann, Christian Krieger 14

Page 15: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Video

Sascha Tippmann, Christian Krieger 15

Page 16: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Abschliessend

• Bluetooth ist kein guter Ersatz was die Reaktionszeit gegenüber Funk betrifft

• Bluetooth bietet eine bedeutend höhere Bandbreite als Funk und ist somit multifunktional einsetzbar

• Keine Störsignale die das Auto beeinflussen könnten

• Eher Drone statt Modellauto

Sascha Tippmann, Christian Krieger 16

Page 17: 2007 Von: Sascha Tippmann Christian Krieger 1Sascha Tippmann, Christian Krieger.

Sascha Tippmann, Christian Krieger 17