Available UI - HiveBoard
The HiveBoard has multiple indicators to help the user debug its configuration or its application.
Purple dots/Test points
-
Load switch Output
-
Ground test point
-
3.3V debugger
-
3.3V channel
-
Synchronisation signal. This test point has a ground pad right beside it for convenience
-
3.3V clock
-
USB line towards the debugger from the hub. This is a differential test point.
-
USB line towards the STM32H7 from the HUB. This is a differential test point.
-
USB line towards the hub from the connector. This is a differential test point.
A. 3.3V ESP32-WROOM
B. 3.3V ethernet
C. 5V entry
D. 3.3V
E. USB detection circuit
F. 5V connector (Jack and terminal)
G. 5V USB
Green stars:
Orange triangles, from top to bottom of the image:
- Channel enable (green LED) x6
- Channel fault (red LED) x6
- HeartBeat LED (green)
- MCU0 LED (green), user LED
- MCU1 LED (green), user LED
- MCU2 LED (green), user LED
- 3.3V LED (green)
- 5V LED (green)
Red rectangles, from left to right:
- Buttons for FTDI, MCU and WROOM reset
- JTAG jumper, these jumpers shall stay in place if you want to use the on board debugger.
- Input/Output expander button
- Mezzanine connector, 100 mils
- 3.3V
- 5V
- GND
- GND
- SPI_CLK
- UART_Rx
- SPI_MISO
- UART_Tx
- SPI_MOSI
- GND
- GND
- ADC1_P
- I2C_SCL
- ADC1_N
- I2C_SDA
- GND
Dark blue rectangles are DIP switches and are explained here
Hardware
These are the UI elements that are worth mentioning on a physical HiveBoard:
ID on board | Description |
---|---|
LED RGB | HiveMind comm interface |
WROOM RGB | Networking Status LED (ESP-32) |
LED HB | HiveMind heartbeat |
LED MCU_0 | HiveMind and HiveConnect handshake |
LED MCU_1 | HiveMind and Host handshake |
LED MCU_2 | User LED |
LED 3.3v | 3.3V is properly powered |
LED 5V | 5V is properly powered |
7 segment 1 | BBVM status |
7 segment 2 | User 7 segment |
Power Switch
The HiveBoard can be powered either via a 5V supply plugged into the black barrel connector or via the micro-USB plug. The power switch allows you to decide from where to take the power. The CON position instructs the boad to draw power from the barrel connector, while the USB position has the power drawn from the USB connector.
Note
Even if the power switch is on CON, the USB port still works and can be used to communicate with the board
Important
When powering the board by USB, no enough power is available to power all sub-circuits. The DIP Switches allow you to decide what to enable or disable.
DIP Switches
Because the board can draw up to 4 A and a USB connection is limited to 500 mA, DIP switches are available to disable sub-circuits that are not needed in order to fit in the power requirements. The switches only take effect when powered by USB. If powered from CON, all circuits are always enabled.
Error
The DIP switches are inverted in the first version of the HiveBoard. So when a switch is at the ON position, power is disabled to the given sub-circuit.
Four different circuits are controlled from the switches:
- DEBUG: Controls the chip responsible for flashing/debugging the microcontrollers as well as create serial ports needed for logging
- WROOM: Controls the ESP32 responsible for Wi-Fi communication
- CHANNEL: Controls the channel hardware (this is very power hungry and probably should never be turned on while on USB)
- ETHERNET: Controls the Ethernet port and associated hardware
In a normal usage, when plugged into a phone, all DIP switches other than WROOM should be on the ON position. This way, only the STM32 and the ESP32 are powered.
Reset Buttons
Three reset buttons are provided on the left hand side of the board. Each one performs a hardware reset of the specified chip.
- FTDI: Chip responsible for flashing/debugging the microcontrollers as well as create serial ports needed for logging
- MCU: The main STM32 microcontroller
- WROOM: The ESP32 responsible for Wi-Fi communication
Error
The WROOM reset button currently only works if the ESP32 logging serial port is opened (usually ttyUSB3).
Channel EN / FLT LEDs
Every BeeBoard channel has two LEDs associated with it. A red FLT and a green EN. Only one of the LEDs is on at any given time. A red LED means no power is currently being delivered to the channel, while the green LED means power is being delivered.
Enablement of power to a given channel is done through the code depending on which channels have BeeBoards plugged in at bootup. If multiple BeeBoards are plugged in, when powering the board up, you should see each channel that has a BeeBoard plugged in turn from red to green. If one of the channels does not change, consider testing with a different BeeBoard or USB-C cable to find the culprit.
Note
Before a proper HiveMind firmware is flashed to the STM32, you may notice that some channels boot up as enabled even without a BeeBoard. This is because the line controlling the enablement of the channels is floating and must therefore be pulled down by the STM32 code (HiveMind).
LED RGB
- HiveMind Comm Interface
Displays the status of the comm interface. Note that this means the comm interface is opened, not that the two devices communicate. They need to do a handshake after opening the interface. Thus a connection is fully established when the RGB is of color teal or blue and LED MCU_1 is on. If you plug the Ethernet or USB cable and the LED is not changing, make sure the TCP ports for Ethernet or the COM ports for USB match the ones that are open on the host.
The RGB LED can take the following colours:
Colour | State |
---|---|
White | Booting |
Violet | Unconnected |
Blue | Connected via Ethernet |
Teal | Connected via USB |
Red | Error |
LED WROOM RGB
- Networking Status LED (ESP-32)
This RGB LED informs on the status of the Wi-Fi network. Refer to the Wi-Fi Configuration instructions for the configuration procedure.
This RGB LED can take the following colours:
Colour | State |
---|---|
Green | Connected to an existing network |
Yellow | Connecting |
Teal | Access point available (is router) |
Red | Not Connected |
LED HB
- HiveMind Heartbeat
The heartbeat of the HiveMind indicates that the firmware runs normally. In normal operation, this LED flashes at 1 Hz. If this LED is not flashing, HiveMind is probably in a hard fault state. This should not happen in theory, but things can always go wrong. Make sure everything is up to date and then you can consider raising an issue in the HiveMind repo if the issue wasn't already raised.
LED MCU_0
- HiveMind and HiveConnect Handshake
Shows if the HiveMind and the HiveConnect completed their handshake successfully. If the LED is not turned on after bootup, make sure everything is up to date (check versions of HiveMind and HiveConnect) and that the ESP power DIP switch is enabled.
Error
The DIP switches are inverted in the first version of the HiveBoard. So ON actually disables it.
LED MCU_1
- HiveMind and Host Handshake
Shows if the HiveMind and the host completed their handshake successfully. If the RGB LED is on, but not MCU_1
, make sure everything is up to date. This may be caused by an incompatible version of Pheromones (or Propolis that used the wrong Pheromones version). These two libraries are used by various elements of the stack (HiveMind, HiveMindBridge, HiveAR), and they must imperatively have matching versions.
LED MCU_2
- User LED
LED that can be set in the Buzz script via ui.set_led(x)
. Use this to know the state of you application for easier debugging. You can get more information in the led blink user guide. The complete API documentation can be found here.
LED 3.3V
Is on if the 3.3V power supply is working properly. Check the power requirements if it's not on.
LED 5V
Is on if the 5V power supply is working properly. Check the power requirements if it's not on.
7 segment 1 - BBVM status
The status of the BBVM, in which your Buzz code is run.
If it's 0, the VM, is running fine. If it's a non zero value. The value represent the error code via an enumeration.
The values of the enumeration can be found here. If you want more information about the error code meaning, you can check the BittyBuzz repo.
7 segment 2 - User segment
A segment that can be set in the Buzz script via ui.set_hex(x)
. Use this to have information about the state of your swarm application. You can get more information in the led blink user guide. The complete API documentation can be found here.
ROS
When simulating the usage of a HiveBoard on a computer, HiveMind will simulate the lower-level hardware stack using ROS (see HiveMind's readme). This configuration replicates the interface of the HiveBoard via ROS logging system. Everytime something is written on the rosconsole, a string is prepended with the state of the HiveMind. The prepended string should be similar to:
[HM: Id] [UI: rgb: V led: 000 hex: 01]
-
The
rgb
is expressed via the first letter of its color. -
The
led
represents the MCU 0, 1 and 2 (handshake HiveConnect, handshake Host, user LED). -
The
hex
represents the 7 segments (VM state at the left and user 7 segment at the right).