Speak to your car with Google Assistant - almost like K.I.T.T. from Knight Rider
Wouldn’t it be cool if you could speak to your car and give it commands? We remember our childhood in the last millennium where Michael Knight (David Hasselhoff) and his intelligent Pontiac Trans Am named K.I.T.T. solved crime together.
Did you know? K.I.T.T. is short for Knight Industries Two Thousand
While we may not be able to have a meaningful conversation with our car just yet, it’s now a possibility to talk to your car and give it commands to execute. We are here giving a short introduction to how this can be accomplished using the AutoPi.io system and Google Assistant. With the Google Assistant, it will be like a K.I.T.T. voice software for your car, and thus the commands you give your vehicle once executed can feel like you are in Knight Rider.
Here's a demonstration of how you can talk to your car:
What is AutoPi?
AutoPi is a small device that plugs into the OBD-II port of your car.
Once connected, the AutoPi device will automatically start working. It has 4G/LTE connectivity, so it is always connected to the Internet. It also comes with a lot of other features, one is continuous GPS tracking.
It comes with an online dashboard, that you can login to from any device. From here you can setup your system and do real-time tracking of your vehicle telematics.
What is Google Assistant?
Google Assistant is Google’s version of Siri (Apple) and Alexa (Amazon). It lets you interact with your device, through voice commands and has typically been used together with Android devices where it comes integrated. More technically, the “Assistants” works by processing the speech recorded on the device and translate them into something understandable by a machine and this can thereby be parsed and an action can be taken. A typical use case is:
- You: “OK Google. How is the weather in New York?”
- Assistant: “It’s 10 degrees and raining”
How to use Google Assistant and AutoPi together?
As a new thing, Google recently released their Google Assistant SDK, with a Python based SDK. This SDK lets you integrate the Google Assistant with the AutoPi Dongle, and give you the possibility to setup a system where you are able to give commands to your car.
When Google introduced the Google Assistant SDK with a Python version, they must have thought of AutoPi, because the two things goes together perfectly.
AutoPi Core (the software running on the AutoPi Dongle) is built using Python. With the AutoPi dashboard it is possible to write custom Python code modules and upload them directly to the AutoPi Dongle. It is easy to program your AutoPi directly from the web interface and thereby set it up to integrate with Google Assistant.
The AutoPi Dongle comes with a built in speaker and a connection to your car (or should we call it K.I.T.T.?) using the OBD-II connector. The OBD-II connector lets the AutoPi communicate with the embedded computer systems in your car. The only device you would need to add is a microphone. But as the AutoPi has USB ports for external devices, so a mic is easily added.
The main focus would be to setup the software on the device and that's where the Google Assistant SDK is able to help us. With it you can parse audio recordings from your device, and turn them into actions. In short this is how it works:
- Speak a command using the USB microphone
- Send the recorded action to Google for parsing
- The device initiates the action, based on the result from Google
The flow between the systems is:
- User speaks a command.
- The K.I.T.T. Python application records and sends the spoken command to Google using the Assistant SDK.
- Google Cloud Platform translates the recorded speech into a text string.
- The text string is returned to the K.I.T.T. Python application, using the SDK.
- The K.I.T.T. Python application parses the text string and initiates the action found from the string, in this case the OBD subsystem.
- The OBD subsystem routine is triggered and it sends a command on the CAN bus through the OBD port. The command is to roll down the window.
- The window in the car is rolled down.
- The speaker subsystem routine is triggered. It sends the text to be spoken to Google to translate it into a sound file.
- Google returns the sound file.
- Speaker subsystem plays the sound file to the user.
- Great Success!
AutoPi was mentioned at the Google I/O 2017 conference in San Francisco:
Let us know what you would like to have your car do and how you think this could be possible using the AutoPi and Google Assistant. Join the discussion below.
Other blog posts for further reading
Build your own Black Ice Detection system for your car using AutoPi
The term “Black ice” refer to a winter phenomenon, where a layer of ice on the road is so thin it becomes transparent and thus appears “black” from the road below. This is a very common situation during winter times and can create hazardous situations for vehicles and pedestrians. The phenomenon often occurs when the temperature is right around freezing point and when a light rain hits a road surface which is below freezing point.
Raspberry Pi Dongle: How to Read and Reset Fault Codes From Your Vehicle
The AutoPi IoT platform is much more than your regular OBD-II dongle. But that doesn’t mean that it isn’t able to perform all of the same things a regular OBD-II dongle does (plus much more). One of the common things you would do is to read out details about fault codes in your vehicle. In this blog we will go over the details on how this is done with the AutoPi and how you can combine fault codes with triggers to make automatic alerts.
Discover hidden functions in your car (using CAN bus sniffing)
All modern vehicles today is controlled by multiple Electronic Control Units (ECU), which you can think of as small computers controlling all electrical components in your car. Using the OBD-II port and an AutoPi it is possible to communicate with the ECUs. One of the ECU’s is called the Engine Control Module (ECM). This is responsible for communication with a lot of subsystems, like transmission, power steering, windows and doors. These subsystems communicates on a network bus called Controller Area Network (CAN), by broadcasting messages on the bus.