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

Bluetooth Auto Projekt

  • Upload
    venice

  • View
    35

  • Download
    4

Embed Size (px)

DESCRIPTION

Bluetooth Auto Projekt. 2007 Von: Sascha Tippmann Christian Krieger. Einleitung. Die ersten Schritte Kommunikation und Ansteuerung Schaltplan BT Auto Quellcode Tiny in Bascom Quellcode Windows GUI Abschliessend. Die ersten Schritte. Verständnis der Servos bzw. PWM Signal - PowerPoint PPT Presentation

Citation preview

Page 1: Bluetooth Auto Projekt

2007Von:

Sascha TippmannChristian Krieger

1Sascha Tippmann, Christian Krieger

Page 2: Bluetooth Auto Projekt

Einleitung

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

2Sascha Tippmann, Christian Krieger

Page 3: Bluetooth Auto Projekt

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: Bluetooth Auto Projekt

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: Bluetooth Auto Projekt

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: Bluetooth Auto Projekt

Schaltplan BT Auto 1

Sascha Tippmann, Christian Krieger 6

Page 7: Bluetooth Auto Projekt

Schaltplan BT Auto 2

7Sascha Tippmann, Christian Krieger

Page 8: Bluetooth Auto Projekt

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: Bluetooth Auto Projekt

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: Bluetooth Auto Projekt

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: Bluetooth Auto Projekt

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: Bluetooth Auto Projekt

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: Bluetooth Auto Projekt

Bilder

Sascha Tippmann, Christian Krieger 13

Page 14: Bluetooth Auto Projekt

Bilder

AVR - Programmer

Sascha Tippmann, Christian Krieger 14

Page 15: Bluetooth Auto Projekt

Video

Sascha Tippmann, Christian Krieger 15

Page 16: Bluetooth Auto Projekt

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: Bluetooth Auto Projekt

Sascha Tippmann, Christian Krieger 17