Skip to content

archanl/robotrike

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RoboTrike
---------

Archan Luhar
Caltech EE/CS 51
TA: Joe Greef


SYSTEM FUNCTIONAL SPECIFICATION

1.  Description

The RoboTrike consists of a three-wheeled robotic car controlled by an operator
via a remote keypad and a serial interface. There are two units, the control 
(remote) unit and the moving (motor) unit. The control unit sends commands to
the moving unit via a serial connection. The moving unit has three wheels and a
laser (led) mounted on a turret. The operator can control the speed and
direction of the RoboTrike as well as the toggle the laser.


2. Interface
    
    Serial Port

        Baud rate = 9600
        Parity bits = none
        Data bits = 8
        Stop bits = 1

        The RoboTrike uses a serial interface to communicate between the Remote
        and Motor units.


    16 Key Keypad Input on Remote Unit

         1    5    9   13
         2    6*  10   14
         3*   7*  11*  15*
         4    8*  12   16*

        Key  6 = Increase Speed
        Key  7 = Stop (set speed to 0)
        Key  8 = Decrease Speed

        Key  3 = Rotate Left
        Key 11 = Rotate Right

        Key 15 = Fire laser
        Key 16 = Turn off laser
        
        The keypad is the user interface for controlling the RoboTrike.
        Key debouncing and accelerating keyrepeat is implemented.

    Serial Output on Remote Unit

        The Remote Unit sends commands to the Motor Unit via the serial port.
        A command is a series of ASCII characters followed by the return
        carraige (ASCII code 13). See the Serial Input on the Motor Unit for
        command specifications.

        The following commands are sent when each key is pressed:
            Key 6 Increases speed by 1%: V655
            Key 7 Stops the Motor Unit:  S0
            Key 8 Decreases Speed by 1%: V-655
            Key 3 Rotates left by 5 degrees: D-5
            Key 11 Rotates right by 5 degrees: D5
            Key 15 Fires laser: F
            Key 16 Turns off laser: O

    Display Output on Remote Unit

        The Remote Unit has 8 14-segment LED displays. They are utilized to
        display information received from the Motor Unit. All 14 segments
        are utilized.

    Serial Input on Remote Unit

        Baud rate = 9600
        Parity bits = none
        Data bits = 8
        Stop bits = 1

        All serial characters received into a 20 character max buffer until a
        return carraige is received (ASCII code 13). Once a return carraige is
        received, the buffer is displayed onto the Remote Unit's 8 digit
        display. Since the display has a limitation of 8 digits, only the first
        8 digits are displayed. Future modifications such as display scrolling
        can be made if necessary.



    Parallel Output on the Motor Unit
        
        The Motor Unit is equipped with a parallel port whose lines power
        three motors and a laser (LED). The speed and direction of the Motor
        Unit is controlled via pulse width modulation of the lines powering
        the three motors. These three motors are a Holomonic system so the
        trike can be made to move in any 2 dimensional direction.

    Serial Input on Motor Unit

        The following commands are valid on the Remote Unit. Each character
        is an ASCII character (even the number digits). The command is
        terminated by the return carraige (ASCII code 13).

        Source: http://wolverine.caltech.edu/eecs51/homework/rcser.htm

        S#: Set Absolute Speed 
            The RoboTrike should be set to the absolute speed specified by the 
            parameter (#). This parameter is an unsigned integer value in
            appropriate units (the number should fit in 15-bits). The sign
            character (‘+’ only) is optional. An absolute speed of zero (0)
            halts the RoboTrike.

        V#: Set Relative Speed 
            The RoboTrike should be accelerated or decelerated by the relative
            speed specified by the parameter (#). This parameter is a signed
            16-bit integer value in the same units as the absolute speed. The
            sign character (‘+’ or ‘-’) is optional for positive values. A
            relative speed of 0 has no effect on the RoboTrike's speed. If after
            adding the specified relative speed, the resulting speed is
            negative, it should be truncated to zero (0) and the RoboTrike
            should be halted.

        D#: Set Direction
            The RoboTrike should move in the direction specified by the
            parameter (#) relative to the current direction of movement. This
            parameter is a signed 16-bit integer value in units of degrees. The
            sign character (‘+’ or ‘-’) is optional for positive values. A
            positive angle indicates a direction to the right (looking down on
            the RoboTrike), while a negative angle indicates a direction to the
            left. A direction of 180 (positive or negative) is backward
            movement.

        F: Fire Laser (Laser On)
            Indicates that the laser should be turned on.   F

        O: Laser Off
            Indicates that the laser should be turned off.  O


    Serial Output on Motor Unit
        
        After each of the above commands is processed, the Motor Unit sends
        a message via serial to the Remote Unit. Each message has a maximum of
        8 characters so as to fit in the 8 digit LED display of the Remote Unit.
        The purpose of this is to let the user and the Remote Unit know the
        exact status of the Motor Unit.

        This is prefereable to, for example, letting the Remote Unit just assume
        the speed has increased or decreased when the keys are pressed.


        Setting Speed (S or V): "SPEED#"
            # is a string representing the percentage of the total speed (0-100)

        Setting Direction (D): "DIREC#"
            # is the degree offset from the origin (0-360)

        Firing Laser (F): "LASERON"

        Turning Off Laser (O): "LASEROFF"

About

Assembly code for a three wheeled trike and a remote unit.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published