panda/README.md

90 lines
2.8 KiB
Markdown
Raw Normal View History

2017-04-06 19:11:36 -06:00
Welcome to panda
======
2017-06-28 23:20:38 -06:00
[panda](http://github.com/commaai/panda) is the nicest universal car interface ever.
2017-04-06 19:11:36 -06:00
2017-07-07 00:34:28 -06:00
<a href="https://panda.comma.ai"><img src="https://github.com/commaai/panda/blob/master/panda.png">
2017-04-06 19:56:25 -06:00
2017-07-07 00:37:14 -06:00
<img src="https://github.com/commaai/panda/blob/master/buy.png"></a>
2017-07-07 00:30:20 -06:00
2017-06-28 23:21:20 -06:00
It supports 3x CAN, 2x LIN, and 1x GMLAN. It also charges a phone. On the computer side, it has both USB and Wi-Fi.
2017-04-06 19:11:36 -06:00
2017-06-28 23:22:12 -06:00
It uses an [STM32F413](http://www.st.com/en/microcontrollers/stm32f413-423.html?querycriteria=productId=LN2004) for low level stuff and an [ESP8266](https://en.wikipedia.org/wiki/ESP8266) for Wi-Fi. They are connected over high speed SPI, so the panda is actually capable of dumping the full contents of the busses over Wi-Fi, unlike every other dongle on amazon. ELM327 is weak, panda is strong.
2017-04-06 19:11:36 -06:00
It is 2nd gen hardware, reusing code and parts from the [NEO](https://github.com/commaai/neo) interface board.
2017-11-12 16:31:25 -07:00
[![Build Status](https://travis-ci.org/commaai/panda.svg?branch=master)](https://travis-ci.org/commaai/panda)
2017-04-06 19:23:26 -06:00
Usage
2017-04-06 19:14:15 -06:00
------
2017-04-06 19:23:26 -06:00
2017-06-20 16:40:34 -06:00
To install the library:
```
# pip install pandacan
```
2017-06-20 16:41:22 -06:00
See [this class](https://github.com/commaai/panda/blob/master/panda/__init__.py#L80) for how to interact with the panda.
2017-04-06 19:23:26 -06:00
For example, to receive CAN messages:
```
>>> from panda import Panda
2017-04-06 19:28:59 -06:00
>>> panda = Panda()
2017-04-06 19:23:26 -06:00
>>> panda.can_recv()
```
2017-04-06 19:28:59 -06:00
And to send one on bus 0:
```
>>> panda.can_send(0x1aa, "message", 0)
```
2017-04-06 19:31:56 -06:00
More examples coming soon
2017-04-06 19:14:15 -06:00
2017-06-26 00:01:41 -06:00
Software interface support
------
As a universal car interface, it should support every reasonable software interface.
- User space (done)
- socketcan in kernel (alpha)
- ELM327 (planned)
- Windows J2534 (planned)
2017-04-06 19:11:36 -06:00
Directory structure
------
- board -- Code that runs on the STM32
- boardesp -- Code that runs on the ESP8266
2017-06-26 00:01:41 -06:00
- drivers -- Drivers (not needed for use with python)
2017-10-18 01:26:48 -06:00
- panda    -- Python userspace library for interfacing with the panda
2017-04-06 19:11:36 -06:00
- tests -- Tests and helper programs for panda
2017-04-06 19:30:45 -06:00
Programming (over USB)
2017-04-06 19:11:36 -06:00
------
2017-11-10 03:27:25 -07:00
[Programming the Board (STM32)](board/README.md)
[Programming the ESP](boardesp/README.md)
2017-04-06 19:11:36 -06:00
2017-04-17 16:28:28 -06:00
Debugging
------
To print out the serial console from the STM32, run tests/debug_console.py
2017-04-29 01:09:08 -06:00
To print out the serial console from the ESP8266, run PORT=1 tests/debug_console.py
2017-07-17 11:48:16 -06:00
Safety Model
------
When a panda powers up, by default it's in "SAFETY_NOOUTPUT" mode. While in no output mode, the buses are also forced to be silent. In order to send messages, you have to select a safety mode. Currently, setting safety modes is only supported over USB.
Safety modes can also optionally support "controls_allowed", which allows or blocks a subset of messages based on a piece of state in the board.
2017-04-06 19:23:26 -06:00
Hardware
------
2017-04-27 21:32:16 -06:00
2017-04-06 19:23:26 -06:00
Check out the hardware [guide](https://github.com/commaai/panda/blob/master/docs/guide.pdf)
2017-04-06 19:11:36 -06:00
Licensing
------
2017-04-06 19:53:43 -06:00
panda software is released under the MIT license unless otherwise specified.