Creator Ray
Version 1.0.1
Created 2025-10-14
Availability 100%, 24/7
Assets 10 files
Install this molecule

Paste this into Claude Code (VS Code panel, Adom editor, or terminal) to install:

Search the Adom Wiki for the molecule "BHI360 Molecule v11" (slug: bhi360-molecule-v11-137000) at https://wiki-ufypy5dpx93o.adom.cloud/wiki/molecules/bhi360-molecule-v11-137000. Download its symbol (.kicad_sym), footprint (.kicad_mod), and 3D model (.glb/.step) assets into my current KiCad project under symbols/, footprints/, and 3dmodels/ directories. Register them in the project library tables. Show me the files once installed.

BHI360 + BMM350 Combo Molecule — Hardware Reference

16×16 mm combo breakout carrying a Bosch BHI360 smart-sensor hub (9-DOF fusion engine) and a BMM350 magnetometer on the BHI's internal auxiliary I²C bus. This is the target board for fw_arm's BHI360 combo sensor (sensor_id 0x30 in the wire protocol).

Mechanical/electrical twin: the Molecule_BHI385-BMM350 board is identical in layout and component placement. The only difference between the two is the IC itself (BHI360 vs BHI385) and the address strap the end user should apply. If a pair of combo modules is unlabelled, trust the silkscreen title (BHI360+BMM350 vs BHI385+BMM350) and the date stamp.

Component summary

RefPartFunction
U1BHI360Smart-sensor hub — ARM Cortex-M4, runs Bosch fusion firmware
U2BMM3503-axis magnetometer on U1's aux I²C bus — not on the external bus
C1, C5100 nF 0402VDDIO decoupling
C2, C6100 nF 0402VDD decoupling
C3VREG bypass (0603)BHI360 internal regulator
C42.2 µF 0805BMM350 CRST reset cap
R110 kΩ 0402HCSB default pull-up to +VDDIO (holds I²C mode)
R210 kΩ 0402BMM aux-bus SCK pull-up to +VDDIO
R310 kΩ 0402BMM aux-bus SDA pull-up to +VDDIO
R4LED current-limit 0402For D1 (BHI_LED)
R510 kΩ 0402Default pull-up on MC12 strap → +VDDIO
D1LED 0402Activity LED driven by BHI_LED pin (programmable via firmware)

External contact map

West edge (X=144)

RefSilkNetRole
MP3+VDD+VDDBHI core rail — 1.71–1.89 V (1.8 V only)
MC6JTDIOBHI_JTSG_DIOJTAG data I/O — for factory debug, leave floating
MC1RSTBHI_RSTActive-low external reset — leave floating or pull high
MC10GNDGNDGround tap
MC7M3SDABHI_M3SDACortex-M3 debug SDA — leave floating
MC8M3SCLBHI_M3SSCL/JTAG_CLKCortex-M3 debug SCL / JTAG clock — leave floating
MC14HCSBBHI_HCSBInterface strap — default high via R1 (I²C mode)
MC9SPIGNDSPI-select strap — bridge MC14 ↔ MC9 to pull HCSB low (forces SPI)
MP1GNDGNDGround

East edge (X=160)

RefSilkNetRole
MP2+VDDIO+VDDIOLogic rail — 1.72–3.6 V
MC2HIRQBHI_HIRQBHI host interrupt (active-low by default)
MC5HSCLBHI_HSCXI²C SCL to the BHI
MC4HSDABHI_HSDXI²C SDA to the BHI
MC120x28(floating, pulled up by R5)Address strap — bridge MC12↔MC3 to select 0x28
MC3HSDOBHI_HSDO/0x29/0x28SDO / address-select pin of the BHI
MC14HCSB(see west)(listed on west, repeated here for reference)
MC110x29GNDAddress strap — bridge MC11↔MC3 to select 0x29
MP4GNDGNDGround

I²C address strap (critical)

The BHI360's I²C slave address is set by HSDO at power-up. On this molecule, HSDO (MC3) is routed between two strap pads:

StrapHSDO tied toI²C address
Bridge MC12 ↔ MC3 (silk 0x28)+VDDIO (HIGH — via R5)0x28required for this molecule
Bridge MC11 ↔ MC3 (silk 0x29)GND (LOW)0x29 (for the BHI385 sibling molecule)

Schematic annotation on the board: "HSDO (I2C ADD Select). Jumper to GND (LOW): 0x29. Jumper to VDDIO (HIGH): 0x28. Reset Active-LOW."

