Feature | Status | Comment |
---|---|---|
Reflashable | yes | With a way to revert back to original firmware |
Original firmware is readable | yes | |
No soldering required | yes | |
Linux Board | TODO | Although it has a linux board, it was decided not to use it. Using a separate board is much more convenient. If you think that using existing linux board might be useful, then your contributions are welcome. |
Docking Station | yes | |
Remote control | depends on the model | Possible through web interface with LibreRVAC |
Wheels | standard | Regular spring-loaded wheels |
Sensors | infrared | |
Cliff Sensors | how many? | |
Bumper | 2 switches | It is possible to read them separately |
User Input | 3 buttons | |
Display | leds | PCB has support for 7-segment display, so maybe with a little bit of soldering and 3D printing you can upgrade |
Speaker | buzzer | |
Wi-Fi | no | Should be installed for LibreRVAC |
Bluetooth | no | |
Camera | pointing up | Pointing up. TODO info about the camera |
Microcontroller | pic32mx360f256l | PIC32 is fine as long as you tolerate problems with their toolchain |
Accelgyro | TODO | |
Main Brush Spinning Direction | yes | |
Side Brushes Spinning Direction | no | |
Separate Control of Side Brushes | no | |
Current Sense on Wheels | yes | |
Current Sense on Main Brush | encoder | No, but has an encoder instead. Weird. |
Real-time clock | no |
Feature | Legacy | LibreRVAC | Comment |
---|---|---|---|
Web Interface | no | yes | |
Scheduled Start | no | yes, but no user interface yet | |
Wall following | no* | planned | *in extremely small areas (3x1 meters) the robot may eventually start cleaning around the corners. It has only been observed once. |
Curved path | only when docking | planned | |
Room mapping | probably | planned | In legacy firmware the robot is moving in parallel lines, but collected info suggests that it is unable to build a map |
Feature | Legacy | LibreRVAC | Comment |
---|---|---|---|
Charging | yes | yes | |
Wheels | yes | yes | |
Main Brush | yes | yes | |
Side Brushes | yes | yes | |
Bumper | yes | yes | |
Beeper | yes | yes | |
LEDs | yes | yes | |
User Buttons | yes | yes | |
Wheel Buttons | yes | yes | |
Sensors | yes | planned | |
Cliff Sensors | yes | planned | |
Accelgyro | yes | planned | |
Camera | ? | no | No info about on-board GNU/Linux board |
More recent information may be found in pinout.h file.
Pin | Index | Type | Function | pullup/pulldown | active | Comment |
---|---|---|---|---|---|---|
1 | RG15 | in | bumper switch right | +3.3V | low | |
2 | - | VDD | Power | 3.3V | ||
3 | RE5 | out | UNKNOWN LED 1-2, LED 4, BATTERY LED 2, 7-Segment display top-left segment, colon-top segment | high | ILN2003AD (pin 6) | |
4 | RE6 | out | LED 5, BATTERY LED 3, 7-Segment display center segment, colon-bottom segment | high | ILN2003AD (pin 7) | |
5 | RE7 | out | motor left | ? | A3950ST (pin 2 – MODE) | |
6 | RC1 | out | motor left | ? | A3950ST (pin 3 – PHASE) – low level means forward | |
7 | RC2 | out | main brush | ? | DRV8840 (pin 20 – PHASE) | |
8 | RC3 | out | main brush | ? | DRV8840 (pin 19 – DECAY) | |
9 | RC4 | out | ic16 – C | ? | 14051BG ic16 (pin 9 – C) | |
10 | RG6 | out | motor right | ? | A3950ST (pin 2 – MODE) | |
11 | RG7 | out | motor right | ? | A3950ST (pin 3 – PHASE) | |
12 | RG8 | in | MID_RECEIVER_R | +3.3V | ? | not connected! |
13 | - | RESET | reset | low | RC-circuit | |
14 | RG9 | in | bumper switch left | +3.3V | low | |
15 | - | VSS | ||||
16 | - | VDD | ||||
17 | RA0 | JTAG | mode select | ? | ? | ???? also R1050K (pin 9 – reserved, pin 18 – nRST |
18 | RE8 | in | rear right IR receiver | +3.3V | low | VIRTUAL_REAL_R (yes, REAL, hah) |
19 | RE9 | in | button interrupt | +3.3V | low | one of three buttons |
20 | RB5 | in | main brush encoder | +3.3V | low | |
21 | RB4 | adc | battery thermistor (10kΩ ?) | |||
22 | RB3 | ? | comparator in+ battery voltage before/after? resistor | (912 +) (01b -) – 1/10.1 multiplier ???? | ||
23 | RB2 | ? | comparator in- battery voltage after/before? resistor | ? | ? | ??? |
24 | RB1 | ? | adapter detect? | ? | ? | ? |
25 | RB0 | adc | buttons | HOME(1.5kΩ – 0.43V)/START(10kΩ – 1.65V)/MODE(4.7kΩ – 1.06V) | ||
26 | RB6 | DBG | programming/debugging clock | jtag pin 1 (actually ICSP) | ||
27 | RB7 | DBG | programming/debugging data I/O | jtag pin 2 (actually ICSP) | ||
28 | RA9 | ? | linux board pin 10 | ? | ? | ? |
29 | RA10 | in | MID_RECEIVER_L | +3.3V | ? | not connected! |
30 | - | AVDD | nothing fancy, just +3.3V | |||
31 | - | AVSS | nothing fancy, just GND | |||
32 | RB8 | in | bottom right sensor | GND | high ?? | |
33 | RB9 | ? | linux board pin 11 | ? | ? | ? |
34 | RB10 | in | bottom center sensor | GND | high ?? | |
35 | RB11 | in | bottom left sensor | GND | high ?? | |
36 | - | VSS | ||||
37 | - | VDD | ||||
38 | RA1 | out | ic16 – A | ? | 14051BG ic16 (pin 11 – A) | |
39 | RF13 | out | ic16 – B | ? | 14051BG ic16 (pin 10 – B) | |
40 | RF12 | NC | not connected | GND | ||
41 | RB12 | in | ic1 – X | ? | 14051BG ic1 (pin 3 – X) | |
42 | RB13 | adc | right wheel motor current sense | ? | ? | ? |
43 | RB14 | adc | left wheel motor current sense | ? | ? | ? |
44 | RB15 | out | ic1, ic2 – C | ? | 14051BG ic1, ic2 (pin 9 – C) | |
45 | - | VSS | ||||
46 | - | VDD | ||||
47 | RD14 | out | ic1, ic2 – B | ? | 14051BG ic1, ic2 (pin 10 – B) | |
48 | RD15 | out | ic1, ic2 – A | ? | 14051BG ic1, ic2 (pin 11 – A) | |
49 | RF14 | uart | RX ↔ accelgyro TX, also unknown port (pin 3) | GND | ||
50 | RF15 | uart | TX ↔ accelgyro RX, also unknown port (pin 2) | GND | ||
51 | RF3 | uart | TX ↔ linux board pin 9 | GND | ||
52 | RF2 | uart | RX ↔ linux board pin 8 | GND | ||
53 | RF8 | spi | data output | GND | not connected – WOOOHOOO! :( | |
54 | - | out | turn on power for accelgyro and linux board | ? | low | could have been spi data input, but wasted for some shit |
55 | - | in | rear left IR receiver | +3.3V | low | VIRTUAL_REAR_L |
56 | RG3 | NC | not connected | GND | free I2C SDA | |
57 | RG2 | NC | not connected | GND | free I2C SCL | |
58 | RA2 | I2C | EEPROM SCL | +3.3V | ? | also some micro IC 21 (pin 6) also R213 |
59 | RA3 | I2C | EEPROM SDA | ? | ? | ? |
60 | RA4 | out | side brushes | ? | ? | ? |
61 | RA5 | NC | not connected | GND | ||
62 | - | VDD | ||||
63 | RC12 | OSC | ||||
64 | RC15 | OSC | ||||
65 | - | VSS | ||||
66 | RA14 | in | docking receiver left | +3.3V | low | |
67 | RA15 | in | docking receiver right | +3.3V | low | |
68 | RD8 | in | left wheel motor encoder 1 | ? | ? | input capture |
69 | RD9 | in | left wheel motor encoder 2 | ? | ? | input capture |
70 | RD10 | in | right wheel motor encoder 2 | ? | ? | input capture |
71 | RD11 | in | right wheel motor encoder 1 | ? | ? | input capture |
72 | RD0 | out | motor left | ? | ? | A3950ST (pin 6 – enable) |
73 | RC13 | ? | unknown port pin 4 | ? | ? | ? |
74 | RC14 | NC | not connected | GND | ||
75 | - | VSS | ||||
76 | RD1 | out | main brush enable | ? | high | DRV8840 (pin 21 – ENABLE) |
77 | RD2 | out | enable charging ? | ? | ? | ? |
78 | RD3 | out | motor left | ? | ? | A3950ST (pin 6 – enable) |
79 | RD12 | out | enable bottom left/center/right sensors, ic2 – X | ? | ? | 14051BG ic2 (pin 3 – X) |
80 | RD13 | out | beeper | ? | ? | no pwm? wtf? |
81 | RD4 | out | ic16 – X | ? | ? | 14051BG ic16 (pin 3 – X) |
82 | RD5 | out | vacuum enable | ? | ? | |
83 | RD6 | in | Wheel lift left | +3.3V | low | low – robot is lifted |
84 | RD7 | in | Wheel lift right | +3.3V | low | low – robot is lifted |
85 | - | Vcap/Vcore | ? | ? | ? | ? |
86 | - | ENVREG | ? | ? | ? | ? |
87 | RF0 | in | dust box switch | +3.3V | low | low – dust box is inserted |
88 | RF1 | out | 7-Segment display colon | high | IK62783 (pin 8) | |
89 | RG1 | out | BATTERY LEDS | high | IK62783 (pin 7) | |
90 | RG0 | out | TWO UNKNOWN LEDS | high | IK62783 (pin 6), not connected | |
91 | RA6 | out | 5 LEDS | high | IK62783 (pin 5) | |
92 | RA7 | out | Number 1 | high | IK62783 (pin 4) | |
93 | RE0 | out | UNKNOWN LED 2-1, 7-Segment display top segment | high | ILN2003AD (pin 1) | |
94 | RE1 | out | UNKNOWN LED 2-2, 7-Segment display top-right segment | high | ILN2003AD (pin 2) | |
95 | RG14 | out | Number 2 | high | IK62783 (pin 3) | |
96 | RG12 | out | Number 4 | high | IK62783 (pin 1) | |
97 | RG13 | out | Number 3 | high | IK62783 (pin 2) | |
98 | RE2 | out | LED 1, 7-Segment display bottom-right segment | high | ILN2003AD (pin 3) | |
99 | RE3 | out | LED 2, 7-Segment display bottom segment | high | ILN2003AD (pin 4) | |
100 | RE4 | out | UNKNOWN LED 1-1, LED 3, BATTERY LED 1, 7-Segment display bottom-left segment | high | ILN2003AD (pin 5) |
White – turn on sensor, Yellow – analog signal
Pin | Type | Function | pullup/pulldown | active | Comment |
---|---|---|---|---|---|
X0 | in | right right IR sensor | ? | ? | OBS_1 |
X1 | in | middle right IR sensor | ? | ? | OBS_2 |
X2 | in | front right IR sensor | ? | ? | OBS_3 |
X3 | in | front IR sensor | ? | ? | OBS_4 |
X4 | in | front left IR sensor | ? | ? | OBS_5 |
X5 | in | middle left IR sensor | ? | ? | OBS_6 |
X6 | in | left left IR sensor | ? | ? | OBS_7 |
X7 | in | GND | not connected |
Pin | Type | Function | pullup/pulldown | active | Comment |
---|---|---|---|---|---|
X0 | out | right right IR sensor | ? | ? | OBS_1 |
X1 | out | middle right IR sensor | ? | ? | OBS_2 |
X2 | out | front right IR sensor | ? | ? | OBS_3 |
X3 | out | front IR sensor | ? | ? | OBS_4 |
X4 | out | front left IR sensor | ? | ? | OBS_5 |
X5 | out | middle left IR sensor | ? | ? | OBS_6 |
X6 | out | left left IR sensor | ? | ? | OBS_7 |
X7 | out | GND | not connected |
Why did they even bother to solder this?
Pin | Type | Function | pullup/pulldown | active | Comment |
---|---|---|---|---|---|
X0 | out | ? | ? | ? | S/M transmitter (through various resistors), not connected |
X1 | out | ? | ? | ? | S/M transmitter (through various resistors), not connected |
X2 | out | ? | ? | ? | S/M transmitter (through various resistors), not connected |
X3 | out | ? | ? | ? | S/M transmitter (through various resistors), not connected |
X4 | GND | not connected | |||
X5 | GND | not connected | |||
X6 | GND | not connected | |||
X7 | out | speaker |
Multiplexer frequency is about 28.25 Hz.
Weird IR pwm – 900 Hz (55% duty cycle? Probably just 50 Hz)
Linux ↔ PIC baud rate is 550400 (TODO or is it?)
MID_RECEIVER_R (SIGNAL, +5V, GND)
mode | consumption |
---|---|
idle | 200mA |
working | 1.15A |
working (without brushes) | 0.75A |
sleep | 80mA which is 25 hours with full battery under perfect conditions |
ICSP pins – CLOCK, DAT, MCLR, VCC, GND (same on charger)
Charger requires 350-1500 Ohm resistance between contacts.
P6 | LED 1 dim |
P7 | LED 3 dim |
P9 | all LEDS bright |
P10 | LED 1 and LED 3 dim |
P13 | LED 2 dim |
More Analyzer Dumps
File:samsung_charger.csv
File:samsung_charger.png
File:samsung-charger2.csv
File:samsung-charger2.png
-- Alexandr Boldin 2015-08-30 21:03 UTC
File:samsung_battery_log_edited.ods
-- Alexandr Boldin 2015-09-12 16:02 UTC
6E326
-- AlexDaniel 2015-09-12 20:16 UTC
SI-8008TMX real max output current 360mA (which leaves more than 1A for our stuff!)
-- AlexDaniel 2015-09-12 21:13 UTC
Funny:
-- AlexDaniel 2016-02-25 13:20 UTC
Interrupt priorities (higher number means more priority):
Timers:
-- AlexDaniel 2016-04-08 03:51 UTC