Octanis 1 Main Board
MSP432 Launchpad
- Windows drivers: http://energia.nu/guide/guide_windows/
Hardware
Pin configuration
This is the newest pin configuration. In the source code, in MSP432xxxx.h, undefine VERSION_0_5 to use this configuration. For old boards: Link to old pin configuration (v0.5 and older)
Colour code
<fc #FF00AA>Capture/Compare pin; PWM output</fc> |
---|
<fc #77AA00>GPIO with interrupt</fc> |
- PM = “port mappable”
- R: = “remapped to …”
TAx.xmeans that the functionality was mapped to another pin
DIGITAL_IO1
(Pin row from left to right)
GND | 3V3 | ||
---|---|---|---|
P10.2 | Avoid_Obstacle_ON | Geiger counter | <fc #77AA00>P1.0</fc> |
GND | Geiger turn ON/OFF | P9.5 | |
PJ.4 | PJ.5 | ||
P7.2 | Wind_sensor_sleep | Wind_sensor_IN | <fc #FF00AA>P7.3 (R: TA0.1)</fc> |
P7.0 (R: TA0.2) | Ultrasonic_IN6 | Ultrasonic_IN7 | P7.1 (R:TA0.3) |
PJ.2 + NMOS | Ultrasonic_trigger0 | Ultrasonic_trigger1 | PJ.3 +NMOS |
<fc #FF00AA>P6.6, TA2.3 </fc> | Ultrasonic_IN0 | Ultrasonic_IN5 | <fc #FF00AA>P6.7, TA2.4</fc> |
<fc #FF00AA>P5.6 TA2.1 </fc> | Ultrasonic_IN4 | Ultrasonic_IN1 | <fc #FF00AA>P5.7, TA2.2</fc> |
<fc #FF00AA>P9.2, TA3.3</fc> | Ultrasonic_IN2 | Ultrasonic_IN3 | <fc #FF00AA>P9.3, TA3.4</fc> |
GND | 3V3 | ||
SPI_TE | SPI_MAGNETSENSOR_CS | SPI_MISO | MISO (UCB1) |
SPI_CLK (UCB1) | SPI_CLK | SPI_MOSI | MOSI (UCB1) |
DIGITAL_IO2
(Pin row from left to right)
<fc #77AA00> P2.5 </fc><fc #FF00AA> | EPS interrupt input | <fc #77AA00> P2.4 </fc><fc #FF00AA> |
|
---|---|---|---|
<fc #77AA00> P2.7 </fc><fc #FF00AA> | <fc #77AA00> P2.6 </fc><fc #FF00AA> |
||
<fc #FF00AA> P10.5 (TA3.1)</fc> | <fc #FF00AA> P10.4 (TA3.0)</fc> | ||
<fc #FF00AA>P7.4 | Rockblock SLEEP | Rockblock NET | <fc #77AA00> P2.1 </fc> (PM) |
P7.6 | P7.5 |
ANALOG_IO
(Pin row from left to right)
AGND | Strut_rotation sensor 1 | <fc #77AA00>A1 (P5.4) </fc> | |
---|---|---|---|
<fc #77AA00>A2 (P5.3) </fc> | Strut_rotation sensor 2 | Strut_rotation sensor 3 | <fc #77AA00>A3 (P5.2) </fc> |
<fc #77AA00>A4 (P5.1) </fc> | Strut_rotation sensor 4 | <fc #77AA00>A5 (P5.0) </fc> | |
<fc #77AA00>A6 (P4.7) </fc> | <fc #77AA00>A7 (P4.6) </fc> | ||
<fc #77AA00>A8 (P4.5) </fc> | <fc #77AA00>A9 (P4.4) </fc> |
Motors 1-4 (bottom side of the board)
(Pin row from left to right)
M1234_sleep | P8.7 | |
M1+ | (EN=P9.1) | front left |
---|---|---|
M1- | (PH=P9.0) | |
M2+ | (EN=P6.1) | front right |
M2- | (PH=P6.0) | |
M3+ | (EN=P4.1) | rear left |
M3- | (PH=P4.0) | |
M4+ | (EN=P4.3) | rear right |
M4- | (PH=P4.2) |
Motors 5-8 (right side of the board)
(Pin row from top to bottom)
M5678_sleep | P3.1 | |
M5678_curr_sense_en | P8.6 | |
M8- | (IN2=P3.7, PM) | rear_right |
---|---|---|
M8+ | (IN1=P3.6, R:TA1.4; PWM) | curr_sense input: A20 (P8.5) |
M7- | (IN2=P3.5, PM) | rear_left |
M7+ | ( IN1=P3.4, R:TA1.3; PWM) | curr_sense input: A21 (P8.4) |
M6- | (IN2=P3.0, PM) | front_right |
M6+ | (IN1=P7.7, R:TA1.2; PWM) | curr_sense input: A22 (P8.3) |
M5- | (IN2=P7.6, PM) | front_left |
M5+ | (IN1=P7.5, TA1.1; PWM) | curr_sense input: A23 (P8.2) |
UART pins
(Pin row from left to right)
3V3 | UART1 | GPS |
---|---|---|
5V | UART2 | Rockblock |
Software
Item | Timing |
---|---|
IMU | 100ms - threshold check |
60s - log | |
EnvSensors | 60s - threshold check |
300s - log | |
Scan | 100ms - threshold check |
10s - log (for map planner) | |
PathPlan | 10s - threshold check (GPS, compass) |
300s - get ISS depth data |
Messaging
protobuf will be the format for messages. Messages going from the microcontroller to the Iridium modem will be sent protobuf encoded and received by a webserver decoding the message. See also nanopb for microcontrollers.
The different message types are:
- rover_status (protobuf definition can be used)
- act (do not use yet)
- camera (do not use yet)
- alert (do not use yet)
To generated a new protobuf definition, follow this procedure:
- Download https://github.com/nanopb/nanopb
- Nanopb uses the Google's protoc compiler to parse the .proto file, and then a python script to generate the C header and source code from it:
user@host:~$ protoc -omessage.pb message.proto user@host:~$ python ../generator/nanopb_generator.py message.pb Writing to message.h and message.c
Communication with Submodules
EPS
- The mainboard expects the rover EPS to be an I2C slave.
- The mainboard will poll for battery and current values.
- The EPS will be connected to the reset pin of the mainboard.
- The EPS has the ability to turn the mainboard completely on and off.
- The EPS has the ability to put the mainboard into deep sleep mode (GPIO_SLEEP)
- The EPS has the ability to wake the mainboard from deep sleep mode.
- The mainboard will send a command to the EPS to switch on/off one of the 3 modules (the tps202x switches)
I2C Implementation
- EPS Address: 0x90