element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Smart Security and Surveillance
  • Challenges & Projects
  • Design Challenges
  • Smart Security and Surveillance
  • More
  • Cancel
Smart Security and Surveillance
Forum Sentinel Box - Part I - the plan
  • News
  • Projects
  • Forum
  • DC
  • Leaderboard
  • Files
  • Members
  • More
  • Cancel
  • New
Join Smart Security and Surveillance to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 1 reply
  • Subscribers 46 subscribers
  • Views 90 views
  • Users 0 members are here
  • security-challenge
  • analog-devices
  • rust
  • design-challenge
  • MAX32630FTHR#
Related

Sentinel Box - Part I - the plan

saramic
saramic 20 days ago

The Idea

My house has a problem every parent recognises: devices. Tablets, phones, controllers, earbuds as well as the odd jar of nutella, lollies and chocolate — the endless negotiation about screen time, bedtime, weekend limits and self control. As a family we have tried various self control mechanism, device only zones, apps and even a time locking container. All have been defeated. The closest was the time locking container, except that once set, there is no override - you lock your phone in for 2 days, that's it. Also it had poor battery life and not big enough to fit a laptop or block of chocolate.

Example of a time locking container next to a stash of things to lock but, the container is too small and the batteries have run out

The Smart Sentinel Box is a Perspex vault that physically locks devices inside, and can only be opened by a "complex" and orchestrated process of more than one party. The key is that it can be opened, just that more than one person needs to make that decision, someone with opening rights. The orchestrated part just means I can add more elaborate mechanisms as I learn to work with the MAX32630FTHR. Simple ones first — a button, finger print reader, a tap pattern — escalating to genuinely absurd ones: an audio quiz streamed from a cloud lambda, a TOTP NFC card that expires every 30 seconds, requiring both parents' fingerprints simultaneously, or a GPS geofence that locks the box if it gets carried to a different room. Maybe through in a wake word as well.

There's also a honeypot button — clearly labelled "EASY UNLOCK". It plays a fake unlocking sound, does nothing, and silently texts both parents. Kids will be furious.

The plan is to make the MAX32630FTHR the brain orchestrating everything around it.

Order placed and MAX32630 arrived

I was not lucky enough to get selected for a sponsored pack, but as I am new to the Element14 Design Challenge community, I didn’t want to give up that easy. I placed an order and the MAX32630 arrived. As I was waiting I was intrigued by all the not so trivial posts on the setup required to program the MAX32630. It seems that the platform is already EOL (End of life). I thought:

  • 1 Warning️ no USB-C port
  • 2 Warning️ platform is EOL
    • Analog Devices MAX32630
    • NOT RECOMMENDED FOR NEW DESIGNS
    • created almost 10 years ago - 2018 Maxim Integrated Products, Inc.

Too late now, dive in …

I was lucky that others had documented their setups, which seemed more complicated than I would like, like this one by skruglewicz 

  • Forum#2 - MAX32630FTHR Dev Environments - skruglewicz

  • 3 Warning️ works well with Mbed - EOL July 2026

    • https://os.mbed.com/blog/entry/Important-Update-on-Mbed/

It seems some people had luck with the Arduino IDE but I thought that maybe a last resort - I want my version control, plugins and AI that I have already connected to VSCode.

  • Programming the MAX32630FTHR with the Arduino IDE Alistair 

As the MAX32630 arrived, I had to get down to program it. I started with PlatformIO in VSCode as that has been my goto for Arduino and ESP32 projects. After a bit of pain, I could build it but I had no idea how to upload? there was a separate board for that? Going back to the Element14 community saved me having to read any manuals Thumbsup.

  • Forum Thread 2 EchoGuard – MAX32630FTHR Blink Nidhee 

OpenOCD

OpenOCD seems is what I needed, at this stage, I probably should have read the fine print of where this needs to come from. Again, I went for my preference to use Homebrew as a package manager and sure enough there was a brew install open-ocd package. After working out I need to power “both” boards and connect it to the programmer, I still got errors. Turns out I needed an AnalogDevices fork of the OpenOCD package. After some time, I installed it and it seemed to work - a flashing LED - that was a good 3 hours of pain, just to flash a red LED.

  • 4 Warning️ requires special fork of OpenOCD to work
    • NOT This one https://github.com/openocd-org/openocd/
    • THIS fork from Analog Devices Inc. https://github.com/analogdevicesinc/openocd

