Octanis 1 Main Board

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.x means that the functionality was mapped to another pin


(Pin row from left to right)

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>


(Pin row from left to right)

<fc #77AA00> P2.5 </fc><fc #FF00AA>(TA0.2) </fc> (PM) EPS interrupt input <fc #77AA00> P2.4 </fc><fc #FF00AA>(TA0.1) </fc>(PM)
<fc #77AA00> P2.7 </fc><fc #FF00AA>(TA0.4) </fc> (PM) <fc #77AA00> P2.6 </fc><fc #FF00AA>(TA0.3) </fc>(PM)
<fc #FF00AA> P10.5 (TA3.1)</fc> <fc #FF00AA> P10.4 (TA3.0)</fc>
<fc #FF00AA>P7.4 (TA1.4) </fc> (PM) Rockblock SLEEP Rockblock NET <fc #77AA00> P2.1 </fc> (PM)
P7.6 (TA1.2) (PM) P7.5 (TA1.3)(PM)


(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)

5V UART2 Rockblock

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

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:

To generated a new protobuf definition, follow this procedure:

  1. 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

  • 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

  • octanis1_main-board.txt
  • Last modified: 5 years ago
  • by raffael