# Patent

## Title
Rental/car-share vehicle access and management system and method

## Abstract

An apparatus and operational method are disclosed that use a control module installed in a vehicle to enable a remote computing system to wirelessly communicate with the vehicle. The control module includes a processor configured to interface with a wireless network and the vehicle through, respectively, a wireless network interface and a vehicle interface. A plurality of CAN (control area network) bus transceivers may exist within the vehicle interface operable to allow the processor to interface with multiple vehicle types. The processor may then be configured to automatically detect an identifier for the vehicle though the vehicle interface and automatically select a CAN bus transceiver from the plurality of CAN bus transceivers based on the detected identifier. The processor can then communicate with the vehicle's CAN bus via the selected CAN bus transceiver.

## Background
CROSS-REFERENCE AND PRIORITY CLAIM TO RELATED APPLICATIONS
This patent application is a continuation of U.S. patent application Ser. No. 14/315,586, filed on Jun. 26, 2014, now U.S. Pat. No. 9,373,201, which is a continuation of U.S. patent application Ser. No. 13/830,754, filed Mar. 14, 2013, now U.S. Pat. No. 8,768,565, which claims priority to U.S. provisional patent application Ser. No. 61/650,483, filed May 23, 2012, the entire disclosures of each of which being incorporated herein by reference.


BACKGROUND
Technical Field
This invention relates generally to vehicle management systems and methods and, more particularly, to a Rental/CarShare (RCS) vehicle access and management system and method for use and installation.
Description of the Related Art
Currently, RCS companies utilize a vehicle management system that includes several hardware modules that are mounted in the RCS vehicle in order to manage a fleet of RCS vehicles. Such modules are usually connected by through the Internet to a remote server containing a vehicle database, a customer registration web based interface, and a billing system.
The RCS ideal business model requires its vehicles be in service for approximately 12 months. However, currently, the RCS vehicles are rolled over every 18 to 24 months due to the high labor cost of removing the hardware and re-installing it in a new vehicle, which typically costs about $85 to remove and $285 to re-install. Thus, the expense and time intensive installation and transfer process of vehicle management hardware is a significant burden on RCS companies. In addition, current hardware to support a management system may be expensive, due to sophisticated hardware and expensive RFID readers, and draw too much power.
SUMMARY
Some embodiments of methods and systems in this disclosure overcome the aforementioned problems and are distinguished over the prior art by, among other novel features, an RCS vehicle access and management system and method for use in the RCS industry that utilizes a controller area network (CAN) bus interface, QR and/or Bar code, RFID/NFC auto detect read/writer, GPS, automatic configuration, and a mobile app coupled with a wireless network that enables the RCS company to monitor and configure the vehicle.
These preferences also enable customers to bypass the reservation desk and pickup/drop off reserved and non-reserved RCS vehicles using a QR/Bar code, RFID card and/or NFC enabled mobile phone coupled with a mobile app. A single control module may include a host processing unit with a processor, an accelerometer, data storage, a GPS chipset with antenna; a PCB mounted wireless (cellular) modem and antenna, and CAN bus transceivers (controller area network) connected with the processor, and a USB programmable interface. The control module may plug into the OBD2 (on-board diagnostics) port of the RCS vehicle. In some embodiments, the RFID/NFC read/write module may be mounted in an accessible location within the driver's compartment. The onboard control module may be connected by a wireless portal to a remote server or servers. These servers may contain, among other functionality, a vehicle database, a customer mobile device interface, SMS gateway, email gateway, and a billing system. Customers and installers may access the system with a variety of methods, including QR code readers, RFID cards, or NFC enabled mobile communication devices. Smartphones, tablets, and/or laptops may interact with the RCS control module by downloading a mobile app configured for such interaction.
Another feature and advantage of some embodiments is that they provide a method of remotely identifying a specific customer and verifying a reservation or use of a specific RCS vehicle for a predetermined period of time.
Another feature and advantage of some embodiments is that they provide a method of remotely gathering vehicle data and searching the national vehicle recall database and displaying that specific vehicle's recall information (recall notice, repair status; repaired/not repaired) on a mobile device.
Another feature and advantage of some embodiments is that they provide a method of digitally controlling electromechanical functions (enable/disable starter, door lock/unlock, flash lights, open/close windows, open/close sunroof, sound horn, pop trunk, etc.) through the vehicle's CAN Bus network; reducing the installation time (direct OBD2 plug connection versus hardwiring each control wire to each electromechanical function within the vehicle. This reduces the installation time (cost) and increases reliability.
Another feature and advantage of some embodiments is that they provide a method of monitoring, storing and reporting vehicle diagnostics (MIL, airbag deployed, battery level, etc.), mileage, telltale, speed, location, route driven, geofence, hard/extreme braking and acceleration (onboard accelerometer) in relation to a specific customers use of a specific RCS vehicle.
Another feature and advantage of some embodiments is that they provide a method of dynamically pairing a customer's contact information (e.g., mobile phone number, email address, emergency contact information) to a specific rental/car-share (RCS) vehicle during their rental period and sending emergency alerts (e.g., email, SMS, voice call) to a specific customer's emergency contact list.
Another feature and advantage of some embodiments is that they provide a method of sending user specific emergency alerts (e.g., location, airbag deployed, collision or rollover, accelerometer, diagnostic freeze frame, speed, heading, extreme acceleration/braking for a predetermined period prior to the incident) to a third party emergency dispatch (e.g., 911 or bonded call center) and customers' emergency contacts.
Another feature and advantage of some embodiments is that they provide a method of gathering and updating and storing vehicle specific data (e.g., location, airbag deployed, collision or rollover, accelerometer, diagnostic freeze frame, speed, heading, extreme acceleration/braking) and onboard data (accelerometer) for a predetermined time period (for example: every 15 seconds). Upon a collision or roll over the logged data can be uploaded via a wireless network to a third party or recovered via hard wired connection in order to determine the cause and/or fault of the accident.
Another feature and advantage of some embodiments is that they provide a method of notifying the rental/car-share (RCS) companies of any critical diagnostics and/or mileage based maintenance alerts.
Another feature and advantage of some embodiments is that they provide a method of collecting and storing customer specific vehicle usage data (e.g., fuel level, start/end odometer reading, total miles, hours in use, max/average speed, idle time, start/stop dates and time, carbon foot print, driver rating, etc.) for purposes of billing (e.g., invoice based on hourly usage, mileage or flat day rate). Additional charges or discounts can be applied (e.g., User Based Insurance—UBI) for safe driving and safe driving areas (e.g., Location Based Insurance—LBI) if the vehicle is used in a high or low risk area.
Another feature and advantage of some embodiments is that they provide a method of automatically checking out and billing customers when a RCS vehicle is returned. The charge for the rental period can be dynamically generated based, for example, on time used (e.g., hours, days), miles traveled with additional charges for insurance (based on driver rating and location) and/or fuel (is the tank full; if not, additional charge for the difference—based on fuel tank level).
A further feature and advantage of some embodiments is that they provide a method of enabling the a RCS companies to remotely perform location based inventory utilizing a Graphic User Interface (GUI), wireless network and GPS; companies can perform a virtual roll call giving them count and location of all their vehicles and vehicle status (reserved, not reserved, in use, online, offline, miles to next service and DTC status).
A still further feature and advantage of some embodiments is that they provide a method of preloading the rental or fleet vehicle's onboard navigation system with the renter's trip destinations. During the reservation (web based or mobile app) process a renter can select their destinations (trip log) during the rental period; the trip log is stored in the customer's database. When the vehicle is checked out via the QR Code, RFID or NFC, the trip log is downloaded to the RCS control module which uploads the trip log to the onboard navigation system.
Neither this summary nor the following detailed description purports to define the scope of protection. The scope of protection is defined by the claims.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a view of the control module as exemplified in one embodiment.
FIG. 2 is a perspective view showing a control module being plugged into the onboard diagnostics module of a rental/car-share (RCS) vehicle.
FIG. 3 is a perspective view illustrating a rental/car-share (RCS) vehicle having decals with barcodes and/or QR codes.
FIG. 4 is a simplified flow diagram of a network illustrating the flow of data between the rental/car-share (RCS) vehicle and one or more servers.
FIG. 4A is a block diagram illustrating example remote servers and network used in management of control modules.
FIG. 5 is a series of exemplary graphic user interfaces, as used in one embodiment, that may be displayed by a mobile app for entering data during the unit commission, install, or reinstall process by an installer.
FIG. 5A is a series of exemplary graphic user interfaces, as used in one embodiment, that may be displayed by a mobile app for entering data during the unit commission, install, or reinstall process by an installer.
FIG. 5B is a flow chart diagram for an example embodiment illustrating a method of installing and associating a control module within an RCS vehicle.
FIG. 5C is a flow chart diagram illustrating example steps for one or more embodiments to auto-configure a control module.
FIG. 5D is a flow chart diagram illustrating example steps for one or more embodiments to auto-configure a control module.
FIG. 5E is a contact layout illustrating a sample embodiment's CAN bus PIN configuration.
FIG. 5F is a contact layout illustrating a sample embodiment's automatic CAN bus PIN configuration.
FIG. 6 is an example embodiment's series of displays and menus that are shown on a mobile device by a mobile app for allowing a customer to enter data during a vehicle pick up process.
FIG. 7A-B is an example embodiment's series of displays and menus that are shown on a mobile device by a mobile app for allowing a customer to reserve a vehicle.
FIG. 8 is an example embodiment's series of displays and menus that are shown on a mobile device by a mobile app for allowing a customer to enter data during a vehicle drop off process.
FIG. 9 is an example flow diagram illustrating the steps of accessing an example reserved rental/car-share (RCS) vehicle.
FIG. 10 is an example flow diagram illustrating one embodiment's method for detection and location of gas availability.
FIG. 11 is a block diagram illustrating computer system configurations for various embodiments.



DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS
Overview
This disclosure illustrates a rental/car-share (RCS) vehicle control module, and other related embodiments. The RCS vehicle control module may be installed in a rental car or carshare vehicle. The RCS vehicle control module may interact with a mobile application, or multiple mobile applications, in order to provide rental and installation services. For example, disclosed herein, in one embodiment, a mobile application may interact with the control module via one or more wireless networks and/or the Internet in order to unlock the doors, install and associate a vehicle control module within a vehicle, make a reservation, access a car with a reservation, and uninstall or transfer a vehicle control module. In some embodiments, the vehicle control module may send information to a mobile application, or other output device, about a detected location for a “last chance” to stop for gas (or other service) prior to arriving at a location. In some embodiments, the disclosure herein describes a method for installing a vehicle control module. In some embodiments, the vehicle control module may automatically configure itself to interact with its connected vehicle such as to unlock its doors or roll down a window. In some embodiments, the vehicle control module may automatically configure itself to appropriately select the correct CAN bus network in a vehicle in order to accomplish desired functionality.
The terms rental car share (RCS) and RCS vehicle are broad terms that include their ordinary and plain meanings, including, but not limited to, vehicles rented and leased by traditional car rental services such as Budget, Enterprise, Hertz, etc., and are returned to locations usually run by these services. The terms also include vehicles that may be a part of a car share business model, (e.g. ZipCar, etc) where customers may rent cars on the fly throughout a city or location using a member identification system, and need not return the vehicle to a rental service.
Vehicle Control Module
Referring now to FIGS. 1, 2, and 3, some embodiments may comprise a hardware module or control module (e.g. vehicle control module 104). The vehicle control module may comprise one or more processors (including, but not limited to, special purpose processors or general processors) that control the vehicle control module. For example, vehicle control module may include one or more processors, and one or more storage devices. The processor(s) may allow the execution of executable computer code capable of instructing the processor to control various aspects of the control module and its related peripherals. It also may allow the execution of computer code configured to interact with other devices in a vehicle, or on the Internet (such as a user with a mobile device, or a server(s) on the Internet). The vehicle module may also comprise one or more storage devices, such as a magnetic disk, memory, cache, or any combination of storage devices. These storage devices may store instructions and/or data required for the operation of the vehicle control module.
A vehicle control module may have a variety of connectors to other related devices and peripherals (in some embodiments, these can be considered part of the vehicle control module). For example, the vehicle control module may connect to an on-board diagnostic unit (e.g. OBD2 port 105), a vehicle starter 107, a door lock/unlock harness 109, an external CAN bus harness 102, and an RFID/NFC communications device 104, among others. Not all of these connections need be used. For example, in some embodiments, the door lock/unlock harness 109 need not be connected to enable functionality to lock and unlock the doors. Instead, in these embodiments, the doors may be unlocked via the connection to the CAN buss 102 by using specialized command codes.
This method of locking and unlocking the doors saves the installer valuable time. It is often difficult to run wires to all of the door locks which are difficult to access in the car. Instead, it is easier to access the CAN bus network to interact with the door locks. In addition, other CAN bus operable devices may be accessed through the same CAN bus interface. The CAN bus may also provide other functionality, such as enable/disable starter, door lock/unlock, flash lights, open/close windows, open/close sunroof, sound horn, pop trunk, etc.
The on-board diagnostic unit may be plugged into the OBD port connection. In some embodiments, this may be an OBD2 connection. As seen in FIG. 2, the RCS vehicle control module (herein known as the “control module”) may be plugged into the OBD port 202 of the car. The OBD port may be used to query a wide range of information from the vehicle, including, but not limited to, vehicle information, such as a Vehicle Identification Number (VIN), Calibration Identification, Calibration Verification Number, Electronic Control Unit or Module (ECU and ECM) firmware version. It can also query engine performance measures, such as catalyst counters, the primary oxygen sensor, the evaporating system, EGR system, WT system, secondary air system, secondary oxygen sensor. Other queryable information include vehicle speed, RPMs, odometer, and current fuel level, among others. The OBD port may be connected to other devices that may provide functionality such as enable/disabling the starter, door lock/unlock, flash lights, open/close windows, open/close sunroof, sound horn, pop trunk, etc.
The control module may also be connected to or comprise a GPS antenna 104 and GPS tracking sub-system (internal or external to the control module). Such a subsystem may be configurable to track, using longitude and latitude, the current location of the control module and attached vehicle. This information may be queried from the GPS subsystem and accessed by the control module.
The control module may also comprise, or be connected to, an RFID and/or NFC communications device. RFID (radio-frequency identification) and NFC (near field communication) are methods of querying information from, and communicating with a radio identification device within a set proximity. While RFID usually operates in one direction, NFC is typically used by smartphones for two way RFID type communication. By connecting to an RFID or NFC communications device, the control module may communicate via RFID or NFC to query identification (or other) information from an installer, care renter, or their devices/smartphones. For example, an installer may use their smartphone to query from the control module a vehicle identifier, or send a user identifier to the control module (other information is also contemplated for communication, other than identifiers).
As describe above, the control module may be associated with one or more identifiers. These identifiers, in addition or separate from being queryable from the control module through RFID, NFC, or wireless networking, may also be available for scan via a bar code or QR code (or any visual representation of the identifier). For example, in FIG. 3, a car with an installed control module appears with a QR code or bar code in the window associated with the CAR and/or control module, or both (it is well known in the art that a bar code or QR code can contain multiple identifiers). This would allow a smartphone application (such as one that is programmed to interact with the phones camera to scan bar codes or QR codes), or any QR or barcode reader to scan the codes and receive the corresponding information, such as control module or vehicle identifiers. This may enable a mobile app with wireless networking capability use the vehicle or control module identifiers in an installation process, or for a customer to bypass the reservation desk and pickup and drop off reserved RCS vehicles.
In some embodiments, the QR code on the window decal replaces a required RFID reader. This feature significantly reduces hardware and installation costs (by eliminating the expensive RFID and/or NFC hardware) and may maintain security by placing the customer at the vehicle.
In some embodiments, no QR code or RFID/NFC communication is needed. Instead, (and this applies throughout the specification when discussing scanning a QR code for a car), in some embodiments, an installer or customer could photograph the car's license plate or VIN label via the mobile device (e.g. one with a camera). This photo could then be analyzed by the mobile device or the remote servers to extract the VIN or license plate number, the result being input of the vehicle's identifier.
The control module may also include, or be connected to, one or more accelerometers. Accelerometers can be used to measure vehicle acceleration and deceleration. They allow for evaluation of overall vehicle performance and response. This information can then be used to make adjustments to various vehicle subsystems as needed. They can also be used for modeling and detecting events. For example, given a certain abnormal deceleration detected, the control module may determine that the accelerometer detected a vehicle accident. This can be recorded in the control module and/or reported to the driver, the installer, the rental fleet, and/or communicated to a remote server on the Internet. Other events that can be tracked via the accelerometer may include, but are not limited to, unsafe driving habits, vehicle speed, rollover or tilt (e.g. to detect towing) etc. The control module may either calculate these types of events themselves using accelerometer data, or, in the case of more sophisticated accelerometers, be informed of (or have access to) the detected events by the accelerometer.
The control module may also include, or be connected to, wireless networking devices. For example, a PCB mounted wireless (cellular) modem with internal antenna (or any type of wireless networking, such as satellite, Wi-Fi, or ad hoc networking) may provide communication with the Internet. For example, the control module may be able to, via the wireless networking device, communicate over a cellular network that connects to the Internet. FIG. 4 describes one example of the communication that is possible using the wireless capabilities of the control module. For example, the onboard control module is connected by a wireless portal to one or more remote server(s) containing a vehicle database, a customer registration mobile device interface, and/or a billing system, among any other features that may be used to manage rental or carshare vehicles. Customers and installers can access the system with a camera equipped mobile communication device such as a mobile phone, tablet or laptop by downloading a mobile app.
Turning to FIG. 4A, which depicts an example layout of remote computing services for use with the control module, the remote servers may comprise a number of remote computing devices, including load balancers 451, application servers 452, web servers 453, and databases 454. These remote servers may be connected using VPN connections 460 to one or more wireless carriers 461 These can be implemented using dedicated or cloud based servers. A GUI interface to the remote servers may allow an administrator (472, 473) to manage the clients, devices, and control modules via an application, website, or mobile application. In some cases, the remote servers may be known as an RCS gateway. Other configuration of providing remote server services are also contemplated.
In the example depicted in FIG. 4 renter may be trying to access a rental car. The user's mobile device 162 may be running an application that is capable of reading a QR code on the car that corresponds to the vehicle's identification number (the VIN, or any other number) or corresponds to the control module's identification number. The mobile device 162 or application running on the mobile device, or the customer, may have its own identifier. In this example, the vehicle identifier and a customer identifier may be sent to a remote server via a cellular network and/or the Internet. The remote server may verify that the customer identifier sent is a registered customer with the rental or carshare service, and that customer is allowed to access the identified car. If verification is successful, the remote server may send a command 404 to the control module in the car 303 via the Internet. The control module may receive the command via the Internet over its cellular connection, and unlock the doors, giving car access to the user. The control module's wireless connection security (e.g. the commands sent to the control module, etc.) may be protected using host and network security mechanisms known in the art, such as Authentication, Authorization, and Accounting schemes, including PKI, identifiers/passwords, access control lists, etc.
The remote servers in FIG. 4 that the control module may communicate with may be called remote computing servers, remote computing services, remote servers, remote services, etc. They may be managed by the rental car share company, the manager or manufacturer of the control modules, or a third party. They may be hosted by a third party hosting service in a location unaffiliated with the rental/car share company of control module manufacturer. Their role is to provide a central repository of vehicle control, and an associated database. For example, programs and data in the servers may allow a user with a mobile device to communicate directly with a control module, even if no RFID, NFC, or any local communication between the control module and the mobile device is established. This may allow for all remote capabilities to be accessed either by a user of the car via their smartphones, or by a remote user (such as an operator assisting a customer with a car). For example, an operator can unlock the car doors for a customer if they have lost their smartphone.
The servers also keep a number of tables and or associations may between the cars, control modules, installers, customers, and others as required by an RCS system. These associations assist with billing and authorization/control of car functionality. For example, there may exist an association within the server (e.g. in a database table) between a vehicle's VIN number and the control module. This assigns the vehicle to the control module, and the control module to the vehicle. Thus, when the control module is sent a command, an embodiment of the invention will know exactly which vehicle is being controlled. When a control module is first installed in a vehicle, this association may be created. When a control module is transferred to another vehicle, this vehicle may be updated to correctly associate the control module to the new vehicle.
There may also exist an association between a user and a control module, or a user and a vehicle (or both). Either association allows for an association to be made between all three using the VIN/control module association described above. This may be created when a user rents a vehicle, or makes a reservation. This allows the allocations of users to vehicles and/or control modules. There may also exist an association between an installer or owner of the RCS fleet, and the control module or vehicle. Again, this allows a program (such as a web program accessible through a GUI) to determine the exact vehicles in the installers/owners fleet, and the exact control modules belonging or associated with the installer/owner. This also allows for permissions to be verified when an installer is creating an association between a vehicle and a control module, because ownership of both the control module and the vehicle may be verified prior to making the VIN/control module association.
These, and many other associations also enable billing to take place. The billing software that uses data stored in the remote servers may use the associations to charge customers or installers/owners, etc. based on the number of control modules they use or are associated with, or the number of vehicles they have rented, or how long those vehicles have been rented, etc.
In addition to these associations, any information accessible by the control module may also be uploaded to these servers for access by an installer, owner, or user (or any manager of the control modules). This data may include, for example, accelerometer information or its results (such as whether there was safe driving or not, or whether an accident occurred, its time/date, etc.), QR Code/RFID/NFC access or communication, starts or stops of the vehicle, its GPS location, door lock or unlock events, etc. Any data accessible by the control module is contemplated.
Installation/Mobile Installation Application
Current methods of installation may be too labor and time intensive (e.g. 1.5 to 2 hours to install). For example, previous systems for unlocking the doors in RCS vehicles require running hardwires to the door lock and unlock motor. Furthermore, previous systems required calibrating a system to current mileage and fuel levels. For example, to calibrate the fuel level (voltage input from fuel gauge) the installer had to 1) turn on the engine with an empty fuel tank to sample the voltage output from the fuel sensor and 2) fill up the gas tank to sample the voltage output when full. After fuel calibration, the installer calibrated the mileage using the Vehicle Speed Sense (VSS) output. This requires the installer to drive the vehicle 2 to 3 times for over a mile each time. The installer then compared the miles driven (vehicle trip log) with the reported mileage from the device. If they were within 1% each trip, the device passes. If not, the device is calibrated and the process is repeated.
In addition, the installer may have to configure a long test and registration process. After hardware install, the installer will call a remote technician and give them the serial number of a RCS system to be tested. The technician will run several tests (to verify connectivity to the network, GPS and send forward commands to the device) to verify the device is installed and functioning. Alternatively, the installer may register the device through a website on a laptop or other desktop and perform similar tests. This may add up to 15 minutes per vehicle, and add considerable cost to a vehicle each time a device is moved from one car to another.
The systems and methods described herein reduce this install time and cost by eliminating the need to calibrate, and streamlining the testing and registrations process (with a possible savings of 50% time). For example, the device does not require calibration because fuel information and mileage information may be requested from a diagnostic unit using the OBD2 port (e.g. a CAN Bus). In some alternative embodiments useful for certain year, makes and models, the control module may request from the odometer a reading over the CAN bus to calculate miles drive.
Prior to installation, but before registration, an installer may use a mobile application (or in a separate mobile application, or web application) to interact with the control module based on scanning the control module for an ID. This ID may then be sent to the remote servers so that the remote servers can issue commands to the control module over the wireless network. The installer may select “test” in the mobile application. The installer application may then test the control module over a variety of criteria, including whether the control module knows its serial number, whether the VIN has been automatically detected correctly, whether the VIN and serial numbers for the control module are correctly paired, whether the vehicle's command codes or executable instructions have been found or downloaded (e.g. Learn Mode Successful). It may also test and display results for GPS signal strength, current address, cellular signal strength, battery voltage, etc. Each of these categories may have a pass or fail display associated with them that indicates whether the vehicle has passed or failed testing. If the vehicle did fail some tests, trouble shooting tips associated with the failed tests may be displayed in the mobile application. If successful, the vehicle may then be registered as described below.
In one embodiment, the registration process may also be improved. A mobile application may be used to accomplish increased registration efficiency. The following is a brief overview of the mobile application's interaction with the control module in order to install or transfer a control module. The mobile application may be installed on a smartphone, for example, through download of Apple's iTunes service, or any other content distribution mechanism for the mobile device. The installer, after connecting the control module physically with the OBD2 port (and possibly other inputs depending on the embodiment) may use the mobile application to initiate an association of the control module. For example, FIGS. 5 and 5A is a series of displays and menus that are shown on the mobile device by the mobile app for entering data during the unit commission (install, FIG. 5A) or transfer (uninstall/reinstall, FIG. 5) process by an installer. The displays are only representative, and may be designed in any manner to carry out the functionality described by the figures and in this specification.
Prior to installation of the control module, the control module may be scanned by an installer after it is pulled from inventory. The module, based on the scan, may be assigned by an operator of the remote server or through the mobile app. In any event, this association between the installer and control module is then stored within the remote servers. In addition, the device may be removed from any “unpaid” or “unassociated” inventory in the remote servers' database. At this point, the device may be picked up or shipped to the installer. In addition, the unit ID may then be sent to the installer's mobile app, so that the mobile app knows which control modules have been assigned to the installer.
Other “inventory” management functionality is also supported through the combination of an installer's mobile app and the remote servers. For example, a control module may be removed from a vehicle for a variety of reasons (e.g. move to another vehicle, returned to inventory, or returned for warranty/repair). To move the device between vehicles, a QR code or bar code may be scanned to get the serial number of the control module. Then, an option to “transfer” or “port” the device may be selected. This will send to the remote servers a command to a listing of control modules available in inventory. This may then be uploaded to the remote servers where it too may mark the device as available/in inventory to be associated with another vehicle. This may cause the control module to be unpaired with any vehicle, and the association between it and any vehicle in the remote servers database (or the installer app) may be removed. The installer may then continue with installation/transfer of the device to the new vehicle. When moved to inventory, a similar process occurs. The control module is unpaired with the vehicle and moved into an available inventory status. For warranty, a similar process occurs, except the control module may be remove from inventory and unassociated with a vehicle.
In some embodiments, when a device is unassociated with a vehicle, the remote servers may alter a billing system so that the rental car company is no longer charged for service on, or rental of, the unused control module until it is later installed in a vehicle. For example, some rental car companies have over a million vehicles, many of which are in a state of transition. Thus, it is contemplated that costs may be reduced for rental car companies if they do not have to pay a monthly wireless service charge (or other charge) for unused control modules.
After installation of the control module, upon power up, the control module will query the vehicle ECU (electronic control unit) via the OBD2 port in order to obtain the Vehicle Identification Number (VIN). The VIN is transmitted to the server. The installer may then launch the mobile application, and select to “install” or “transfer” the control module (501, 506). The mobile app may then present, to the installer, the opportunity to scan (507, 508, 502, 503) the control module barcode and the vehicle QR code in order to pair the control module to the QR code (alternative embodiments may use other identifiers to transfer an identification, such as an RFID, or a visible set of numbers and letters, such as a VIN, that one can input into a mobile device). The two codes may then be sent by the smart phone to the cloud servers via the smart phone's network to confirm association of the control module with the vehicles VIN (which enables association with an installer, a consumer, etc that tracks vehicles) (e.g processing 504, 509). More detail on the method of querying for the VIN is described herein.
FIG. 5B illustrates a flow chart diagram corresponding to one method for installing a control module in a vehicle. The method may start with a control module being allocated to a specific installer in the remote servers (511). After the control module is delivered to the installer, or is somehow put into the possession of the installer, the installer may actually place the control module within the car. This usually involves mounting the control module within the car. The control module is then connected to various parts of the car, including connecting the OBD port of the control module to a diagnostics unit 512. The control module may then also be connected to one or more CAN busses 513 (e.g. so as to access a body control module (BCM) that may control various functionality of a vehicle's body). Connecting the control module to a CAN bus may enable the control module to execute a variety of commands for the car, including unlocking the doors or a trunk, controlling lights, chairs, windows, headlights, etc. In some embodiments, the installer may mount a QR code for the vehicle on a window or in any other accessible area 514. At this point the installer may use the mobile app described above and scan the QR or bar codes related to the vehicle and the mobile computing device (514 and 515), or any other method for gathering the identifiers and sending the identifiers to the remote servers for association. For example, in one embodiment, the control module itself may, upon startup of the car, determine the VIN of the car and send the VIN and its own identifier to the remote service via a connected wireless network and/or the Internet. After installation, the control module may be tested 599 (described above), and associated with the vehicle 517 (described above).
In some embodiments, other installation procedures may include mounting an RFID or NFC reader on the car, such as a dashboard, and running a connecting wire to the control module. The installation process may also include connecting the control module to the vehicle's starter, or directly to the vehicle doors (only used if cannot be controlled through external CAN bus). They also may include mounting a cellular and/or GPS antenna on the dashboard and running a similar wire. In some embodiments, a LED status indicator on the control module housing may indicate whether the control module is receiving a signal from either the GPS or cellular (or other wireless) network once turned on.
Once installed and associated with a car, any program or device (such as a mobile device running a mobile application) may be able to communicate with and control the vehicle through the remote service. For example, in one embodiment, the remote system may communicate over the Internet with a mobile application that can control the car's functionality after authentication and authorization of the user (such as through a login, where the user is authorized to control the car (e.g. they rented the car), or if the car can tell that the user is in close proximity (e.g. the control module has detected the user, either through a QR/Bar code scan, RFID communication, NFC, or ad hoc wireless networking). At this point, the user may control a variety of functions, depending on its access control, including the list of the following commands: locating the vehicle, such as by sending GPS information back to the user, tracking the vehicle via frequent updates of GPS information, locking or unlocking the doors, unlocking doors for an approved valet, updating a list of RFIDs that are able to access the car (such as approved user RFIDs (e.g. a member of a car share organization), RFIDs associated with maintenance personnel, or a valet), or set settings in the control module, such as for the accelerometer, or to configure whether the control module is tracking mileage.
The control module may also send a variety of data to the user, including car diagnostics, data about a high or low impact crash from the accelerometer, a trip log, including start/end locations, date/time, miles driven, duration of trip, max speed, average speed, max acceleration, fuel level, etc. Other data may include whether extreme acceleration or braking occurred, whether the engine was ever turned on without proper access (unauthorized user), the maximum speed, whether the vehicle has left a certain geographical area, critical diagnostic information (Diagnostic Trouble Code (DTC)) such as whether the car has a low battery or engine coolant, etc., whether the car has been towed or tampered with, and whether maintenance has been performed.
Auto Configuration
As described above, in some embodiments, vehicle manufacturers broadcast digital commands over a vehicles CAN Bus network to control electro-mechanical functions within a vehicle (example: door lock/unlock, arm/disarm OE alarm, trunk release, lights, horn, etc.). The digital commands are unique to each year, make and model; therefore, to control functions within a vehicle the device must be able to determine the vehicles identity in order to load the right command codes.
In some embodiments, a manual process may be used to configure the control module. A person or external computer may determine the vehicles year make and model, and then connect a control module to a PC via USB, log into a web site on the PC, select the year, make and model, and flash the control module with the selected vehicles codes. Or, in the alternative, the control module may monitor the CAN Bus and determine the vehicle based on the transmission protocol.
Advantageously, this configuration may also be performed automatically by the control module. The control module is capable of storing a set of executable instructions or command codes to use to operate the car in its memory or permanent storage. These command codes or executable instructions may be organized in storage and mapped according to their functionality. For example, a table or mapping may exist that cross references a key for the “unlock doors” command with either the storage location for the command code/executable instruction, or the codes/instructions themselves.
FIG. 5C discloses a method the control module may be automatically configured to perform in order to determine, store, and access specific instructions for a specific vehicle. This method may be performed, for example, on power up (12V supplied to device, e.g., the control module is plugged into OBD or vehicle batter connected). This may be performed after every power up, after the power up when newly associated with a new vehicle, or if specifically set into “Learn Mode” (e.g. by suppressing an outside button on the control module to reset and relearn its settings, FIG. 1, 125).
In block 525, the device is powered up, or set into reset mode, which may begin the automatic configuration process for learning/looking up the command codes or executable instructions to operate the vehicle.
In block 526, in some embodiments, the control module will detect whether or not the ignition has been turned on or the engine has been started. These may be detected by sensing the starter/ignition interrupt harness, or by querying information via the OBD2 port, among other methods. If one or both of these requirements have been met (depending on the embodiment), then the control module may continue on to block 527. However, if the required signal is not detected, then the process may stall until the signal is detected.
In block 527, the control module will request and receive the VIN. This is usually performed by querying the Electronic Control Unit/Module (ECU) through the OBD2 port. Once the VIN is received, the received VIN may be compared to a previously stored VIN in block 528. The previously stored VIN may have been received from a prior startup or learning mode operation, for example from the same vehicle or a vehicle that the control module was previously installed in. If the vehicle is the same, and the VINs match, then there is no need to do any auto configuration, and the process may end 536. If the VINs do not match (or if there was no previously stored VIN because this is a new install), then the control module has been placed in a new vehicle and needs to perform autoconfiguration to determine the appropriate codes to use to automate the vehicle.
In block 529, the new VIN may be saved in memory. This may, in some embodiments, overwrite the old stored VIN, or may be stored in a new memory location, thus allowing for the control module to record a history of VINs that the control module has been associated with.
Block 530 is meant to represent two alternative embodiments. In one embodiment, a superset of command codes may be stored within the control module in a data store (i.e. magnetic disk, memory, etc). In other embodiments, the appropriate command codes may be retrieved over the wireless network via download, and stored in the control module for future use.
In block 531, if the command codes are stored locally, then the VIN may be analyzed in order to decode the year, make and model of the vehicle. The Vehicle Identification Number (VIN) is 17 digit number encoded with the vehicles year, make and model and can be obtain/requested electronically when connected to the CAN Bus. Code of Federal Regulations contains information on how to decode the VIN. For example, the 1st character may determine where the vehicle was manufactured/assembled. The second two characters of the VIN may determine the manufacturer. The 4th-8th characters may determine the brand, engine, size, and type of vehicle. The 9th character may identify the VIN as being authorized by the manufacturer. The 10th character may provide the model year of the car. The 11th character may indicate which plant assembled the vehicle, and the final 6 characters may contain the serial number of the vehicle. By using this information, in association with a table stored in the control module's data store mapping the various codes contained within the VIN, the make, model, and year may be determined. Once the year, make and model (YMM) is known, the appropriate YMM may be cross referenced with stored command codes or executable instructions for that specific YMM 532. These codes may then be referenced in the appropriate memory location (e.g. as the command table described above for operating the car) for future use on the CAN bus for automated car commands, and the “learn mode” or autoconfiguration may end 536.
In the alternative, (or in the case that the codes for the YMM are not found already stored within the control module 537), the VIN may be instead sent via the wireless network connection to the remote computing system. The remote computing system 534 may then determine the correct codes to use, and transmit them to the control module over the wireless network/Internet. The codes (e.g command codes or executable instructions) may be received 535 by the control module and stored in an appropriate table for use to operate the CAN bus and enable car commands.
FIG. 5D is a flow chart illustrating how the embodiment that downloads the codes may function. As explained previously, the control module may power up or enter learning mode 517. The control module may then query the ECU via the OBD2 port for the vehicle's VIN 518. The control module then uploads (via the wireless network/Internet) the VIN to the remote servers, and optionally, a self identification code for the control module 519 (or optionally any other useful information for the remote servers to use as authentication/authorization, to verify the pairing between the VIN and the control module).
In block 520, the remote servers may update the VIN if necessary in their database. This may occur if, in some embodiments, the remote servers will update the vehicle associated with the control module based on a new VIN reported by the control module. This may allow a skip of using a mobile application for assigning control modules to vehicles.
In block 521, the remote server may decode the VIN and lookup in its database the correct command codes and/or executable instructions to send to the control module. In 522, the remote server uploads this information to the control module. The control module may then download and store the codes/instructions for lookup, access, and use when executing certain features, such as unlocking the doors, etc.
In some embodiments, autoconfiguration may also involve configuring hardware for communication with a specific CAN bus networks. Different makes (and models) of automobiles utilize different communication buses to achieve similar functions (e.g. unlocking doors, rolling down windows, unlocking the trunk, etc.). This may provide a challenge when designing universal product that is intended to work across all makes and models. This situation actually applies to multiple communication protocols within the vehicle—for example, there are single wire & two wire CAN protocols for vehicle. In the examples presented, the focus is on 2-wire CAN buses, however, the same strategy applies to single wire CAN bus and can be extended to other communication protocols as well.
In some embodiments, installers may require knowledge (available via the install manual or online vehicle lookup or other) of the vehicle and must configure the control module manually to use the appropriate communication bus. This method can be cumbersome and subject to human error. A common implementation is to utilize a dipswitch, which must be set according to the specific vehicle requirements based on the vehicle's type of CAN bus. For example, in some embodiments, the control module may require transmission on at least two CAN bus networks, one for the ECU and another for the Body Control Module (BCM). For the ECU, the OBD2 harness may be used for transmission. For the BCM, the external CAN Bus harness may be used for transmission. However, the installer must configure the DIP switch to isolate the proper communication wires to communicate correctly on the BCM connected CAN bus network.
FIG. 5E shows a typical implementation. In this figure, component 561 represents the multiple buses—this is an abstraction, as they are not necessarily available on the same connector. Component 562 is a dipswitch that can be configured according to connected vehicle's requirements. One example setting would be having the switch for OBD pins 14 & 6 active (ON), while having the other switches inactive (OFF). In this scenario, only 1 bus may be active at a time to avoid joining multiple buses on the vehicles (which are intended to be separate). The control module in this scenario is not aware of which bus it is connected to.
FIG. 5F shows one example embodiment of an improved solution that can be auto-configured without the need for DIP switches. A control module would retrieve the vehicle's VIN and utilize this to determine the appropriate communication configuration. The appropriate vehicle configuration can either be stored locally within the control module or be retrieved remotely via various wireless options, such as the described cellular network and Internet connection. Once the configuration is known, the microcontroller would activate the appropriate channel (via channel select pins 575) via a digital multiplexer 576 to enable the appropriate CAN transceiver (transceivers 577, 578, 579 that can be enabled/disabled by the 1 to 3 MUX 576). Thus, this method eliminates the need for the installer to manually configure the module's communication setup (requiring costly time and labor on the part of the installer). This also eliminates the risk of inadvertently joining multiple buses on the vehicle because in this case there can be no common connection point scenarios, which eliminates the chance of joining buses. The 1 to 3 multiplexer 576 routes the digital CAN communications to a single channel that is set via the channel select lines, which are controlled by the control module. Multiplexer 576, such as digital multiplexers, to implement this invention are readily available. In some implementations, the MUX can sit on the vehicle side of the CAN transceiver. This would reduce the number of CAN transceivers from 3 to 1. The vehicle side of the CAN transceiver has unique electrical requirements so common readily available multiplexers would be difficult to use.
Customer Mobile Applications
FIG. 6 is a series of displays and menus that are shown on the mobile device by a mobile app used by members or customers for a rental service or a car share service. The mobile application may allow a customer to enter data during the vehicle pick up process in order to speed up the process. For example, a customer may select “pickup” from a list of menu options in the mobile application running on their mobile, wirelessly connected device 601, 602. The mobile application may then query the user to scan a QR code, bar code or other identifier associated with the vehicle to be picked up. Using the camera of the mobile communication device, such as a mobile phone, the customer scans the barcode or QR code on the window decal 603. The QR code is usually placed on the rental vehicle, as described above. This will allow the mobile application to determine the correct identifier associated with the vehicle. Other methods of input for this identifier are also contemplated for this procedure, including, but not limited to NFC communication with the control module to transfer the identifier, or texting a specific phone number associated with the car or rental service (the appropriate car may be unlocked via the rental service knowing which car was reserved for the user associated with a mobile phone). After the vehicle's identifier has been determined, the mobile application may transmit a reservation request and the identifier to the remote servers to verify the person has reserved that vehicle 604. If the remote servers verify the reservation, a confirmation may appear on the mobile device 605, and the remote servers may command the car, via communication with the control module over a wireless network, to unlock the doors. The control module may then consult the stored command(s) associated with unlocking the cars (as determined based on autoconfiguration for example), and send those commands to the CAN bus to unlock the doors. The user may then enter the car, and use the keys found within to drive the vehicle. The control module may then begin to monitor driver behavior using the accelerometer and other information queried via the OBD2 port or CAN bus, as described above (such as driver habits, going past a geofence (if a vehicle departs a preset area, and alert is sent to the installer, remote servers/admins, or the user), diagnostic trouble codes (DTCs), or collisions.
In another embodiment, the control module may have an RFID reader that can detect a mobile device and send the mobile device's ID to the remote servers (which can then in turn, send the vehicle's ID to the mobile device, or immediately confirm the reservation and unlock the doors).
FIG. 7 is a series of example displays and menus that may be shown on the mobile device by a mobile app used by customers to enter data during a non-reservation vehicle pick up process. The user may select that he is picking up a car, or that he wishes to reserve a car (701, 702). Using the camera of the mobile communication device, such as a mobile phone, the customer scans the barcode or QR code on the window decal to download the vehicle information 703. The rental fee and vehicle specific information may then be displayed for the consumer 704. This information may have been embedded in the QR code, or may have been received from the remote servers (e.g. the QR code may have contained a vehicle ID, which may then be sent to the remote servers, which respond with information about the vehicle, and may put a temporary reservation on the vehicle until the transaction either succeeds, or is cancelled/times out). The customer may then select or customize certain reservation criteria, such as the length of time to rent/use the car 705, accept terms and conditions required by the rental or car share service to use the car 706, be offered insurance 707 with its own terms and conditions 708, etc. This information may then be sent to the remote servers to either confirm or reject the reservation based on this information. To perform this operation, the remote servers may consult with a third party, such as a rental or car share server, to transact the reservation. If the reservation is available, and payment succeeds (e.g. a credit card either type into the app or associated with the customer is verified), then the reservation may be confirmed. The confirmation may be transferred to the mobile device, and may also be sent via text or email to the customer email account. At this point, as with a normal reservation, the doors may be unlocked remotely by commands sent by the remote servers.
FIG. 8 is a series of example displays and menus that are shown on a mobile device by a mobile app for allowing a customer to enter data during the vehicle drop off process. When checking out (801, 802), the customer may scans the barcode or QR code on the window decal 803 (or use any other identification mechanism to input an identifier). The vehicle data and the personal and vehicle specific data is sent to the remote servers via the wireless network. The servers verify the fuel level (and if not full, charges accordingly), and process the charges on the credit card of the customer's account 804. The mobile app displays a confirmation message and sends a receipt to the email address on the customer's account or via SMS text.
In some embodiments, the user may receive an access code for frequent access to a vehicle during a reservation. A customer may start the mobile app, which includes a QR Code scanner and will scan the QR code associated with the vehicle from the sticker visible from outside of the car 1001. (Any other input method may be used, including NFC communication, or taking a digital photograph of the car's license plate or VIN and converting that to an identifier, or sending the photograph to the remote servers to be converted).
The scanned QR code, or other input may then be decoded to determine the vehicle's identifier. This identifier, along with an identifier of the customer may be uploaded to the remote servers via the mobile device's wireless network connection for verification 1002. The customer identifier may include a phone number/ESN (electronic serial number) and mobile account information, or other identifier. These identifier may be encrypted.
The remote servers may then test to determine whether that customer is in its database based on the identifier provided 1003. If so, and that customer is a valid customer 1003 (e.g. subscribed, up to date on payments, such checks may require communication with the RCS provider), then the remote server continues on to check for a reservation 1005. If the customer isn't valid, then the customer may receive via the mobile app an indication that they are not a valid customer 1004 (e.g. the remote server sent back an error message).
If the remote servers' database contains a valid reservation for the identified car for the identifier customer at or near the time period the request is made, then the reservation may be considered valid. If not valid, then the remote system may determine if the vehicle is not reserved 1006 and allow for an immediate reservation to be made 1009. If the vehicle cannot be reserved, the remote system may determine if any nearby vehicles may be reserved, and if so, transfer that information back to the mobile device, including the location of the proposed vehicles 1008. If no vehicles are nearby that can be reserved, an error message is transmitted back to the mobile application 1004. Assuming the inquired vehicle, or nearby vehicles, can be reserved, the remote servers may initiate the reservation process via the mobile application 1009. An example of such a reservation is disclosed herein under the discussion of FIG. 7.
Once the customer has reserved the vehicle a temporary access code may be generated by the remote server 1011. The access code may be sent to the mobile application for storage, along with all relevant reservation data 1012 (i.e. length of reservation, dates, times, destination, starting places, prices for all services, services included, etc.) The access code may now be used by the customer to begin using the car. This may be done in multiple ways. First, the access code itself may be transmitted from the remote servers to the control module. Then, if the access code is presented by the mobile device to the control module (e.g. using NFC for example), and it is a match with the access code on the control module, the control module will unlock all the doors and enables the starter 1013 (e.g. through commands sent to the CAN buses and/or starter as described herein). In some embodiments, the temporary access code may instead be sent from the mobile device to the remote servers. If the access code matches the access code that the remote servers have associated with an active reservation, the remote servers will send a command to the control module to unlock the doors for the customer and enable the starter 2013.
When a customer's trip ends 1014 (for example, time of the reservation has run out and/or the destination has been reached or approached which can be tracked via GPS data uploaded to the remote servers from the control module), all relevant reservation in progress data is sent to the mobile app from the remote servers 1015 (i.e. checkout information, fuel information, etc.). If the customer confirms that the reservation is over, then all end of reservation data may be sent to the mobile app 1017, such as the final checkout receipt and inspection of the vehicle. After the reservation is over, the remote servers may send a command to the control module to disable the starter, lock the doors, and dispose of the temporary access code if any.
In some embodiments, the customer's mobile application may further comprise user interfaces and functionality for communication, over the wireless network/Internet, with the rental car service or car share service (e.g. their severs) during the rental period. For example, these user interfaces may allow a use to terminate a reservation, extend a reservation, purchase gas plans or insurance, add new drivers, change reservations, or contact a customer service representative. By putting this functionality into an application on a mobile device such as a mobile phone, it reduces custom hardware and software requirements by leveraging existing customer hardware. In addition, it saves on wireless data costs paid for by the rental/carshare service.
Gas Stop Detection and Notice Nearing Final Destination
In FIG. 10, one embodiment is described where the user may be notified about whether they need to stop for gas prior to returning a vehicle. In block 1101, the remote servers may receive a reservation from the reservations system (e.g. the rental company or the car share company's IT infrastructure). The remote servers may determine the destination for the car associated with the reservation based on the return site listed in the reservation 1101.
The remote servers, in 1103, may then receive, from the control module (or by looking up in its own database), the reservation trip summary from the previous trip to determine current fuel levels and a location of the vehicle. A trip summary is a report that may contain data about the current status of a vehicle, including the fuel level, its location, miles per gallon of the vehicle based on the trip, among other data. (In various embodiments, this information need not be received via a reservation trip summary. Instead, this information (location, fuel, mpg) may be periodically uploaded to the remote servers by the control module, and the same process may be performed).
Regardless of how the data from the control module is sent to the remote servers, using the vehicles location, the remote servers may calculate the driving distance of the associated vehicle of the shortest route to the destination of the new reservation 1104. Based on this distance, and the mpg of the vehicle, the remote servers may calculate the fuel required to reach the destination 1105. If there is enough fuel to reach the destination 1106, the remote servers may repeat this process 1009. As the vehicle progresses through its trip, it will periodically upload new information (new location, new fuel level, optionally new mpg) in an end of trip summary (or any other format). The remote servers may then recalculate the distance and fuel calculations to determine whether there is enough fuel to reach the destination.
If at any time, it is determined that there is not enough fuel to reach the destination, the remote servers may calculate the fuel station closest to the destination that is still reachable with current fuel levels 1107. This may be performed with geomapping services such as Google Maps. The destination may then be transmitted to the user or the control module 1108. For example, the user may receive a text message about the current fuel level, the inability to reach the destination, and the location of the calculated fuel station to stop at. This may include a map or other information usable to find the fuel station. This may be transferred via SMS, IM, email, or in car display). This information may also be transmitted over wireless to the control module. For example, the control module may interface with an onboard navigation unit to change the navigation unit to now navigate to the fuel station instead of the vehicle's destination.
This process may also apply to other locations besides the final destination. For example, a customer may make a reservation and insert information into their trip log to indicate multiple destinations. The destination used for measuring and comparison in this process can then be the next destination instead of the final destination.
This “last chance to get gas” process may be further expandable to other consumable services that can be mapped. For example, there may be a “last chance for food” feature where, based on location, destination, and current fuel, the remote servers may be able to inform the customer if they should stop for food in a certain location. Other possibilities to consider are rest stops, oil, water, etc.
Other Features
In some embodiments, remote servers will interface with a user's mobile device application or other client GUI to gather vehicle and customer data. The vehicle data may include the destination or drop off location or lot. The remote servers may then know to forward, and may forward, vehicle maintenance related notifications to the registered recipient at the destination or drop off location upon the vehicles arrival and/or end of reservation. Arrival may be determined when the vehicle enters the geofence/geozone associated with the lot, for example, by constantly polling GPS information in the control module. This may trigger a notice to a remote server, installer, or user upon arrival.
In some embodiments, a maintenance feature of the control module enables vehicle maintenance/service personnel to receive geo-specific (vehicles on lots they service) vehicle maintenance alerts (diagnostic trouble code and/or mileage based maintenance). For example, if a vehicles check engine light is ON, the control module would send a diagnostic alert (e.g. device ID, time/date, location and Diagnostic Trouble Code or DTC) to the remote servers. The remote servers may push (email, SMS and/or sent to a mobile application as a notification) the information to service personnel assigned to receive vehicle diagnostic alerts at that the closest location near the car. The maintenance feature has a Find feature that will enable the service personnel to navigate to the vehicle on the lot using GPS information from the control module and transmitted to the installer's mobile device via the remote servers.
Example System Implementation and Architecture
FIG. 11 is a block diagram showing an embodiment of computing device 162, and control module 101, which may be in communication with network 160 (wireless networks connected to the Internet) and various computing systems, such as remote servers 970, that are also in communication with the network 160. The computing device 162 and/or the control module 101 may be used to implement systems and methods described herein.
As described above, some embodiments may include portions that are executed by the remote servers 970 and/or by the computing device 162 and/or the control unit 101, or are entirely executed by the remote servers 970 or the computing device 162, or the control unit 101. Thus, discussion herein of any structure (e.g. cpu, memory, etc) of the computing device 162 or control module 101, or operations performed by the computing device 162 or control module 101, may be equally applied to the remote servers 970.
The computing device 162 (e.g. the mobile device that executes mobile applications described herein) includes, for example, a personal computer that is IBM, Macintosh, iOS, Android or Linux/Unix compatible or a server or workstation. In one embodiment, the computing device 162 comprises a server, a laptop computer, a smart phone, a personal digital assistant, a kiosk, or an media player, for example. In one embodiment, the exemplary computing device 162 includes one or more central processing unit (“CPU”) 905, which may each include a conventional or proprietary microprocessor. The computing device 162 further includes one or more memory 930, such as random access memory (“RAM”) for temporary storage of information, one or more read only memory (“ROM”) for permanent storage of information, and one or more mass storage device 920, such as a hard drive, diskette, solid state drive, or optical media storage device. Typically, the modules of the computing device 162 may be connected to the computer using a standard based bus system 980. In different embodiments, the standard based bus system could be implemented in Peripheral Component Interconnect (“PCI”), Microchannel, Small Computer System Interface (“SCSI”), Industrial Standard Architecture (“ISA”) and Extended ISA (“EISA”) architectures, for example. In addition, the functionality provided for in the components and modules of computing device 162 may be combined into fewer components and modules or further separated into additional components and modules, and executed in software, hardware, or a combination of hardware and software.
The computing device 162 is generally controlled and coordinated by operating system software, such as iOS, Android, Chrome OS, Windows XP, Windows Vista, Windows 7, Windows 8, Windows Server, Windows CE, Unix, Linux, SunOS, Solaris, iOS, Blackberry OS, or other compatible operating systems. In Macintosh systems, the operating system may be any available operating system, such as MAC OS X. In other embodiments, the computing device 162 may be controlled by a proprietary operating system. Conventional operating systems control and schedule computer processes for execution, perform memory management, provide file system, networking, I/O services, and provide a user interface functionality usable by the user interface module 110, such as a graphical user interface (“GUI”), among other things.
The exemplary computing device 162 may include one or more commonly available input/output (I/O) devices and interfaces 910, such as a keyboard, mouse, touchscreen, and printer. In one embodiment, the I/O devices and interfaces 910 include one or more display devices, such as a monitor or touchscreen 940, that allows the visual presentation of data to a user. More particularly, a display device provides for the presentation of GUIs, application software data, and multimedia presentations, for example. The computing device 162 may also include one or more multimedia devices, such as speakers, video cards, graphics accelerators, and microphones, for example.
In the embodiment of FIG. 11, the I/O devices and interfaces 910 provide a communication interface to various external devices. In the embodiment of FIG. 11, the computing device 162 is electronically coupled to a network 160 (as shown in FIG. 1), which comprises one or more of a LAN, WAN, and/or the Internet, for example, via a wired, wireless (such as 802.11 networks or a cell phone network), or combination of wired and wireless, communication link. The network 160 communicates with various computing devices and/or other electronic devices via wired or wireless communication links.
In some embodiments information may be provided to the computing device 162 over the network 160 from remote servers 970. Similarly, in some embodiments, information may be provided to the remote servers 970 over the network 160 control module 101 or computing device 162. The remote servers 970 may include one or more internal and/or external data sources. The data sources may include internal and external data sources which store, for example, rental car or car share reservation data, and vehicle, control unit and customer data and properties, and associations thereof. In some embodiments, one or more of the databases or data sources may be implemented using a relational database, such as Sybase, Oracle, CodeBase and Microsoft® SQL Server as well as other types of databases such as, for example, a flat file database, an entity-relationship database, and object-oriented database, and/or a record-based database.
In the embodiment of FIG. 11, the computing device 162 includes a user interface module 912 that may be stored in the mass storage device 920 as executable software codes that are executed by the CPU 905. This and other modules in the computing device 162 may include, by way of example, components, such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables. In the embodiment shown in FIG. 11, the computing device 162 is configured to the execute the user interface module 112 in order to for example, reserve and pickup vehicles, and perform and visualize other operations described herein.
User interface module 912 may generate and render, for example, user interfaces depicted in FIGS. 5, 7, 8, etc. By interacting with these user interfaces, a user of computing device 162 may view various information about their reservation and associated car.
In general, the word “module,” as used herein (except as otherwise defined, such as in control module), refers to logic embodied in hardware or firmware, or to a collection of software instructions, possibly having entry and exit points, written in a programming language, such as, for example, Java, Lua, C or C++. A software module may be compiled and linked into an executable program, installed in a dynamic link library, or may be written in an interpreted programming language such as, for example, BASIC, Perl, or Python. It will be appreciated that software modules may be callable from other modules or from themselves, and/or may be invoked in response to detected events or interrupts. Software modules configured for execution on computing devices may be provided on a computer readable medium, such as a compact disc, digital video disc, flash drive, magnetic disc, or any other tangible medium, or as a digital download (and may be originally stored in a compressed or installable format that requires installation, decompression or decryption prior to execution). Such software code may be stored, partially or fully, on a memory device of the executing computing device, such as the computing device 162, for execution by the computing device. Software instructions may be embedded in firmware, such as an EPROM. It will be further appreciated that hardware modules may be comprised of connected logic units, such as gates and flip-flops, and/or may be comprised of programmable units, such as programmable gate arrays or processors. The modules described herein are preferably implemented as software modules, but may be represented in hardware or firmware. Generally, the modules described herein refer to logical modules that may be combined with other modules or divided into sub-modules despite their physical organization or storage.
Like the computing device 162, remote servers 970 and control module 101 may comprise similar computing hardware, software, and functionality as described above for computing device 162.
Other
Each of the processes, methods, and algorithms described in the preceding sections may be embodied in, and fully or partially automated by, code modules executed by one or more computer systems or computer processors comprising computer hardware. The code modules may be stored on any type of non-transitory computer-readable medium or computer storage device, such as hard drives, solid state memory, optical disc, and/or the like. The systems and modules may also be transmitted as generated data signals (for example, as part of a carrier wave or other analog or digital propagated signal) on a variety of computer-readable transmission mediums, including wireless-based and wired/cable-based mediums, and may take a variety of forms (for example, as part of a single or multiplexed analog signal, or as multiple discrete digital packets or frames). The processes and algorithms may be implemented partially or wholly in application-specific circuitry. The results of the disclosed processes and process steps may be stored, persistently or otherwise, in any type of non-transitory computer storage such as, for example, volatile or non-volatile storage.
The various features and processes described above may be used independently of one another, or may be combined in various ways. All possible combinations and subcombinations are intended to fall within the scope of this disclosure. In addition, certain method or process blocks may be omitted in some implementations. The methods and processes described herein are also not limited to any particular sequence, and the blocks or states relating thereto can be performed in other sequences that are appropriate. For example, described blocks or states may be performed in an order other than that specifically disclosed, or multiple blocks or states may be combined in a single block or state. The example blocks or states may be performed in serial, in parallel, or in some other manner. Blocks or states may be added to or removed from the disclosed example embodiments. The example systems and components described herein may be configured differently than described. For example, elements may be added to, removed from, or rearranged compared to the disclosed example embodiments.
Conditional language, such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment.
Any process descriptions, elements, or blocks in the flow diagrams described herein and/or depicted in the attached figures should be understood as potentially representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process. Alternate implementations are included within the scope of the embodiments described herein in which elements or functions may be deleted, executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those skilled in the art.
All of the methods and processes described above may be embodied in, and partially or fully automated via, software code modules executed by one or more general purpose computers. For example, the methods described herein may be performed by the remote servers 970, control module 101, consumer computing device 162, and/or any other suitable computing device. The methods may be executed on the computing devices in response to execution of software instructions or other executable code read from a tangible computer readable medium. A tangible computer readable medium is a data storage device that can store data that is readable by a computer system. Examples of computer readable mediums include read-only memory, random-access memory, other volatile or non-volatile memory devices, CD-ROMs, magnetic tape, flash drives, and optical data storage devices.
It should be emphasized that many variations and modifications may be made to the above-described embodiments, the elements of which are to be understood as being among other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure. The foregoing description details certain embodiments of the invention. It will be appreciated, however, that no matter how detailed the foregoing appears in text, the invention can be practiced in many ways. As is also stated above, it should be noted that the use of particular terminology when describing certain features or aspects of the invention should not be taken to imply that the terminology is being re-defined herein to be restricted to including any specific characteristics of the features or aspects of the invention with which that terminology is associated. The scope of the invention should therefore be construed in accordance with the appended claims and any equivalents thereof.

## Claims

1. An apparatus comprising:
a control module for connection to a vehicle to enable a remote computing system to wirelessly communicate instructions to the vehicle via the control module, the control module comprising:
a processor;
a wireless network interface configured to interface the processor with a wireless network; and
a vehicle interface configured to interface the processor with an on-board diagnostics (OBD) unit and a controller area network (CAN) bus of the vehicle, the vehicle interface comprising a plurality of CAN bus transceivers, each CAN bus transceiver configured to interface the processor with a CAN bus type of at least one vehicle type such that the plurality of CAN bus transceivers are configured to interface the processor with the CAN bus types of a plurality of different vehicle types in the aggregate;
wherein the processor is configured to (1) automatically detect an identifier for the vehicle through the vehicle interface, (2) automatically select a CAN bus transceiver from among the plurality of CAN bus transceivers based on the detected identifier, and (3) communicate with the vehicle's CAN bus via the selected CAN bus transceiver.

2. The apparatus of claim 1 wherein the control module further comprises a memory in which configuration information for a plurality of different vehicle types is stored, and wherein the processor is further configured to (1) determine the vehicle type for the vehicle based on the detected identifier, (2) retrieve the configuration information for the determined vehicle type from the memory, and (3) select the CAN bus transceiver from among the plurality of CAN bus transceivers in accordance with the retrieved configuration information.

3. The apparatus of claim 2 wherein the different vehicle types comprise a plurality of different years, makes, and models (YMMs) of vehicles.

4. The apparatus of claim 2 wherein the stored configuration information further comprises a plurality of codes for controlling a plurality of vehicle functions, wherein the codes vary by vehicle type such that a plurality of different vehicle types exhibit a plurality of different codes for the vehicle functions, and wherein the processor is further configured to (1) receive an instruction from the remote computing system via the wireless network interface, the instruction comprising a command for the vehicle to perform a function, (2) retrieve from the memory the stored code for the vehicle function corresponding to the received command instruction based on the determined vehicle type, and (3) communicate the retrieved code to the vehicle via the vehicle interface to thereby cause the vehicle to perform the function corresponding to the received command instruction.

5. The apparatus of claim 4 wherein the function corresponding to the received command instruction comprises a member of the group consisting of (1) enabling/disabling a starter for the vehicle, (2) locking/unlocking a door for the vehicle, (3) flashing lights for the vehicle, (4) opening/closing a window for the vehicle, (5) opening/closing a sunroof for the vehicle, (6) sounding a horn for the vehicle, and (7) opening or unlocking a trunk for the vehicle.

6. The apparatus of claim 2 wherein the detected identifier is a vehicle identification number (VIN), and wherein the processor is further configured to (1) request and receive the VIN from the vehicle via the vehicle interface, and (2) decode the VIN to determine the vehicle type.

7. The apparatus of claim 1 wherein the processor is further configured to (1) send the detected identifier to a remote server via the wireless interface, (2) receive configuration information for the vehicle from the remote server via the wireless interface, and (3) select the CAN bus transceiver from among the plurality of CAN bus transceivers in accordance with the received configuration information.

8. The apparatus of claim 7 wherein the control module further comprises a memory, wherein the received configuration information includes a plurality of codes for controlling a plurality of functions of the vehicle, and wherein the processor is further configured to (1) store the codes in the memory, (2) receive an instruction from the remote computing system via the wireless network interface, the instruction comprising a command for the vehicle to perform a function, (3) retrieve from the memory the stored code for the vehicle function corresponding to the received command instruction, and (4) communicate the retrieved code to the vehicle via the vehicle interface to thereby cause the vehicle to perform the function corresponding to the received command instruction.

9. The apparatus of claim 8 wherein the function corresponding to the received command instruction comprises a member of the group consisting of (1) enabling/disabling a starter for the vehicle, (2) locking/unlocking a door for the vehicle, (3) flashing lights for the vehicle, (4) opening/closing a window for the vehicle, (5) opening/closing a sunroof for the vehicle, (6) sounding a horn for the vehicle, and (7) opening or unlocking a trunk for the vehicle.

10. The apparatus of claim 7 wherein the detected identifier is a vehicle identification number (VIN), wherein the processor is further configured to request and receive the VIN from the vehicle via the vehicle interface, and wherein the remote server is part of the remote computing system.

11. The apparatus of claim 1 wherein the vehicle interface further comprises a multiplexer, the multiplexer including a data input line, a channel select input line, and a plurality of channel output lines, each channel output line connected to a different CAN bus transceiver, and wherein the processor is further configured to select the CAN bus transceiver from among the plurality of CAN bus transceivers via a control signal applied to the channel select input line, the control signal causing the multiplexer to connect the data input line with the channel output line for the selected CAN bus transceiver.

12. The apparatus of claim 11 wherein the channel select input line comprises a plurality of channel select pins.

13. The apparatus of claim 1 wherein the processor comprises a plurality of processors.

14. The apparatus of claim 1 wherein the control module further comprises a GPS chipset in communication with the processor and an accelerometer in communication with the processor.

15. The apparatus of claim 1 wherein the vehicle interface includes a connector, the control module configured to detachably connect with an OBD port of the vehicle via the connector.

16. The apparatus of claim 1 wherein the control module does not include a DIP switch configured to provide for manual selection between the CAN bus transceivers.

17. The apparatus of claim 1 wherein the CAN bus transceivers comprise (1) a first CAN bus transceiver that is configured to communicate with a first type of CAN bus, and (2) a second CAN bus transceiver that is configured to communicate with a second type of CAN bus.

18. The apparatus of claim 17 wherein the first CAN bus type is used for communication with an electronic control unit (ECU) of a vehicle, and wherein the second CAN bus type is used for communication with a body control module (BCM) of a vehicle.

19. The apparatus of claim 1 wherein the vehicle's CAN bus is a single wire CAN bus.

20. The apparatus of claim 1 wherein the vehicle's CAN bus is a two wire CAN bus.

21. A method of configuring a vehicle to support remote control of a function for the vehicle, the method comprising:
connecting a control module to a vehicle, the control module comprising (1) a processor, (2) a wireless network interface, and (3) a vehicle interface;
interfacing the processor with a wireless network via the wireless network interface;
interfacing the processor with an on-board diagnostics (OBD) unit and a controller area network (CAN) bus of the vehicle via the vehicle interface, the vehicle interface comprising a plurality of CAN bus transceivers, each CAN bus transceiver configured to interface the processor with a CAN bus type of at least one vehicle type such that the plurality of CAN bus transceivers are configured to interface the processor with the CAN bus types of a plurality of different vehicle types in the aggregate;
the processor automatically detecting an identifier for the vehicle through the vehicle interface;
the processor automatically selecting a CAN bus transceiver from among the plurality of CAN bus transceivers based on the detected identifier; and
the processor communicating with the vehicle's CAN bus via the selected CAN bus transceiver in order to control a vehicle function in response to data received over the wireless network via the wireless network interface.

22. The method of claim 21 further comprising:
storing configuration information for a plurality of different vehicle types in a memory of the control module;
the processor determining the vehicle type for the vehicle based on the detected identifier;
the processor retrieving the configuration information for the determined vehicle type from the memory; and
wherein the selecting step comprises the processor automatically selecting the CAN bus transceiver from among the plurality of CAN bus transceivers in accordance with the retrieved configuration information.

23. The method of claim 22 wherein the stored configuration information includes a plurality of codes for controlling a plurality of vehicle functions, wherein the codes vary by vehicle type such that a plurality of different vehicle types exhibit a plurality of different codes for the vehicle functions, the method further comprising:
the processor receiving an instruction from a computer via the wireless network interface, the instruction comprising a command for the vehicle to perform a function; and
the processor retrieving from the memory the stored code for the vehicle function corresponding to the received command instruction based on the determined vehicle type; and
wherein the communicating step comprises the processor communicating the retrieved code to the vehicle via the vehicle interface to thereby cause the vehicle to perform the function corresponding to the received command instruction.

24. The method of claim 21 further comprising:
the processor sending the detected identifier to a remote server via the wireless network interface; and
the processor receiving configuration information for the vehicle from the remote server via the wireless network interface; and
the processor selecting the CAN bus transceiver from among the plurality of CAN bus transceivers in accordance with the received configuration information.

25. The method of claim 21 wherein the vehicle interface further comprises a multiplexer, the multiplexer including a data input line, a channel select input line, and a plurality of channel output lines, each channel output line connected to a different CAN bus transceiver, the method further comprising:
the processor selecting the CAN bus transceiver from among the plurality of CAN bus transceivers via a control signal applied to the channel select input line, the control signal causing the multiplexer to connect the data input line with the channel output line for the selected CAN bus transceiver.

26. The method of 21 wherein the vehicle interface further comprises a connector, and wherein the connecting step comprises detachably connecting the control module with an OBD port of the vehicle via the connector.

27. The method of claim 21 wherein the vehicle is a rental vehicle, the method further comprising controlling rental access to the rental vehicle via the control module.

28. The method of claim 27 wherein the controlling step comprises:
the processor receiving rental vehicle reservation authorization data from a remote server via the wireless network interface;
the processor storing the received reservation authorization data in the memory;
the processor receiving rental access request data from a mobile computing device associated with a customer via the wireless network interface;
the processor determining whether a rental of the rental vehicle is authorized based on the received rental access request data and the stored reservation authorization data; and
wherein, in response to a determination that the rental of the rental vehicle is authorized, the communicating step comprises the processor communicating a command to the rental vehicle via the vehicle interface that is effective to provide the customer with pickup access to the rental vehicle.

29. The method of claim 28 wherein the command comprises a command to perform at least one member of the group consisting of (1) enabling a starter for the rental vehicle, and (2) unlocking a door for the rental vehicle.

30. The method of claim 21 wherein the CAN bus transceivers comprise (1) a first CAN bus transceiver that is configured to communicate with a first type of CAN bus, and (2) a second CAN bus transceiver that is configured to communicate with a second type of CAN bus.

31. The method of claim 30 wherein the first CAN bus type is used for communication with an electronic control unit (ECU) of a vehicle, and the second CAN bus type is used for communication with a body control module (BCM) of a vehicle.

32. The method of claim 21 wherein the vehicle's CAN bus is a single wire CAN bus.

33. The method of claim 21 wherein the vehicle's CAN bus is a two wire CAN bus.

34. The method of claim 21 where in the step of interfacing the processor with the OBD unit and the CAN bus of the vehicle via the vehicle interface is performed without using a manually-selected DIP switch.