for those interested, here are my steps to get the AnalogDevices fork compiled and installed on a Mac OS (similar for linux Penguin maybe even WSL, Windows Subsystem Linux Penguin).

# get the code
git clone https://github.com/analogdevicesinc/openocd --depth 1
rm -rf openocd/.git
cd openocd

# install some libraries requierd for building the package
brew install autoconf automake libtool pkg-config libusb hidapi jimtcl

  # UNTESTED
  # "likely" equivalent if using linux
  sudo apt-get install -y \
    autoconf automake libtool pkg-config \
    libusb-1.0-0-dev libhidapi-dev libjim-dev

./bootstrap

# some configurations to deal with some harmless warning
./configure \
  --enable-cmsis-dap \
  --disable-xds110 \
  CFLAGS="-g -O2 -Wno-error=gnu-folding-constant"

make -j$(sysctl -n hw.ncpu)

# install like a boss into /usr/local/bin/openocd
sudo make install

Mbed

My first attempt was using the soon to be EOL Mbed system. It worked, but given it’s EOL status I wasn’t satisfied.

Maxim SDK

So next I was onto MSDK (Maxim which I worked out has dropped support for the MAX32630.

  • 5 Warning️ current MSDK does not support MAX32630
    • https://developer.analog.com/solutions/msdk support starts at the MAX32650 and it seems like MAX78000FTHR would be the way to go for some of the things I wanted to do like Multi-Keyword Recognition Face palm
  • 6 Warning️ not a modern platform - see MAX78000FTHR (circa 2020)

So it was back to the legacy LPSDK - (Low Power ARM Micro SDK). This took me on a number of mis adventures of massive installs and the like, that I thought there has to be another way, why not use Rust.

Rust

With the help of AI, I managed to get a build going. My custom built OpenOCD succeeded in pushing it onto the board and another flashing LED. Looking at the code was a bit tough, with snippets like

// raw register poke
(0x4000_A000 + 0x0080 + port * 4) as *mut u32).write_volatile(...)

Sounds like there is no HAL (Hardware Abstraction Layer) so if I want to use any GPIO, SPI, I2C, UART, Timers, ADC, I would need to write my own. The good thing is that for plain old GPIO there is not that much, just an offset of the address - so that part would just need a clean up. The bad thing is that AI said it would take 2-3 weeks to get that solid for full hardware support.

LPSDK (Low Power ARM Micro SDK)

Revisiting LPSDK, I worked out the install didn’t initially work. Now post install I have a blinking LED courtesy of the article.

  • Identity Protocol - Part 3 arvindsa 

Oh and this comes with, you guessed it, the correct OpenOCD in the toolchain - maybe I should have RTFM Books.

Why the MAX32630?

That is 6 warnings why not to build on this platform. I really wonder why this was chosen as the central piece of the design challenge - it’s not even cheaper to buy the hardware over newer revisions.

  1. Warning️ no USB-C port
  2. Warning️ platform is EOL
  3. Warning️ Mbed is EOL July 2026
  4. Warning️ requires fork of OpenOCD to work
  5. Warning️ not supported by current MSDK
  6. Warning️ there are comparable more modern platforms like MAX78000FTHR

Did I miss a memo? Still, I bought it now, and I need to build something ¯\_(ツ)_/¯ I need to get some credit on Element14 community!

My hardware list

So I have my MAX32630FTHR, on top of Tiny ML book to dream big with some wake word recognition. On the left some potential inputs like fingerprint reader, RFID, mmWave detector and on the right a motor, stepper motor and servo

  • time will tell what will come of this.

MAX32630FTHR on top of a Tiny ML book surrounded by RFID, Fingerprint, mmWave detectors and some motors for actuation

Hermetic Builds — Going Full Unix Purist

I’m a Unix philosophy purist at heart — small, composable tools that each do one thing well. So naturally I wanted to push the Rust experiment further and pursue a fully hermetic, reproducible build pipeline with zero click-ops.

The goal: infrastructure as code, end to end. git clone && mise run build on a fresh machine — no proprietary SDK downloads, no vendor portals requiring account creation, no DMG files opened with a mouse. Every dependency declared, every tool pinned, every flash command scripted.