This convention is opposite to the BMI270 (where SDO→GND gives the lower address). The BHI hub uses the inverted mapping internally; don't port an address rule from BMI270 over to BHI and expect it to work.

For this BHI360 molecule: solder-bridge MC12 to MC3 so the firmware finds it at 0x28. On its sibling BHI385 molecule, bridge MC11 to MC3 for 0x29 instead.

Interface strap (HCSB — I²C vs SPI)

HCSB stateMode
Floating / pulled high (default via R1)I²C
Bridge MC14 ↔ MC9 (silk SPI)SPI (active-low select)

Leave unbridged for I²C.

Aux I²C bus (BMM350 — internal)

U2 (BMM350) is wired to U1's auxiliary I²C master:

BMM350 pinU1 (BHI360) pin
SDA (A2)BHI M_SDA (pin 2)
SCK (A3)BHI M_SCK (pin 3)
INT (A1)BHI M_INT (pin 10)
ADSEL (B2)GND — fixed on-board via net +VDDIO pull tap only on standalone BMM350

Schematic text on this molecule: "ADSEL (Legacy I2C Add): GND = 0x14" — confirms the on-board BMM350 is strapped to 0x14 on the aux bus. The BHI360 firmware blob (Bosch_Shuttle3_BHI360_BMM350C.fw) expects to find the mag at 0x14 on its aux master, so this matches.

The aux BMM350 is not visible on the external I²C lines. The host only sees the BHI hub at 0x28. Magnetometer samples come out of the BHI fusion engine as virtual-sensor outputs.

Power

RailVoltageSource
VDD (BHI core + BMM core)1.71–1.89 V1.8 V rail (shared with BMM350 and BHI385 VDD)
VDDIO (both ICs)1.72–3.6 VHost 3.3 V via MP2

Schematic annotation: "BHI360: VDD 1.71–1.89 V, VDDIO 1.72–3.6 V, Turbo Mode 2.8 mA, Typical 0.95 mA." Typical active current for the hub alone is ~0.95 mA, peaking at 2.8 mA during firmware RAM upload / turbo mode.

Firmware upload

First-time boot requires the host to upload a firmware blob to the BHI360's SRAM via I²C. For this combo we use Bosch_Shuttle3_BHI360_BMM350C.fw (the Shuttle3-board fused firmware — BHI360 + BMM350 as 9-DOF virtual sensors). The blob is vendored in firmware/sensors/bhi360_sdk/Bosch_Shuttle3_BHI360_BMM350C.fw.h.

Upload flow (already wired in fw_arm):

  1. Host sends UPLOAD_BEGIN frame (sensor_id 0x30, blob size, CRC32).
  2. Arm RM2 calls bhy2_upload_firmware_to_ram() (Bosch BHY2 SDK) over I²C.
  3. Host streams UPLOAD_CHUNK frames.
  4. Host sends UPLOAD_END; arm responds with UPLOAD_STATUS containing CRC check result.
  5. Firmware boots from RAM and the BHI360 starts exposing virtual-sensor IDs (accel, gyro, mag, orientation, rotation vector, gesture detectors, etc.).

Interrupt + LED

  • HIRQ (MC2): BHI → host interrupt line. Active-low. Signals FIFO not empty or async events. The fw_arm BHI driver polls by default, so wiring HIRQ is optional, but pulling in HIRQ enables efficient low-latency FIFO draining.
  • LED (D1): driven off-board by the BHI's LED pin; programmable via firmware. Useful "is the chip alive?" indicator during bring-up.

Wiring to the Arm RM2 I²C bus

Combo MP3 (VDD)  ──── +1.8 V rail
Combo MP2 (VDDIO)──── RM2 +3V3
Combo MP1 (GND)  ──── RM2 GND       (MP4 is a second GND tap — parallel OK)
Combo MC4 (HSDA) ──── RM2 GPIO4 (I²C0 SDA, shared bus)
Combo MC5 (HSCL) ──── RM2 GPIO5 (I²C0 SCL, shared bus)
Combo MC2 (HIRQ) ──── (optional GPIO; enables IRQ-driven FIFO drain)
Combo MC1 (RST)  ──── (optional GPIO, or tie to +VDDIO through 10 kΩ)

Solder-bridge MC12 ↔ MC3 (strap to VDDIO / silk 0x28).

Leave unconnected: MC6 (JTDIO), MC7 (M3SDA), MC8 (M3SCL), MC9 (SPI), MC11 (0x29 strap), MC14 (HCSB).

Gotchas for firmware bring-up

  • Address strap is non-obvious and non-standard. Bridge MC12↔MC3 on the BHI360 board (gives 0x28). The silk label "0x28" is on MC12 and the board's behavior depends on you actually making that bridge.
  • VDD = 1.8 V only (shared with the BHI385 and standalone BMM350).
  • No external I²C pull-ups on this molecule — rely on the main bus pull-ups. R2/R3 are on the internal aux bus, not the external bus.
  • RST (MC1) is active-low. If you wire it up, default it high. Never drive it high; use an open-drain driver or tie to +VDDIO via 10 kΩ.
  • Firmware blob upload takes ~1–2 seconds — during that window, no other I²C traffic should hit this sensor. The fw_arm dispatcher enforces this with a SELECT lock.
  • Aux BMM350 is captive to U1's fusion engine — you cannot talk to it directly. If you need raw magnetometer data at non-fused rates, use the standalone BMM350 molecule on the same bus at 0x15.
  • The JTAG / M3 contacts (MC6, MC7, MC8) are for Bosch factory debug. Do not connect them to GPIOs in the demo. Leave floating.

Description

Edit AI Skill

Molecule: BHI360 Molecule v11 (imported from Curium S3)

Files

Download ZIP
PCB BHI360.fbrd PCB Board
F3D BHI360.f3d Fusion 360
SCH BHI360.fsch Schematic
AR BHI360.usdz AR Model

Source files

GLB Molecule_BHI360-BMM350_bosch_v1.glb
BHI360+BMM350 combo 3D model (KiCad-generated)
glb 2.4 MB
USDZ BHI360.usdz usdz 1.2 MB
ZIP BHI360_Molecule_v11_gerbers.zip
Gerber Manufacturing Files
gerbers 52.4 KB
CSV bom.csv bom 457 B
CSV cpl.csv cpl 534 B
STL BHI360.stl stl 4.1 MB
STEP BHI360.step step 4.7 MB
SAT BHI360.sat sat 7.5 MB
IGS BHI360.igs igs 8.8 MB
F3D BHI360.f3d f3d 2.3 MB
FBRD BHI360.fbrd fbrd 38.1 KB
FSCH BHI360.fsch fsch 32.5 KB
PNG board-screenshot.png
Board Screenshot
screenshot 738.6 KB
3MF BHI360.3mf 3mf 1.2 MB
PNG assembly_top.png
Assembly Top
screenshot 63.8 KB
PNG assembly_bottom.png
Assembly Bottom
screenshot 63.8 KB
PNG board_outline.png
Board Outline
screenshot 63.8 KB
PNG top_copper.png
Top Copper Layer
screenshot 63.8 KB
PNG bottom_copper.png
Bottom Copper Layer
screenshot 63.8 KB
PNG fabrication.png
Fabrication Drawing
screenshot 63.8 KB
PNG 3d-top.png
3D Top View
screenshot 528.5 KB
PNG 3d-bottom.png
3D Bottom View
screenshot 350.2 KB
PNG 3d-left.png
3D Left View
screenshot 90.5 KB
PNG 3d-right.png
3D Right View
screenshot 96.6 KB
PNG 3d-board.png
3D Board View
screenshot 289.2 KB
PNG 3d-front.png
3D Front View
screenshot 105.5 KB
PNG 3d-back.png
3D Back View
screenshot 89.1 KB

AI Skill Technical Reference

Edit AI Skill

BHI360 Molecule v11

Type: Adom Molecule Creator: kcknox Version: v1 Category: other Availability: 100%, 24/7

Overview

Molecule: BHI360 Molecule v11 (imported from Curium S3)

Integration Guide

To use BHI360 Molecule v11 in your design:

  1. Download the schematic symbol and PCB footprint from the Files section
  2. Import into your EDA tool (KiCad or Fusion 360 / EAGLE)
  3. Place the molecule in your schematic and connect the interface pins
  4. Use the 3D model (.glb) for mechanical fit verification

Design Notes

Board design files (.brd, .sch, .f3d) are available for modification and reference.

Sub-Skills
?
What are Sub-Skills?

Sub-skills are community-contributed AI skill extensions for this component. They teach AI assistants about specific tools, configurators, or workflows.

Examples:

  • A manufacturer’s configuration tool for a motor controller
  • A community-written design guide for an amplifier circuit
  • An automated test/validation script for a sensor module

How to add one: Click Add Sub-Skill, provide the URL to your skill and a brief description. Submissions are reviewed by the Adom team before going live.

No sub-skills yet. Be the first to contribute one!

2 revisions · Molecule #8975450008581137000 · Updated 2026-04-17 19:39:31