120 likes | 274 Views
The iBlueBot. By Walid Mnif, Tamer Shadid, Lim Seang FINAL PRESENTATION ECE4006 07/24/2003. Project Goals. Primary goal: control an amigo bot using an iPaq through a Bluetooth link Secondary goal: send feedback from robot and PIC sensors to be displayed on the iPaq. DONE.
E N D
The iBlueBot By Walid Mnif, Tamer Shadid, Lim Seang FINAL PRESENTATION ECE4006 07/24/2003
Project Goals • Primary goal: control an amigo bot using an iPaq through a Bluetooth link • Secondary goal: send feedback from robot and PIC sensors to be displayed on the iPaq DONE
The Current iPAQ GUI Search for the bot And establish a Bluetooth link Create a virtual port And connect serially To the AmigoBot Rotate left Rotate right Go forward Stop button Steering Controls Speed Control Status Panel
Bluetooth Implementation on iPAQ • BTAccess C++ library for accessing the Widcomm Bluetooth Protocol Stack built in the iPAQ Sample functionality: CBtStack *pStack; // create pointer to stack CBtDevice *pDevice; //create device pointer pStack->BtRadioOn(); CString name=pDevice->m_strDeviceName;
Control Protocol • One byte is transferred for each control command: - The upper nibble defines the command type - The lower nibble contains the command parameter • Multi threads implemented: - A sender thread: sends one byte to converter after each button push - A receiver thread: monitor the serial port for any arriving packets
The PICs Setup • PIC1 - Interrupts routine when receives data from converter via UART - Transfer data via SPI to PIC2 - Send acknowledgment to the iPAK - Read PIC2 SPI buffer around mainloop and forward to iPAQ • PIC2 - Interrupts when it receives data from PIC1 via SPI - Analyze data and send control packets to Amigobot via UART
The Amigobot Controls • The Amigobot has a Built-in AmigoOS that receives and transmits data packets - A series of initialization packets must be sent to the Amigobot to establish an active line of communication - Commands must be sent periodically to so that the WatchDog timer on the robot does not expire and thus disabling the motors
The Amigobot Controls • Sample Command: unsigned char TXcommand[] = {0xFA,0xFB,0x06,0x20,0x3B,0x05,0x05,0x25,0x40}; The Header The number of data bits + 2 The command issued Positive, signed or string The parameter associated with the command The checksum • Checksum calculation: CSUML = TXcommand[4] + TXcommand[6]; if(TXcommand[4] > CSUML){//check if carry bit CSUMH = 1 + TXcommand[3] + TXcommand[5]; }//endif else{ CSUMH = TXcommand[3] + TXcommand[5];}//endelse TXcommand[7] = CSUMH; TXcommand[8] = CSUML;
Encountered Problems • The Bluetooth Converter: - The RTS and CTS pins of its UART have to be grounded for it to be able to send - It has to be connected to the iPAQ before it is connected to the PIC - When the PIC is first turned on, if it is connected to the converter, its memory is erased • The circuitry had to be rebuild because the PICs were blown out. • One of the PICs had an earlier version of Quikbug that didn’t allow it to interact correctly with converter
Possible enhancement • With the full duplex communication all ready implemented, any device could be appended to the PICs and send data wirelessly to the iPAQ - Suggested devices: Camera, Heat sensors • Implement Bluetooth on other Amigobots and have them interact in order to accomplish an assigned task
Updated Gant Chart Added Remaining Accomplished