Vendor-agnostic. SDK-free. GitOps-driven. Bare-metal Rust.

Where the LPSDK path requires a manual download from Analog Devices behind a login wall, and Mbed is hurtling toward EOL, the Rust path gives us a fully open, bootstrappable toolchain: rustup, cargo, arm-none-eabi via the Rust target system, and OpenOCD from source. No mouse required. No account required. No 6 GB installer required.

NOTE: arm-none-eabi is the GNU cross-compiler toolchain designed for building “bare-metal” applications on 32-bit and 64-bit Arm Cortex-M, Cortex-R and other embedded processors.

NOTE: arm-none-eabi supports C and C++ but Rust Crab is “cool” Sunglasses

https://developer.arm.com/downloads/-/gnu-rm

The results for a hermetic build with LED blink were optimistic

Platform build from scratch
Mbed ~ 95 sec ? ~ 30 min
(Via PlatfromIO install)
LPSDK ~ 6 sec ? ~ 60 min
(LPSDK signup download and install)
Rust Crab ~ 5 sec ~ 15 sec
with clear cache
rm -rf ~/.cargo/registry ~/.cargo/git

In pursuit of this zero click-ops embedded development dream — I decided to continue a little bit more with the Rust build.

Some output

All projects need some input and some output. Not having a Würth Elektronik Featherwing ICLED Display I got the closest thing I had, an old MAX7219 serial LED dot matrix display to the MAX32630FTHR. This was a brilliant moment, I pulled out my soldering iron and soldered on the header pins - It’s been a while since I have melted some solder and it felt good.

But before I could code something, I needed to find a bug in my Rust code. It didn’t run after a cold start, only after the Mbed code had run. This took me down a rabbit hole of looking at MAX14690 PMIC (Power Management IC). It seems that my code in either the LPSDK nor the Rust was configuring that so I needed to write some bits and bytes in there just for it to work post power up.

A bunch of vibe ٭ coding and a pmic_init function later and it worked. At this point I didn’t care too much what was in there, some I2CM and LDO registers being set - off I go. Now I vibe some code, connect and nothing - no smoke Dash which is good but finally pulling out the multimeter and checking the pins shows me that 3V3 ain’t 3V3 Thinking I mean I never even thought that these things are configurable. Well sounds like they are.

as the brochure says

The board also includes the MAX14690 wearable PMIC to provide optimal power conversion and battery management.

Well it seems like that is configurable and following my code I realised that my first pmic_init implementation even had a comment

// (mbed only writes LDO2; LDO3 omitted here to match the reference exactly.)

Guess what LDO3 (Low Dropout Regulator) is - it’s the 3V3 pin

So to get an output voltage of 3.3V on the the MAX14690 PMIC’s LDO (Low Dropout Regulator) you need to:

Register_value = (V_desired - V_min) / step_size
Example: (3300 - 800) / 100 = 25

25 in HEX is 0x19

and set it in code where

  • 0x16 (LDO3_CFG): Register to enable/configure LDO3.
  • 0x17 (LDO3_VSET): Register to set the output voltage for LDO3.

// LDO2_VSET: (3300 - 800) / 100 = 25 = 0x19
const LDO2_3300MV: u8 = 0x19;

  ...

  // LDO3 powers the expansion header 3V3 rail — needed for external
  // peripherals.
  pmic_write(0x17, LDO_3300MV);  // LDO3_VSET
  pmic_write(0x16, LDO_ENABLED); // LDO3_CFG

MAX32630FTHR driving a MAX7219 serial LED matrix

Success, I have my Unix purist, hermetic build in Rust with an external peripheral and a whole bunch of half knowledge on PMIC and bit pushing logic I am pretty sure I don’t need, time will tell.

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

Next

It may be time to give up the Rust experiment, once I set the 3V3 pin to 3.3V, it no longer starts my program from a cold start, oh well.

Otherwise, I am pretty sure that with basic GPIO control, I can drive a stepper motor and similar but to get any sort of security element into this project, I really need to connect to something like the finger print reader I have.

Source

https://github.com/saramic/sentinel-box

  • Sign in to reply
  • Cancel
  • DAB
    DAB 19 days ago

    Cool project.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube