<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Forum - Recent Threads</title><link>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><lastBuildDate>Sat, 09 May 2026 04:21:03 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum" /><item><title>Part 2 Tracking Sentry: Components and Design Plan</title><link>https://community.element14.com/thread/56927?ContentTypeID=0</link><pubDate>Sat, 09 May 2026 04:21:03 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b9e48a6a-8d94-4cef-9a50-b5d48ad1e1e1</guid><dc:creator>adam_k</dc:creator><slash:comments>3</slash:comments><comments>https://community.element14.com/thread/56927?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56927/part-2-tracking-sentry-components-and-design-plan/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p style="font-weight:400;"&gt;&lt;span style="font-size:inherit;"&gt;Bit late to get started, I know, but unavoidable given exams and travel commitments. Thankfully I&amp;rsquo;ve found myself with some free time and all the components I ordered have arrived so should be smooth sailing from now on (sarcasm).&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;span style="font-size:inherit;"&gt;This is my second post so I&amp;rsquo;ll start with a reminder of what my project is, walk through the components I&amp;rsquo;ve chosen for it, get into some specifics, then explain my action plan and potential challenges ahead.&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;span style="font-size:150%;"&gt;&lt;strong&gt;The Project&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;span style="font-size:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;span style="font-size:inherit;"&gt;My project is essentially a two-node autonomous security system. Node A includes a camera and stepper motor to pick up movement and follow a target. It also uses the board&amp;rsquo;s in-built IMU to detect when it is being tampered with. This data is then sent via Bluetooth to Node B &amp;ndash; the &amp;lsquo;command station&amp;rsquo;. This receives the alert (movement or tampering), and outputs the relevant signal on the LED board. It should also log the incident to the main computer using a simple Python server.&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;The Components&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;strong&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1778300324598v1.jpeg" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;I was lucky enough to win the nomination and receive many components for free. My proposal was based around this and I try to incorporate as many elements of these as possible within my design. Others were ordered specifically for the project and I also take advantage of my existing inventory.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;strong&gt;The motor&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;This is essential for my camera to pan and track targets. Otherwise it is just a stationary camera which is not very useful nor creative. I decided a NEMA 17 motor would be most useful for my project and ordered one along with a steel mounting bracket for stability. At least that was the intention and have since come to find the bracket may act more as dead weight than anything useful. Well at least it looks nice. I also ordered a 5mm coupling for the motor shaft, allowing me to directly mount components on top of the motor. Probably avoided in industry but works fine for this.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;The stepper motor is driven with the included ADA2927 driver. Two are included but only one is needed. This is powered from a wall AC &amp;ndash; 12V 1 A adapter, split into two terminals with a DC barrel jack &amp;ndash; 2 pin connector. Slightly concerned by the 12W output but may be acceptable for a single NEMA 17 motor not needing much torque.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;strong&gt;The camara (and rest of Node A)&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;I am using the Arducam Mini 2MP Plus OV2640. Should be able to suitably take power from our setup and send data to the Node A MAX32630FTHR#. The camera should provide suitable on-board compression to allow the board to process frame differences to detect movement and drive the motor. The IMU should also work to detect tampering (IMU triggering disabled during motor movement to eliminate false detections). Given unfortunate time constraints there won&amp;rsquo;t be SD storage. State information and times are sent to Node B via Bluetooth. States being &amp;ldquo;connection&amp;rdquo;, &amp;ldquo;movement&amp;rdquo; and &amp;ldquo;tampering&amp;rdquo;. No connection could display static or something on the LED matrix. This just makes it look more engaging than just having a single LED light up to imply a state. Data should be sent to the computer to log state and timing information. The board on A will be powered directly with a 3.7V lithium battery.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;strong&gt;Node B&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;This is pretty straightforward. Just another board connected to an LED matrix display. Either the CharliePlex FeatherWing 7x15 or the W&amp;uuml;rth Elektronnik ICLED Featherwing. If feasible within time constraints the Ethernet adapter will also be included. Since this is intended as the &amp;lsquo;command station&amp;rsquo; we can just power it using USB from the computer.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;strong&gt;Other stuff&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;There are some other components included such as the FTHR-PMD-INTZ Adapter which is likely necessary. I also have a couple 9V batteries, breadboards, wires, jumper wires, wire strippers, and a Leatherman Wave (very useful) which will all be incorporated.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;span style="font-size:150%;"&gt;&lt;strong&gt;The Plan&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;Time is very limited for me but there&amp;rsquo;s no point jumping in trying to get to the final design immediately. I plan to build this up in stages and test parts individually before putting it all together.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;I&amp;rsquo;ll first start by getting one of the boards to display patterns on the LED matrix. This shows I can get the board powered up properly and code running. Then I&amp;rsquo;ll try triggering this by a Bluetooth signal from the other board. Then I&amp;rsquo;ll set up Node A to control the motor to angle the camera. Perhaps the trickiest I&amp;rsquo;ll attempt to get the camera module feeding data to the board, have the board analyse the frames, and use the analysis to direct the camera towards movement. If by miracle this all works well then I should be able to integrate this all together in addition with the IMU detection.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;span style="font-size:150%;"&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;I have a clear plan ahead now and am excited for the days to come. To be honest I am a little nervous about this not working out perfectly within the time constraints but I hope to have something running to demonstrate, even if it means some deviation from the original plan. I&amp;rsquo;ve worked on more complex stuff before though&amp;nbsp;not in the same time constraints. Regardless, it will be a learning experience and I will be documenting the whole process. The free socks are also appreciated!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Guardian Sentinel &lt;Part 4&gt; — The Slave</title><link>https://community.element14.com/thread/56926?ContentTypeID=0</link><pubDate>Sat, 09 May 2026 00:29:33 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:fc5e9ec3-a60b-4e37-8a68-33f83d7bfee5</guid><dc:creator>meera_hussien</dc:creator><slash:comments>3</slash:comments><comments>https://community.element14.com/thread/56926?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56926/guardian-sentinel-part-4-the-slave/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h1 id="mcetoc_1jo48kj5u0" style="text-align:center;"&gt;&lt;span style="font-size:200%;"&gt;&lt;strong&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;Guardian Sentinel - The Slave&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 style="text-align:center;"&gt;&lt;span style="font-size:200%;"&gt;&lt;strong&gt;&amp;lt;Part 4&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:inherit;"&gt;For the slave, i decided to use the similar setup, hence i decide to use the FeatherWing Tripler Mini Kit.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260509_2D00_004431.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The following image shows the header pins being soldered&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h1 id="mcetoc_1jo48kj5u2" class="products_name"&gt;&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260509_2D00_011410.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260509_2D00_012550.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;Once finish soldering, I place the MAX32630FTHR in the middle.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260509_2D00_013701.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;Followed by the FTHR-PMD-INTZ Feather-to-PMOD&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260509_2D00_013753.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;Which is place to the right of the MAX32630FTHR&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260509_2D00_013838.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;For further info on the&amp;nbsp;&lt;span&gt;FTHR-PMD-INTZ Feather-to-PMOD&lt;/span&gt; click &lt;a href="https://wiki.analog.com/resources/eval/user-guides/circuits-from-the-lab/fthr-pmd-intz" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;here&lt;/a&gt;.&amp;nbsp; Following that, i place the DC Motor + Stepper FeatherWing Addon.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260509_2D00_013917.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Which is place to left of the MAX32630FTHR&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;"  height="363" src="https://community.element14.com/resized-image/__size/1290x726/__key/communityserver-discussions-components-files/452/20260509_2D00_015816.JPG" width="645" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260509_2D00_015853.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;To ensure all the three boards are connected, i did the i2C scanner and below are the result&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;#include &amp;lt;Wire.h&amp;gt;

void setup() {
  Serial.begin(115200);
  while (!Serial);

  Serial.println(&amp;quot;MAX32630FTHR I2C Scanner&amp;quot;);
  Wire.begin();
}

void loop() {
  byte error, address;
  int devices = 0;

  Serial.println(&amp;quot;Scanning I2C bus...&amp;quot;);

  for (address = 1; address &amp;lt; 127; address++) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print(&amp;quot;I2C device found at address 0x&amp;quot;);
      if (address &amp;lt; 16) Serial.print(&amp;quot;0&amp;quot;);
      Serial.println(address, HEX);
      devices++;
    }
  }

  if (devices == 0) {
    Serial.println(&amp;quot;No I2C devices found.&amp;quot;);
  } else {
    Serial.print(&amp;quot;Total devices found: &amp;quot;);
    Serial.println(devices);
  }

  Serial.println();
  delay(3000);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;and the result from the serial monitor is shown below&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:345px;max-width:764px;"  height="345" src="https://community.element14.com/resized-image/__size/1528x690/__key/communityserver-discussions-components-files/452/pastedimage1778286221638v1.png" width="764" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;In the next post we shall see on interfacing with sensor and motor.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Guardian Sentinel  &lt;Part 3&gt; — Ethernet &amp; BLE</title><link>https://community.element14.com/thread/56925?ContentTypeID=0</link><pubDate>Fri, 08 May 2026 09:37:37 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:62624e19-ec95-481b-87ee-c29a2d948aa3</guid><dc:creator>meera_hussien</dc:creator><slash:comments>3</slash:comments><comments>https://community.element14.com/thread/56925?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56925/guardian-sentinel-part-3-ethernet-ble/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h1 id="mcetoc_1jno19ikt0" style="text-align:center;"&gt;&lt;span style="font-size:150%;"&gt;&lt;strong&gt;Guardian Sentinel &amp;mdash;&amp;nbsp;Ethernet &amp;amp; BLE&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 id="mcetoc_1jno19ikt1" style="text-align:center;"&gt;&lt;span style="font-size:200%;"&gt;&amp;lt;Part 3&amp;gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;In the previous post we have seen about how to program the MAX32630FTHR and the OLED. In this post we shall see how to configure the ethernet and the BLE.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jno19ikt2"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;text-decoration:underline;"&gt;&lt;strong&gt;Ethernet&lt;/strong&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;span style="font-size:150%;"&gt;Since we are using the ethernet FeatherWing, there is onboard RJ45 connector with controller. The image below shows the details of the device.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;span style="font-size:150%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;span style="font-size:150%;"&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:440px;max-width:440px;" height="440" src="https://community.element14.com/resized-image/__size/880x880/__key/communityserver-discussions-components-files/452/pastedimage1777848566744v1.png" width="440"  /&gt;The board is based one the WIZnet5500 and take the form factor of the Adafruit FeatherWing Tripler. It can support&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;10BaseT/100BaseTX Ethernet&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;Support Auto Negotiation (Full and half duplex, for both 10BaseT and 100BaseTX)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;In order to test the ethernet connectivity i have use the following code. And the serial output shows the output. I have also configure the OLED to show the output as well.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;pre class="ui-code" data-mode="text"&gt;#include &amp;lt;SPI.h&amp;gt;
#include &amp;lt;Ethernet.h&amp;gt;

#define STATUS_LED LED_BUILTIN

#define ETH_CS    44
#define ETH_RESET 46

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0x32, 0x30 };

void resetEthernet() {
  pinMode(ETH_RESET, OUTPUT);

  digitalWrite(ETH_RESET, HIGH);
  delay(100);

  digitalWrite(ETH_RESET, LOW);
  delay(300);

  digitalWrite(ETH_RESET, HIGH);
  delay(1000);
}

void setup() {
  pinMode(STATUS_LED, OUTPUT);

  Serial.begin(9600);
  delay(3000);

  Serial.println();
  Serial.println(&amp;quot;==============================&amp;quot;);
  Serial.println(&amp;quot;MAX32630FTHR + Particle Ethernet&amp;quot;);
  Serial.println(&amp;quot;==============================&amp;quot;);

  SPI.begin();

  resetEthernet();

  Ethernet.init(ETH_CS);

  Serial.println(&amp;quot;Starting DHCP...&amp;quot;);

  if (Ethernet.begin(mac) == 0) {
    Serial.println(&amp;quot;DHCP failed.&amp;quot;);
    while (true) {
      digitalWrite(STATUS_LED, HIGH);
      delay(300);
      digitalWrite(STATUS_LED, LOW);
      delay(300);
    }
  }

  Serial.println(&amp;quot;DHCP successful!&amp;quot;);
  Serial.print(&amp;quot;Local IP: &amp;quot;);
  Serial.println(Ethernet.localIP());

  Serial.print(&amp;quot;Subnet: &amp;quot;);
  Serial.println(Ethernet.subnetMask());

  Serial.print(&amp;quot;Gateway: &amp;quot;);
  Serial.println(Ethernet.gatewayIP());

  Serial.print(&amp;quot;DNS: &amp;quot;);
  Serial.println(Ethernet.dnsServerIP());
}

void loop() {
  Ethernet.maintain();

  Serial.print(&amp;quot;Running. IP: &amp;quot;);
  Serial.println(Ethernet.localIP());

  digitalWrite(STATUS_LED, !digitalRead(STATUS_LED));
  delay(3000);
}&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;span style="font-size:150%;"&gt;The library used is the Ethernet.h. And below is the serial output.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:312px;max-width:691px;" height="312" src="https://community.element14.com/resized-image/__size/1382x624/__key/communityserver-discussions-components-files/452/pastedimage1777849715464v2.png" width="691"  /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;And i have tried to show the&amp;nbsp;status update of the ethernet&amp;nbsp;on the OLED as well&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:450px;max-width:600px;"  height="450" src="https://community.element14.com/resized-image/__size/1200x900/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_05_2D00_04_5F00_10_2D00_51_2D00_57.jpg" width="600" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;Next lets configure the BLE&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jno19ikt2"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;text-decoration:underline;"&gt;&lt;strong&gt;BLE&lt;/strong&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;text-decoration:underline;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;Initially i found that, most of the resources are using the Mbed OS to setup the BLE. After researching and also the sharing from other participant, below is the code that i am using to check the BLE.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;#include &amp;lt;pwrseq_regs.h&amp;gt;
#include &amp;lt;pwrman_regs.h&amp;gt;
#include &amp;lt;Wire.h&amp;gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;
#include &amp;lt;Adafruit_SSD1306.h&amp;gt;

// -------------------- Bluetooth Settings --------------------
#define BT_SERIAL Serial0
#define BT_RST    P1_6

// -------------------- OLED Settings --------------------
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
#define OLED_ADDR 0x3C

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, OLED_RESET);
bool oledOK = false;

// -------------------- HCI Commands --------------------
const byte HCI_RESET_CMD[] = {
  0x01, 0x03, 0x0C, 0x00
};

const byte HCI_READ_BD_ADDR[] = {
  0x01, 0x09, 0x10, 0x00
};

const byte HCI_LE_READ_LOCAL_SUPPORTED_FEATURES[] = {
  0x01, 0x03, 0x20, 0x00
};

// -------------------- Helper Functions --------------------
void showOLED(String line1, String line2, String line3 = &amp;quot;&amp;quot;, String line4 = &amp;quot;&amp;quot;) {
  if (!oledOK) return;

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);

  display.setCursor(0, 0);
  display.println(line1);

  display.setCursor(0, 8);
  display.println(line2);

  display.setCursor(0, 16);
  display.println(line3);

  display.setCursor(0, 24);
  display.println(line4);

  display.display();
}

void setupOLED() {
  Wire.begin();

  if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
    Serial.println(&amp;quot;OLED not detected.&amp;quot;);
    oledOK = false;
    return;
  }

  oledOK = true;
  showOLED(&amp;quot;MAX32630FTHR&amp;quot;, &amp;quot;OLED Started&amp;quot;, &amp;quot;BLE Detect Test&amp;quot;);
  delay(1500);
}

void printHexByte(byte b) {
  if (b &amp;lt; 0x10) Serial.print(&amp;quot;0&amp;quot;);
  Serial.print(b, HEX);
  Serial.print(&amp;quot; &amp;quot;);
}

void clearBTBuffer() {
  while (BT_SERIAL.available()) {
    BT_SERIAL.read();
  }
}

void configureBluetoothUART() {
  // Enable 32.768 kHz oscillator output on P1.7
  MXC_PWRSEQ-&amp;gt;reg4 |= MXC_F_PWRSEQ_REG4_PWR_PSEQ_32K_EN;

  // Start HCI UART
  BT_SERIAL.begin(115200);

  // Swap RX/TX lines and enable CTS/RTS
  MXC_IOMAN-&amp;gt;uart0_req |= MXC_F_IOMAN_UART0_REQ_CTS_IO_REQ |
                          MXC_F_IOMAN_UART0_REQ_RTS_IO_REQ |
                          MXC_F_IOMAN_UART0_REQ_IO_MAP;
}

void hardwareResetBT() {
  pinMode(BT_RST, OUTPUT);

  digitalWrite(BT_RST, LOW);
  delay(1000);

  digitalWrite(BT_RST, HIGH);
  delay(3000);

  clearBTBuffer();
}

bool readHCIResponse(byte *buffer, int &amp;amp;length, unsigned long timeoutMs) {
  length = 0;
  unsigned long startTime = millis();

  while (millis() - startTime &amp;lt; timeoutMs) {
    while (BT_SERIAL.available()) {
      byte data = BT_SERIAL.read();

      if (length &amp;lt; 64) {
        buffer[length++] = data;
      }
    }
  }

  return length &amp;gt; 0;
}

bool sendHCICommand(const byte *cmd, int cmdLen, const char *label, byte *response, int &amp;amp;responseLen) {
  Serial.println();
  Serial.print(&amp;quot;Sending: &amp;quot;);
  Serial.println(label);

  clearBTBuffer();

  BT_SERIAL.write(cmd, cmdLen);

  bool gotResponse = readHCIResponse(response, responseLen, 2500);

  Serial.print(&amp;quot;Response: &amp;quot;);

  if (!gotResponse) {
    Serial.println(&amp;quot;No response&amp;quot;);
    return false;
  }

  for (int i = 0; i &amp;lt; responseLen; i++) {
    printHexByte(response[i]);
  }

  Serial.println();

  return true;
}

bool checkStatusOK(byte *response, int responseLen) {
  // HCI Command Complete format:
  // 04 0E XX 01 OP_LSB OP_MSB STATUS ...
  if (responseLen &amp;gt;= 7 &amp;amp;&amp;amp; response[0] == 0x04 &amp;amp;&amp;amp; response[1] == 0x0E) {
    return response[6] == 0x00;
  }

  return false;
}

String extractBDADDR(byte *response, int responseLen) {
  // Read BD_ADDR response:
  // 04 0E 0A 01 09 10 00 XX XX XX XX XX XX
  // Address is returned LSB first
  if (responseLen &amp;gt;= 13 &amp;amp;&amp;amp; response[6] == 0x00) {
    String addr = &amp;quot;&amp;quot;;

    for (int i = 12; i &amp;gt;= 7; i--) {
      if (response[i] &amp;lt; 0x10) addr += &amp;quot;0&amp;quot;;
      addr += String(response[i], HEX);

      if (i &amp;gt; 7) addr += &amp;quot;:&amp;quot;;
    }

    addr.toUpperCase();
    return addr;
  }

  return &amp;quot;Unknown&amp;quot;;
}

void setup() {
  Serial.begin(115200);
  delay(3000);

  Serial.println();
  Serial.println(&amp;quot;MAX32630FTHR BLE Module Detection Test&amp;quot;);
  Serial.println(&amp;quot;--------------------------------------&amp;quot;);

  setupOLED();
  showOLED(&amp;quot;BLE Test&amp;quot;, &amp;quot;Starting...&amp;quot;);

  configureBluetoothUART();

  bool detected = false;
  String btAddress = &amp;quot;Unknown&amp;quot;;

  for (int attempt = 1; attempt &amp;lt;= 5; attempt++) {
    Serial.println();
    Serial.print(&amp;quot;BLE detection attempt &amp;quot;);
    Serial.println(attempt);

    showOLED(&amp;quot;BLE Detect&amp;quot;, &amp;quot;Attempt &amp;quot; + String(attempt), &amp;quot;Resetting module&amp;quot;);

    hardwareResetBT();

    byte response[64];
    int responseLen = 0;

    bool resetOK = sendHCICommand(
      HCI_RESET_CMD,
      sizeof(HCI_RESET_CMD),
      &amp;quot;HCI Reset&amp;quot;,
      response,
      responseLen
    );

    if (resetOK &amp;amp;&amp;amp; checkStatusOK(response, responseLen)) {
      Serial.println(&amp;quot;HCI Reset: OK&amp;quot;);
      showOLED(&amp;quot;BLE Module&amp;quot;, &amp;quot;HCI Reset OK&amp;quot;, &amp;quot;Reading address&amp;quot;);

      bool addrOK = sendHCICommand(
        HCI_READ_BD_ADDR,
        sizeof(HCI_READ_BD_ADDR),
        &amp;quot;Read BD_ADDR&amp;quot;,
        response,
        responseLen
      );

      if (addrOK &amp;amp;&amp;amp; checkStatusOK(response, responseLen)) {
        btAddress = extractBDADDR(response, responseLen);
        Serial.print(&amp;quot;Bluetooth Address: &amp;quot;);
        Serial.println(btAddress);

        bool leOK = sendHCICommand(
          HCI_LE_READ_LOCAL_SUPPORTED_FEATURES,
          sizeof(HCI_LE_READ_LOCAL_SUPPORTED_FEATURES),
          &amp;quot;LE Read Local Supported Features&amp;quot;,
          response,
          responseLen
        );

        if (leOK &amp;amp;&amp;amp; checkStatusOK(response, responseLen)) {
          Serial.println(&amp;quot;LE Feature Check: OK&amp;quot;);
          detected = true;
          break;
        }
      }
    }

    Serial.println(&amp;quot;BLE module not ready. Retrying...&amp;quot;);
    delay(1000);
  }

  Serial.println();

  if (detected) {
    Serial.println(&amp;quot;BLE MODULE DETECTED SUCCESSFULLY&amp;quot;);
    Serial.print(&amp;quot;BD_ADDR: &amp;quot;);
    Serial.println(btAddress);

    showOLED(
      &amp;quot;BLE: Detected&amp;quot;,
      &amp;quot;HCI: OK&amp;quot;,
      btAddress,
      &amp;quot;LE Feature: OK&amp;quot;
    );
  } else {
    Serial.println(&amp;quot;BLE MODULE NOT DETECTED&amp;quot;);

    showOLED(
      &amp;quot;BLE: Not Found&amp;quot;,
      &amp;quot;Check reset/UART&amp;quot;,
      &amp;quot;Try board reset&amp;quot;
    );
  }
}

void loop() {
  // Nothing needed. The result remains on OLED.
}&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;And we can monitor the status on oled. The image below shows the status of the BLE on the OLED.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;img loading="lazy" alt="image" style="max-height:490px;max-width:653px;"  height="490" src="https://community.element14.com/resized-image/__size/1306x980/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_05_2D00_08_5F00_17_2D00_33_2D00_28.jpg" width="653" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;Now the MASTER is ready. We can now prepare the SLAVE.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Identity Protocol - Part 10 - W5500 Ethernet</title><link>https://community.element14.com/thread/56912?ContentTypeID=0</link><pubDate>Tue, 05 May 2026 05:09:14 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:3bd1ae4d-aa87-4b7a-b534-26cb4d4e1680</guid><dc:creator>arvindsa</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56912?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56912/identity-protocol---part-10---w5500-ethernet/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p style="text-align:left;"&gt;Argh, Writing a good post is definitely the hard part. :D i completed interfacing all the necessary modules almost a week ago, I am also working on other projects in parallel, but this weekend, i managed to sit down and write this post. The final piece of the jigsaw in my project is to get W5500 to interface with the MAX32630.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea is simple enough: stop making people swipe a card and type a PIN at every single door. Instead, the ID card (a MAX32630FTHR + ATECC508A in your pocket) unlocks once via PIN, then silently does challenge-response crypto over Bluetooth every time you walk up to a door. If the card gets yanked off you, the IMU detects the tug and it locks itself. No PIN, no entry. For more details check the Part 1 of the series&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56768/identity-protocol-part-1---plan" data-contentid="d5152729d060498f812f0244641b3810" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol Part 1 - Plan&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56830/identity-protocol---part-2---django-server" data-contentid="1ab561efc7f2445b8eb20783970ed89c" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 2 - Django Server&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56840/identity-protocol---part-3---unboxing-and-blinking-with-maxim-lpsdk" data-contentid="75fef2ca1ed74f3ca296a48a29402617" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 3 - Unboxing and Blinking with Maxim LPSDK&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56853/identity-protocol---part-4---ble-using-pan1326b-and-btstack" data-contentid="b449688fb5c8477991ced940f32ac3fa" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 4 - BLE using PAN1326B and BTstack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Identity Protocol - Part 5 - Interfacing a Keypad" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56856/identity-protocol---part-5---interfacing-a-keypad" data-e14adj="t"&gt;Identity Protocol - Part 5 - Interfacing a Keypad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56861/identity-protocol---part-6---snatch-detection-with-the-bmi160-imu" data-e14adj="t"&gt;Identity Protocol - Part 6 - Snatch Detection with the BMI160 IMU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56861/identity-protocol---part-6---snatch-detection-with-the-bmi160-imu" data-e14adj="t"&gt;&lt;/a&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56874/identity-protocol---part-7---colouring-on-the-icled-featherwing" data-e14adj="t"&gt;Identity Protocol - Part 7 - Colouring on the ICLED FeatherWing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56881/identity-protocol---part-8---cryptographically-sign-with-atecc508-and-verify-with-micro-ecc" data-e14adj="t"&gt;Identity Protocol - Part 8 - Cryptographically Sign with ATECC508 and Verify with Micro-ECC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56883/identity-protocol---part-9---ble-gatt-challenge-response-with-btstack" data-e14adj="t"&gt;Identity Protocol - Part 9 - BLE GATT Challenge/Response with BTstack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1jnr5ufo20"&gt;The SPI Protocol: Reads, Writes, and Verifying Connectivity&lt;/h2&gt;
&lt;p&gt;The SPI transaction requires three bytes of command header (address + block + direction) followed by one or more data bytes. The direction is in the control byte:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Read:  [ADDR_H][ADDR_L][BSB|READ |OM][DATA_IN_FROM_W5500...]
Write: [ADDR_H][ADDR_L][BSB|WRITE|OM][DATA_OUT_TO_W5500...]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;RWB&lt;/code&gt; bit: 0 = read, 1 = write. &lt;code&gt;OM&lt;/code&gt; (Operation Mode) is almost always 0 for variable-length reads/writes. BSB is the block selection bits to say which memory i want to access.&lt;/p&gt;
&lt;p&gt;The first test is always the same: read VERSIONR (register 0x39 in the common block, BSB 0x00). The W5500 should respond as 0x04.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static int w5500_read(uint16_t addr, uint8_t *rx, int len)
{
    uint8_t tx[3] = {
        (uint8_t)(addr &amp;gt;&amp;gt; 8),                   /* ADDR_H */
        (uint8_t)(addr &amp;amp; 0xFF),                 /* ADDR_L */
        (W5500_BSB_COMMON &amp;lt;&amp;lt; 3) | W5500_READ    /* control: BSB 0x00, READ */
    };
    return spi_read_write(tx, 3, rx, len);
}

uint8_t version = 0;
w5500_read(W5500_REG_VERSIONR, &amp;amp;version, 1);
if (version != 0x04) {
    printf(&amp;quot;W5500 not responding. VERSIONR = 0x%02x\n&amp;quot;, version);
    return -1;
}
printf(&amp;quot;W5500 alive. VERSIONR = 0x%02x\n&amp;quot;, version);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;BSB = 0x00  Common registers // (VERSIONR, IP config etc.)
BSB = 1, 5, 9, 13... → Socket 0, 1, 2, 3... register space (status, control, RX/TX pointers)
BSB = 2, 6, 10, 14... → Socket 0, 1, 2, 3... transmit buffer
BSB = 3, 7, 11, 15... → Socket 0, 1, 2, 3... receive buffer


The formula for socket n:
Registers: BSB = (n * 4) + 1
TX buffer: BSB = (n * 4) + 2
RX buffer: BSB = (n * 4) + 3&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1jnr6ecs91"&gt;Never on the same boat, I mean Voltage&lt;/h3&gt;
&lt;p&gt;But my code was being heard on deaf ears, No response. I tried going though the documentation, it&amp;#39;s clear as day. It should work, But it did not. So, I hooked up my logic analyzer. No signals on the clock lines. Then spend an hour trying to see why the SPI peripherals is not being initiated. I even compiled the official examples, yet no avail. But then I &amp;quot;Accidentally&amp;quot; Clicked the Analog reading of the signal lines and then i saw something like an ECG. The SPI&amp;#39;s clock line. But the logic levels was around 1.7V. And then it hit me. The chip is communicating at 1.8V levels. But W5500 Does not respond back to such levels. So first instinct, I used TXB108 Level shifter, I checked the output lines, and it was working but W5500 Never responded. I was greeted with 0xFF&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:450px;max-width:800px;"  src="https://community.element14.com/resized-image/__size/1600x900/__key/communityserver-discussions-components-files/452/Logic-Pro-16_5F00_2.png" /&gt;&lt;/p&gt;
&lt;p&gt;Now, what i noticed is that when i reset, the MOSI was not very consistent. Ideally it was supposed to sent 0x00 0x39 0x00 0x00 (the image above has the ideal sequence) but many times i noticed, there would be extra 0xFF in between the right sequence. I felt the level shifter had to do something to with the ghost bits, In my past, the level shifter had created issues for me. Without a reliable level shifting, I was stuck, But then i remembered the MAX32630 was working fine with the I2C lines which was pulled up to 3.3V which means it is 3.3V tolerant,&amp;nbsp; so i dug into the documentation to find, i can change the Logic level of the Pins on an individual level. Whoa is what i said,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;By changing the&amp;nbsp;IOMAN has select bits to move a pins output buffer to another voltage level (&lt;code&gt;use_vddioh_0/1/2&lt;/code&gt;). By calling&amp;nbsp;&lt;code&gt;SYS_IOMAN_UseVDDIOH(&amp;amp;cfg)&lt;/code&gt;&amp;nbsp;after &lt;code&gt;SPIM_Init&lt;/code&gt;, I get a 3.3V SPI Signals&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;const spim_cfg_t spim_cfg = { .mode=0, .ssel_pol=SPIM_SSEL0_LOW, .baud=1000000 };
SPIM_Init(MXC_SPIM2, &amp;amp;spim_cfg, &amp;amp;sys_cfg);

const gpio_cfg_t spim2_vddioh = {
    PORT_5, (PIN_0 | PIN_1 | PIN_2 | PIN_3),
    GPIO_FUNC_GPIO, GPIO_PAD_NORMAL
};
SYS_IOMAN_UseVDDIOH(&amp;amp;spim2_vddioh);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Careful enough to change only the SPI lines i tried again and It is alive. W5500 was talking back 0x40.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:450px;max-width:800px;"  src="https://community.element14.com/resized-image/__size/1600x900/__key/communityserver-discussions-components-files/452/Logic-Pro-16_5F00_4.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:450px;max-width:800px;"  src="https://community.element14.com/resized-image/__size/1600x900/__key/communityserver-discussions-components-files/452/20260418_5F00_230800-_2D00_-Copy.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jnr74cpp2"&gt;Back to SPI Protocol&lt;/h2&gt;
&lt;p&gt;To write a register,&amp;nbsp; i use&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static int w5500_write(uint16_t addr, const uint8_t *tx, int len)
{
    uint8_t cmd[3] = {
        (uint8_t)(addr &amp;gt;&amp;gt; 8),
        (uint8_t)(addr &amp;amp; 0xFF),
        (W5500_BSB_COMMON &amp;lt;&amp;lt; 3) | W5500_WRITE   /* BSB 0x00, WRITE */
    };
    return spi_write(cmd, 3, tx, len);
}

uint8_t mac[6] = {0x00, 0x08, 0xDC, 0xAB, 0xCD, 0xEF};
w5500_write(W5500_REG_SHAR, mac, 6);            /* set source hardware address */&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;To read a socket register, i use the the code below with the BSB calulated as per the code above&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;int sreg_read(int socket, uint16_t offset, uint8_t *rx, int len)
{
    uint16_t addr = offset;
    uint8_t bsb = W5500_BSB_SREG(socket);   /* computes (socket*4)+1 */
    uint8_t tx[3] = {
        (uint8_t)(addr &amp;gt;&amp;gt; 8),
        (uint8_t)(addr &amp;amp; 0xFF),
        (bsb &amp;lt;&amp;lt; 3) | W5500_READ
    };
    return spi_read_write(tx, 3, rx, len);
}

uint8_t sr;
sreg_read(0, Sn_SR, &amp;amp;sr, 1);   /* read socket 0 status register */
if (sr == SOCK_ESTABLISHED) {
    /* socket is connected */
}&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jnr7h5ge3"&gt;TCP: Open, Connect, Send, Receive, Close&lt;/h2&gt;
&lt;p&gt;The W5500 has a simple socket abstraction. Each operation sets a CR (Command Register) value and polls the SR (Status Register) for the result/&lt;/p&gt;
&lt;figure class="table-figure"&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Write CR&lt;/th&gt;
&lt;th&gt;Poll SR until&lt;/th&gt;
&lt;th&gt;Timeout&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Open&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CR_OPEN&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOCK_INIT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;100 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Connect&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CR_CONNECT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOCK_ESTABLISHED&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;5 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Send&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CR_SEND&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sn_IR.SEND_OK&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recv&lt;/td&gt;
&lt;td&gt;(no cmd)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sn_RX_RSR &amp;gt; 0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;per attempt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Close&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CR_DISCON&lt;/code&gt; then &lt;code&gt;CR_CLOSE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOCK_CLOSED&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;200 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;
&lt;p&gt;The So i code&amp;nbsp;&lt;code&gt;tcp_recv&lt;/code&gt;, which reads in a loop until either the buffer fills or the remote closes the connection and yes, i used HTTP1 which i copied from the regular arduino library.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static int tcp_recv(int sn, uint8_t *buf, int max_len)
{
    int total = 0;
    for (int idle = 0; idle &amp;lt; 100 &amp;amp;&amp;amp; total &amp;lt; max_len; idle++) {
        uint16_t avail = sreg_r16(sn, Sn_RX_RSR);
        if (avail == 0) {
            uint8_t sr = sreg_r8(sn, Sn_SR);
            if (sr == SOCK_CLOSE_WAIT || sr == SOCK_CLOSED) break;
            TMR_Delay(MXC_TMR0, MSEC(50));
            continue;
        }
        int n = avail;
        if (total + n &amp;gt; max_len) n = max_len - total;
        uint16_t rd = sreg_r16(sn, Sn_RX_RD);
        srx_read(sn, rd, buf + total, n);
        sreg_w16(sn, Sn_RX_RD, rd + (uint16_t)n);
        sreg_w8(sn, Sn_CR, CR_RECV);
        total += n;
        idle = 0;
    }
    return total;
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I did use static ip configuration for my LAN, and copied more and more working from the arduino library to interface the actual requests. Explaining that will be far too gruesome and more sleep inducing than Propofol So i will end it here. Now for the 3D printing and integration&lt;/p&gt;
&lt;h2 id="mcetoc_1jnr8dor24"&gt;Final Notes&lt;/h2&gt;
&lt;p&gt;When you are used to Arduino Libraries for quick prototyping, you forget to appreciate the work done by the developers to get these things working. Even porting an existing code to a diferent platform to make it work the SDK is a huge task. So respects to the Developers.&amp;nbsp; Now, truth be told, My code is bit flaky and does not work 20% of the time, I am not going to solve this considering the timeline. But i will take it as a good enough work for the final integration and solve it there if needed.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-c" lang="c"&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Sentinel Box - Part II - back to C</title><link>https://community.element14.com/thread/56894?ContentTypeID=0</link><pubDate>Thu, 30 Apr 2026 12:42:46 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:085fd39e-8ab5-43de-a7db-bbc8127d7724</guid><dc:creator>saramic</dc:creator><slash:comments>4</slash:comments><comments>https://community.element14.com/thread/56894?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56894/sentinel-box---part-ii---back-to-c/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I had fun with my&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Rust&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f980.svg" title="Crab"&gt;&amp;#x1f980;&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;experiment but it was time to get back to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;C &lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;LPSDK&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(Low Power ARM Micro SDK) if I was going to get anything complete for this challenge.&lt;/p&gt;
&lt;h2 id="recap"&gt;Recap&lt;/h2&gt;
&lt;p&gt;The idea is to build a smart lock box for digital devices to help control digital addiction, more on the idea can be found in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;part I&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://saramic.github.io/sentinel-box/sentinel-box/update/2026/04/21/sentinel-box-part-I-the-plan" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Sentinel Box - Part I - the plan&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rust-for-hermetic-builds"&gt;Rust for Hermetic builds&lt;/h2&gt;
&lt;p&gt;As I was not super happy in having to depend on EOL (End-of-life) software stacks like Mbed or LPSDK, I thought, how hard can it be writing a HAL (Hardware Abstraction Layer) from scratch in Rust. I had some initial wins getting the LED flashing, so I continued. In&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Part I&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;I even started implementing some commands against the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX14690 PMIC&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(Power Management Integrated Circuit) - I was actually going above and beyond and looking at the schematic of the dev board to see how it hangs together. This should have&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;turned me OFF&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;the idea of rust, but it gave me some false hope and I continued.&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;" alt="part of the MAX32630FTHR diagram highlighting the BMi160 accelerometer chip" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260430_5F00_01_5F00_max32630_5F00_BMi160_5F00_accelerometer.png" /&gt;&lt;br /&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;BMi160&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;accelerometer chip highlighted on the block diagram of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX32630FTHR&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Next on the diagram there was an Accelerometer and Gyroscope using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;BMi160&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;6-Axis Inertial Motion Sensor. With a bit of AI I soon enough had a driver to get X, Y, Z accelerations and using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX7219&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;I built a simple &amp;ldquo;attitude meter&amp;rdquo; which would show you which way to move the board to correct it being right way round. At this point I started to notice that some of the timing was out, my LED refresh rate was out by anywhere from 4x to 20x - that should have&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;turned me OFF&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;the idea of rust but with false hopes I continued.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://community.element14.com/cfs-file/__key/communityserver-discussions-components-files/452/20260423_5F00_01_5F00_attitude_5F00_meter.mp4"&gt;community.element14.com/.../20260423_5F00_01_5F00_attitude_5F00_meter.mp4&lt;/a&gt;&lt;br /&gt;The video above shows the attitude meter&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f6e9.svg" title="Airplane small"&gt;&amp;#x1f6e9;&lt;/span&gt;️ that displays on the LED matrix the direction to turn the device to flatten the chip.&lt;/p&gt;
&lt;p&gt;These were all distractions from the core of the Smart Security Challenge, so it was time to use a finger print reader. This would need&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;UART&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(Universal Asynchronous Receiver-Transmitter) surely that cannot be hard? Well this is where the speed changes of 4X &amp;ndash; 20X really started to bite. You see if you don&amp;rsquo;t know how fast your clock speed is going, you are not going to be able to transmit or receive at a given Baud. I tried a bunch of things. As I don&amp;rsquo;t have a logic analyzer nor oscilloscope on hand, I ended up hooking up an&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;ESP32&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to measure the duration of pulses. I didn&amp;rsquo;t know there was a function to measure pulse length&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.arduino.cc/language-reference/en/functions/advanced-io/pulseIn/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;pulseIn&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="language-c highlighter-rouge"&gt;
&lt;div class="highlight"&gt;
&lt;pre class="highlight"&gt;&lt;code&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;unsigned long width = pulseIn(RX2_PIN, LOW, 5000000UL); // 5 s timeout
if (width == 0) {
  Serial.println(&amp;quot;timeout — no signal on RX pin&amp;quot;);
  return;
}
// Filter noise: allow 1200–115200 baud = 8–833 &amp;#181;s.
if (width &amp;lt; 8 || width &amp;gt; 833) {
  Serial.printf(&amp;quot;noise/glitch: %lu &amp;#181;s (ignored)\n&amp;quot;, width);
  return;
}
unsigned long estimated_baud = 1000000UL / width;
  // Square-wave formula: CPU MHz = N / width_&amp;#181;s, where N is the delay_cycles count.
  // Firmware step 1 uses N=4800. Steps double: 4800, 9600, 19200, 38400, 76800.
  // Read the first group of pulses (smallest width) and use N=4800.
Serial.printf(
  &amp;quot;LOW pulse: %lu &amp;#181;s | sq-wave asm::delay(4800)~9600 cycles: CPU ~%lu MHz\n&amp;quot;,
  width,
  9600UL / width); // asm::delay(N) ≈ 2N cycles → CPU MHz = 9600 / width_&amp;#181;s&lt;/pre&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The above code also made me realise that&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color:#999999;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;\n&lt;/code&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;does not cut it and my serial monitor only displayed the output when I had&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color:#999999;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;\r\n&lt;/code&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- need that Carriage return.&lt;/p&gt;
&lt;p&gt;And all my Rust results were conclusive on 1 part, I was never getting 96 MHz. After some digging around I found the C file in LPSDK that seems to do the setup of the frequency&lt;/p&gt;
&lt;p&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;Maxim/Firmware/MAX3263X/Libraries/CMSIS/Device/Maxim/MAX3263X/Source/system_max3263x.c&lt;/code&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Enable the 32 kHz RTC oscillator&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; this serves as the stable reference clock for calibration, then wait for it to warm up and settle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable the RO calibration complete interrupt&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; so the system can signal when calibration is done.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear the calibration complete interrupt flag&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; removing any stale state from a previous run.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write an initial trim&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;value into the frequency calibration initial condition register &amp;mdash; giving the hardware a starting point rather than hunting from scratch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Load that initial trim&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;into the active frequency trim register &amp;mdash; making it live.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable the frequency control loop&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; the hardware mechanism that will drive the RO trim toward the target frequency.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start calibration in atomic mode&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; the hardware runs the measurement and adjustment cycle uninterrupted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wait for the ro_cal_done flag&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; polling until the hardware signals completion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop the calibration engine.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disable the calibration complete interrupt.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read back the final trim value&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; the digital code the loop converged on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write the final trim to the RO flash trim shadow register&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; persisting the result across resets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restore the RTC to its previous state&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; since it may have been off before the routine borrowed it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disable the frequency control loop.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;no can do - I tried and tried again but could not get a consistent 96 MHz set which meant the UART was not going to work and the rust experiment was over for the time being&lt;/p&gt;
&lt;p style="font-size:100px;text-align:center;"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/274c.svg" title="X"&gt;&amp;#x274c;&lt;/span&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f980.svg" title="Crab"&gt;&amp;#x1f980;&lt;/span&gt;&lt;/p&gt;
&lt;h1 id="back-to-lpsdk"&gt;Back to LPSDK&lt;/h1&gt;
&lt;p&gt;I couldn&amp;rsquo;t get myself to go to Mbed, a platform that is slated for EOL in July 2026, so it was back to C and the legacy LPSDK stack.&lt;/p&gt;
&lt;p&gt;Hitting up my ESP32 setup, proved I had the right frequency set on UART and in no time I was connected to the fingerprint reader. The problem was that now my system would need to be multi modal. I pulled in a rotary encoder and got some runs on the board. First just to read turns to the left and right as well as a button press and display it on the LED MAX7219 matrix display. Then I added in the finger print reader.&lt;br /&gt;&lt;br /&gt;&lt;img loading="lazy" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;" alt="Fingerprint reading success and failure" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260430_5F00_02_5F00_fingerprint_5F00_demo_5F00_short.gif" width="620" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://community.element14.com/cfs-file/__key/communityserver-discussions-components-files/452/20260430_5F00_03_5F00_fingerprint_5F00_demo.mp4"&gt;community.element14.com/.../20260430_5F00_03_5F00_fingerprint_5F00_demo.mp4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Getting the fingerprint, LED Matrix and rotary encoder was the easy bit, but having a state diagram that can save a bunch of fingerprints and identify them was starting to get a bit complicated, as is the setup on my workbench.&lt;img loading="lazy" style="display:block;margin-left:auto;margin-right:auto;max-height:960px;max-width:640px;" alt="Encoder and fingerprint state machine flow chart" height="960" src="https://community.element14.com/resized-image/__size/1920x4128/__key/communityserver-discussions-components-files/452/2273.20260430_5F00_04_5F00_encoder_5F00_state_5F00_machine.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="next"&gt;Next&lt;/h2&gt;
&lt;p&gt;Now that I have a basic fingerprint reader and a build system that I am confident in, I think I need to get the required piece for a minimal complete build, some kind of actuator working: stepper motor, servo motor or just a motor with a worm drive. This will allow me to create a lock box with multi finger print triggering. If I get time, I may be able to expand on that. Time will tell.&lt;/p&gt;
&lt;h2 id="source"&gt;Source&lt;/h2&gt;
&lt;p&gt;&lt;a id="" href="https://github.com/saramic/sentinel-box" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/saramic/sentinel-box&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Guardian Sentinel &lt;Part 2&gt;  — Getting Started</title><link>https://community.element14.com/thread/56893?ContentTypeID=0</link><pubDate>Thu, 30 Apr 2026 08:39:01 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:e847499f-2d80-430b-9267-17c43e86a09d</guid><dc:creator>meera_hussien</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56893?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56893/guardian-sentinel-part-2-getting-started/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h1 id="mcetoc_1jnahmpi20" style="text-align:center;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;strong&gt;Guardian Sentinel &amp;mdash;&amp;nbsp;Getting Started&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 id="mcetoc_1jnahmpi21" style="text-align:center;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&amp;lt;Part 2&amp;gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;The figure below shows the basic block diagram and idea of how the project will be implemented. The system will consist of two parts: a master and a slave. The master will use the MAX32630FTHR and will be connected to the LAN through an Ethernet FeatherWing. It will also include a&amp;nbsp;OLED&amp;nbsp;FeatherWing to display status or other useful information. The slave will use another MAX32630FTHR together with the DC Motor + Stepper FeatherWing and a gas sensor. This is the basic idea of the project architecture. Along the process of building of this project i will make the necessary changes in order to accomplish the objective of this project.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:678px;max-width:904px;"  height="678" src="https://community.element14.com/resized-image/__size/1808x1356/__key/communityserver-discussions-components-files/452/Green-and-White-Project-Phases-Flowchart-_2800_1_2900_.png" width="904" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;As i have mentioned previously, in this second post we would like to see in details and initial setup for all the devices used in this project. First lets take a look at the core of this project which is the MAX32630FTHR. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jnd0uq7k0"&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;MAX32630FTHR&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;From my initial research i found that the&amp;nbsp;&lt;span&gt;MAX32630FTHR can be programmed using MBED OS, but unfortunately it will become obsolete or end of life this coming July. Hence while looking for other alternative, i saw the post from&amp;nbsp;&lt;a href="https://community.element14.com/members/alistairuk"&gt;Alistair&lt;/a&gt;&amp;nbsp;, mentioning about using Arduino to program the&amp;nbsp;MAX32630FTHR. Here is my initial setup and the step to program the&amp;nbsp;MAX32630FTHR using Arduino&amp;nbsp;IDE. Below is the step to program the&amp;nbsp;MAX32630FTHR with Arduino IDE. Please note that, it can be only used with Arduino IDE 1.8.x. I tried using Arduino 2.3.8, but it does not work.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:5264px;max-width:819px;"  height="5264" src="https://community.element14.com/resized-image/__size/1638x10528/__key/communityserver-discussions-components-files/452/image_5F00_2026_2D00_04_2D00_30_5F00_002543939.png" width="819" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;Once the board is installed. I tried to program the board. The setup for programming the board is as shown in figure below&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;img loading="lazy" alt="image" style="max-height:524px;max-width:393px;"  height="524" src="https://community.element14.com/resized-image/__size/786x1048/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_30_5F00_00_2D00_30_2D00_44.jpg" width="393" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;Programming the MAX32630FTHR setup.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;img loading="lazy" alt="image" style="max-height:533px;max-width:399px;"  height="533" src="https://community.element14.com/resized-image/__size/798x1066/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_30_5F00_00_2D00_31_2D00_52.jpg" width="399" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;Both the usb need to be connected. The usb on the MAX32630FTHR is for power up the device. And the usb connecting the pico is for programming purpose.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:left;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:left;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;Once the this is done. I try to upload a simple Blink example, to verify. First choose the board as shown in the image below&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:559px;max-width:796px;" height="559" src="https://community.element14.com/resized-image/__size/1592x1118/__key/communityserver-discussions-components-files/452/pastedimage1777481343886v6.png" width="796"  /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;Next choose the programmer as shown in image below&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:555px;max-width:695px;" height="555" src="https://community.element14.com/resized-image/__size/1390x1110/__key/communityserver-discussions-components-files/452/pastedimage1777481384485v7.png" width="695"  /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;Once done, i tested the simple blink program and it works. Below is the&amp;nbsp;demo video&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/cfs-file/__key/communityserver-discussions-components-files/452/video_5F00_2026_2D00_04_2D00_30_5F00_00_2D00_55_2D00_04.mp4"&gt;community.element14.com/.../video_5F00_2026_2D00_04_2D00_30_5F00_00_2D00_55_2D00_04.mp4&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;The next thing that i would like to test is the Oled FeatherWing&amp;nbsp;which i am using to display the data. For connection between the MAX32630FTHR and the oled i am using the Ethernet FeatherWing. The setup for this is shown in the figure below&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:573px;max-width:429px;"  height="573" src="https://community.element14.com/resized-image/__size/858x1146/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_30_5F00_01_2D00_18_2D00_30.jpg" width="429" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;Once the sample code is uploaded, the oled works.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:560px;max-width:420px;"  height="560" src="https://community.element14.com/resized-image/__size/840x1120/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_30_5F00_01_2D00_42_2D00_04.jpg" width="420" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;The code for the oled is as shown below.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:left;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:left;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;#include &amp;lt;Wire.h&amp;gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;
#include &amp;lt;Adafruit_SSD1306.h&amp;gt;

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_ADDR 0x3C

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire);

void setup() {
  Serial.begin(9600);
  delay(1000);

  Serial.println(&amp;quot;MAX32630FTHR OLED Test&amp;quot;);

  Wire.begin();

  if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
    Serial.println(&amp;quot;OLED not found at 0x3C&amp;quot;);
    while (1);
  }

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 0);

  display.println(&amp;quot;Guardian Sentinel&amp;quot;);
  display.println(&amp;quot;MAX32630FTHR&amp;quot;);
  display.println(&amp;quot;OLED OK&amp;quot;);

  display.display();

  Serial.println(&amp;quot;OLED initialized&amp;quot;);
}

void loop() {
}&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:200%;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span&gt;In the next post, i will share on the Ethernet FeatherWing and also the setting up of the dashboard.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Forum #5: Proposed Design — Adaptive Sentinel: Security &amp; Surveillance Intelligence Hub</title><link>https://community.element14.com/thread/56892?ContentTypeID=0</link><pubDate>Thu, 30 Apr 2026 04:37:36 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:93dc9d1b-bf47-4334-869b-6f0271bf4c2d</guid><dc:creator>skruglewicz</dc:creator><slash:comments>3</slash:comments><comments>https://community.element14.com/thread/56892?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56892/forum-5-proposed-design-adaptive-sentinel-security-surveillance-intelligence-hub/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This Forum post outlines the architecture and the strategic logic driving the system&amp;rsquo;s coordination.&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;Design Lineage&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;The foundation of this design is rooted in the&amp;nbsp;&lt;/span&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-spaces-design-challenge/a/projects/PR101/adaptive-environmental-monitoring-and-smart-access-control" data-e14adj="t"&gt;&lt;span style="font-weight:400;"&gt;Adaptive Environmental Monitoring&lt;/span&gt;&lt;/a&gt;&lt;a href="https://www.google.com/search?q=https://www.hackster.io/stkrugle/adaptive-environmental-monitoring-sentinel-7b2432" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt; &lt;/a&gt;&amp;nbsp;&lt;span style="font-weight:400;"&gt;project. By leveraging that established architecture, the Adaptive Sentinel expands from purely environmental tracking into a proactive security framework, maintaining the core principles of modularity and edge-based intelligence.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;Basic Design: The Architectural Framework&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;The system is structured around a robust hub-to-node topology, designed for high reliability and low-latency response:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Centralized Coordination&lt;/b&gt;&lt;span style="font-weight:400;"&gt;: At the heart of the ecosystem is the &lt;/span&gt;&lt;b&gt;Arduino UNO Q&lt;/b&gt;&lt;span style="font-weight:400;"&gt;. It serves as the primary hub, orchestrating the network, aggregating telemetry, and managing high-level logic. The use of containerized Bricks will be helpful in carrying out these tasks without compromising the core system&amp;#39;s stability.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Deployment of Edge Nodes&lt;/b&gt;&lt;span style="font-weight:400;"&gt;: To provide a direct interface for localized relays and sensors, I intend to position &lt;/span&gt;&lt;b&gt;edge nodes based on FeatherWing&lt;/b&gt;&lt;span style="font-weight:400;"&gt; in designated building zones, acting as the primary frontline for data collection.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;System Layout &amp;amp; Logic&lt;/b&gt;&lt;span style="font-weight:400;"&gt;: The operational flow is decentralized yet unified. Edge nodes monitor local environments and transmit critical telemetry to the Arduino UNO Q hub for centralized aggregation and automated response.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Connectivity Strategy&lt;/b&gt;&lt;span style="font-weight:400;"&gt;: I intend to establish a robust &lt;/span&gt;&lt;b&gt;UART infrastructure&lt;/b&gt;&lt;span style="font-weight:400;"&gt; to guarantee stability during the primary rollout. This wired setup will serve as a performance benchmark, providing a structured path for transitioning to wireless protocols after the integration has been thoroughly confirmed.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Sensor Integration&lt;/b&gt;&lt;span style="font-weight:400;"&gt;:&lt;/span&gt;&lt;b&gt;Sensor Strategic Integration&lt;/b&gt;&lt;span style="font-weight:400;"&gt;: I intend to strategically select and integrate kit-supplied sensors to maximize the hardware&amp;rsquo;s efficacy in detecting security breaches and maintaining environmental awareness.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;b&gt;Visualizing the Hub-to-Node Topology&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;The following Basic Design Diagram details the mapping of FeatherWing edge nodes across various zones. By utilizing the Arduino UNO Q as the central coordinator, the architecture remains scalable.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1777523732195v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Hub-to-Node Connectivity Design: &lt;/b&gt;&lt;span style="font-weight:400;"&gt;This system utilizes a robust hub-to-node topology centered on an Arduino UNO Q coordinator, managing modular FeatherWing edge nodes for localized intelligence. The initial rollout employs a stable UART connectivity strategy. The edge nodes are deployed in two primary functional configurations: Edge Node 1 for Biometrics &amp;amp; Sentiment Analysis, and Edge Node 2 for Active Response &amp;amp; Environmental Control.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;HUB Node Architecture&lt;/b&gt;&lt;span style="font-weight:400;"&gt;: Built on the Arduino UNO Q, the central hub functions as the primary network coordinator, aggregating telemetry from FeatherWing edge nodes. This architecture leverages a dual-processor system where the MPU handles high-level orchestration, intensive data logging, and serving the Web UI, while the MCU manages deterministic low-level communication protocols. Furthermore, the system utilizes a specialized Database BRICK to ensure the reliable storage of all telemetry data streamed from the distributed edge nodes.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Edge Node Architecture&lt;/b&gt;&lt;span style="font-weight:400;"&gt;: Edge nodes are implemented as &lt;/span&gt;&lt;b&gt;modular expansion subsystems&lt;/b&gt;&lt;span style="font-weight:400;"&gt;. The current deployment strategy utilizes the following functional configurations for localized intelligence.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Edge Node 1 (Biometrics &amp;amp; Sentiment Analysis)&lt;/b&gt;&lt;span style="font-weight:400;"&gt;: This node focuses on human-centric data, monitoring biometric signatures and localized sentiment to assess security states based on occupant presence and behavior.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Edge Node 2 (Active Response &amp;amp; Environmental Control)&lt;/b&gt;&lt;span style="font-weight:400;"&gt;: Serving as the primary execution layer, this node manages physical relays and automated control systems to mitigate identified threats or adjust climate variables in real-time.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;The &amp;quot;Request for Help&amp;quot;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Before I finalize the Project Blog and lock in the implementation, I am reaching out to the community. Prior to finalizing the Project Blog and committing to this implementation, I am seeking community insights. I invite you to &lt;/span&gt;&lt;b&gt;&amp;quot;identify any loopholes&amp;quot;&lt;/b&gt;&lt;span style="font-weight:400;"&gt; or logical flaws in my current approach.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Specifically, I am interested in your thoughts on whether the transition from UART to wireless is technically sound and if there are hidden bottlenecks in the hub-to-node telemetry aggregation. My goal is to uncover any technical gaps in the orchestration of this security intelligence system before moving to final deployment.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;I value your expertise and look forward to the feedback.&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>BLE scanning and CC256X firmware uploading</title><link>https://community.element14.com/thread/56886?ContentTypeID=0</link><pubDate>Tue, 28 Apr 2026 12:02:18 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:db78488d-c1dd-4e01-a2fd-45db04a8ba9e</guid><dc:creator>Alistair</dc:creator><slash:comments>13</slash:comments><comments>https://community.element14.com/thread/56886?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56886/ble-scanning-and-cc256x-firmware-uploading/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;After thinking I had everything in place I have just got wound to the BLE scanning, and it turns out that it it not working. Basic Bluetooth functionality appraiser fine, but the BLE functionality is not there. Doh!&lt;/p&gt;
&lt;p&gt;Following a hint from online I trued the command&amp;nbsp;01 01 FE 01 00 (HCI_VS_Write_BD_Addr) and that returned&amp;nbsp;0x01&amp;nbsp;(Unknown HCI Command), and that&amp;nbsp;shown new firmware needs uploading. Has anyone done this?Any other suggestions for that matter?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Identity Protocol - Part 9 - BLE GATT Challenge/Response with BTstack</title><link>https://community.element14.com/thread/56883?ContentTypeID=0</link><pubDate>Tue, 28 Apr 2026 06:01:28 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:e95ef095-977a-4aae-ac9e-780d887835be</guid><dc:creator>arvindsa</dc:creator><slash:comments>6</slash:comments><comments>https://community.element14.com/thread/56883?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56883/identity-protocol---part-9---ble-gatt-challenge-response-with-btstack/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;It has been long time since i used Bluetooth SPP. Infact I do not think I ever used Bluetooth SPP via firmware. I think i used an RN42 module to get UART converted to Bluetooth SPP. But I have used BLE GATT so, I will be using that to exchange data between the Door and ID device.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea is simple enough: stop making people swipe a card and type a PIN at every single door. Instead, the ID card (a MAX32630FTHR + ATECC508A in your pocket) unlocks once via PIN, then silently does challenge-response crypto over Bluetooth every time you walk up to a door. If the card gets yanked off you, the IMU detects the tug and it locks itself. No PIN, no entry. For more details check the Part 1 of the series&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56768/identity-protocol-part-1---plan" data-contentid="d5152729d060498f812f0244641b3810" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol Part 1 - Plan&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56830/identity-protocol---part-2---django-server" data-contentid="1ab561efc7f2445b8eb20783970ed89c" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 2 - Django Server&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56840/identity-protocol---part-3---unboxing-and-blinking-with-maxim-lpsdk" data-contentid="75fef2ca1ed74f3ca296a48a29402617" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 3 - Unboxing and Blinking with Maxim LPSDK&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56853/identity-protocol---part-4---ble-using-pan1326b-and-btstack" data-contentid="b449688fb5c8477991ced940f32ac3fa" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 4 - BLE using PAN1326B and BTstack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Identity Protocol - Part 5 - Interfacing a Keypad" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56856/identity-protocol---part-5---interfacing-a-keypad" data-e14adj="t"&gt;Identity Protocol - Part 5 - Interfacing a Keypad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56861/identity-protocol---part-6---snatch-detection-with-the-bmi160-imu" data-e14adj="t"&gt;Identity Protocol - Part 6 - Snatch Detection with the BMI160 IMU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56861/identity-protocol---part-6---snatch-detection-with-the-bmi160-imu" data-e14adj="t"&gt;&lt;/a&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56874/identity-protocol---part-7---colouring-on-the-icled-featherwing" data-e14adj="t"&gt;Identity Protocol - Part 7 - Colouring on the ICLED FeatherWing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56881/identity-protocol---part-8---cryptographically-sign-with-atecc508-and-verify-with-micro-ecc" data-e14adj="t"&gt;Identity Protocol - Part 8 - Cryptographically Sign with ATECC508 and Verify with Micro-ECC&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1jn9ae2790"&gt;GATT Service Definition&lt;/h2&gt;
&lt;p&gt;BTstack generates an ATT database at plaintext &lt;code&gt;.gatt&lt;/code&gt; file. Refer: &lt;a class="url" href="https://github.com/bluekitchen/btstack/blob/master/tool/compile_gatt.py" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/bluekitchen/btstack/blob/master/tool/compile_gatt.py&lt;/a&gt; For our purpose, I need to detect the door and ID card to be nearby, one service to write the nonce and another for the response. I did take help of ChatGPT to generate the file. If you are new to GATT - I recommend to watch this video -&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=eHqtiCMe4NA" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PRIMARY_SERVICE, GAP_SERVICE
CHARACTERISTIC, GAP_DEVICE_NAME, READ, &amp;quot;Auth-Door&amp;quot;

PRIMARY_SERVICE, GATT_SERVICE
CHARACTERISTIC, GATT_DATABASE_HASH, READ,

// Identity Protocol Auth Service
PRIMARY_SERVICE, AAAAAAAA-0000-0000-0000-000000000001

// CHALLENGE: 32-byte nonce sent by the door, read by the card
CHARACTERISTIC, AAAAAAAA-0000-0000-0000-000000000002, READ | DYNAMIC,

// RESPONSE: 4-byte device_id followed by 64-byte signature written by the card
CHARACTERISTIC, AAAAAAAA-0000-0000-0000-000000000003, WRITE | DYNAMIC,
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="mcetoc_1jn9ae2791"&gt;For Testing two Roles, One Source File&lt;/h2&gt;
&lt;p&gt;Both the door and the card run on identical hardware (MAX32630FTHR + PAN1326B), so the test is a single C file compiled twice. A &lt;code&gt;ROLE&lt;/code&gt; make variable drives the split:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-shell" lang="shell"&gt;make ROLE=server    # door firmware
make ROLE=client    # card firmware
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;-DROLE_SERVER&lt;/code&gt; / &lt;code&gt;-DROLE_CLIENT&lt;/code&gt; select which half of &lt;code&gt;gatt_auth.c&lt;/code&gt; is compiled. The server advertises, serves CHALLENGE when ID card nearby, and verifies writes to RESPONSE. The client scans, connects, reads CHALLENGE, signs, and writes RESPONSE.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:450px;max-width:432px;"  src="https://community.element14.com/resized-image/__size/864x900/__key/communityserver-discussions-components-files/452/ble_2D00_gatt_2D00_sequence.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jn9ah6m42"&gt;The Server Side (Door)&lt;/h2&gt;
&lt;p&gt;The server&amp;#39;s packet handler wakes up three places: stack ready, client connected, and every ATT write. When client connected, we serve the once, when ATT writes to the signature service, we verify it.&lt;/p&gt;
&lt;p&gt;Even though i have only one feather to function as a ID device, i made the firmware such that it can store multiple ID Cards device name and their public key to be synced from the Django server.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (att_handle != RESPONSE_VALUE_HANDLE) return 0;

if (buffer_size != 68) {
    printf(&amp;quot;VERIFY FAIL, expected 68 bytes, got %u\n&amp;quot;, buffer_size);
    return 0;
}

uint32_t device_id = (buffer[0] &amp;lt;&amp;lt; 24) | (buffer[1] &amp;lt;&amp;lt; 16)
                   | (buffer[2] &amp;lt;&amp;lt; 8)  |  buffer[3];
const uint8_t *sig = buffer + 4;

// Serch for the public key from the flash. 
const uint8_t *pubkey = lookup_pubkey(device_id);
if (!pubkey) { 
    /* unknown device (not in django server, reject */ 
    return 0; 
}

// Generate the digest via the crypto chip
uint8_t digest[32];
atcac_sw_sha2_256(nonce, 32, digest);


// Verify using micro-ecc
int ok = uECC_verify(pubkey, digest, sig);
printf(ok ? &amp;quot;*** VERIFY PASS ***\n&amp;quot; : &amp;quot;*** VERIFY FAIL ***\n&amp;quot;);&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jn9ai5nn3"&gt;The Client Side (Card)&lt;/h2&gt;
&lt;p&gt;The client we make a state machine:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;typedef enum {
    STATE_IDLE,
    STATE_SCANNING,
    STATE_CONNECTING,
    STATE_DISCOVER_SERVICE,
    STATE_DISCOVER_CHARS,
    STATE_READ_CHALLENGE,
    STATE_WRITE_RESPONSE,
    STATE_DONE,
} client_state_t;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;On HCI state &lt;code&gt;HCI_STATE_WORKING&lt;/code&gt; the client calls &lt;code&gt;gap_start_scan()&lt;/code&gt; and watches for advertisements under name &amp;quot;Auth-Door&amp;quot;. When it sees one, we execute &lt;code&gt;gap_connect&lt;/code&gt;. once the state advances to &lt;code&gt;STATE_DISCOVER_SERVICE&lt;/code&gt; and a &lt;code&gt;gatt_client_discover_primary_services_by_uuid128&lt;/code&gt; call goes out with the auth service UUID.&lt;/p&gt;
&lt;p&gt;During the &lt;code&gt;STATE_READ_CHALLENGE&lt;/code&gt; phase , the 32 byte nonce has arrived from the server, the client hashes it, packs its own device ID into the first four bytes of the response buffer, and calls &lt;code&gt;atcab_sign&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;uint8_t digest[32];
atcac_sw_sha2_256(challenge, 32, digest);

response_buf[0] = (CLIENT_DEVICE_ID &amp;gt;&amp;gt; 24) &amp;amp; 0xFF;
response_buf[1] = (CLIENT_DEVICE_ID &amp;gt;&amp;gt; 16) &amp;amp; 0xFF;
response_buf[2] = (CLIENT_DEVICE_ID &amp;gt;&amp;gt;  8) &amp;amp; 0xFF;
response_buf[3] =  CLIENT_DEVICE_ID        &amp;amp; 0xFF;

atcab_sign(0, digest, response_buf + 4);

gatt_client_write_value_of_characteristic(
    handler, conn_handle, response_handle, 68, response_buf);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;device_id&lt;/code&gt; is the lower four bytes of the ATECC508A serial number which we saved during provisioning and locking of the chip along with it&amp;#39;s public key. This is the same four bytes the server will look up in its static keystore to find the public key.&lt;/p&gt;
&lt;p&gt;The ID Card&amp;#39;s LED lights up green when connecting to the door device and the door device&amp;#39;s LED turns green when the signing of nonce by ATEC508A is successfully verified by micro-ecc&lt;/p&gt;
&lt;h2 id="mcetoc_1jn9akd4n5"&gt;Result&lt;/h2&gt;
&lt;p&gt;With both bugs sorted, the UART log across two boards looks like this on a clean run.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:432px;max-width:800px;"  src="https://community.element14.com/resized-image/__size/1600x864/__key/communityserver-discussions-components-files/452/2026_2D00_04_2D00_17-gatt_2D00_auth-eccand-attec-working.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://community.element14.com/cfs-file/__key/communityserver-discussions-components-files/452/blegatt.mp4"&gt;community.element14.com/.../blegatt.mp4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Again, i am using a PCB which i designed for a client to work like an breakout board for the ATTEC508A. Hence the blur.&amp;nbsp; After a successful verification, the door devices starts readvertising and i do have to reset the ID card to re-auth again.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1jn9ao9n77"&gt;Final Notes&lt;/h2&gt;
&lt;p&gt;Again, thanks to BTStacks awesome documentation, this was an easy three hour work after setting up ATECC508A. There was some hold up due to typo in the micro-ecc bundled by BTStack, which i thought was my problem but later I realized it was a bug. I did write the public key manually in the lookup table for this unit test, in the final unit test, I will interface W5500 to sync the public keys to the feather board.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-c" lang="c"&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Using the Particle Ethernet FeatherWing with the MAX32630FTHR (Don't Forget to Set)</title><link>https://community.element14.com/thread/56882?ContentTypeID=0</link><pubDate>Mon, 27 Apr 2026 20:29:29 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:8db71070-4c6a-473b-80fc-f9857ade6860</guid><dc:creator>Alistair</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56882?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56882/using-the-particle-ethernet-featherwing-with-the-max32630fthr-don-t-forget-to-set/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;For my project I am using the &lt;a href="https://docs.particle.io/hardware/ethernet/ethernet-featherwing/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Particle Ethernet FeatherWing&lt;/a&gt; to allow the MAX32630FTHR to communicate with the local network and enable my alarm.&lt;/p&gt;
&lt;p&gt;The Particle Ethernet FeatherWing is based around the WIZnet W5500 and under normal circumstances will work with the standard Arduino Ethernet library version 2.0.0+. This is however not compatible with the older Maxim core. It took a while but I worked round the problem, and here is my solution just in case it is helpful to someone else.&lt;/p&gt;
&lt;p&gt;Before we get into the software, we need to add some header pins to the MAX32630FTHR. My advice is to loosely place the pins in the FeatherWing and quickly solder on the corner pins. After that the header pins are held in place and the rest of the pins will be so much easier to solder.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/MAX32630FTHR-adding-pins-combined.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;My work around with the Arduino IDE 1.8 it to this is to use the older &lt;a href="https://docs.arduino.cc/libraries/ethernet2/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Ethernet2 library&lt;/a&gt;, that is a drop in replacement to the version 1 Ethernet library but supports the W5500. This addresses most of the issues, but we still need to copy across a few files to get this to work. Here are the setup instructions...&lt;/p&gt;
&lt;p&gt;First install the &lt;a href="https://github.com/adafruit/Ethernet2/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Ethernet2 library&lt;/a&gt; from the Arduino library manager (Sketch-&amp;gt;Include Library-&amp;gt;Manage Libraries&amp;hellip;).&lt;/p&gt;
&lt;p&gt;Once installed we need to copy the following files from the Arduino AVR core &amp;quot;%homepath%\Documents\ArduinoData\packages\arduino\hardware\avr\1.8.6\cores\arduino&amp;quot; to the Ethernet2 library directory &amp;quot;%homepath%\Documents\Arduino\libraries\Ethernet2\src&amp;quot;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Client.h&lt;/li&gt;
&lt;li&gt;Server.h&lt;/li&gt;
&lt;li&gt;IPAddress.h&lt;/li&gt;
&lt;li&gt;IPAddress.cpp&lt;/li&gt;
&lt;li&gt;Udp.h&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I will note that although it would make more sense to copy the missing files to the Mamim core (&amp;quot;%homepath%\Documents\ArduinoData\packages\Maxim\hardware\arm\1.1.5\cores\arduino&amp;quot;&lt;span style="font-family:inherit;"&gt;) and not the Ethernet2 library, but doing this uncovers yet more issues that need to be addressed, so lets take the easy road on this occasion.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;So after this modification, and including Ethernet2.h instead of Ethernet.h our standard Ethernet applications will compile but not run. We still need to tell the library what pin to use in our setup code. From &lt;a href="https://learn.adafruit.com/assets/34337" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;the schematic&lt;/a&gt; we can see the chip select is on pin 22 if the featherwing connector (traditionally GPIO10) and that is mapped to pin 7 on CON12 (P5.4 /SDIO 2) according to the &lt;a href="https://www.analog.com/media/en/technical-documentation/eval-board-schematic/max32630fthr-schematic.pdf" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;MAX32630FTHR schematic&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, in English, just add &amp;ldquo;Ethernet.init(P5_4);&amp;rdquo; to setup() before calling &amp;ldquo;Ethernet.begin&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;And that is it. Here is a cut down version of the WebClient example to set with&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;SPI.h&amp;gt;
#include &amp;lt;Ethernet2.h&amp;gt;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = &amp;quot;www.google.com&amp;quot;;

EthernetClient client;

void setup() {

Serial.begin(115200);
Serial.println(&amp;quot;Starting...&amp;quot;);

Ethernet.init(P5_4);
Ethernet.begin(mac);

delay(1000);
Serial.println(&amp;quot;connecting...&amp;quot;);

if (client.connect(server, 80)) {
Serial.println(&amp;quot;connected&amp;quot;);

client.println(&amp;quot;GET /search?q=arduino HTTP/1.1&amp;quot;);
client.println(&amp;quot;Host: www.google.com&amp;quot;);
client.println(&amp;quot;Connection: close&amp;quot;);
client.println();
}
else {
Serial.println(&amp;quot;connection failed&amp;quot;);
}
}

void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}

if (!client.connected()) {
Serial.println();
Serial.println(&amp;quot;disconnecting.&amp;quot;);
client.stop();
while (true);
}
}&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Identity Protocol - Part 8 - Cryptographically Sign with ATECC508 and Verify with Micro-ECC</title><link>https://community.element14.com/thread/56881?ContentTypeID=0</link><pubDate>Mon, 27 Apr 2026 18:35:36 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:00ba2e61-875f-438e-acf1-b833c52aa207</guid><dc:creator>arvindsa</dc:creator><slash:comments>3</slash:comments><comments>https://community.element14.com/thread/56881?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56881/identity-protocol---part-8---cryptographically-sign-with-atecc508-and-verify-with-micro-ecc/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Fair warning, this one is gonna be a hard read. I have used ATECC508A Crypto chip in my work extensively, so I&amp;#39;ve grown quite comfortable with it. I had couple of chips left over from that work and was delighted to use this challenge to use the Crypto chips again and more importantly document the process in the public. Now, The full datasheet is protected in NDA and you get a very restricted Datasheet online.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea is simple enough: stop making people swipe a card and type a PIN at every single door. Instead, the ID card (a MAX32630FTHR + ATECC508A in your pocket) unlocks once via PIN, then silently does challenge-response crypto over Bluetooth every time you walk up to a door. If the card gets yanked off you, the IMU detects the tug and it locks itself. No PIN, no entry. For more details check the Part 1 of the series&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56768/identity-protocol-part-1---plan" data-contentid="d5152729d060498f812f0244641b3810" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol Part 1 - Plan&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56830/identity-protocol---part-2---django-server" data-contentid="1ab561efc7f2445b8eb20783970ed89c" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 2 - Django Server&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56840/identity-protocol---part-3---unboxing-and-blinking-with-maxim-lpsdk" data-contentid="75fef2ca1ed74f3ca296a48a29402617" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 3 - Unboxing and Blinking with Maxim LPSDK&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56853/identity-protocol---part-4---ble-using-pan1326b-and-btstack" data-contentid="b449688fb5c8477991ced940f32ac3fa" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 4 - BLE using PAN1326B and BTstack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Identity Protocol - Part 5 - Interfacing a Keypad" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56856/identity-protocol---part-5---interfacing-a-keypad" data-e14adj="t"&gt;Identity Protocol - Part 5 - Interfacing a Keypad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56861/identity-protocol---part-6---snatch-detection-with-the-bmi160-imu" data-e14adj="t"&gt;Identity Protocol - Part 6 - Snatch Detection with the BMI160 IMU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56874/identity-protocol---part-7---colouring-on-the-icled-featherwing" data-e14adj="t"&gt;Identity Protocol - Part 7 - Colouring on the ICLED FeatherWing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1jn80slmh0"&gt;Why a Secure Element?&lt;/h2&gt;
&lt;p&gt;People who were frustrated that their Windows 10 couldnt be upgraded to Windows 11 due to TPM not being available in their device will ask. Why? Because TPM is a secure element, keeps things safe. Similarly this one keeps secrets safe. If you need a refresher into cryptographic encryption should watch the videos below&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=AQDCe585Lnc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://www.youtube.com/watch?v=AQDCe585Lnc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=AYdikYrLKRc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://www.youtube.com/watch?v=AYdikYrLKRc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With the knowledge of the Public and Private key, the question is how can you make a private key secure in an electronics? You can&amp;#39;t save in MCU flash, you can dump the firmware and extract it. There are basic protections against it, but it can be countered as well, the private key extracted and the device duplicated. Enter Secure Elements like ATECC508A. This contains specially designed silicon die that you cannot extract the keys, in fact, the keys are generated on the chip and the private key never leaves the chip. You cant even save a private key on the chip for storage, it beats the trust factor. Once the private key is generated, it secure. We can ask the chip to sign a nonce and return the signed value. The keys are stored in slots; access policy for each slot is baked into a &amp;quot;config zone&amp;quot; that you write once and then permanently lock. After the lock there is no going back -- the chip&amp;#39;s behaviour is frozen for life.&lt;/p&gt;
&lt;h2 id="mcetoc_1jn81a5lc1"&gt;ATECC508A Primer&lt;/h2&gt;
&lt;p&gt;The chip&amp;#39;s I2C address is 0x60 .It has four power states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sleep&amp;nbsp;- default on power-up;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Idle - after the wake pulse, between commands;&amp;nbsp; Note that&amp;nbsp; &amp;quot;TempKey&amp;quot; (a 32-byte scratch buffer used by Sign and other commands) is preserved in idle but lost in sleep.&lt;/li&gt;
&lt;li&gt;Active - executing a command&lt;/li&gt;
&lt;li&gt;Wake transition - triggered by holding SDA low for at least 60 us.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Every transaction follows the same protocol - wake pulse, send a packet composed of&amp;nbsp;&lt;code&gt;[word_addr | count | opcode | param1 | param2 | data | crc16]&lt;/code&gt;, wait the per-command execution time (Sign takes 58 ms, GenKey 115 ms, Write 26 ms, etc refer the datasheet for the timing.), read the response, then send a 1-byte &amp;quot;idle&amp;quot; or &amp;quot;sleep&amp;quot; word.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jn81esfg2"&gt;The Wake Trick&lt;/h2&gt;
&lt;p&gt;The datasheet says &amp;quot;hold SDA low for at least 60 us.&amp;quot; There is no I2C primitive that does this directly -- I2C masters drive START, address, data, STOP, never a flat 60 us LOW. So either i have to run it as a GPIO and then start I2C. But&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/MicrochipTech/cryptoauthlib" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Microchip&amp;#39;s cryptoauthlib&amp;#39;s &lt;/a&gt;reference HALs recommend you to to fire an I2C write transaction at slave address &lt;code&gt;0x00&lt;/code&gt;. No real device responds to 0x00, so the master sends START + the 8-bit address byte, gets no ACK, and gives up. But during those 8-9 bit times at 100 kHz, SDA spends most of its time LOW -- about 80 us LOW total.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;case ATCA_HAL_CONTROL_WAKE: {
    uint8_t zero = 0x00;
    /* Write to addr 0x00 -- NACK is expected, we use this to flatten SDA */
    I2CM_Write(ATCA_I2C_BUS, 0x00, NULL, 0, &amp;amp;zero, 1);
    hal_delay_ms(WAKE_DELAY_MS);   /* tWHI = 1.5 ms */

    uint8_t wake_resp[4] = {0};
    int ret = I2CM_Read(ATCA_I2C_BUS, addr, NULL, 0, wake_resp, 4);
    if (ret != 4) return ATCA_WAKE_FAILED;
    const uint8_t expected[4] = {0x04, 0x11, 0x33, 0x43};
    if (memcmp(wake_resp, expected, 4) != 0) return ATCA_WAKE_FAILED;
    return ATCA_SUCCESS;
}&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jn81jegj3"&gt;CryptoAuthLib HAL: One File&lt;/h2&gt;
&lt;p&gt;CryptoAuthLib is Microchip&amp;#39;s reference C library for the ATECC family. It has all the device-side logic (packet construction, CRC, retry policy, all the opcodes) but expects you to provide a small HAL. This is mentioned in their documentation&amp;nbsp;&lt;a id="" href="https://github.com/MicrochipTech/cryptoauthlib/blob/main/lib/hal/README.md" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/MicrochipTech/cryptoauthlib/blob/main/lib/hal/README.md&lt;/a&gt;&amp;nbsp;. The relevant 4 Functions written in&amp;nbsp;&lt;code&gt;hal_maxim_i2c.c&lt;/code&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class="table-figure"&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HAL function&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hal_i2c_init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bring up I2CM1 MAP_A (P3_4=SDA, P3_5=SCL) at 100 kHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hal_i2c_send&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Prepend word-address byte to payload, write via &lt;code&gt;I2CM_Write&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hal_i2c_receive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read N bytes via &lt;code&gt;I2CM_Read&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hal_i2c_control&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Implement WAKE (SDA-low trick), IDLE (write 0x02), SLEEP (write 0x01)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hal_delay_ms/us&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Wrap LPSDK &lt;code&gt;TMR_Delay&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;
&lt;p&gt;Now, when i started writing the HAL, I inadvertently chose to use an dedicated I2C, used a PCB board from my past work to interface it, so gonna be pixelating the board, It&amp;#39;s a simple PCB but it is my policy,&amp;nbsp; I did have to enable the PMIC to enable 3.3V on L3OUT.&amp;nbsp; Now, had i used the I2CM2 which is shared with PMIC and IMU, i would not have seen the crypto chip working and would have had an meltdown. This is because I2CM2 uses I2C pull-ups to 1.8V but ATECC508 requires 3.3V. I think the minimum is some 2v.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/20260416_5F00_204016.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jn81qc256"&gt;Provisioning the Chip&lt;/h2&gt;
&lt;p&gt;The ATECC508A ships with its config zone unlocked and writable. Provisioning is a four-step rite of passage:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write the config zone - 128 bytes that describe what every slot can do.&lt;/li&gt;
&lt;li&gt;Lock the config zone - after this, the slot policies are frozen.&lt;/li&gt;
&lt;li&gt;GenKey in slot 0 - the chip generates a fresh P-256 key pair internally.&lt;/li&gt;
&lt;li&gt;Lock the data zone - after this, no further keys can be written or generated.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Steps 2 and 4 are irreversible. If the config bytes for slot 0 are wrong, you cannot fix them after the lock. So I wanted this to run from a Python script on my laptop where I could see exactly what was being written, dry-run it, and read back to verify, rather than baking the policy into firmware. Unfortunately, I cannot share the Python script because it&amp;#39;s sort of paid by my client. Sparkfun who does sell these chips advice you to buy many extra chips in case we mess up.&amp;nbsp;&lt;/p&gt;
&lt;h3 id="mcetoc_1jn8209vj7"&gt;The Config Zone Template&lt;/h3&gt;
&lt;p&gt;The 128-byte config zone is a packed bag of bit fields: SlotConfig (16 entries, 2 bytes each), KeyConfig (16 entries, 2 bytes each), Counter[0:1], LastKeyUse, LockValue, LockConfig, ChipOptions, X.509 hints, etc. For this PoC I only care about slot 0:&lt;/p&gt;
&lt;figure class="table-figure"&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Slot 0 SlotConfig&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0x8720&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IsSecret=1, ReadKey=7, WriteConfig=2 (GenKey allowed)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slot 0 KeyConfig&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0x0033&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;KeyType=4 (P-256), Private=1, PubInfo=1, Lockable=1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;code&gt;IsSecret=1&lt;/code&gt; is the line that matters most -- it means the slot&amp;#39;s contents (the private key) are never returned by &lt;code&gt;Read&lt;/code&gt;. &lt;code&gt;WriteConfig=2&lt;/code&gt; allows GenKey to populate the slot but blocks raw writes. &lt;code&gt;PubInfo=1&lt;/code&gt; makes the &lt;em&gt;public&lt;/em&gt; key derivable via &lt;code&gt;GenKey(slot, mode=read)&lt;/code&gt;, which is how the script reads it back after locking.&lt;/p&gt;
&lt;p&gt;The other 15 slots get permissive policies (&lt;code&gt;0x8F0F&lt;/code&gt; / &lt;code&gt;0x3C00&lt;/code&gt;) so they could be used later, but for the this project they remain empty.&lt;/p&gt;
&lt;h2 id="mcetoc_1jn822r0k8"&gt;Signing on the ATECC&lt;/h2&gt;
&lt;p&gt;Once the chip is provisioned, signing a 32-byte digest is a two-command sequence:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nonce pass through (opcode &lt;code&gt;0x16&lt;/code&gt;, param1=&lt;code&gt;0x03&lt;/code&gt;) -- loads a 32-byte value into TempKey directly, bypassing the chip&amp;#39;s internal nonce generation.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Sign external (opcode &lt;code&gt;0x41&lt;/code&gt;, param1=&lt;code&gt;0x80&lt;/code&gt;, param2=slot index) -- signs the contents of TempKey with the P-256 private key in the given slot. Returns a 64-byte signature,&amp;nbsp; with&amp;nbsp;&lt;a href="https://en.wikipedia.org/wiki/ASN.1" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;no ASN.1 wrapping&lt;/a&gt;.&amp;nbsp; I used ASN,1 a lot, but never understood it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The reason this is two commands instead of one is that the chip&amp;#39;s &amp;quot;internal&amp;quot; Sign mode is designed for signing data the chip itself generated (like its own random number plus a counter). For our use case -- signing an external challenge -- we have to load the digest manually, which is what the Nonce passthrough does.&lt;/p&gt;
&lt;h2 id="mcetoc_1jn827j4oa"&gt;Verifying on the Door&lt;/h2&gt;
&lt;p&gt;The door device does &lt;strong&gt;not&lt;/strong&gt; have an ATECC508A. Actually In the original proposal i wrote it, but to load all public key from django server is an impossible task, Then i thought, It only needs to verify signatures, not generate them. ECDSA verification is purely arithmetic with public values. there is no key to hide, so no need of secure element, so a software library is enough. I picked Kenneth MacKay&amp;#39;s &lt;a href="https://github.com/kmackay/micro-ecc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;micro-ecc&lt;/a&gt;,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It is dropped in as a git submodule under &lt;code&gt;third_party/micro-ecc/&lt;/code&gt;. The verify call is one line:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;int ok = uECC_verify(pubkey64, digest, 32, signature64, uECC_secp256r1());&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Where &lt;code&gt;pubkey64&lt;/code&gt; is the X || Y coordinates (no SEC1 0x04 prefix), &lt;code&gt;digest&lt;/code&gt; is the 32-byte SHA-256 of the challenge, and &lt;code&gt;signature64&lt;/code&gt; is the raw singature rteturned in&amp;nbsp;&amp;nbsp;returned by &lt;code&gt;atcab_sign&lt;/code&gt;. (Step 2 above).&lt;/p&gt;
&lt;h2 id="mcetoc_1jn82dlosb"&gt;The End-to-End Bench Test&lt;/h2&gt;
&lt;p&gt;The same &lt;code&gt;provision-verify&lt;/code&gt; firmware full crypto chain on a single board. After provisioning, two extra commands via serial will test the generation of nonce, signing via ATEC508A and veriofication via micro-ecc&lt;/p&gt;
&lt;figure class="table-figure"&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;k&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read public key from slot 0 via &lt;code&gt;atcab_get_pubkey&lt;/code&gt; and print 128 hex chars&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;ADC-noise nonce -&amp;gt; SHA-256 -&amp;gt; sign(slot 0) -&amp;gt; read pubkey -&amp;gt; &lt;code&gt;uECC_verify&lt;/code&gt;; print PASS/FAIL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:450px;max-width:587px;"  src="https://community.element14.com/resized-image/__size/1174x900/__key/communityserver-discussions-components-files/452/2.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jn82fr2rc"&gt;The Nonce Generation Confusion&lt;/h2&gt;
&lt;p&gt;For sake of my own sanity, i will tell you i tried using the MAX32630 &amp;quot;PRNG&amp;#39; which stands for Pseudo Random Number Generator which surprisingly gave me a constant number always i think It stands for &amp;quot;Persistent, Reluctant Number Guy&amp;quot; with so many work arounds nothing worked. So i went to the age old method of using the ADC.&amp;nbsp;Sample 32 times across 4 channels (128 samples), mix into a 32-bit accumulator with &lt;code&gt;rotate-left-3 + XOR&lt;/code&gt;, then expand to 32 bytes via xorshift32:&amp;nbsp; I took this code from somewhere in my past work, It is not really my work, But I&amp;#39;ve used it successfully.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;uint32_t seed = 0;
for (int round = 0; round &amp;lt; 32; round++) {
    for (int i = 0; i &amp;lt; 4; i++) {
        uint16_t val = 0;
        ADC_StartConvert(ch[i], 0, 0);
        ADC_GetData(&amp;amp;val);
        seed = ((seed &amp;lt;&amp;lt; 3) | (seed &amp;gt;&amp;gt; 29)) ^ (uint32_t)val;
    }
}
if (seed == 0) seed = 0xA5A5A5A5u;   /* edge case: all channels read 0 */&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This produces a different nonce on every reset, verified by capturing &lt;code&gt;NONCE :&lt;/code&gt; lines across many reset cycles and checking for repeats (none, ever).&lt;/p&gt;
&lt;p&gt;Code for this particular post is available at&amp;nbsp;&lt;a id="" href="https://github.com/arvindsa/identity-protocol-e14-challenge/tree/main/firmware/tests/provision-verify" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/arvindsa/identity-protocol-e14-challenge/tree/main/firmware/tests/provision-verify&lt;/a&gt;&amp;nbsp;&lt;br /&gt;Code for entire project is available at&amp;nbsp;&lt;a id="" href="https://github.com/arvindsa/identity-protocol-e14-challenge" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/arvindsa/identity-protocol-e14-challenge&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jn82rk7rd"&gt;Final Notes&lt;/h2&gt;
&lt;p&gt;We used a decade old crypto algorithm using both an Hardware chip and an software library. My head is boiling trying to ascertain if my post is understandable, if not let me know i will try to rewrite this. Next is using GATT to enable exchange of NONCE and signed digest. The work is done, I just have to write the post&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Forum#4 - Communication Framework - Adaptive Sentinel: Security  &amp; Surveillance Hub</title><link>https://community.element14.com/thread/56879?ContentTypeID=0</link><pubDate>Mon, 27 Apr 2026 06:23:46 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:d6e988f1-d203-4b68-a88a-1582f9322474</guid><dc:creator>skruglewicz</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/56879?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56879/forum-4---communication-framework---adaptive-sentinel-security-surveillance-hub/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h1&gt;&lt;b&gt;Building the UART Communication Framework&lt;/b&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Welcome back to the &lt;/span&gt;&lt;b&gt;Adaptive Sentinel&lt;/b&gt;&lt;span style="font-weight:400;"&gt; project! In this fourth installment of our design challenge journey, we are moving beyond individual sensor nodes and focusing on the &amp;quot;nervous system&amp;quot; of our ecosystem: the &lt;/span&gt;&lt;b&gt;Communication Framework&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;The goal here is simple yet critical: establishing a rock-solid, end-to-end communication link between our two &lt;/span&gt;&lt;b&gt;MAX32630FTHR&lt;/b&gt;&lt;span style="font-weight:400;"&gt; edge nodes and the &lt;/span&gt;&lt;b&gt;Arduino UNO Q&lt;/b&gt;&lt;span style="font-weight:400;"&gt; central hub.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;The Architecture: A Wired Backbone&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;While wireless is often the go-to for IoT, we&amp;rsquo;ve opted for a robust &lt;/span&gt;&lt;b&gt;UART Backbone&lt;/b&gt;&lt;span style="font-weight:400;"&gt; for this phase. By utilizing direct pin headers and USB interfaces, we bypass the latency and reliability issues often found in crowded wireless environments. This ensures that our telemetry data arrives exactly when we need it.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;The &amp;quot;Dual-Brain&amp;quot; Advantage&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;The heart of our system, the&lt;/span&gt;&lt;a href="https://store.arduino.cc/products/uno-q" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt; &lt;span style="font-weight:400;"&gt;Arduino UNO Q&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;, is doing some heavy lifting here. We are leveraging its unique &lt;/span&gt;&lt;b&gt;Dual-Brain&lt;/b&gt;&lt;span style="font-weight:400;"&gt; architecture to maintain system stability:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;STM32 MCU:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Handles the &amp;quot;deterministic&amp;quot; side of things&amp;mdash;managing the low-level inter-node communication protocols with precision.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Qualcomm Dragonwing MPU:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Takes charge of high-level orchestration, including intensive data logging and serving the Web UI.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;b&gt;Implementation &amp;amp; Logic&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;To keep the system modular and maintainable, we&amp;#39;ve developed a core validation suite centered around two primary functions: &lt;/span&gt;&lt;span style="font-weight:400;"&gt;SEND()&lt;/span&gt;&lt;span style="font-weight:400;"&gt; and &lt;/span&gt;&lt;span style="font-weight:400;"&gt;RECEIVE()&lt;/span&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;b&gt;Edge Node Logic (MAX32630FTHR)&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Each edge node is responsible for packetizing its own status. To keep the hub organized, every transmission includes a unique &lt;/span&gt;&lt;b&gt;NODEID&lt;/b&gt;&lt;span style="font-weight:400;"&gt;. Whether it&amp;rsquo;s raw sensor telemetry or a simple status string, the hub always knows exactly who is talking.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;b&gt;Hub Aggregation&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;On the hub side, the Arduino UNO Q acts as the ultimate aggregator. Because it can process high-bandwidth streams from multiple nodes simultaneously, we achieve a level of responsiveness that keeps our security intelligence &amp;quot;live&amp;quot; and actionable.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pseudocode Snapshot:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;SEND():&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Facilitates outbound message transmission with packet headers.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;RECEIVE():&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Captures incoming strings and outputs data to the terminal for real-time monitoring.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;b&gt;We Need Your Help!&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;As we move toward the final showcase of the &lt;/span&gt;&lt;b&gt;Adaptive Sentinel&lt;/b&gt;&lt;span style="font-weight:400;"&gt;, we want to ensure this framework is bulletproof.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Community Challenge:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; We&amp;rsquo;re looking for &amp;quot;stress testers.&amp;quot; Can you spot any potential bottlenecks or &amp;quot;loopholes&amp;quot; in our UART flow? How would you push this wired architecture to its limits?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Leave your thoughts in the comments below!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Next Up:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Stay tuned for Forum #5, where I bring it all together with my design and implementation path for the &lt;/span&gt;&lt;i&gt;&lt;span style="font-weight:400;"&gt;Final Project&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Identity Protocol - Part 7 - Colouring on the ICLED FeatherWing</title><link>https://community.element14.com/thread/56874?ContentTypeID=0</link><pubDate>Thu, 23 Apr 2026 14:12:29 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:205164f5-87d1-4673-90f8-3e179f52adff</guid><dc:creator>arvindsa</dc:creator><slash:comments>13</slash:comments><comments>https://community.element14.com/thread/56874?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56874/identity-protocol---part-7---colouring-on-the-icled-featherwing/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;LEDs has been a major part of my projects and I love working with it. My son also loves to see the things i do with my LEDs. In this part i make colors appear on the ICLED Featherwing&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea is simple enough: stop making people swipe a card and type a PIN at every single door. Instead, the ID card (a MAX32630FTHR + ATECC508A in your pocket) unlocks once via PIN, then silently does challenge-response crypto over Bluetooth every time you walk up to a door. If the card gets yanked off you, the IMU detects the tug and it locks itself. No PIN, no entry. For more details check the Part 1 of the series&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56768/identity-protocol-part-1---plan" data-contentid="d5152729d060498f812f0244641b3810" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol Part 1 - Plan&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56830/identity-protocol---part-2---django-server" data-contentid="1ab561efc7f2445b8eb20783970ed89c" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 2 - Django Server&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56840/identity-protocol---part-3---unboxing-and-blinking-with-maxim-lpsdk" data-contentid="75fef2ca1ed74f3ca296a48a29402617" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 3 - Unboxing and Blinking with Maxim LPSDK&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56853/identity-protocol---part-4---ble-using-pan1326b-and-btstack" data-contentid="b449688fb5c8477991ced940f32ac3fa" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 4 - BLE using PAN1326B and BTstack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Identity Protocol - Part 5 - Interfacing a Keypad" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56856/identity-protocol---part-5---interfacing-a-keypad" data-e14adj="t"&gt;Identity Protocol - Part 5 - Interfacing a Keypad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56861/identity-protocol---part-6---snatch-detection-with-the-bmi160-imu" data-e14adj="t"&gt;Identity Protocol - Part 6 - Snatch Detection with the BMI160 IMU&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The ICLED FeatherWing is on the door device. It displays status icons: a blue key (waiting), yellow lock (authenticating), green tick (granted), red cross (denied), and magenta sync arrows (server update). 105 LEDs arranged in a 7x15 column-major matrix, single data wire in, GRB colour order. Full source is in `firmware/tests/icled-timer/` (TMR4 hardware PWM) in the project repo.&lt;/p&gt;
&lt;h2 id="mcetoc_1jmt9c02o0"&gt;The WS2812B Protocol&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://www.we-online.com/en/components/products/OPTO_ICLED_FEATHERWING" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;IC LED FeatherWing&lt;/a&gt; contains &lt;a href="https://www.we-online.com/en/components/products/WL-ICLED" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;1312020030000&lt;/a&gt; LED which i loved working with in my previous challenge &lt;a href="https://community.element14.com/challenges-projects/design-challenges/light-up-your-life/b/projects/posts/auraalert---lighting-up-every-sound" data-e14adj="t"&gt;AuraAlert - Lighting up Every Sound&lt;/a&gt;. Seriously bright with awesome colors. It uses the popular WS2812B Protocol. In the Previous challenge, i never bothered with the protocol as i was using Arduino library to take care of it. This time I have been challenged to make the protocol code from scratch.&lt;/p&gt;
&lt;p&gt;The Protocol is quite simple&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;For starting a frame, send a 50uS low&lt;/li&gt;
&lt;li&gt;Each LED grabs the first 24 bits of incoming data (8 bits each for green, red, blue) and forwards everything else downstream.&lt;/li&gt;
&lt;li&gt;There is no separate clock line, and so &amp;#39;0&amp;#39; and a &amp;#39;1&amp;#39; are distinguished only by how long the wire stays HIGH within a fixed 1.25 us window.&lt;/li&gt;
&lt;li&gt;&amp;#39;0&amp;#39; is when there is 0.35uS high (T0H) followed by 0.9us of low (T0L)&lt;/li&gt;
&lt;li&gt;&amp;#39;1&amp;#39; is when there is 0.9us of high (T1H) followed by 0.35us of low (T1L)&lt;/li&gt;
&lt;li&gt;In this fashion, i have to provide 8 bit values of LED for Green, Red and blue (in this order)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:102px;max-width:320px;"  src="https://community.element14.com/resized-image/__size/640x204/__key/communityserver-discussions-components-files/452/ws2812_2D00_timing1.png" /&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;Credits: &lt;a id="" href="https://mcuoneclipse.com/2016/05/22/nxp-flexio-generator-for-the-ws2812b-led-stripe-protocol/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://mcuoneclipse.com/2016/05/22/nxp-flexio-generator-for-the-ws2812b-led-stripe-protocol/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmt9h0ao1"&gt;I miss my STM32s&lt;/h2&gt;
&lt;p&gt;Even though most of time I use Arduino Core for STM32 for developing a project fast, there are times when for serious production work, I had to use STM32Hal. There the approach is well established: configure a timer in PWM mode, hook a DMA channel to the timer&amp;#39;s CCR register (Capture/Compare Register), fill a buffer with duty-cycle values for every bit, and fire it off. The CPU is completely free during the transfer. One call to `HAL_TIM_PWM_Start_DMA()` and you are done. The DMA engine pushes each duty value into the compare register on every timer period, producing a continuous PWM waveform with the right T0H/T1H timing. No CPU involvement, no interrupt-disable window.&lt;/p&gt;
&lt;p&gt;The MAX32630 does not have this functionality, or it probably does and I can&amp;#39;t find it. For now, there is no equivalent of the STM32&amp;#39;s TIMx_CCR DMA burst mode. So I have two options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Bit-bang with NOPs: toggle GPIO directly, pad timing with NOP instructions&lt;/li&gt;
&lt;li&gt;Hardware PWM with polled duty update -&amp;nbsp; use the timer in PWM mode but update the duty register manually each bit period&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/flowchart.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmt9me273"&gt;Approach 1: NOP Bit-Bang&lt;/h2&gt;
&lt;p&gt;Easy to code, very unreliable. Drive a GPIO pin HIGH, wait the right number of NOPs for either a &amp;#39;0&amp;#39; bit or a &amp;#39;1&amp;#39; bit, then drive it LOW, wait again, and repeat. A NOP is &amp;quot;no operation&amp;quot; is a CPU instruction that does literally nothing for one clock cycle. Essentially it like delay() but at a more assembly level. Join many NOPs to get a precise, calibrated delay.&lt;/p&gt;
&lt;p&gt;The Feather is clocking at 96 MHz, one CPU cycle is ~10.4 ns. But NOPs do not take exactly one cycle due to APB bus write latency when toggling GPIO. I measured the effective NOP rate at 10.85 ns/NOP by capturing waveforms on a scope.&lt;/p&gt;
&lt;p&gt;I tried a lot, but I never got the LED working at all. So I decided to let it rest. At 7x15=105 Led&amp;#39;s it will take around 3.2ms for sending data to the LEDs, that will not play well with my 50hz IMU data reading.&lt;/p&gt;
&lt;h2 id="mcetoc_1jmt9ngv04"&gt;Approach 2: Hardware PWM with Polled Duty (icled-timer)&lt;/h2&gt;
&lt;p&gt;Let the timer peripheral generate the precise waveform timing, and the CPU only needs to update the duty register between bit periods.&lt;/p&gt;
&lt;h3 id="mcetoc_1jmt9o1ua5"&gt;Pin-to-Timer Mapping&lt;/h3&gt;
&lt;p&gt;The MAX32630 maps GPIO pins to timers with the formula (see &lt;code&gt;SYS_TMR_Init&lt;/code&gt; in the LPSDK&amp;#39;s &lt;code&gt;mxc_sys.c&lt;/code&gt;):&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;timer_index = (port * 8 + pin) % num_timers&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;For P5_6: (5*8 + 6) % 6 = 4, so P5_6 maps to TMR4. This is the integration target pin for the ICLED DIN on the door device (D13 header position on the FeatherWing).&lt;/p&gt;
&lt;h3 id="mcetoc_1jmt9qfh06"&gt;Timer Configuration&lt;/h3&gt;
&lt;p&gt;At 96 MHz with prescale &lt;code&gt;TMR_PRESCALE_DIV_2_0&lt;/code&gt; (which is divide-by-1, not divide-by-2; the name refers to 2^0), one tick = 10.42 ns.&lt;/p&gt;
&lt;table border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="128"&gt;&lt;strong&gt;Parameter&lt;/strong&gt;&lt;/td&gt;
&lt;td width="64"&gt;&lt;strong&gt;Ticks&lt;/strong&gt;&lt;/td&gt;
&lt;td width="64"&gt;&lt;strong&gt;Time&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="128"&gt;Period (1.25 us)&lt;/td&gt;
&lt;td width="64"&gt;120&lt;/td&gt;
&lt;td width="64"&gt;1250 ns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="128"&gt;T0H duty&lt;/td&gt;
&lt;td width="64"&gt;38&lt;/td&gt;
&lt;td width="64"&gt;396 ns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="128"&gt;T1H duty&lt;/td&gt;
&lt;td width="64"&gt;77&lt;/td&gt;
&lt;td width="64"&gt;802 ns&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The timer runs in 32-bit PWM mode. On each period rollover, the counter resets to 0 and the output goes HIGH. When the counter reaches the duty value, the output goes LOW. So by writing 38 ticks as duty we get a ~400 ns HIGH pulse (a &amp;#39;0&amp;#39; bit), and 77 ticks gives a ~800 ns HIGH pulse (a &amp;#39;1&amp;#39; bit).&lt;/p&gt;
&lt;h3 id="mcetoc_1jmt9s4l27"&gt;The Pre-Frame Buffer&lt;/h3&gt;
&lt;p&gt;Before starting the transfer, the entire frame is pre-computed into a &lt;code&gt;duties[]&lt;/code&gt; array, one entry per bit, 105 LEDs x 24 bits = 2520 entries. Each entry is either &lt;code&gt;DUTY_T0&lt;/code&gt; (38) or &lt;code&gt;DUTY_T1&lt;/code&gt; (77).&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static uint8_t duties[NLEDS * 24];

/* Build duty array from bitmap */
int idx = 0;
for (int led = 0; led &amp;lt; NLEDS; led++) {
    int col = led / ROWS;
    int row = led % ROWS;
    uint8_t bytes[3] = { pg, pr, pb };   /* WS2812B order: G, R, B */
    for (int i = 0; i &amp;lt; 3; i++)
        for (int bit = 7; bit &amp;gt;= 0; bit--)
            duties[idx++] = ((bytes[i] &amp;gt;&amp;gt; bit) &amp;amp; 1) ? DUTY_T1 : DUTY_T0;
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The inner loop is simple: poll for the timer&amp;#39;s rollover flag, clear it, write the next duty value. The timer hardware handles the precise HIGH/LOW timing. The CPU just needs to update the duty register within the 38-tick window (T0H) of the current bit, plenty of time for a poll+clear+write that takes ~10 cycles.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;for (int i = 1; i &amp;lt; NLEDS * 24; i++) {
    while (!TMR32_GetFlag(MXC_TMR4));
    TMR32_ClearFlag(MXC_TMR4);
    TMR32_SetDuty(MXC_TMR4, duties[i]);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1jmt9u5678"&gt;The Bug That Corrupted Every First Pixel&lt;/h3&gt;
&lt;p&gt;This is where i spent most of the debugging time. The first pixel was always wrong: LED 0 had a persistent green tinge regardless of what colour i sent. Every other LED was perfect. It turned out by looking at my Logic analyzer that When the PWM timer is stopped, its output pin idles HIGH. Calling GPIO_Config(&amp;amp;din_tmr) to switch the pin from GPIO mode to timer mode immediately connects it to the HIGH timer output. So bit 7 of the first byte (G channel) was always read as a &amp;#39;1&amp;#39; by the strip, regardless of the actual data.&lt;/p&gt;
&lt;h3 id="mcetoc_1jmt9u5689"&gt;The Fix: Warmup Period + Direct Register Write&lt;/h3&gt;
&lt;p&gt;The fix is to start the timer while the pin is still in GPIO output-LOW mode. This was experimental, but it worked, I guess the strip sees the LOW as an extension of the reset period. We wait for the first period rollover. Then we switch the pin to timer mode via a single &lt;code&gt;func_sel&lt;/code&gt; register write instead of the full &lt;code&gt;GPIO_Config&lt;/code&gt; call: Thanks to ChatGPT in helping me solve this.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/* Start timer, pin stays GPIO LOW, strip sees reset */
TMR32_SetCount(MXC_TMR4, 0);
TMR32_SetDuty(MXC_TMR4, duties[0]);
TMR32_ClearFlag(MXC_TMR4);
TMR32_Start(MXC_TMR4);

while (!TMR32_GetFlag(MXC_TMR4));   /* warmup */
TMR32_ClearFlag(MXC_TMR4);

/* count=0, output=HIGH: connect pin now, bit 0 starts cleanly */
MXC_GPIO-&amp;gt;func_sel[5] = (MXC_GPIO-&amp;gt;func_sel[5] &amp;amp; ~MXC_F_GPIO_FUNC_SEL_PIN6)
                       | (MXC_V_GPIO_FUNC_SEL_MODE_TMR &amp;lt;&amp;lt; MXC_F_GPIO_FUNC_SEL_PIN6_POS);&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmte2l3k0"&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:600px;max-width:1066px;"  src="https://community.element14.com/resized-image/__size/2132x1200/__key/communityserver-discussions-components-files/452/Logic-Pro-16.png" /&gt;&lt;/p&gt;
&lt;p&gt;This is the waveform of full brightness of one single LED. This was taken when i used one single WS2812B 5050 with adafruit adapter to test out if the green led bug was not repeated on a known led. Fixed the problem while it was attached on it. Forgot to capture waveform on the ICLED. I promise to take better waveform capture in the future.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmt9v40ca"&gt;LED Matrix Layout&lt;/h2&gt;
&lt;p&gt;The ICLED FeatherWing is wired such that LED0 is top-left (row 0, col 0), LED 6 is bottom-left (row 6, col 0), LED 7 is top of column 1 (row 0, col 1), and so on. This is considerably different from the Serpentine wiring in the projects i&amp;#39;ve done at &lt;a href="https://community.element14.com/challenges-projects/project14/fun-games/b/projects/posts/connect4-on-the-go---version-2" data-e14adj="t"&gt;Connect 4 Game&lt;/a&gt; or even a recent Custom LED Matrix screen which I had built for a client&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;LED index = col * ROWS + row
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This means when sending pixel data, we iterate through columns left to right, and within each column top to bottom. The bitmap arrays in the code are stored as &lt;code&gt;[row][col]&lt;/code&gt;, so the send loop does the transpose:&lt;/p&gt;
&lt;h2 id="mcetoc_1jmtcdddk0"&gt;The Five Auth-State Icon&lt;/h2&gt;
&lt;p&gt;I designed five 7x15 pixel bitmaps for the door device status display. Two examples in ASCII art below; all five are in&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;. X X X . . . . . . . . . . .
X . . . X . . . . . . . . . .
X . . . X X X X X X X X X . .
X . . . X X X X X X X X X . .
X . . . X . X . X . X . . . .
X . . . X . . . . . . . . . .
. X X X . . . . . . . . . . .


. . . . . . . . . . . . . X X
. . . . . . . . . . . X X X .
. . . . . . . . . X X X . . .
. X X . . . . . X X . . . . .
. . X X . . . X X . . . . . .
. . . X X . X X . . . . . . .
. . . . X X X . . . . . . . .&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmta1lbic"&gt;Results&lt;/h2&gt;
&lt;p&gt;All five icons cycle correctly at matched brightness on the 7x15 matrix, with no LED 0 corruption after the warmup fix. The icons are distinct and readable from about 2 meters away even at these low brightness levels. The values i am sending are like (10,0,0), (5,0,5) etc out the max possible (255,255,255).&amp;nbsp; I remember bitluni talking about how bright these get. Take a look here -&amp;nbsp;&lt;a href="https://youtu.be/oz9Ys7CR7cw?si=4rfxHv0VRZoPAYYE&amp;amp;t=736" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://youtu.be/oz9Ys7CR7cw?si=4rfxHv0VRZoPAYYE&amp;amp;t=736&lt;/a&gt;&amp;nbsp;(t=2:18 onwards)&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/icled_2D00_cycling.gif" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Code for this particular post is available at&amp;nbsp;&lt;a id="" href="https://github.com/arvindsa/identity-protocol-e14-challenge/tree/main/firmware/tests/icled-timer" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/arvindsa/identity-protocol-e14-challenge/tree/main/firmware/tests/icled-timer&lt;/a&gt;&lt;br /&gt;Code for entire project is available at&amp;nbsp;&lt;a id="" href="https://github.com/arvindsa/identity-protocol-e14-challenge" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/arvindsa/identity-protocol-e14-challenge&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmta1lbid"&gt;Final Notes&lt;/h2&gt;
&lt;p&gt;Coming from STM32 where WS2812B driving is a solved problem (timer + DMA, done), doing it on the MAX32630 was an interesting exercise in working within hardware constraints. The polled PWM approach works well, I do not know if there is a better way to implement this, but since this works i am gonna be happy about it.&lt;/p&gt;
&lt;p&gt;Also, I received my Proto PCB order today. This time I am not going to make a custom PCB&amp;#39;s. I do Custom PCBs only when i intend to use the project at-least occasionally. This is a very niche project which i am targeting only as a actual challenge to question my embedded skills and more importantly something out of my comfort zone. Plus i have my PCB budget on something else which i will reveal soon.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/WhatsApp-Image-2026_2D00_04_2D00_23-at-20.04.46.jpeg" /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-c" lang="c"&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Anyone using the Particle Ethernet Feather with the MAX32630FTHR</title><link>https://community.element14.com/thread/56873?ContentTypeID=0</link><pubDate>Thu, 23 Apr 2026 10:52:09 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c7721f37-d03f-40fd-a77a-a99615b782d1</guid><dc:creator>Alistair</dc:creator><slash:comments>4</slash:comments><comments>https://community.element14.com/thread/56873?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56873/anyone-using-the-particle-ethernet-feather-with-the-max32630fthr/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I had a few moments free last night and decided it was time to get the networking working on my project. I have used WIZnet based Ethernet modules many times with great success and was not anticipating any issues, but I am getting compilation errors in the Arduino IDE when targeting the MAX32630FTHR. The summary version of this is the standard Ethernet library that should work, expects some files are in the [more recent] Arduino&amp;nbsp;cores and not in the Maxim one.&lt;/p&gt;
&lt;p&gt;Has anyone had the same issues? Anyone got a simple solution?&lt;/p&gt;
&lt;p&gt;My plan is to dig in to the cores some more, but my suspicion is that around Arduino 1.8 some of the Ethernet library was moved in to the core, so any other hardware cores that did not support this no longer work with the stock library. If so I guess I have two options. One being to copy the missing files from the Arduino core to the Maxim core. The other to use an older Ethernet library that still have the moved files in it.&lt;/p&gt;
&lt;p&gt;Any thoughts?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Sentinel Box - Part I - the plan</title><link>https://community.element14.com/thread/56869?ContentTypeID=0</link><pubDate>Tue, 21 Apr 2026 14:42:49 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:7f33aedb-617e-45c9-a72f-c9619933f279</guid><dc:creator>saramic</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56869?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56869/sentinel-box---part-i---the-plan/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h1 id="mcetoc_1jmo6nhkl0"&gt;&lt;strong&gt;&lt;span style="font-family:georgia, palatino;"&gt;The Idea&lt;/span&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;My house has a problem every parent recognises: devices. Tablets, phones, controllers, earbuds as well as the odd jar of nutella, lollies and chocolate &amp;mdash; 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&amp;#39;s it. Also it had poor battery life and not big enough to fit a laptop or block of chocolate.&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:405px;max-width:720px;" alt="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" height="405" src="https://community.element14.com/resized-image/__size/1440x810/__key/communityserver-discussions-components-files/452/20260421_5F00_01_5F00_timer_5F00_lock_5F00_box.jpg" width="720" /&gt;&lt;/p&gt;
&lt;p&gt;The Smart &lt;strong&gt;Sentinel Box&lt;/strong&gt; is a Perspex vault that physically locks devices inside, and can only be opened by a &amp;quot;complex&amp;quot; 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 &lt;strong&gt;MAX32630FTHR&lt;/strong&gt;. Simple ones first &amp;mdash; a button, finger print reader, a tap pattern &amp;mdash; 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&amp;#39; 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.&lt;/p&gt;
&lt;p&gt;There&amp;#39;s also a honeypot button &amp;mdash; clearly labelled &amp;quot;EASY UNLOCK&amp;quot;. It plays a fake unlocking sound, does nothing, and silently texts both parents. Kids will be furious.&lt;/p&gt;
&lt;p&gt;The plan is to make the &lt;strong&gt;MAX32630FTHR&lt;/strong&gt;&amp;nbsp;the brain orchestrating everything around it.&lt;/p&gt;
&lt;h2 id="mcetoc_1jmo6pohm1"&gt;&lt;span style="font-family:georgia, palatino;"&gt;Order placed and MAX32630 arrived&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;I&amp;nbsp;&lt;/span&gt;was not lucky enough to get selected for a sponsored pack, but as I am new to the Element14 Design Challenge community, I didn&amp;rsquo;t want to give up that easy. I placed an order and the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX32630&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;arrived. As I was waiting I was intrigued by all the not so trivial posts on the setup required to program the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX32630&lt;/strong&gt;. It seems that the platform is already EOL (End of life). I thought:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ no USB-C port&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ platform is EOL
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.analog.com/en/products/max32630.html" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Analog Devices MAX32630&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NOT RECOMMENDED FOR NEW DESIGNS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;created almost 10 years ago - 2018 Maxim Integrated Products, Inc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Too late now, dive in &amp;hellip;&lt;/p&gt;
&lt;p&gt;I was lucky that others had documented their setups, which seemed more complicated than I would like, like this one by&amp;nbsp;&lt;a href="https://community.element14.com/members/skruglewicz"&gt;skruglewicz&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56843/forum-2---max32630fthr-development-environments---adaptive-sentinel-security-intelligence-hub" data-e14adj="t"&gt;Forum#2 - MAX32630FTHR Dev Environments - skruglewicz&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ works well with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Mbed&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- EOL July 2026&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://os.mbed.com/blog/entry/Important-Update-on-Mbed/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://os.mbed.com/blog/entry/Important-Update-on-Mbed/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It seems some people had luck with the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Arduino IDE&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;but I thought that maybe a last resort - I want my version control, plugins and AI that I have already connected to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;VSCode&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56838/programming-the-max32630fthr-with-the-arduino-ide-don-t-forget-to-set" data-e14adj="t"&gt;Programming the MAX32630FTHR with the Arduino IDE&lt;/a&gt;&amp;nbsp;&lt;a href="https://community.element14.com/members/alistairuk"&gt;Alistair&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX32630&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;arrived, I had to get down to program it. I started with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;PlatformIO&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;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&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f44d.svg" title="Thumbsup"&gt;&amp;#x1f44d;&lt;/span&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56852/forum-thread-2-echoguard-max32630fthr-setup-first-blink-program-upload" data-e14adj="t"&gt;Forum Thread 2 EchoGuard &amp;ndash; MAX32630FTHR Blink&lt;/a&gt;&amp;nbsp;&lt;a href="https://community.element14.com/members/nidhee"&gt;Nidhee&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1jmo6vrdl2"&gt;&lt;span style="font-family:georgia, palatino;"&gt;OpenOCD&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;OpenOCD&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;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&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;brew install open-ocd&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;package. After working out I need to power &amp;ldquo;both&amp;rdquo; boards and connect it to the programmer, I still got errors. Turns out I needed an&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;AnalogDevices fork&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;OpenOCD&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;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.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ requires special fork of OpenOCD to work
&lt;ul&gt;
&lt;li&gt;NOT This one&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://github.com/openocd-org/openocd/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/openocd-org/openocd/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;THIS&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;fork&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;from Analog Devices Inc.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://github.com/analogdevicesinc/openocd" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/analogdevicesinc/openocd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;for those interested, here are my steps to get the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;AnalogDevices fork&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;compiled and installed on a Mac OS (&lt;em&gt;similar for linux&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f427.svg" title="Penguin"&gt;&amp;#x1f427;&lt;/span&gt;&amp;nbsp;maybe even WSL, Windows Subsystem Linux&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f427.svg" title="Penguin"&gt;&amp;#x1f427;&lt;/span&gt;&lt;/em&gt;).&lt;/p&gt;
&lt;div class="language-sh highlighter-rouge"&gt;
&lt;div class="highlight"&gt;
&lt;pre class="highlight"&gt;&lt;code&gt;&lt;pre class="ui-code" data-mode="text"&gt;# 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
  # &amp;quot;likely&amp;quot; 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=&amp;quot;-g -O2 -Wno-error=gnu-folding-constant&amp;quot;

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

# install like a boss into /usr/local/bin/openocd
sudo make install&lt;/pre&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1jmo7294r3"&gt;&lt;span style="font-family:georgia, palatino;"&gt;Mbed&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;My first attempt was using the soon to be EOL&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Mbed&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;system. It worked, but given it&amp;rsquo;s EOL status I wasn&amp;rsquo;t satisfied.&lt;/p&gt;
&lt;h2 id="maxim-sdk"&gt;&lt;span style="font-family:georgia, palatino;"&gt;Maxim SDK&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;So next I was onto MSDK (Maxim which I worked out has dropped support for the MAX32630.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ current MSDK does not support MAX32&lt;strong&gt;630&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.analog.com/solutions/msdk" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://developer.analog.com/solutions/msdk&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;support starts at the MAX32&lt;strong&gt;650&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and it seems like&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://in.element14.com/new-products/development-boards-evaluation-tools/adi-max78000-ai-development-platforms?COM=e14c-direct-ugc&amp;amp;CMP=e14c-direct-ugc&amp;amp;osetc=e14c-direct-ugc" target="_blank" data-e14adj="t"&gt;&lt;strong&gt;MAX78000FTHR&lt;/strong&gt;&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;would be the way to go for some of the things I wanted to do like Multi-Keyword Recognition&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f926.svg" title="Face palm"&gt;&amp;#x1f926;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ not a modern platform - see&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX78000FTHR&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(circa 2020)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Rust&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="rust"&gt;&lt;span style="font-family:georgia, palatino;"&gt;Rust&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;With the help of AI, I managed to get a build going. My custom built&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;OpenOCD&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;succeeded in pushing it onto the board and another flashing LED. Looking at the code was a bit tough, with snippets like&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;// raw register poke
(0x4000_A000 + 0x0080 + port * 4) as *mut u32).write_volatile(...)&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Sounds like there is no HAL (Hardware Abstraction Layer) so if I want to use any&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;GPIO&lt;/code&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;SPI&lt;/code&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;I2C&lt;/code&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;UART&lt;/code&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;Timers&lt;/code&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;ADC&lt;/code&gt;&lt;span&gt;, I would need to write my own. The good thing is that for plain old&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;GPIO&lt;/code&gt;&lt;span&gt;&amp;nbsp;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&amp;nbsp;&lt;/span&gt;&lt;strong&gt;2-3 weeks&lt;/strong&gt;&lt;span&gt;&amp;nbsp;to get that solid for full hardware support.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="lpsdk-low-power-arm-micro-sdk"&gt;LPSDK (Low Power ARM Micro SDK)&lt;/h2&gt;
&lt;p&gt;Revisiting&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;LPSDK&lt;/strong&gt;, I worked out the install didn&amp;rsquo;t initially work. Now post install I have a blinking LED courtesy of the article.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56840/identity-protocol---part-3---unboxing-and-blinking-with-maxim-lpsdk" data-e14adj="t"&gt;Identity Protocol - Part 3&lt;/a&gt;&amp;nbsp;&lt;a href="https://community.element14.com/members/arvindsa"&gt;arvindsa&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Oh and this comes with, you guessed it, the correct OpenOCD in the toolchain - maybe I should have RTFM&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f4da.svg" title="Books"&gt;&amp;#x1f4da;&lt;/span&gt;.&lt;/p&gt;
&lt;h2 id="why-the-max32630"&gt;Why the MAX32630?&lt;/h2&gt;
&lt;p&gt;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&amp;rsquo;s not even cheaper to buy the hardware over newer revisions.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ no USB-C port&lt;/li&gt;
&lt;li&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ platform is EOL&lt;/li&gt;
&lt;li&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Mbed&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is EOL July 2026&lt;/li&gt;
&lt;li&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ requires fork of&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;OpenOCD&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to work&lt;/li&gt;
&lt;li&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ not supported by current&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MSDK&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ there are comparable more modern platforms like&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX78000FTHR&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Did I miss a memo? Still, I bought it now, and I need to build something&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;&amp;macr;\_(ツ)_/&amp;macr;&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;I need to get some credit on Element14 community!&lt;/p&gt;
&lt;h2 id="my-hardware-list"&gt;My hardware list&lt;/h2&gt;
&lt;p&gt;So I have my&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX32630FTHR&lt;/strong&gt;, 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&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;time will tell what will come of this.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading="lazy" style="display:block;margin-left:auto;margin-right:auto;max-height:540px;max-width:720px;" alt="MAX32630FTHR on top of a Tiny ML book surrounded by RFID, Fingerprint, mmWave detectors and some motors for actuation" height="540" src="https://community.element14.com/resized-image/__size/1440x1080/__key/communityserver-discussions-components-files/452/20260421_5F00_02_5F00_parts_5F00_list.jpg" width="720" /&gt;&lt;/p&gt;
&lt;h2 id="hermetic-builds--going-full-unix-purist"&gt;Hermetic Builds &amp;mdash; Going Full Unix Purist&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m a Unix philosophy purist at heart &amp;mdash; 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.&lt;/p&gt;
&lt;p&gt;The goal:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;infrastructure as code&lt;/strong&gt;, end to end.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;git clone&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;amp;&amp;amp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;mise run build&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;on a fresh machine &amp;mdash; 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.&lt;/p&gt;
&lt;p&gt;Vendor-agnostic. SDK-free. GitOps-driven. Bare-metal Rust.&lt;/p&gt;
&lt;p&gt;Where the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;LPSDK&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;path requires a manual download from Analog Devices behind a login wall, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Mbed&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is hurtling toward EOL, the Rust path gives us a fully open, bootstrappable toolchain:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;rustup&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;cargo&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;arm-none-eabi&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;via the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Rust&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;target system, and OpenOCD from source. No mouse required. No account required. No 6 GB installer required.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;arm-none-eabi&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the GNU cross-compiler toolchain designed for building &amp;ldquo;bare-metal&amp;rdquo; applications on 32-bit and 64-bit Arm Cortex-M, Cortex-R and other embedded processors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;arm-none-eabi&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;supports C and C++ but&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Rust&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f980.svg" title="Crab"&gt;&amp;#x1f980;&lt;/span&gt;&amp;nbsp;is &amp;ldquo;cool&amp;rdquo;&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f60e.svg" title="Sunglasses"&gt;&amp;#x1f60e;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id="" href="https://developer.arm.com/downloads/-/gnu-rm" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://developer.arm.com/downloads/-/gnu-rm&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;The results for a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;hermetic build&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with LED blink were optimistic&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;build&lt;/th&gt;
&lt;th&gt;from scratch&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mbed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~ 95 sec&lt;/td&gt;
&lt;td&gt;? ~ 30 min&lt;br /&gt;(&lt;em&gt;Via PlatfromIO install&lt;/em&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LPSDK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~ 6 sec&lt;/td&gt;
&lt;td&gt;? ~ 60 min&lt;br /&gt;(&lt;em&gt;LPSDK signup download and install&lt;/em&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rust&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f980.svg" title="Crab"&gt;&amp;#x1f980;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~ 5 sec&lt;/td&gt;
&lt;td&gt;~ 15 sec&lt;br /&gt;&lt;em&gt;with clear cache&lt;/em&gt;&lt;br /&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;rm -rf ~/.cargo/registry ~/.cargo/git&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In pursuit of this zero click-ops embedded development dream &amp;mdash; I decided to continue a little bit more with the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Rust&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;build.&lt;/p&gt;
&lt;h2 id="some-output"&gt;&lt;span style="font-family:georgia, palatino;"&gt;Some output&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;All projects need some input and some output. Not having a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;W&amp;uuml;rth Elektronik Featherwing ICLED Display&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;I got the closest thing I had, an old&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX7219 serial LED dot matrix display&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX32630FTHR&lt;/strong&gt;. This was a brilliant moment, I pulled out my soldering iron and soldered on the header pins - It&amp;rsquo;s been a while since I have melted some solder and it felt good.&lt;/p&gt;
&lt;p&gt;But before I could code something, I needed to find a bug in my Rust code. It didn&amp;rsquo;t run after a cold start, only after the Mbed code had run. This took me down a rabbit hole of looking at&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX14690&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;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.&lt;/p&gt;
&lt;p&gt;A bunch of vibe ٭ coding and a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;pmic_init&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;function later and it worked. At this point I didn&amp;rsquo;t care too much what was in there, some&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;I2CM&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;LDO&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;registers being set - off I go. Now I vibe some code, connect and nothing - no smoke&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f4a8.svg" title="Dash"&gt;&amp;#x1f4a8;&lt;/span&gt;&amp;nbsp;which is good but finally pulling out the multimeter and checking the pins shows me that&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;3V3&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;ain&amp;rsquo;t&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;3V3&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f914.svg" title="Thinking"&gt;&amp;#x1f914;&lt;/span&gt;&amp;nbsp;I mean I never even thought that these things are configurable. Well sounds like they are.&lt;/p&gt;
&lt;p&gt;as the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://au.element14.com/analog-devices/max32630fthr/pegasus-dev-brd-batt-optimized/dp/2723406?COM=e14c-direct-ugc&amp;amp;CMP=e14c-direct-ugc&amp;amp;osetc=e14c-direct-ugc" target="_blank" data-e14adj="t"&gt;brochure&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;says&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The board also includes the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;MAX14690&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;wearable&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;PMIC&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to provide optimal power conversion and battery management.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well it seems like that is configurable and following my code I realised that my first&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;pmic_init&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;implementation even had a comment&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;// (mbed only writes LDO2; LDO3 omitted here to match the reference exactly.)&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Guess what&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;LDO3&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(Low Dropout Regulator) is - it&amp;rsquo;s the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;3V3&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;pin&lt;/p&gt;
&lt;p&gt;So to get an output voltage of 3.3V on the the MAX14690 PMIC&amp;rsquo;s LDO (Low Dropout Regulator) you need to:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;Register_value = (V_desired - V_min) / step_size
Example: (3300 - 800) / 100 = 25

25 in HEX is 0x19&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;and set it in code where&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;0x16&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(LDO3_CFG): Register to enable/configure LDO3.&lt;/li&gt;
&lt;li&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;0x17&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(LDO3_VSET): Register to set the output voltage for LDO3.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;// 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&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" style="display:block;margin-left:auto;margin-right:auto;max-height:349px;max-width:620px;" alt="MAX32630FTHR driving a MAX7219 serial LED matrix" height="349" src="https://community.element14.com/resized-image/__size/1240x698/__key/communityserver-discussions-components-files/452/20260421_5F00_04_5F00_matrix_5F00_test.gif" width="620" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;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&amp;rsquo;t need, time will tell.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://community.element14.com/cfs-file/__key/communityserver-discussions-components-files/452/20260421_5F00_03_5F00_matrix_5F00_test.mp4"&gt;community.element14.com/.../20260421_5F00_03_5F00_matrix_5F00_test.mp4&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="next"&gt;&lt;span style="font-family:georgia, palatino;"&gt;Next&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;It may be time to give up the Rust experiment, once I set the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;3V3&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;pin to 3.3V, it no longer starts my program from a cold start, oh well.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id="source"&gt;&lt;span style="font-family:georgia, palatino;"&gt;Source&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a id="" href="https://github.com/saramic/sentinel-box" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/saramic/sentinel-box&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Forum #3 - Hardware Integration - Adaptive Sentinel: Security Intelligence  &amp; Surveillance Hub</title><link>https://community.element14.com/thread/56868?ContentTypeID=0</link><pubDate>Tue, 21 Apr 2026 10:09:24 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9285ef9b-4d9d-48bc-aa98-d9af80c5aa79</guid><dc:creator>skruglewicz</dc:creator><slash:comments>7</slash:comments><comments>https://community.element14.com/thread/56868?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56868/forum-3---hardware-integration---adaptive-sentinel-security-intelligence-surveillance-hub/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;As I dive into the hardware integration for the &lt;b&gt;Adaptive Sentinel&lt;/b&gt;&lt;span style="font-weight:400;"&gt;, I&amp;rsquo;ve hit a significant fork in the road. Integrating the &lt;/span&gt;&lt;b&gt;Analog Devices FTHR-PMD-INTZ&lt;/b&gt;&lt;span style="font-weight:400;"&gt;, the &lt;/span&gt;&lt;b&gt;W&amp;uuml;rth Elektronik ICLED Display&lt;/b&gt;&lt;span style="font-weight:400;"&gt;, and the &lt;/span&gt;&lt;b&gt;Particle Ethernet FeatherWing&lt;/b&gt;&lt;span style="font-weight:400;"&gt; is the goal, but the physical &amp;quot;how-to&amp;quot; is proving to be a challenge.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;I&amp;rsquo;m looking to the community for some collaborative wisdom on how to best bridge these components without turning my workbench into a disaster zone. Here is the breakdown of my current dilemma:&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;The Stacking Roadblock&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Initially, I envisioned a neat vertical stack. However, I&amp;rsquo;ve realized that the kit components come with pre-soldered male headers (&lt;/span&gt;&lt;b&gt;FTHR-PMD-INTZ, ICLED Display, and the Ethernet Wing&lt;/b&gt;&lt;span style="font-weight:400;"&gt;), not the pass-through stackable variety. Similarly, the &lt;/span&gt;&lt;b&gt;MAX32630FTHR&lt;/b&gt;&lt;span style="font-weight:400;"&gt;, &lt;/span&gt;&lt;b&gt;CharliePlex LED&lt;/b&gt;&lt;span style="font-weight:400;"&gt;, and &lt;/span&gt;&lt;b&gt;Motor Wing&lt;/b&gt;&lt;span style="font-weight:400;"&gt; include standard headers in the box, but again, they aren&amp;#39;t stackable.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Without desoldering or adding stackable headers&amp;mdash;a task I&amp;rsquo;m admittedly not very confident in yet&amp;mdash;a pure vertical stack is off the table.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;Breadboarding: A Secure Connection?&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Breadboarding seems like the most logical path forward. I&amp;rsquo;m curious if any of you have experience using the headers provided in the packaging for the &lt;/span&gt;&lt;b&gt;MAX32630FTHR&lt;/b&gt;&lt;span style="font-weight:400;"&gt; or &lt;/span&gt;&lt;b&gt;DC Motor Wing&lt;/b&gt;&lt;span style="font-weight:400;"&gt; by simply seating the boards onto them in a breadboard &lt;/span&gt;&lt;i&gt;&lt;span style="font-weight:400;"&gt;without&lt;/span&gt;&lt;/i&gt;&lt;span style="font-weight:400;"&gt; soldering.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;My concern:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Will this establish a secure enough electrical connection for reliable data transmission, or am I asking for &amp;quot;ghost&amp;quot; bugs and intermittent power failures? I&amp;rsquo;d love to hear if anyone has successfully prototyped this way before I commit.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;The Particle Ethernet Wing Mystery&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;The third option I&amp;rsquo;m exploring involves the &lt;/span&gt;&lt;b&gt;Particle FWNG-ETH Ethernet FeatherWing Adapter&lt;/b&gt;&lt;span style="font-weight:400;"&gt;. It seems to have a unique rail-style layout, but the documentation is a bit sparse regarding its use as a &amp;quot;base&amp;quot; for other wings.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;The Connection Logic:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; How do the signals actually route from Header 1 to Header 2?&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Integration:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; If I use this as my main interconnect, how do I ensure the SPI pins for the Ethernet controller aren&amp;#39;t conflicting with the ICLED matrix or the PMOD adapter?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;I&amp;rsquo;ve been digging through the&lt;/span&gt;&lt;a href="https://www.google.com/search?q=https://docs.particle.io/hardware/expansion/ethernet-featherwing/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt; &lt;span style="font-weight:400;"&gt;Particle Wiki&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;, but it doesn&amp;#39;t quite explain the &amp;quot;inter-header&amp;quot; connectivity for non-Particle hosts.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;Next Steps &amp;amp; Experimentation&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Over the next few days, I&amp;rsquo;ll be experimenting with these three specific topics:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Mechanical Stability:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Testing the &amp;quot;friction-fit&amp;quot; of un-soldered headers on the breadboard.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Signal Mapping:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Continuity testing the Particle Wing to see how the headers are internally tied together.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Hybrid Layouts:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Possibly using the FTHR on the breadboard while jumpering out to the pre-soldered wings.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;I&amp;#39;m here to learn, so if you&amp;rsquo;ve faced these stacking &amp;quot;geometry&amp;quot; problems before, please weigh in! How are you all physically organizing your Sentinel builds?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Current Status:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; In-Progress / Experimenting&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tools in use:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Multimeter, Breadboard, Jumper Wire Spaghetti.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;What do you think about the friction-fit header idea&amp;mdash;is it a recipe for a short circuit, or a valid prototyping shortcut?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Identity Protocol - Part 6 - Snatch Detection with the BMI160 IMU</title><link>https://community.element14.com/thread/56861?ContentTypeID=0</link><pubDate>Sun, 19 Apr 2026 07:38:47 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4abc1470-dd60-4403-abd4-feebb4e4391b</guid><dc:creator>arvindsa</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56861?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56861/identity-protocol---part-6---snatch-detection-with-the-bmi160-imu/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;With the summer kicking in India, it is too hot to be outside, Plus it&amp;#39;s holiday season for the Institute i work with and so I got more free time. My Work-cation at Goa has me fully charged and motivated. Today I will explain though how i Implemented Tug/Snatch detection.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea is simple enough: stop making people swipe a card and type a PIN at every single door. Instead, the ID card (a MAX32630FTHR + ATECC508A in your pocket) unlocks once via PIN, then silently does challenge-response crypto over Bluetooth every time you walk up to a door. If the card gets yanked off you, the IMU detects the tug and it locks itself. No PIN, no entry. For more details check the Part 1 of the series&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56768/identity-protocol-part-1---plan" data-contentid="d5152729d060498f812f0244641b3810" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol Part 1 - Plan&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56830/identity-protocol---part-2---django-server" data-contentid="1ab561efc7f2445b8eb20783970ed89c" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 2 - Django Server&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56840/identity-protocol---part-3---unboxing-and-blinking-with-maxim-lpsdk" data-contentid="75fef2ca1ed74f3ca296a48a29402617" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 3 - Unboxing and Blinking with Maxim LPSDK&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56853/identity-protocol---part-4---ble-using-pan1326b-and-btstack" data-contentid="b449688fb5c8477991ced940f32ac3fa" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 4 - BLE using PAN1326B and BTstack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Identity Protocol - Part 5 - Interfacing a Keypad" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56856/identity-protocol---part-5---interfacing-a-keypad" data-e14adj="t"&gt;Identity Protocol - Part 5 - Interfacing a Keypad&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tug detection is one of the important function to the project, as it prevents the card being stolen while in an unlocked state.&amp;nbsp;Full source is in &lt;code&gt;firmware/tests/imu-bmi160/&lt;/code&gt; and &lt;code&gt;firmware/tests/tug-detection/&lt;/code&gt; in the project repo.&lt;/p&gt;
&lt;h2 id="mcetoc_1jmi6kejj0"&gt;BMI160 Hardware&lt;/h2&gt;
&lt;p&gt;This nice little sensor from Bosch&amp;nbsp;sits on the FTHR board&amp;#39;s shared I2C bus alongside the MAX14690N PMIC. The pin mapping for I2CM2 MAP_A on the MAX32630 is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SDA -&amp;nbsp;P5_7&lt;/li&gt;
&lt;li&gt;SCL -&amp;nbsp;P6_0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The sensor has an address of 0x68.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/max32630fthr_5F00_p_5F00_top.png" /&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;Credits: mbed.com&lt;/p&gt;
&lt;h2 id="mcetoc_1jmi6qp2s1"&gt;Learning about the BMI160 Communication&lt;/h2&gt;
&lt;p&gt;Before writing a single line of LPSDK code I read through hanyazou&amp;#39;s BMI160-Arduino library available at&amp;nbsp;&lt;a id="" href="https://github.com/hanyazou/bmi160-arduino" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/hanyazou/bmi160-arduino&lt;/a&gt;. It is derived from Intel&amp;#39;s CurieIMU driver and covers the register map in. From this I surmised&lt;/p&gt;
&lt;h3 id="mcetoc_1jmi6u3ib2"&gt;1. The power-up command sequence&lt;/h3&gt;
&lt;p&gt;After power-on the BMI160 holds both accelerometer and gyroscope in suspend mode. They must be woken explicitly, in order, with startup delays that the datasheet specifies:&lt;/p&gt;
&lt;table border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="64"&gt;&amp;nbsp; Step&lt;/td&gt;
&lt;td width="75"&gt;Register&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;td width="63"&gt;Value&lt;/td&gt;
&lt;td width="171"&gt;Purpose&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;td width="88"&gt;Delay after&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0x7E (CMD)&lt;/td&gt;
&lt;td&gt;0xB6&amp;nbsp;&lt;/td&gt;
&lt;td&gt;Soft reset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;10 ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0x7E (CMD)&lt;/td&gt;
&lt;td&gt;0x11&amp;nbsp;&lt;/td&gt;
&lt;td&gt;Accel -&amp;gt; normal mode&lt;/td&gt;
&lt;td&gt;5 ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0x7E (CMD)&lt;/td&gt;
&lt;td&gt;0x15&amp;nbsp;&lt;/td&gt;
&lt;td&gt;Gyro -&amp;gt; normal mode&amp;nbsp;&lt;/td&gt;
&lt;td&gt;80 ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="mcetoc_1jmi73t5r5"&gt;&lt;strong&gt;2.&amp;nbsp;&lt;/strong&gt;Verifying the chip with CHIP_ID&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;The Step that tells me things are communicating.&amp;nbsp;Register 0x00 returns a fixed value of 0xD1 for the BMI160. Reading it is the simplest sanity check that I2C wiring and addressing are correct before doing anything else. The Arduino library checks this in getDeviceID().&lt;/p&gt;
&lt;h3 id="mcetoc_1jmi73nij4"&gt;3. Data layout: gyro first, then accelerometer&lt;/h3&gt;
&lt;p&gt;Reading 12 consecutive bytes starting at 0x0C gives you all six axes:&lt;/p&gt;
&lt;table border="1"&gt;
&lt;tbody&gt;
&lt;tr data-start="46" data-end="90"&gt;
&lt;td width="75"&gt;Offset&lt;/td&gt;
&lt;td width="63"&gt;Register&lt;/td&gt;
&lt;td width="171"&gt;Content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="75"&gt;0&lt;/td&gt;
&lt;td width="63" data-col-size="sm" data-start="145" data-end="156"&gt;0x0C&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="156" data-end="180"&gt;Gyro X low byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="181" data-end="225"&gt;
&lt;td width="75" data-start="181" data-end="190" data-col-size="sm"&gt;1&lt;/td&gt;
&lt;td width="63" data-col-size="sm" data-start="190" data-end="201"&gt;0x0D&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="201" data-end="225"&gt;Gyro X high byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="226" data-end="270"&gt;
&lt;td width="75" data-start="226" data-end="235" data-col-size="sm"&gt;2&lt;/td&gt;
&lt;td width="63" data-col-size="sm" data-start="235" data-end="246"&gt;0x0E&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="246" data-end="270"&gt;Gyro Y low byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="271" data-end="315"&gt;
&lt;td width="75" data-start="271" data-end="280" data-col-size="sm"&gt;3&lt;/td&gt;
&lt;td width="63" data-col-size="sm" data-start="280" data-end="291"&gt;0x0F&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="291" data-end="315"&gt;Gyro Y high byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="316" data-end="360"&gt;
&lt;td width="75" data-start="316" data-end="325" data-col-size="sm"&gt;4&lt;/td&gt;
&lt;td width="63" data-col-size="sm" data-start="325" data-end="336"&gt;0x10&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="336" data-end="360"&gt;Gyro Z low byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="361" data-end="405"&gt;
&lt;td width="75" data-start="361" data-end="370" data-col-size="sm"&gt;5&lt;/td&gt;
&lt;td width="63" data-start="370" data-end="381" data-col-size="sm"&gt;0x11&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="381" data-end="405"&gt;Gyro Z high byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="406" data-end="450"&gt;
&lt;td width="75" data-start="406" data-end="415" data-col-size="sm"&gt;6&lt;/td&gt;
&lt;td width="63" data-col-size="sm" data-start="415" data-end="426"&gt;0x12&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="426" data-end="450"&gt;Accel X low byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="451" data-end="495"&gt;
&lt;td width="75" data-start="451" data-end="460" data-col-size="sm"&gt;7&lt;/td&gt;
&lt;td width="63" data-col-size="sm" data-start="460" data-end="471"&gt;0x13&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="471" data-end="495"&gt;Accel X high byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="496" data-end="540"&gt;
&lt;td width="75" data-start="496" data-end="505" data-col-size="sm"&gt;8&lt;/td&gt;
&lt;td width="63" data-start="505" data-end="516" data-col-size="sm"&gt;0x14&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="516" data-end="540"&gt;Accel Y low byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="541" data-end="585"&gt;
&lt;td width="75" data-start="541" data-end="550" data-col-size="sm"&gt;9&lt;/td&gt;
&lt;td width="63" data-start="550" data-end="561" data-col-size="sm"&gt;0x15&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="561" data-end="585"&gt;Accel Y high byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="586" data-end="630"&gt;
&lt;td width="75" data-start="586" data-end="595" data-col-size="sm"&gt;10&lt;/td&gt;
&lt;td width="63" data-start="595" data-end="606" data-col-size="sm"&gt;0x16&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="606" data-end="630"&gt;Accel Z low byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start="631" data-end="675"&gt;
&lt;td width="75" data-start="631" data-end="640" data-col-size="sm"&gt;11&lt;/td&gt;
&lt;td width="63" data-col-size="sm" data-start="640" data-end="651"&gt;0x17&lt;/td&gt;
&lt;td width="171" data-col-size="sm" data-start="651" data-end="675"&gt;Accel Z high byte&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Each pair is a little-endian signed 16-bit integer:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ax = (int16_t)(buf[6] | (buf[7] &amp;lt;&amp;lt; 8));&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;At the default range of +/-2 g, the scale is 16384 LSB per g.&lt;/p&gt;
&lt;h3 id="mcetoc_1jmi7d66r6"&gt;4. The PMU (Power Management Unit) status register for debugging&lt;/h3&gt;
&lt;p&gt;Register 0x03 holds the current power-mode bits for each sensor:&amp;nbsp;Polling this after wakeup commands confirms the device is actually ready, not just ACKing the write.&lt;/p&gt;
&lt;table border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="64"&gt;Bits&lt;/td&gt;
&lt;td width="71"&gt;Field&lt;/td&gt;
&lt;td width="282"&gt;Normal value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[1:0]&lt;/td&gt;
&lt;td&gt;Accel PMU&lt;/td&gt;
&lt;td&gt;0x01&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[3:2]&lt;/td&gt;
&lt;td&gt;Gyro PMU&lt;/td&gt;
&lt;td&gt;0x01 (bit-pair 01 = 0x04 when shifted to [3:2])&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmi7hjuo7"&gt;Driver Development on LPSDK&lt;/h2&gt;
&lt;p&gt;MAX32630 Keeps surprising me.&amp;nbsp;The LPSDK I2C API (i2cm.h)&amp;nbsp; I2CM_Write&amp;nbsp; cmd parameter sends a separate transaction before the data transaction. Works well for single byte reads but not for Burst reads. so a helper function needs to be written to&amp;nbsp;prepend the register address into the data buffer and pass cmd=NULL in the I2CM_Write call:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/* Write one byte to a BMI160 register */
static int bmi160_write_reg(uint8_t reg, uint8_t val)
{
    uint8_t buf[2] = { reg, val };
    int ret = I2CM_Write(I2C_BUS, BMI160_ADDR, NULL, 0, buf, 2);
    return (ret == 2) ? E_NO_ERROR : E_COMM_ERR;
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;For reading, it&amp;#39;s straight forward, but to maintain a good coding structure i will use a helper for reads which does nothng but keep the function similar to read&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/* Read len bytes starting at reg */
static int bmi160_read_regs(uint8_t reg, uint8_t *data, int len)
{
    int ret = I2CM_Read(I2C_BUS, BMI160_ADDR, &amp;amp;reg, 1, data, len);
    return (ret == len) ? E_NO_ERROR : E_COMM_ERR;
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Initializing the I2C&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;const sys_cfg_i2cm_t cfg = {
    .clk_scale = CLKMAN_SCALE_DIV_1,
    .io_cfg    = IOMAN_I2CM2(IOMAN_MAP_A, 1),   /* P5_7=SDA, P6_0=SCL */
};
I2CM_Init(MXC_I2CM2, &amp;amp;cfg, I2CM_SPEED_100KHZ);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;So here is the final flow&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:953px;max-width:294px;"  src="https://community.element14.com/resized-image/__size/588x1906/__key/communityserver-discussions-components-files/452/bmi_2D00_read-flow.png" /&gt;&lt;/p&gt;
&lt;p&gt;and the code equivalent to that&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static int bmi160_init(void)
{
    uint8_t chip_id = 0;

    /* 1. Verify chip identity */
    if (bmi160_read_regs(BMI160_REG_CHIP_ID, &amp;amp;chip_id, 1) != E_NO_ERROR)
        return E_COMM_ERR;
    if (chip_id != 0xD1)
        return E_BAD_PARAM;

    /* 2. Wake accelerometer */
    bmi160_write_reg(BMI160_REG_CMD, 0x11);   /* ACC_NORMAL */
    TMR_Delay(MXC_TMR0, MSEC(5));

    /* 3. Wake gyroscope */
    bmi160_write_reg(BMI160_REG_CMD, 0x15);   /* GYR_NORMAL */
    TMR_Delay(MXC_TMR0, MSEC(80));

    return E_NO_ERROR;
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This will help make the IMU ready to stream the data.&lt;/p&gt;
&lt;h2 id="mcetoc_1jmi89j7g8"&gt;The Physics behind the Algorithm&lt;/h2&gt;
&lt;p&gt;3D Printing Enthusiasts who use Klipper will find this familiar - Jerk. &lt;strong&gt;No I am not insulting you&lt;/strong&gt; (I hope e14&amp;#39;s sensitive spam detection does not flag this). Jerk is the time derivative of Acceleration. It is felt when an object collides or is pulled suddenly. Just the initial bit of it. For people who ask - Why not acceleration? My answer is Acceleration happen on a daily basis during regular activity - Walking, Running etc. We want the IMU to detect when there is a sudden change in activity, when a person bumps into another (that&amp;#39;s when the ID cards are stolen in most movies) or when it is pulled.&lt;/p&gt;
&lt;p&gt;So to detect a jerk we calculate the acceleration change divided by the time period. The net acceleration is calculated by square root of sum of square of each component. Trying Running this at 50Hz&amp;nbsp; did not work out well, it started lagging, so i resorted to next best thing approximation (I forgot the name of this approximation)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;magnitude (appx) = max(|x|, |y|, |z|) + 0.5 * mid(|x|, |y|, |z|)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static int32_t accel_magnitude(int16_t ax, int16_t ay, int16_t az)
{
    int32_t x = ax &amp;lt; 0 ? -ax : ax;
    int32_t y = ay &amp;lt; 0 ? -ay : ay;
    int32_t z = az &amp;lt; 0 ? -az : az;
    /* Sort descending */
    if (y &amp;gt; x) { int32_t t = x; x = y; y = t; }
    if (z &amp;gt; x) { int32_t t = x; x = z; z = t; }
    if (z &amp;gt; y) { int32_t t = y; y = z; z = t; }
    return x + (y &amp;gt;&amp;gt; 1);   /* max + 0.5 * mid */
}&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmi91d7u9"&gt;Threshold tuning&lt;/h2&gt;
&lt;p&gt;I just kept decreasing the threshold until i was satisfactory&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/2026_2D00_04_2D00_18-tug.GIF" /&gt;&lt;/p&gt;
&lt;p&gt;Here is the link to full video if you are interested. -&amp;nbsp;&lt;a id="" href="https://youtu.be/xhUsJPgzvA0" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://youtu.be/xhUsJPgzvA0&lt;/a&gt;&amp;nbsp;I choose 21,000 as a good balance better detecting a sharp tug and ignoring basic tugs.&lt;/p&gt;
&lt;h2 id="mcetoc_1jmiahhnqa"&gt;Polling Loop&lt;/h2&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;device_state_t state = STATE_LOCKED;
int16_t ax, ay, az;
bmi160_read_accel(&amp;amp;ax, &amp;amp;ay, &amp;amp;az);
int32_t prev_mag = accel_magnitude(ax, ay, az);

while (1) {
    TMR_Delay(MXC_TMR0, MSEC(20));   /* 50 Hz */

    bmi160_read_accel(&amp;amp;ax, &amp;amp;ay, &amp;amp;az);
    int32_t mag   = accel_magnitude(ax, ay, az);
    int32_t delta = mag - prev_mag;
    if (delta &amp;lt; 0) delta = -delta;
    prev_mag = mag;

    if (state == STATE_UNLOCKED &amp;amp;&amp;amp; delta &amp;gt; JERK_THRESHOLD) {
        state = STATE_LOCKED;
        led_red();
        printf(&amp;quot;TUG DETECTED (delta=%ld) -- LOCKED\n&amp;quot;, (long)delta);
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I couldn&amp;#39;t get the jerk threshold calculated on the Sensor itself and so, i just left the interrupt pin alone and decided on polling and calculating on MCU.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Code for this particular post is available at&amp;nbsp;&lt;a id="" href="https://github.com/arvindsa/identity-protocol-e14-challenge/tree/main/firmware/tests/tug-detection" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/arvindsa/identity-protocol-e14-challenge/tree/main/firmware/tests/tug-detection&lt;/a&gt;&amp;nbsp;&lt;br /&gt;Code for entire project is available at&amp;nbsp;&lt;a id="" href="https://github.com/arvindsa/identity-protocol-e14-challenge" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/arvindsa/identity-protocol-e14-challenge&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmiaj5lbb"&gt;Results&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;Results can be seen in the full video of the tug threshold test -&amp;nbsp;&lt;a id="" href="https://youtu.be/xhUsJPgzvA0" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://youtu.be/xhUsJPgzvA0&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmiakhsec"&gt;Final Notes&lt;/h2&gt;
&lt;p&gt;One of the important decision I have to take was to choose between an option of Calculating correct acceleration using the square root method at the cost of lower sampling rate or Having a higher sampling rate at the cost of an approximated acceleration. I went with approximation because i can appropriately change the threshold value experimentally. This will prove to be a better choice when i start integrating all the function and they take up cpu cycles. If it was actual acceleration calculation the other functionality will drag the sampling rate even lower.&lt;/p&gt;
&lt;p&gt;The Start of the project is the Cryptographic signing by ATECC508A. Since I&amp;#39;ve worked with it before, all i have to do is port the code to match the LPSDK&amp;#39;s function call which is almost done. I am making a small change to my project, previously in my plan it was the door device will use another ATECC508A for verification. But I realized it was not needed and so we will use software library micro-ecc for verification of the cryptographic signature. I will explain it in detail over a post. It&amp;#39;s the write-up which is the hard part.&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f603.svg" title="Smiley"&gt;&amp;#x1f603;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Guardian Sentinel — Active Environment Monitoring for Smart Safety &amp; Security &lt;Part 1&gt;</title><link>https://community.element14.com/thread/56859?ContentTypeID=0</link><pubDate>Fri, 17 Apr 2026 18:24:26 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:6b427411-4d60-40ad-b6c2-8125c332d305</guid><dc:creator>meera_hussien</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56859?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56859/guardian-sentinel-active-environment-monitoring-for-smart-safety-security-part-1/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h1 id="mcetoc_1jmdn4t9q0" style="text-align:center;"&gt;&lt;span style="font-size:150%;text-decoration:underline;"&gt;&lt;strong&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;Guardian Sentinel &amp;mdash; Active Environment Monitoring for Smart Safety &amp;amp; Security&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 id="mcetoc_1jmdn4t9q1" style="text-align:center;"&gt;&lt;span style="font-size:150%;"&gt;&amp;lt;Part 1&amp;gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:620px;max-width:827px;"  src="https://community.element14.com/resized-image/__size/1654x1240/__key/communityserver-discussions-components-files/452/Guardian-Sentinel-Image.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:150%;"&gt;Image 1. AI Generated Image&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmdn4t9q2"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;font-size:inherit;text-decoration:underline;"&gt;Introduction&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;For this design challenge, I have decided to build an active environment monitoring system for smart safety and security. The system will not only monitor the environment, but will also respond accordingly. I originally planned to develop this system for use inside a workshop, but unfortunately I do not have access to one. Therefore, I will be using my working room and simulating a similar workshop environment. In addition to the hardware provided, I will also be using several extra sensors to achieve the project objectives, which I will explain in the next post. As shown in Image 1, it provides an overview of the main concept of this project. The system will monitor environmental conditions such as temperature, humidity, air quality, and CO2, and based on these readings, it will take the necessary action. In addition, a sensor will be included to detect the presence of people. All of this will be monitored through a dedicated dashboard, and the data will be logged for future use.&lt;/p&gt;
&lt;h2 id="mcetoc_1jmdn4t9q3"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;text-decoration:underline;"&gt;Unboxing&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Below is the pic and video of the unboxing. I have also include the related document for each of the device.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s watch the unboxing video below.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://community.element14.com/cfs-file/__key/communityserver-discussions-components-files/452/Unboxin.mp4"&gt;community.element14.com/.../Unboxin.mp4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;This is the image and the link for each of the component which i have received.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt;.&amp;nbsp;&lt;strong&gt;&lt;span&gt;Analog Devices MAX32630FTHR# Application Platform X 2&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;{gallery}&lt;strong&gt;&lt;span&gt;Analog Devices MAX32630FTHR# Application Platform&lt;/span&gt;&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_01_2D00_17_2D00_15.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_01_2D00_17_2D00_12.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_01_2D00_17_2D00_08.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_01_2D00_17_2D00_05.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_01_2D00_17_2D00_02.jpg" /&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_01_2D00_16_2D00_57.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;2.&amp;nbsp;Analog Devices FTHR-PMD-INTZ Adapter Board&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:540px;max-width:405px;"  height="540" src="https://community.element14.com/resized-image/__size/810x1080/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_07_2D00_52.jpg" width="405" /&gt;&lt;img loading="lazy" alt="image" style="max-height:539px;max-width:719px;"  height="539" src="https://community.element14.com/resized-image/__size/1438x1078/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_07_2D00_56.jpg" width="719" /&gt;&lt;img loading="lazy" alt="image" style="max-height:535px;max-width:713px;"  height="535" src="https://community.element14.com/resized-image/__size/1426x1070/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_08_2D00_00.jpg" width="713" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.&amp;nbsp;W&amp;uuml;rth&amp;nbsp;Elektronik&amp;nbsp;150015 Featherwing ICLED Display&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img loading="lazy" alt="image" style="max-height:409px;max-width:307px;"  height="409" src="https://community.element14.com/resized-image/__size/614x818/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_01_2D00_53_2D00_40.jpg" width="307" /&gt;&lt;img loading="lazy" alt="image" style="max-height:411px;max-width:308px;"  height="411" src="https://community.element14.com/resized-image/__size/616x822/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_01_2D00_53_2D00_44.jpg" width="308" /&gt;&lt;img loading="lazy" alt="image" style="max-height:414px;max-width:552px;"  height="414" src="https://community.element14.com/resized-image/__size/1104x828/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_01_2D00_53_2D00_47.jpg" width="552" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4.&amp;nbsp;Particle FWNG-ETH Ethernet Featherwing Adapter&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_15_2D00_41.jpg" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_15_2D00_46.jpg" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_15_2D00_51.jpg" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5.&amp;nbsp;Adafruit ADA2927&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;DC Motor + Stepper&amp;nbsp;FeatherWing&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_11_2D00_43.jpg" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_11_2D00_49.jpg" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_11_2D00_54.jpg" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_11_2D00_58.jpg" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And last but not least, it comes with the element14 cool stickers&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:767px;max-width:575px;"  height="767" src="https://community.element14.com/resized-image/__size/1150x1534/__key/communityserver-discussions-components-files/452/photo_5F00_2026_2D00_04_2D00_18_5F00_02_2D00_20_2D00_51.jpg" width="575" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;In the next post we shall see in detail on each of these product and also get started using it.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;script&gt;window.top.e14.func.queueScripts.add(function() { window.top.e14.func.e14DynaloadGallery(window.document);}, true );&lt;/script&gt;</description></item><item><title>Identity Protocol - Part 5 - Interfacing a Keypad</title><link>https://community.element14.com/thread/56856?ContentTypeID=0</link><pubDate>Fri, 17 Apr 2026 05:16:53 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9ce7c98c-6026-4b9f-a0f0-34daa86b4489</guid><dc:creator>arvindsa</dc:creator><slash:comments>4</slash:comments><comments>https://community.element14.com/thread/56856?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56856/identity-protocol---part-5---interfacing-a-keypad/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;In Part 5, I&amp;#39;ll interface an 4x4 Tactile Keypad without using an external library&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea is simple enough: stop making people swipe a card and type a PIN at every single door. Instead, the ID card (a MAX32630FTHR + ATECC508A in your pocket) unlocks once via PIN, then silently does challenge-response crypto over Bluetooth every time you walk up to a door. If the card gets yanked off you, the IMU detects the tug and it locks itself. No PIN, no entry. For more details check the Part 1 of the series&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56768/identity-protocol-part-1---plan" data-contentid="d5152729d060498f812f0244641b3810" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol Part 1 - Plan&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56830/identity-protocol---part-2---django-server" data-contentid="1ab561efc7f2445b8eb20783970ed89c" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 2 - Django Server&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56840/identity-protocol---part-3---unboxing-and-blinking-with-maxim-lpsdk"&gt;Identity Protocol - Part 3 - Unboxing and Blinking with Maxim LPSDK&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56853/identity-protocol---part-4---ble-using-pan1326b-and-btstack"&gt;Identity Protocol - Part 4 - BLE using PAN1326B and BTstack&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For my ID Card device i need a way to enter the pin in order to unlock it, I initially thought of a membrane keyboard, but in my box of electronics treasure, I found an tactile keyboard which&amp;nbsp; i had bought before from Robu:&amp;nbsp;&lt;a id="" href="https://robu.in/product/4x4-matrix-16-keyboard-keypad/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://robu.in/product/4x4-matrix-16-keyboard-keypad/&lt;/a&gt;&amp;nbsp; and an datasheet attached to it.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/3_2D00_8.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/22.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;But when i tried with the code, it was not working well, the letter orientation came such that it seemed the rows and columns were transposed. Swapping the pins for Rows and Columns worked. Confusion set it, is my simple enough code wrong? Revelation set in when Adafruit&amp;#39;s learning page showed the correct pin out here: &lt;a id="" href="https://learn.adafruit.com/matrix-keypad/pinouts" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://learn.adafruit.com/matrix-keypad/pinouts&lt;/a&gt; . My Code is right, the datasheet was wrong. Here is the correct one&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/raspberry_5F00_pi_5F00_PID3844_5F00_pinout.jpg" /&gt;&lt;br /&gt;Photo Credits: Adafruit&amp;nbsp; (Do note my code uses C0~C3 instead of C1~C4) and similarly for the Rows&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmcq62um0"&gt;Working of Keypad&lt;/h2&gt;
&lt;p&gt;The working of keypad is an age old and proven mechanism. Each key is a switch, one side of the switch is wired along the column and the other side is wired along the row. When switch is pressed, it connects the respective column to the row. To detect the key pressed, we wire the 4 Row and 4 Columns pins to GPIO&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:299px;max-width:283px;"  src="https://community.element14.com/resized-image/__size/566x598/__key/communityserver-discussions-components-files/452/raspberry_5F00_pi_5F00_3844_5F00_diagram.jpg" /&gt;&lt;br /&gt;Photo Credits: Adafruit&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;All the Rows are made input without any pull-ups / pull downs (HiZ - High impedance). The Columns are made input with pull ups&lt;/li&gt;
&lt;li&gt;One Row (lets saw R1) is driven low and the 4 columns are read to see which one is low. The column corresponding to the key pressed will be low.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;If no Column is found to be low, the next Row is made low after restoring the previous row to HiZ&amp;nbsp;&lt;/li&gt;
&lt;li&gt;If all rows are scanned and no columns are found low, then it means no key is pressed&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When One key is found to be pressed, It is saved in key and last key. During the next round of scan if the same key is found to be still pressed, it is ignored. This way i have implemented a simple hold detection.&amp;nbsp; This happens until the the scan finds no key pressed, but last key is set, this signals a key release event, and last_key is set as none. a 10ms interval between scans should be sufficient for the de-bouncing delay. If you don&amp;#39;t know what de-bouncing is check out&amp;nbsp;&lt;a id="" href="https://www.picotech.com/library/articles/blog/what-is-switch-bounce-how-to-implement-debounce" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://www.picotech.com/library/articles/blog/what-is-switch-bounce-how-to-implement-debounce&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In my implementation of this as a function -&amp;nbsp;&lt;code&gt;keypad_scan()&lt;/code&gt; it returns an integer such that the number starts from 0 and increases as keys go from top to bottom and left to right. This way i can quickly compare the pressed key to the last one in one statement, plus also is easier to debug in case a key / row / column is not working&lt;/p&gt;
&lt;pre&gt;1=0&amp;nbsp; &amp;nbsp;2=1&amp;nbsp; &amp;nbsp;3=2&amp;nbsp; &amp;nbsp;A=3&lt;br /&gt;4=4&amp;nbsp; &amp;nbsp;5=5&amp;nbsp; &amp;nbsp;6=6&amp;nbsp; &amp;nbsp;B=7&lt;br /&gt;7=8&amp;nbsp; &amp;nbsp;8=9&amp;nbsp; &amp;nbsp;9=10&amp;nbsp; C=11&lt;br /&gt;*=12&amp;nbsp; 0=13&amp;nbsp; #=14&amp;nbsp; D=15&lt;/pre&gt;
&lt;h3 id="mcetoc_1jmctsvgo5"&gt;Flow Chart of working&lt;/h3&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:720px;max-width:660px;"  src="https://community.element14.com/resized-image/__size/1320x1440/__key/communityserver-discussions-components-files/452/06_2D00_keypad_2D00_scan_2D00_flow.drawio.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1jmctn6lo3"&gt;Keypad Wiring&amp;nbsp;&lt;/h3&gt;
&lt;table style="width:200px;" border="1" cellpadding="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Signal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Pin&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KPD_ROW0&lt;/td&gt;
&lt;td&gt;P5_0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KPD_ROW1&lt;/td&gt;
&lt;td&gt;P5_1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KPD_ROW2&lt;/td&gt;
&lt;td&gt;P5_2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KPD_ROW3&lt;/td&gt;
&lt;td&gt;P5_3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KPD_COL0&lt;/td&gt;
&lt;td&gt;P5_4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KPD_COL1&lt;/td&gt;
&lt;td&gt;P5_6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KPD_COL2&lt;/td&gt;
&lt;td&gt;P3_2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KPD_COL3&lt;/td&gt;
&lt;td&gt;P3_3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1jmcte2bj1"&gt;The Results&lt;/h2&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:450px;max-width:800px;"  src="https://community.element14.com/resized-image/__size/1600x900/__key/communityserver-discussions-components-files/452/p5_2D00_01.gif" /&gt;&lt;/p&gt;
&lt;p&gt;This one is in a gif format. Below is the full video (there might be a video sync issue between the screen capture and the video of me pressing the button)&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://community.element14.com/cfs-file/__key/communityserver-discussions-components-files/452/p5_2D00_01.mp4"&gt;community.element14.com/.../p5_2D00_01.mp4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmcuqtao0"&gt;Source Code&lt;/h2&gt;
&lt;p&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;quot;mxc_errors.h&amp;quot;
#include &amp;quot;gpio.h&amp;quot;
#include &amp;quot;tmr_utils.h&amp;quot;
#include &amp;quot;uart.h&amp;quot;

/* ---- Board_Init override ------------------------------------------------- */
int Board_Init(void) { return E_NO_ERROR; }

/* ---- Keypad configuration ------------------------------------------------ */
#define KEYPAD_ROWS  4
#define KEYPAD_COLS  4

/* Row pins: P5_0, P5_1, P5_2, P5_3 (SPI header pins, no SPI peripheral on ID device) */
static const gpio_cfg_t row_cfg[KEYPAD_ROWS] = {
    { PORT_5, PIN_0, GPIO_FUNC_GPIO, GPIO_PAD_NORMAL },
    { PORT_5, PIN_1, GPIO_FUNC_GPIO, GPIO_PAD_NORMAL },
    { PORT_5, PIN_2, GPIO_FUNC_GPIO, GPIO_PAD_NORMAL },
    { PORT_5, PIN_3, GPIO_FUNC_GPIO, GPIO_PAD_NORMAL },
};

/* Column pins: P5_4, P5_6, P3_2, P3_3 -- input with internal pull-up */
static const gpio_cfg_t col_cfg[KEYPAD_COLS] = {
    { PORT_5, PIN_4, GPIO_FUNC_GPIO, GPIO_PAD_INPUT_PULLUP },
    { PORT_5, PIN_6, GPIO_FUNC_GPIO, GPIO_PAD_INPUT_PULLUP },
    { PORT_3, PIN_2, GPIO_FUNC_GPIO, GPIO_PAD_INPUT_PULLUP },
    { PORT_3, PIN_3, GPIO_FUNC_GPIO, GPIO_PAD_INPUT_PULLUP },
};

#define KEY_NONE  -1   /* no key detected this scan, cant use 0 */

/* Key label lookup: row-major, matches physical layout
 *   Row 0: 1 2 3 A
 *   Row 1: 4 5 6 B
 *   Row 2: 7 8 9 C
 *   Row 3: * 0 # D
 */
static const char key_map[KEYPAD_ROWS][KEYPAD_COLS] = {
    { &amp;#39;1&amp;#39;, &amp;#39;2&amp;#39;, &amp;#39;3&amp;#39;, &amp;#39;A&amp;#39; },
    { &amp;#39;4&amp;#39;, &amp;#39;5&amp;#39;, &amp;#39;6&amp;#39;, &amp;#39;B&amp;#39; },
    { &amp;#39;7&amp;#39;, &amp;#39;8&amp;#39;, &amp;#39;9&amp;#39;, &amp;#39;C&amp;#39; },
    { &amp;#39;*&amp;#39;, &amp;#39;0&amp;#39;, &amp;#39;#&amp;#39;, &amp;#39;D&amp;#39; },
};

/*
 * keypad_init -- configure all row pins as outputs (high), all col pins as
 * inputs with pull-ups.
 */
static void keypad_init(void)
{
    for (int r = 0; r &amp;lt; KEYPAD_ROWS; r++) {
        GPIO_Config(&amp;amp;row_cfg[r]);
        GPIO_OutSet(&amp;amp;row_cfg[r]);   /* idle high */
    }
    for (int c = 0; c &amp;lt; KEYPAD_COLS; c++) {
        GPIO_Config(&amp;amp;col_cfg[c]);
    }
}

/*
 * keypad_scan -- drive each row low in turn, read columns, restore row.
 * Returns encoded key index (row*4+col) or KEY_NONE.
 *
 * Rows not being scanned are set to input (high-Z) to avoid bus contention
 * when multiple keys are wired to the same column.
 */
static int keypad_scan(void)
{
    for (int r = 0; r &amp;lt; KEYPAD_ROWS; r++) {
        /* Set all rows to input (high-Z) */
        for (int i = 0; i &amp;lt; KEYPAD_ROWS; i++) {
            gpio_cfg_t hi_z = row_cfg[i];
            hi_z.func = GPIO_FUNC_GPIO;
            hi_z.pad  = GPIO_PAD_INPUT;
            GPIO_Config(&amp;amp;hi_z);
        }

        /* Drive the target row low (output) */
        gpio_cfg_t out = row_cfg[r];
        out.func = GPIO_FUNC_GPIO;
        out.pad  = GPIO_PAD_NORMAL;
        GPIO_Config(&amp;amp;out);
        GPIO_OutClr(&amp;amp;out);

        /* Small settling time */
        TMR_Delay(MXC_TMR0, USEC(10));

        /* Read columns */
        for (int c = 0; c &amp;lt; KEYPAD_COLS; c++) {
            if (GPIO_InGet(&amp;amp;col_cfg[c]) == 0) {
                GPIO_OutSet(&amp;amp;out);
                GPIO_Config(&amp;amp;row_cfg[r]);
                GPIO_OutSet(&amp;amp;row_cfg[r]);
                return r * KEYPAD_COLS + c;
            }
        }

        /* Restore row */
        GPIO_OutSet(&amp;amp;out);
        GPIO_Config(&amp;amp;row_cfg[r]);
        GPIO_OutSet(&amp;amp;row_cfg[r]);
    }

    return KEY_NONE;
}

/* ---- Debounce ------------------------------------------------------------ */
/*
 * Two consecutive identical scan results 10 ms apart constitute a confirmed
 * state.  Transitions are only reported on confirmation.
 */
#define DEBOUNCE_MS  10

static int debounce(void)
{
    int first = keypad_scan();
    TMR_Delay(MXC_TMR0, MSEC(DEBOUNCE_MS));
    int second = keypad_scan();
    return (first == second) ? first : KEY_NONE - 1;  /* -2 = unstable */
}

/* ---- Main ---------------------------------------------------------------- */
int main(void)
{
    /* Init UART1 MAP_A for printf (DAPLink serial, P2_0/P2_1, 115200 baud).
     * CONSOLE_UART=1 in Makefile routes _write() here. */
    {
        const uart_cfg_t uart_cfg = {
            .parity     = UART_PARITY_DISABLE,
            .size       = UART_DATA_SIZE_8_BITS,
            .extra_stop = 0,
            .cts        = 0,
            .rts        = 0,
            .baud       = 115200,
        };
        const sys_cfg_uart_t uart_sys_cfg = {
            .clk_scale = CLKMAN_SCALE_AUTO,
            .io_cfg    = IOMAN_UART(1, IOMAN_MAP_A, IOMAN_MAP_UNUSED, IOMAN_MAP_UNUSED, 1, 0, 0),
        };
        UART_Init(MXC_UART1, &amp;amp;uart_cfg, &amp;amp;uart_sys_cfg);
    }

    keypad_init();

    printf(&amp;quot;INIT\r\n&amp;quot;);

    int last_key = KEY_NONE;

    while (1) {
        int key = debounce();

        if (key &amp;gt;= 0 &amp;amp;&amp;amp; key != last_key) {
            /* New confirmed press */
            int row = key / KEYPAD_COLS;
            int col = key % KEYPAD_COLS;
            printf(&amp;quot;KEY %c (%d,%d)\r\n&amp;quot;, key_map[row][col], row, col);
            last_key = key;

        } else if (key == KEY_NONE &amp;amp;&amp;amp; last_key != KEY_NONE) {
            /* Key released (confirmed idle) */
            printf(&amp;quot;UP\r\n&amp;quot;);
            last_key = KEY_NONE;
        }
        /* key == -2 (unstable): ignore, loop again immediately */
    }
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Code for this particular post is available at&amp;nbsp;&lt;a id="" href="https://github.com/arvindsa/identity-protocol-e14-challenge/tree/main/firmware/tests/keypad-scan" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/arvindsa/identity-protocol-e14-challenge/tree/main/firmware/tests/keypad-scan&lt;/a&gt;&amp;nbsp;&lt;br /&gt;Code for entire project is available at&amp;nbsp;&lt;a id="" href="https://github.com/arvindsa/identity-protocol-e14-challenge" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/arvindsa/identity-protocol-e14-challenge&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmctihdb2"&gt;Final Notes&lt;/h2&gt;
&lt;p&gt;The code worked brilliantly and now i can get on the next peripherals. I was supposed to do the Crypto signing work next, but i decided to do it on a weekend when i have a longer block of free time.&amp;nbsp; Also i decided to move away from inkscape to draw.io website at&amp;nbsp;&lt;a id="" href="https://app.diagrams.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://app.diagrams.net/&lt;/a&gt;&amp;nbsp;for my flow chart creation. Gets work done faster. and I stick to copy-pasting from Typora for the github style tables.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Identity Protocol - Part 4 - BLE using PAN1326B and BTstack</title><link>https://community.element14.com/thread/56853?ContentTypeID=0</link><pubDate>Thu, 16 Apr 2026 11:01:04 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b449688f-b5c8-4779-91ce-d940f32ac3fa</guid><dc:creator>arvindsa</dc:creator><slash:comments>7</slash:comments><comments>https://community.element14.com/thread/56853?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56853/identity-protocol---part-4---ble-using-pan1326b-and-btstack/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;In Part 4, I&amp;#39;ll walk through getting Bluetooth Low Energy up and running on the MAX32630FTHR&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea is simple enough: stop making people swipe a card and type a PIN at every single door. Instead, the ID card (a MAX32630FTHR + ATECC508A in your pocket) unlocks once via PIN, then silently does challenge-response crypto over Bluetooth every time you walk up to a door. If the card gets yanked off you, the IMU detects the tug and it locks itself. No PIN, no entry. For more details check the Part 1 of the series&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56768/identity-protocol-part-1---plan" data-contentid="d5152729d060498f812f0244641b3810" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol Part 1 - Plan&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a class="ui-contentpeek internal-link" href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56830/identity-protocol---part-2---django-server" data-contentid="1ab561efc7f2445b8eb20783970ed89c" data-contenttypeid="46448885d0e64133bbfbf0cd7b0fd6f7" data-e14adj="t"&gt;Identity Protocol - Part 2 - Django Server&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56840/identity-protocol---part-3---unboxing-and-blinking-with-maxim-lpsdk"&gt;Identity Protocol - Part 3 - Unboxing and Blinking with Maxim LPSDK&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was initially happy when i saw an folder exactLE in the LPSDK&amp;#39;s file thinking it might be an easy fit, but the rabbit hole just got started.&amp;nbsp; Let&amp;#39;s start by telling about the module itself&lt;/p&gt;
&lt;h2 id="mcetoc_1jmaqcdgc0"&gt;The Bluetooth Hardware&lt;/h2&gt;
&lt;p&gt;PAN1326B module a compact module from Panasonic built around the TI CC2564B chip. This gives you Bluetooth Classic + BLE 4.1. The CC2564B talks to the MAX32630 over UART. It is not a standalone BLE SoC unlike nrf52 and it is a radio that needs a host controller library on the MCU side to drive it.&lt;/p&gt;
&lt;p&gt;A basic google search took me to BTStack -&amp;nbsp;&lt;a id="" href="https://github.com/bluekitchen/btstack" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/bluekitchen/btstack&lt;/a&gt;&amp;nbsp;and their supported boards here:&amp;nbsp;&lt;a id="" href="https://bluekitchen-gmbh.com/btstack/ports/existing_ports.html" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://bluekitchen-gmbh.com/btstack/ports/existing_ports.html&lt;/a&gt;&amp;nbsp;listed our MAX32630FTHR. I was happy.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/19.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;Imported their git repo as a submodule to mine and&lt;/p&gt;
&lt;pre class="md-fences md-end-block ty-contain-cm modeLoaded" style="background-attachment:inherit;background-color:#f8f8f8;background-image:inherit;background-position:inherit;background-repeat:inherit;background-size:inherit;border:1px solid #e7eaed;border-radius:3px;color:#333333;display:block;font-size:0.9em;font-style:normal;font-weight:400;letter-spacing:normal;margin-bottom:15px;margin-top:15px;overflow:visible;padding:8px 4px 6px;position:relative;text-align:left;text-indent:0px;text-transform:none;white-space:pre;width:inherit;" lang="bash"&gt;git submodule add &lt;a href="https://github.com/bluekitchen/btstack.git" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;github.com/.../btstack.git&lt;/a&gt; third_party/btstack&lt;/pre&gt;
&lt;p&gt;funnily enough i had to run the `make` command inside the&amp;nbsp;btstack\port\max32630-fthr folder to generate the examples. The nice part is they also have shipped a copy of the LPSDK source files with BTStack, It brings its own board support file (board.c) written specifically for the FTHR, with UART1 on MAP_A (P2_0/P2_1) as the debug console and UART0 on MAP_B as the CC2564B interface. so nice of them.&amp;nbsp; No toolchain though. That&amp;#39;s alright. Its the best way. They even gave a template for the makefile to make a fresh project with BTStack, It was a bit complicated to i asked chatGPT to help me mix my makefile and BTStack to make a makefile which will use the toolchain i already have with the LPSDK and BT Stack they have, which turned out to be like -&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;PROJECT   ?= ble_beacon
PORT_NAME ?= max32630-fthr

TARGET    = MAX3263x
TARGET_UC := MAX3263X
TARGET_LC := max3263x
COMPILER  = GCC

# ---- User-configurable roots ------------------------------------------------

# Root of this project (auto-detected)
PROJECT_ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))

# BTstack root (override if needed)
BTSTACK_ROOT ?= $(PROJECT_ROOT)/../../../third_party/btstack
BTSTACK_ROOT := $(abspath $(BTSTACK_ROOT))

# Optional: override from environment instead of sdk.local.mk
LPSDK_ROOT ?=

# Load local overrides if present
-include $(PROJECT_ROOT)/../../sdk.local.mk

ifeq ($(LPSDK_ROOT),)
$(warning LPSDK_ROOT not set — flash target will not work)
endif

# ---- Derived paths ----------------------------------------------------------

PORT_DIR   := $(BTSTACK_ROOT)/port/$(PORT_NAME)
MAXIM_PATH := $(PORT_DIR)/maxim
LIBS_DIR   := $(MAXIM_PATH)/Firmware/$(TARGET_UC)/Libraries
CMSIS_ROOT := $(LIBS_DIR)/CMSIS

# ---- Build flags ------------------------------------------------------------

PROJ_CFLAGS  += -DRO_FREQ=96000000
PROJ_CFLAGS  += -DMXC_ASSERT_ENABLE
PROJ_CFLAGS  += -DENABLE_HCI_INIT
PROJ_CFLAGS  += --specs=nano.specs
PROJ_LDFLAGS += --specs=nano.specs

# ---- Source paths -----------------------------------------------------------

VPATH = . src
IPATH = . src

# BTstack core
VPATH += \
    $(BTSTACK_ROOT)/src \
    $(BTSTACK_ROOT)/src/ble \
    $(BTSTACK_ROOT)/src/classic \
    $(BTSTACK_ROOT)/platform/embedded \
    $(BTSTACK_ROOT)/chipset/cc256x \
    $(BTSTACK_ROOT)/3rd-party/micro-ecc \
    $(BTSTACK_ROOT)/3rd-party/md5 \
    $(BTSTACK_ROOT)/src/ble/gatt-service

IPATH += \
    $(BTSTACK_ROOT)/src \
    $(BTSTACK_ROOT)/src/ble \
    $(BTSTACK_ROOT)/src/classic \
    $(BTSTACK_ROOT)/platform/embedded \
    $(BTSTACK_ROOT)/chipset/cc256x \
    $(BTSTACK_ROOT)/3rd-party/micro-ecc \
    $(BTSTACK_ROOT)/3rd-party/md5 \
    $(BTSTACK_ROOT)/src/ble/gatt-service \
    $(BTSTACK_ROOT)/3rd-party/hxcmod-player

# Port sources
VPATH += $(PORT_DIR)/src
IPATH += $(PORT_DIR)/src

# ---- Board support ----------------------------------------------------------

ADAPT_BOARD_DIR := $(PORT_DIR)/board/$(PORT_NAME)
BOARD_DIR       := $(LIBS_DIR)/Boards/EvKit_V1

VPATH += $(LIBS_DIR)/Boards/Source
IPATH += $(LIBS_DIR)/Boards/Include

include $(ADAPT_BOARD_DIR)/board.mk

# ---- BTstack sources --------------------------------------------------------

SRCS += \
    btstack_audio.c \
	...&amp;lt;LOTS MORE&amp;gt;

# Third-party
SRCS += uECC.c md5.c

# Port + app
SRCS += \
    btstack_port.c \
    hal_tick.c \
    hal_flash_bank_mxc.c \
    main.c \
    ble_beacon.c \
    btstack_link_key_db_stub.c

# ---- Peripheral driver + CMSIS ---------------------------------------------

PERIPH_DRIVER_DIR := $(LIBS_DIR)/$(TARGET_UC)PeriphDriver
include $(PERIPH_DRIVER_DIR)/periphdriver.mk

include $(CMSIS_ROOT)/Device/Maxim/$(TARGET_UC)/Source/$(COMPILER)/$(TARGET_LC).mk

# ---- Output helpers ---------------------------------------------------------

bin: $(BUILD_DIR)/$(PROJECT).elf
	arm-none-eabi-objcopy -O binary $&amp;lt; $(BUILD_DIR)/$(PROJECT).bin
	arm-none-eabi-size $&amp;lt;

# ---- Flash ------------------------------------------------------------------

flash: $(BUILD_DIR)/$(PROJECT).elf
ifndef LPSDK_ROOT
	$(error LPSDK_ROOT not set — cannot flash)
endif
	&amp;quot;$(LPSDK_ROOT)/Toolchain/bin/openocd.exe&amp;quot; \
	    -c &amp;quot;set LPSDK_TOOLCHAIN $(LPSDK_ROOT)/Toolchain&amp;quot; \
	    -f &amp;quot;$(PROJECT_ROOT)/../../openocd.cfg&amp;quot; \
	    -c &amp;quot;program $&amp;lt; verify reset exit&amp;quot;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Full File:&amp;nbsp;&lt;a id="" href="https://github.com/arvindsa/identity-protocol-e14-challenge/blob/main/firmware/tests/ble-beacon/Makefile" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/arvindsa/identity-protocol-e14-challenge/blob/main/firmware/tests/ble-beacon/Makefile&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This raised an error. I figured since BTStack was kind enough to share the LPSDK i thought they would also include the TI&amp;#39;s Init Script for the&amp;nbsp;CC2564B. When i checked the code&amp;nbsp; at &amp;quot;&lt;code&gt;btstack\chipset\cc256x\convert_bts_init_scripts.py&amp;quot;&lt;/code&gt; it said that &amp;quot;&lt;em&gt;The Makefile include chipset/cc256x/Makefile.inc automates the process of downloading and converting .bts files.&amp;quot;&lt;/em&gt;&amp;nbsp; but it did not work for me, so i manually ran the python file as per their docs and boom&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="powershell"&gt;python convert_bts_init_scripts.py \
    cc256xb_bt_sp_v1.8/initscripts-TIInit_6.7.16_bt_spec_4.1.bts \
    cc256xb_bt_sp_v1.8/initscripts-TIInit_6.7.16_ble_add-on.bts \
    bluetooth_init_cc2564B_1.8_BT_Spec_4.1.c&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmat8i811"&gt;The Bring-up Sequence&lt;/h2&gt;
&lt;p&gt;Before getting to application code, it helps to understand what bluetooth_main() in the BTstack port does before it ever calls your&amp;nbsp; btstack_main&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Clock on P1.7 `init_slow_clock()` routes the internal 32 kHz RTC output to P1.7. The PAN1326B needs this as its reference clock.&lt;/li&gt;
&lt;li&gt;nSHUTD on P1.6-&amp;nbsp; the port drives this line high to release the CC2564B from reset. The UART line is not valid until nSHUTD is high and the module has had time to stabilise.&lt;/li&gt;
&lt;li&gt;RTS poll on P0.3-&amp;nbsp; after releasing nSHUTD, the code spins polling the CC2564B&amp;#39;s RTS output waiting for it to go low. Only then is the HCI UART initialised.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Baud rate renegotiation - the init script starts at 115200 baud, then a vendor-specific HCI command bumps it to 4 Mbit/s. BTstack handles all of this inside `btstack_chipset_cc256x`.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:720px;max-width:461px;"  src="https://community.element14.com/resized-image/__size/922x1440/__key/communityserver-discussions-components-files/452/20.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;The BTstack MAX32630FTHR port provides its own `main.c` which takes care of all the run loop initialization as well as the transport initialization of the HCI interface. The application code is provided to `btstack_main()`, which is invoked by the port after it initializes itself. Therefore, there is no need to invoke `btstack_run_loop_init()` or `hci_init()`: In other words, there is no main loop in the main.c file. Read more about the Btstacks code architecture here:&amp;nbsp;&lt;a href="https://bluekitchen-gmbh.com/btstack/examples/examples.html#main-application-setup" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;bluekitchen-gmbh.com/.../examples.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define BTSTACK_FILE__ &amp;quot;ble_beacon.c&amp;quot;

#include &amp;lt;stdio.h&amp;gt;
#include &amp;quot;btstack.h&amp;quot;
#include &amp;quot;gpio.h&amp;quot;

/* RGB LEDs — active-low, open-drain */
static const gpio_cfg_t led_r = { PORT_2, PIN_4, GPIO_FUNC_GPIO, GPIO_PAD_OPEN_DRAIN };
static const gpio_cfg_t led_g = { PORT_2, PIN_5, GPIO_FUNC_GPIO, GPIO_PAD_OPEN_DRAIN };

static const uint8_t adv_data[] = {
    0x02, 0x01, 0x06,                               /* Flags: LE General Discoverable */
    0x0A, 0x09, &amp;#39;I&amp;#39;, &amp;#39;D&amp;#39;, &amp;#39;-&amp;#39;, &amp;#39;B&amp;#39;, &amp;#39;e&amp;#39;, &amp;#39;a&amp;#39;, &amp;#39;c&amp;#39;, &amp;#39;o&amp;#39;, &amp;#39;n&amp;#39;,  /* Complete Local Name */
};

static btstack_packet_callback_registration_t hci_event_callback_registration;

static void packet_handler(uint8_t packet_type, uint16_t channel,
                           uint8_t *packet, uint16_t size)
{
    UNUSED(channel); UNUSED(size);
    if (packet_type != HCI_EVENT_PACKET) return;

    switch (hci_event_packet_get_type(packet)) {
    case BTSTACK_EVENT_STATE:
        if (btstack_event_state_get_state(packet) == HCI_STATE_WORKING) {
            bd_addr_t zero_addr = {0};
            gap_advertisements_set_params(0x0100, 0x0200, 0, 0, zero_addr, 0x07, 0x00);
            gap_advertisements_set_data(sizeof(adv_data), (uint8_t *)adv_data);
            gap_advertisements_enable(1);
            GPIO_OutClr(&amp;amp;led_g);   /* green on  */
            GPIO_OutSet(&amp;amp;led_r);   /* red off   */
            printf(&amp;quot;Advertising as \&amp;quot;ID-Beacon\&amp;quot;\n&amp;quot;);
        } else if (btstack_event_state_get_state(packet) == HCI_STATE_OFF) {
            printf(&amp;quot;HCI off\n&amp;quot;);
        }
        break;
    default:
        break;
    }
}

int btstack_main(int argc, const char *argv[])
{
    UNUSED(argc); UNUSED(argv);

    GPIO_Config(&amp;amp;led_r); GPIO_Config(&amp;amp;led_g);
    GPIO_OutClr(&amp;amp;led_r);   /* red on while initialising */
    GPIO_OutSet(&amp;amp;led_g);   /* green off */

    hci_event_callback_registration.callback = &amp;amp;packet_handler;
    hci_add_event_handler(&amp;amp;hci_event_callback_registration);
    hci_power_control(HCI_POWER_ON);
    return 0;
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The code ran fine and i was able to verify it&amp;#39;s working using the Nordic&amp;#39;s Connect App on my phone.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:720px;max-width:582px;"  src="https://community.element14.com/resized-image/__size/1164x1440/__key/communityserver-discussions-components-files/452/18c.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Serial UART log via hterm&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/1462.PNG" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmau55443"&gt;The Makefile&lt;/h2&gt;
&lt;p&gt;I used&amp;nbsp; BTstack&amp;#39;s bundled copy of the LPSDK inside &lt;code&gt;port/max32630-fthr/maxim/&lt;/code&gt; rather than the main LPSDK installation. This keeps the BTstack port self-contained a Every BTstack source file is listed explicitly.&amp;nbsp; no wildcard includes. The `-DENABLE_HCI_INIT` flag is critical: it gates the HCI transport setup inside `btstack_port.c`. Without it, the CC2564B is never initialised. I still can&amp;#39;t understand why. if anyone can. i&amp;#39;ll be grateful to them&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;PROJECT   = ble_beacon
PORT_NAME = max32630-fthr

BTSTACK_ROOT ?= ../../../third_party/btstack
BTSTACK_ROOT := $(abspath $(BTSTACK_ROOT))

PORT_DIR   = $(BTSTACK_ROOT)/port/$(PORT_NAME)
MAXIM_PATH = $(PORT_DIR)/maxim
LIBS_DIR   = $(MAXIM_PATH)/Firmware/MAX3263X/Libraries

# Machine-specific OpenOCD path only — BTstack uses its own bundled SDK
-include ../../sdk.local.mk

PROJ_CFLAGS += -DENABLE_HCI_INIT

# Core BTstack
SRCS += btstack_memory.c btstack_memory_pool.c btstack_linked_list.c
SRCS += btstack_util.c btstack_run_loop.c btstack_run_loop_embedded.c
SRCS += btstack_crypto.c btstack_audio.c
SRCS += hci.c hci_cmd.c hci_dump.c hci_dump_embedded_stdout.c hci_transport_h4.c
SRCS += btstack_uart_block_embedded.c
# BLE layer
SRCS += ad_parser.c att_dispatch.c sm.c
SRCS += le_device_db_tlv.c btstack_tlv.c btstack_tlv_flash_bank.c
# Third-party crypto
SRCS += uECC.c md5.c
# CC2564B chipset driver + init script
SRCS += btstack_chipset_cc256x.c bluetooth_init_cc2564B_1.8_BT_Spec_4.1.c
# Port-specific files
SRCS += btstack_port.c hal_tick.c hal_flash_bank_mxc.c main.c
# Application
SRCS += ble_beacon.c btstack_link_key_db_stub.c&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;However, there is one catch. When initializing the MAX32630FTHR port, the `btstack_port.c` file calls `btstack_link_key_db_tlv_get_instance()` and `hci_set_link_key_db()` regardless of whether we compile for BLE only. The problem is that both functions reside in the `#ifdef ENABLE_CLASSIC` block in the BTstack code. Once you define `ENABLE_CLASSIC`, you will have SBC/A2DP audio definitions pulled into your source tree that&lt;/p&gt;
&lt;p&gt;The fix is a small stub file (`src/btstack_link_key_db_stub.c`) that satisfies the linker without touching the classic stack at all:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;stddef.h&amp;gt;
#include &amp;quot;classic/btstack_link_key_db_tlv.h&amp;quot;

/* Returns NULL — no link-key storage. Safe: classic pairing is never initiated. */
const btstack_link_key_db_t *
btstack_link_key_db_tlv_get_instance(const btstack_tlv_t *impl, void *ctx)
{
    (void)impl; (void)ctx;
    return NULL;
}

void hci_set_link_key_db(btstack_link_key_db_t const *db) { (void)db; }&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Now, i tried to capture the signals using my salae logic analyzer but, it took be 10mins after i gracefully took the analyzer out of the box, hooked up the wires and tried to find the Bluetooth pins on the feather. I had the pin-out card in front of me, but realized it too late, that the pins to the Bluetooth is not broken out properly for easy access.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmauh5sb4"&gt;A note on Compiling&lt;/h2&gt;
&lt;p&gt;Even though i used the tool chain provided by the installation from LPSDK, i used the firmware from the BTStack.&amp;nbsp; So,&amp;nbsp;The build uses the LPSDK&amp;#39;s bundled `make.exe` from `Toolchain/msys/1.0/bin/`. You need both the MSYS bin directory and the ARM toolchain on PATH. The cleanest way is to set `LPSDK_ROOT` in your environment (or in `firmware/sdk.local.ps1`) and use the included `build_and_flash.ps1`:&lt;/p&gt;
&lt;h2 id="mcetoc_1jmb0hg220"&gt;The Code Repository&lt;/h2&gt;
&lt;p&gt;You can find the project code here -&amp;nbsp;&lt;a id="" href="https://github.com/arvindsa/identity-protocol-e14-challenge/tree/main" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/arvindsa/identity-protocol-e14-challenge/tree/main&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmb0hg221"&gt;Next Steps&lt;/h2&gt;
&lt;p&gt;Sharing data over BLE GATT, Getting the ATECC508A crypto chip talking over I2C, provisioning a key pair, and running a sign/verify round-trip. That&amp;#39;s where the actual security story starts.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1jmauk5ae5"&gt;Final notes&lt;/h2&gt;
&lt;p&gt;The BTStack helped me quite a lot, their documentation &lt;a href="https://bluekitchen-gmbh.com/btstack/ports/existing_ports.html#sec:max32630-fthrPort" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://bluekitchen-gmbh.com/btstack/ports/existing_ports.html#sec:max32630-fthrPort&lt;/a&gt; was quite easy to understand which helped me quite easily. There was a time where i thought of pivoting to mbed or arduino but i stuck to my initial goal. Infact I was sure it will get frustrating that i decided to work on the BLE after my Workation at Goa. Work in the morning and Chill on a beach side with a chilled beer. Here is a photo of my Chillout time. The easy documentation BTStack propelled me and thus managed to get this BLE Working within couple of hours. I still am new to BLE and heavily using Youtube videos and ChatGPT to help me understand it. Yet, i am quite confident i will get it done.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="display:block;margin-left:auto;margin-right:auto;max-height:640px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x1280/__key/communityserver-discussions-components-files/452/20260412.jpeg" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Forum Thread 2 EchoGuard – MAX32630FTHR Setup &amp; First Blink Program Upload</title><link>https://community.element14.com/thread/56852?ContentTypeID=0</link><pubDate>Wed, 15 Apr 2026 22:14:25 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c88a7fa1-4ca0-42f2-9356-d455b4e62f75</guid><dc:creator>Nidhee</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/56852?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56852/forum-thread-2-echoguard-max32630fthr-setup-first-blink-program-upload/rss?ContentTypeId=0</wfw:commentRss><description>&lt;div&gt;
&lt;h1 data-section-id="79xbcs" data-start="134" data-end="173"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f50c.svg" title="Electric plug"&gt;&amp;#x1f50c;&lt;/span&gt;&amp;nbsp;Hardware Setup &amp;amp; First Code Upload&lt;/h1&gt;
&lt;h2 data-section-id="1nnkl5t" data-start="175" data-end="202"&gt;&amp;nbsp;Connecting the Boards&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1 id="mcetoc_1jm9iqq500" data-section-id="79xbcs" data-start="134" data-end="173"&gt;&lt;/h1&gt;
&lt;p data-start="254" data-end="273"&gt;&lt;img alt="image" style="max-height:280px;max-width:373px;"  height="280" src="https://community.element14.com/resized-image/__size/746x560/__key/communityserver-discussions-components-files/452/PXL_5F00_20260415_5F00_134938204.RAW_2D00_01.COVER.jpg" width="373" /&gt;&lt;/p&gt;
&lt;p data-start="254" data-end="273"&gt;To begin the setup:&lt;/p&gt;
&lt;ul data-start="275" data-end="501"&gt;
&lt;li data-section-id="128n447" data-start="275" data-end="407"&gt;The &lt;strong data-start="281" data-end="297"&gt;MAX32625PICO&lt;/strong&gt; is connected to the &lt;strong data-start="318" data-end="349"&gt;Analog Devices MAX32630FTHR&lt;/strong&gt; using the provided &lt;strong data-start="369" data-end="405"&gt;socket-to-socket connector cable&lt;/strong&gt;&lt;/li&gt;
&lt;li data-section-id="iq3q1u" data-start="408" data-end="501"&gt;Both boards are then connected to the computer using &lt;strong data-start="463" data-end="499"&gt;USB cables (included in the kit)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="503" data-end="581"&gt;&amp;nbsp;This setup allows the PICO board to act as a programmer for the main board.&lt;/p&gt;
&lt;hr data-start="583" data-end="586" /&gt;
&lt;h2 id="mcetoc_1jm8mu0cg2" data-section-id="1o9qqqa" data-start="588" data-end="623"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/2699.svg" title="Gear"&gt;&amp;#x2699;&lt;/span&gt;️ Development Environment Setup&lt;/h2&gt;
&lt;p data-start="625" data-end="771"&gt;Setting up the software environment can be a bit confusing, as most available tutorials are quite old. So here is a &lt;strong data-start="741" data-end="770"&gt;simple and working method&lt;/strong&gt;.&lt;/p&gt;
&lt;hr data-start="773" data-end="776" /&gt;
&lt;h3 id="mcetoc_1jm8mu0cg3" data-section-id="s1k3qo" data-start="778" data-end="808"&gt;Step 1: Install VS Code&lt;/h3&gt;
&lt;p data-start="810" data-end="843"&gt;&lt;img loading="lazy" alt="image" style="max-height:285px;max-width:492px;"  height="285" src="https://community.element14.com/resized-image/__size/984x570/__key/communityserver-discussions-components-files/452/pastedimage1776261754375v1.png" width="492" /&gt;&lt;img loading="lazy" alt="image"  height="288" src="https://community.element14.com/resized-image/__size/998x576/__key/communityserver-discussions-components-files/452/pastedimage1776261854493v2.png" width="499" /&gt;&lt;/p&gt;
&lt;ul data-start="845" data-end="923"&gt;
&lt;li data-section-id="3tdr1l" data-start="845" data-end="923"&gt;Install &lt;strong data-start="855" data-end="896"&gt;&lt;span class="hover:entity-accent entity-underline inline cursor-pointer align-baseline"&gt;&lt;span class="whitespace-normal"&gt;Visual Studio Code&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; (if not already installed). Link : &lt;a id="" href="https://code.visualstudio.com/Download" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://code.visualstudio.com/Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-start="925" data-end="928" /&gt;
&lt;h3 id="mcetoc_1jm8mu0cg4" data-section-id="1e4iwnn" data-start="930" data-end="963"&gt;Step 2: Install PlatformIO&lt;/h3&gt;
&lt;p data-start="965" data-end="1001"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1776262359467v3.png" /&gt;&lt;/p&gt;
&lt;ul data-start="1003" data-end="1106"&gt;
&lt;li data-section-id="hgogn2" data-start="1003" data-end="1034"&gt;Go to Extensions in VS Code&lt;/li&gt;
&lt;li data-section-id="1uym03k" data-start="1035" data-end="1091"&gt;Search for &lt;strong data-start="1048" data-end="1089"&gt;&lt;span class="hover:entity-accent entity-underline inline cursor-pointer align-baseline"&gt;&lt;span class="whitespace-normal"&gt;PlatformIO IDE&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li data-section-id="1uvp0us" data-start="1092" data-end="1106"&gt;Install it&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="1108" data-end="1302"&gt;&amp;nbsp;&lt;strong data-start="1111" data-end="1134"&gt;What is PlatformIO?&lt;/strong&gt;&lt;br data-start="1134" data-end="1137" /&gt; PlatformIO is an extension that makes it easy to develop, build, and upload code to embedded boards. It manages libraries, toolchains, and programming automatically.&lt;/p&gt;
&lt;p data-start="1108" data-end="1302"&gt;You can see that I have already installed it.&lt;/p&gt;
&lt;p data-start="1304" data-end="1343"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ After installation, restart VS Code.&lt;/p&gt;
&lt;hr data-start="1345" data-end="1348" /&gt;
&lt;h3 id="mcetoc_1jm8mu0cg5" data-section-id="1jvxw40" data-start="1350" data-end="1383"&gt;Step 3: Create New Project&lt;/h3&gt;
&lt;p data-start="1385" data-end="1429"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1776290303051v3.png" /&gt;&lt;img loading="lazy" alt="image"  height="236" src="https://community.element14.com/resized-image/__size/1000x472/__key/communityserver-discussions-components-files/452/pastedimage1776290433421v4.png" width="500" /&gt;&lt;/p&gt;
&lt;ul data-start="1431" data-end="1509"&gt;
&lt;li data-section-id="1rfi5up" data-start="1431" data-end="1483"&gt;Click on the alien icon&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f47d.svg" title="Alien"&gt;&amp;#x1f47d;&lt;/span&gt;&amp;nbsp;(PlatformIO) on the left&lt;/li&gt;
&lt;li data-section-id="t5o3m7" data-start="1484" data-end="1509"&gt;Click &lt;strong data-start="1492" data-end="1507"&gt;New Project&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="1511" data-end="1524"&gt;Fill details:&lt;/p&gt;
&lt;ul data-start="1525" data-end="1637"&gt;
&lt;li data-section-id="1tweyo9" data-start="1525" data-end="1558"&gt;Project Name: &lt;code data-start="1541" data-end="1556"&gt;max32630_test&lt;/code&gt;&lt;/li&gt;
&lt;li data-section-id="35uted" data-start="1559" data-end="1613"&gt;Board: &lt;strong data-start="1568" data-end="1611"&gt;Maxim MAX32630FTHR Application Platform&lt;/strong&gt;&lt;/li&gt;
&lt;li data-section-id="c5d4lc" data-start="1614" data-end="1637"&gt;Framework: &lt;strong data-start="1627" data-end="1635"&gt;Mbed&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="1639" data-end="1675"&gt;Click &lt;strong data-start="1645" data-end="1655"&gt;Finish&lt;/strong&gt; and wait for setup.&lt;/p&gt;
&lt;hr data-start="1677" data-end="1680" /&gt;
&lt;h3 id="mcetoc_1jm8mu0cg6" data-section-id="19mc7oi" data-start="1682" data-end="1718"&gt;Step 4: Create Main Code File&lt;/h3&gt;
&lt;p data-start="1720" data-end="1757"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1776269745364v4.png" /&gt;&lt;/p&gt;
&lt;ul data-start="1759" data-end="1813"&gt;
&lt;li data-section-id="1sq2k3s" data-start="1759" data-end="1780"&gt;Open &lt;code data-start="1766" data-end="1771"&gt;src&lt;/code&gt; folder&lt;/li&gt;
&lt;li data-section-id="1ymqpz6" data-start="1781" data-end="1813"&gt;Create new file &amp;rarr; &lt;code data-start="1801" data-end="1811"&gt;main.cpp&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="1815" data-end="1836"&gt;Paste this test code:&lt;/p&gt;
&lt;div class="relative w-full mt-4 mb-1"&gt;
&lt;div class=""&gt;
&lt;div class="relative"&gt;
&lt;div class="h-full min-h-0 min-w-0"&gt;
&lt;div class="h-full min-h-0 min-w-0"&gt;
&lt;div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"&gt;
&lt;div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"&gt;
&lt;div class="pointer-events-none absolute inset-x-4 top-12 bottom-4"&gt;
&lt;div class="pointer-events-none sticky z-40 shrink-0 z-1!"&gt;
&lt;div class="sticky bg-token-border-light"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="relative"&gt;
&lt;div class=""&gt;
&lt;div class="relative z-0 flex max-w-full"&gt;
&lt;div id="code-block-viewer" dir="ltr"&gt;
&lt;div class="cm-scroller"&gt;
&lt;div class="cm-content q9tKkq_readonly"&gt;&lt;em&gt;&lt;span&gt;#include&lt;/span&gt; &lt;span&gt;&amp;quot;mbed.h&amp;quot;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span&gt;// onboard LED&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span&gt;DigitalOut&lt;/span&gt; &lt;span&gt;led&lt;/span&gt;(&lt;span&gt;LED1&lt;/span&gt;);&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span&gt;int&lt;/span&gt; &lt;span&gt;main&lt;/span&gt;() {&lt;/em&gt;&lt;br /&gt;&lt;em&gt; &lt;span&gt;while&lt;/span&gt; (&lt;span&gt;true&lt;/span&gt;) {&lt;/em&gt;&lt;br /&gt;&lt;em&gt; &lt;span&gt;led&lt;/span&gt; = &lt;span&gt;!&lt;/span&gt;&lt;span&gt;led&lt;/span&gt;;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; ThisThread::&lt;span&gt;sleep_for&lt;/span&gt;(&lt;span&gt;500&lt;/span&gt;ms);&lt;/em&gt;&lt;br /&gt;&lt;em&gt; }&lt;/em&gt;&lt;br /&gt;&lt;em&gt;}&lt;/em&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=""&gt;
&lt;div class=""&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-start="2005" data-end="2008" /&gt;
&lt;h2 id="mcetoc_1jm8mu0cg7" data-section-id="l2xhh2" data-start="2010" data-end="2041"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ Important Setup (OpenOCD)&lt;/h2&gt;
&lt;p data-start="2043" data-end="2084"&gt;To upload code properly, we need OpenOCD.&lt;/p&gt;
&lt;hr data-start="2086" data-end="2089" /&gt;
&lt;h3 id="mcetoc_1jm8mu0cg8" data-section-id="c0an9b" data-start="2091" data-end="2122"&gt;&amp;nbsp;Step 5: Download OpenOCD&lt;/h3&gt;
&lt;ul data-start="2124" data-end="2247"&gt;
&lt;li data-section-id="kj10bp" data-start="2124" data-end="2189"&gt;Download from:&lt;br data-start="2140" data-end="2143" /&gt;&amp;nbsp;&lt;a class="decorated-link" href="https://gnutoolchains.com/arm-eabi/openocd/" data-start="2146" data-end="2189" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://gnutoolchains.com/arm-eabi/openocd/&lt;span class="ms-0.5 inline-block align-middle leading-none"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li data-section-id="b3u0sb" data-start="2191" data-end="2225"&gt;Download the latest &lt;code data-start="2213" data-end="2218"&gt;.7z&lt;/code&gt; file&lt;/li&gt;
&lt;li data-section-id="yn2z6u" data-start="2226" data-end="2247"&gt;Extract it to &lt;code data-start="2242" data-end="2247"&gt;C:\&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="2249" data-end="2289"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1776269867905v5.png" /&gt;&lt;img loading="lazy" alt="image"  height="182" src="https://community.element14.com/resized-image/__size/1154x364/__key/communityserver-discussions-components-files/452/pastedimage1776269933865v6.png" width="577" /&gt;&lt;/p&gt;
&lt;p data-start="2291" data-end="2317"&gt;Make sure folder contains:&lt;/p&gt;
&lt;ul data-start="2318" data-end="2353"&gt;
&lt;li data-section-id="16r2iq5" data-start="2318" data-end="2327"&gt;&lt;code data-start="2320" data-end="2325"&gt;bin&lt;/code&gt;&lt;/li&gt;
&lt;li data-section-id="cwvalh" data-start="2328" data-end="2341"&gt;&lt;code data-start="2330" data-end="2339"&gt;drivers&lt;/code&gt;&lt;/li&gt;
&lt;li data-section-id="qgz1h" data-start="2342" data-end="2353"&gt;&lt;code data-start="2344" data-end="2351"&gt;share&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-start="2355" data-end="2358" /&gt;
&lt;h3 id="mcetoc_1jm8mu0cg9" data-section-id="1urjdax" data-start="2360" data-end="2393"&gt;Step 6: Find Target Config&lt;/h3&gt;
&lt;p data-start="2395" data-end="2401"&gt;Go to:&lt;/p&gt;
&lt;div class="relative w-full mt-4 mb-1"&gt;
&lt;div class=""&gt;
&lt;div class="relative"&gt;
&lt;div class="h-full min-h-0 min-w-0"&gt;
&lt;div class="h-full min-h-0 min-w-0"&gt;
&lt;div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"&gt;
&lt;div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"&gt;
&lt;div class="pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1"&gt;&lt;/div&gt;
&lt;div class="relative"&gt;
&lt;div class="pe-11 pt-3"&gt;
&lt;div class="relative z-0 flex max-w-full"&gt;
&lt;div id="code-block-viewer" dir="ltr"&gt;
&lt;div class="cm-scroller"&gt;
&lt;div class="cm-content q9tKkq_readonly"&gt;&lt;span&gt;share &amp;rarr; openocd &amp;rarr; scripts &amp;rarr; target&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=""&gt;
&lt;div class=""&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-start="2447" data-end="2476"&gt;&lt;img loading="lazy" alt="image" style="max-height:267px;max-width:395px;"  height="267" src="https://community.element14.com/resized-image/__size/790x534/__key/communityserver-discussions-components-files/452/pastedimage1776270063304v7.png" width="395" /&gt;&lt;/p&gt;
&lt;p data-start="2478" data-end="2488"&gt;Find file:&lt;/p&gt;
&lt;ul data-start="2489" data-end="2529"&gt;
&lt;li data-section-id="pdou7t" data-start="2489" data-end="2510"&gt;&lt;code data-start="2491" data-end="2505"&gt;max32630.cfg&lt;/code&gt; OR&lt;/li&gt;
&lt;li data-section-id="vo8h64" data-start="2511" data-end="2529"&gt;&lt;code data-start="2513" data-end="2527"&gt;max3263x.cfg&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="2531" data-end="2552"&gt;&amp;nbsp;Remember this name&lt;/p&gt;
&lt;hr data-start="2554" data-end="2557" /&gt;
&lt;h2 id="mcetoc_1jm8mu0cga" data-section-id="4om6tu" data-start="2559" data-end="2594"&gt;&amp;nbsp;Step 7: Update platformio.ini&lt;/h2&gt;
&lt;p data-start="2596" data-end="2631"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1776270209567v8.png" /&gt;&lt;/p&gt;
&lt;p data-start="2633" data-end="2649"&gt;Add these lines:&lt;/p&gt;
&lt;div class="relative w-full mt-4 mb-1"&gt;
&lt;div class=""&gt;
&lt;div class="relative"&gt;
&lt;div class="h-full min-h-0 min-w-0"&gt;
&lt;div class="h-full min-h-0 min-w-0"&gt;
&lt;div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"&gt;
&lt;div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"&gt;
&lt;div class="pointer-events-none absolute inset-x-4 top-12 bottom-4"&gt;
&lt;div class="pointer-events-none sticky z-40 shrink-0 z-1!"&gt;
&lt;div class="sticky bg-token-border-light"&gt;&lt;em&gt;upload_protocol = custom&lt;/em&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="relative"&gt;
&lt;div class=""&gt;
&lt;div class="relative z-0 flex max-w-full"&gt;
&lt;div id="code-block-viewer" dir="ltr"&gt;
&lt;div class="cm-scroller"&gt;
&lt;div class="cm-content q9tKkq_readonly"&gt;
&lt;div&gt;
&lt;div&gt;&lt;em&gt;upload_command = C:\openocd-20251211\OpenOCD-20251211-0.12.0\bin\openocd.exe -s C:\openocd-20251211\OpenOCD-20251211-0.12.0\share\openocd\scripts -f interface/cmsis-dap.cfg -f target/max3263x.cfg -c &amp;quot;program .pio/build/max32630fthr/firmware.elf verify reset exit&amp;quot;&lt;/em&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;em&gt;debug_tool = cmsis-dap&lt;/em&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=""&gt;
&lt;div class=""&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-start="2976" data-end="2992"&gt;&amp;nbsp;Save the file&lt;/p&gt;
&lt;hr data-start="2994" data-end="2997" /&gt;
&lt;h2 id="mcetoc_1jm8mu0cgb" data-section-id="ocirzz" data-start="2999" data-end="3027"&gt;&lt;/h2&gt;
&lt;h2 id="mcetoc_1jm8mu0cgc" data-section-id="ocirzz" data-start="190" data-end="218"&gt;Step 8: Build &amp;amp; Upload&lt;/h2&gt;
&lt;p data-start="220" data-end="258"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1776270341073v9.png" /&gt;&lt;/p&gt;
&lt;ul data-start="260" data-end="342"&gt;
&lt;li data-section-id="13k1g0v" data-start="260" data-end="289"&gt;Click&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/2714.svg" title="Heavy check mark"&gt;&amp;#x2714;&lt;/span&gt;&amp;nbsp;(Build) at bottom&lt;/li&gt;
&lt;li data-section-id="2nozws" data-start="290" data-end="318"&gt;Wait for &amp;ldquo;Build Success&amp;rdquo;&lt;/li&gt;
&lt;li data-section-id="r1upwh" data-start="319" data-end="342"&gt;Then click &amp;rarr; (Upload)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="344" data-end="357"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ Important:&lt;/p&gt;
&lt;ul data-start="358" data-end="421"&gt;
&lt;li data-section-id="167snxp" data-start="358" data-end="394"&gt;Always &lt;strong data-start="367" data-end="392"&gt;Save &amp;rarr; Build &amp;rarr; Upload&lt;/strong&gt;&lt;/li&gt;
&lt;li data-section-id="1zirpp" data-start="395" data-end="421"&gt;Do NOT upload directly&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-start="423" data-end="426" /&gt;
&lt;h2 id="mcetoc_1jm8mu0cgd" data-section-id="bacmta" data-start="428" data-end="474"&gt;Upload Indicator (Important Observation)&lt;/h2&gt;
&lt;p data-start="476" data-end="523"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/PXL_5F00_20260415_5F00_135157873.RAW_2D00_01.MP.COVER-_2800_1_2900_.jpg" /&gt;&lt;/p&gt;
&lt;p data-start="525" data-end="551"&gt;During the upload process:&lt;/p&gt;
&lt;p data-start="553" data-end="614"&gt;&amp;nbsp;The&amp;nbsp;&lt;strong data-start="560" data-end="576"&gt;MAX32625PICO&lt;/strong&gt; board starts blinking a &lt;strong data-start="601" data-end="614"&gt;green LED&lt;/strong&gt;&lt;/p&gt;
&lt;p data-start="616" data-end="631"&gt;This indicates:&lt;/p&gt;
&lt;ul data-start="632" data-end="715"&gt;
&lt;li data-section-id="118ktmo" data-start="632" data-end="661"&gt;Code is being transferred&lt;/li&gt;
&lt;li data-section-id="jl9trx" data-start="662" data-end="715"&gt;Communication between PC and main board is active&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="717" data-end="801"&gt;This is a useful visual confirmation that the upload process is working correctly.&lt;/p&gt;
&lt;hr data-start="803" data-end="806" /&gt;
&lt;h2 id="mcetoc_1jm8mu0cge" data-section-id="1fecyog" data-start="808" data-end="820"&gt;&amp;nbsp;Result&lt;/h2&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" src="https://community.element14.com/cfs-file/__key/communityserver-discussions-components-files/452/MAX32630FTHR_5F00_blink.gif"  /&gt;&lt;/p&gt;
&lt;p&gt;If the video does not play here, you can watch it directly using the link below.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://drive.google.com/file/d/1YMvs5PkrrpxZdh-ltdrRpU_LBdpHd_BW/view?usp=sharing" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://drive.google.com/file/d/1YMvs5PkrrpxZdh-ltdrRpU_LBdpHd_BW/view?usp=sharing&lt;/a&gt;&lt;/p&gt;
&lt;p data-start="866" data-end="882"&gt;After uploading:&lt;/p&gt;
&lt;p data-start="866" data-end="882"&gt;To demonstrate this, I changed the timing to 0.5 seconds.&lt;/p&gt;
&lt;p data-start="884" data-end="975"&gt;The onboard LED on the&amp;nbsp;&lt;strong data-start="909" data-end="940"&gt;Analog Devices MAX32630FTHR&lt;/strong&gt; starts blinking&lt;br data-start="956" data-end="959" /&gt;&amp;nbsp;This confirms:&lt;/p&gt;
&lt;ul data-start="976" data-end="1040"&gt;
&lt;li data-section-id="1o1a15" data-start="976" data-end="996"&gt;Board is working&lt;/li&gt;
&lt;li data-section-id="16lb3eg" data-start="997" data-end="1016"&gt;Code is running&lt;/li&gt;
&lt;li data-section-id="1fqp2y1" data-start="1017" data-end="1040"&gt;Setup is successful&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-start="3600" data-end="3603" /&gt;
&lt;h2 id="mcetoc_1jm8mu0cgf" data-section-id="1x0hcb1" data-start="3605" data-end="3620"&gt;&amp;nbsp;Next Step&lt;/h2&gt;
&lt;p data-start="3622" data-end="3649"&gt;In the next update, I will:&lt;/p&gt;
&lt;ul data-start="3650" data-end="3770"&gt;
&lt;li data-section-id="51fkqb" data-start="3650" data-end="3683"&gt;Connect the microphone module&lt;/li&gt;
&lt;li data-section-id="n4dmae" data-start="3684" data-end="3725"&gt;Start reading real-time sound signals&lt;/li&gt;
&lt;li data-section-id="11zt0mo" data-start="3726" data-end="3770"&gt;Begin implementing sound-based detection&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;If there is a simpler or more efficient setup method, feel free to share your suggestions.&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Don't Forget to Set - Project Overview</title><link>https://community.element14.com/thread/56851?ContentTypeID=0</link><pubDate>Wed, 15 Apr 2026 18:46:55 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:8f6ecca6-d420-495b-be84-d827155cd398</guid><dc:creator>Alistair</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/56851?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56851/don-t-forget-to-set---project-overview/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This is a quick overview of what I am intending to build. I have been intending to post this since being accepted as an entrant, but despite it being a [mostly] copy and post job there were cool and shiny things that grabbed my attention instead. At last I am actually getting down to this.&lt;/p&gt;
&lt;h2&gt;The Problem&lt;/h2&gt;
&lt;p&gt;This project is to solve the problem of me forgetting to arm the alarm when I leave the house.&lt;/p&gt;
&lt;p&gt;I get an audio reminder to disarm the alarm as soon as I open the front door, but there is no such reminder when I leave. The door is also used for garden and workshop access so a simple reminder chime is not a viable option.&lt;/p&gt;
&lt;p&gt;What I need to do is identify when I leave the property and set the alarm, but not set the alarm when I remain on the property.&lt;/p&gt;
&lt;h2&gt;The Solution&lt;/h2&gt;
&lt;p&gt;This solution monitors the Bluetooth tracker on my keyring and identifies if it disappears soon after the door has been opened. If it has then I have gone elsewhere and the alarm should be set.&lt;/p&gt;
&lt;p&gt;At the heart of the solution is the MAX32630FTHR. This scans for my Bluetooth tracker I have on my keys. The module is also connected to the Internet using the Ethernet Featherwing so it can signal when the tracker is no longer in range, and arm the alarm.&lt;/p&gt;
&lt;p&gt;Stretch goals include using other sensors (such as the door opening sensor and/or PIR) to help prevent accidental settings, an audio/visual feedback to warn the user the alarm will be set, and a more physical button presser to set alarm systems that can not be controlled across the Internet.&lt;/p&gt;
&lt;h2&gt;Project Plan&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Code the BLE scanning for the MAX32630FTHR.&lt;/li&gt;
&lt;li&gt;Add network functionality using the WIZnet based featherwing.&lt;/li&gt;
&lt;li&gt;Create an Alexa Smart Home Skill to enable the alarm. A bit of a hack but will work with most connected alarms.&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Accessing the PAN1326B Bluetooth module with the Arduino IDE (Don't Forget to Set)</title><link>https://community.element14.com/thread/56850?ContentTypeID=0</link><pubDate>Wed, 15 Apr 2026 10:48:58 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:52c42665-6fca-4493-98ed-31ccb8013cfe</guid><dc:creator>Alistair</dc:creator><slash:comments>3</slash:comments><comments>https://community.element14.com/thread/56850?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56850/accessing-the-pan1326b-bluetooth-module-with-the-arduino-ide-don-t-forget-to-set/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Well that was a bit of a challenge, but I am now able to access the Bluetooth module on the MAX32630FTHR with the Arduino platform without hacking any of the core libraries. I honestly expected to be able to find a simple example online that I could work from, but one did not exist, so I have created that here.&lt;/p&gt;
&lt;p&gt;The Arduino core for the MAX32630FTHR does not have any functionality built in for the PAN1326B, but it does expose the UART and the data pins, and includes the SDK for any other definitions we may (and will) need.&lt;/p&gt;
&lt;p&gt;Before anything we need to include some SDK libraries with definitions for some flag addresses. I have seen many MAX3260 examples including many libraries that are just not needed or used, and all we need here are these two.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;pwrseq_regs.h&amp;gt;
#include &amp;lt;pwrman_regs.h&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The first thing I do is to pull the reset pin low (aka active) white we set up some other things. There is an obscure hardware bug in the module design that at times prevents the reset from functioning as it should later, so if we do this now it will insure the module is reset. I will cover more about this soon.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define BT_RST P1_6
digitalWrite(BT_RST, LOW);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Next we need to change some low level settings in the microcontroller to enable a feature that puts the 32768Hz oscillator frequency on P1.7. The PAN1326B requires this frequency and this is a very convenient way of supplying that frequency without any extra hardware. A great design idea.&lt;/p&gt;
&lt;p&gt;This is not built into the Arduino Core for the MAX32630FTHR, but the following command using definitions from the SDK will enable it.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;MXC_PWRSEQ-&amp;gt;reg4 |= MXC_F_PWRSEQ_REG4_PWR_PSEQ_32K_EN;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This also has a side effect of hijacking P1.6 (documented in the &lt;a href="https://www.analog.com/media/en/technical-documentation/data-sheets/max32630reva1.pdf" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;MAX32630 errata sheet&lt;/a&gt;), and you may have clocked that this is what we use for resetting the PAN1326B module. Luckily it is set to an input with a pullup so it will work most of the time. This does introduce issues with power cycling, but again I will come to that soon.&lt;/p&gt;
&lt;p&gt;Now we need to set up the UART to communicate with the module. The module is hard wired with RX and TX on P0.0 and P0.1, with CTS on P0.2 and RTS P0.3 (documented on &lt;a href="https://www.analog.com/media/en/technical-documentation/eval-board-schematic/max32630fthr-schematic.pdf" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;the schematic&lt;/a&gt;). The hardware supports hardware flow control, but the Arduino core does not. There is also an issue as the RX and TX lines are crossed when they should not be (or are not crossed when they should be, depending on your interpretation of RX and TX). I do not know if this was a mistake, or a simplification in layout that relies on software configuration, but the microcontroller allows the RX and TX lines to be inverted so all is good.&lt;/p&gt;
&lt;p&gt;My approach was to keep things simple and use as much of the Arduino core as possible, and then go in after and change the required flags. There is little point changing any settings before using the Arduino command to initialise the UART as most settings will be overridden.&lt;/p&gt;
&lt;p&gt;So here is what I do. First initialise the UART, that is UART0 on the microcontroller, that the Arduino core maps to Serial0. Then set the flags to enable the RTS/CTS hardware flow control, and swap the RX and TX lines.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;Serial0.begin(115200);

MXC_IOMAN-&amp;gt;uart0_req |= MXC_F_IOMAN_UART0_REQ_CTS_IO_REQ | MXC_F_IOMAN_UART0_REQ_RTS_IO_REQ | MXC_F_IOMAN_UART0_REQ_IO_MAP;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Remember, always change the settings after initialization or they will be lost.&lt;/p&gt;
&lt;p&gt;Finally for the sake of completeness I then attempt to set the reset pin high to enable the module. Because of the aforementioned bug this makes little difference, but if this is ever changed in a future hardware update I would want my code to continue to work.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;digitalWrite(BT_RST, HIGH);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Now a small issue that still remains is that sometimes the module will not start. After uploading the code it almost always starts fine. After a power cycle it is hit and miss, and often does not initialise. Physically resetting the module by pulling the MAX32630FTHR RST pin to GNG always appears to work. Using the SW1 (soft reset) button will continue to work if it did, and will not work if it did not when pressed (aka makes no difference). My assumption this is related to the 32KHz and P1.6 issue, as if so there is little I can do in code to address the issue. At least I can rely on the hardware reset.&lt;/p&gt;
&lt;p&gt;To test we can send the HCI reset command to the module. We should get back 0x04, 0x0E, 0x04, 0x01, 0x03, 0x0C, 0x00 .&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;const char HCI_RESET_CMD[] = {0x01, 0x03, 0x0C, 0x00};
BT_SERIAL.write(HCI_RESET_CMD, sizeof(HCI_RESET_CMD));&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;And here is a complete test sketch&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;pwrseq_regs.h&amp;gt;
#include &amp;lt;pwrman_regs.h&amp;gt;

// PAN1326C2 HCI UART (use Serial on MAX32630FTHR)
#define BT_SERIAL Serial0
#define BT_RST P1_6

// Setup procedure
void setup() {
  // Open serial for debugging
  Serial.begin(115200);

  // Reset the PAN1326C2
  pinMode(BT_RST, OUTPUT);
  digitalWrite(BT_RST, LOW);

  // from 4.5.1.5.2 Enabling 32768Hz Oscillator Output on P1.7
  MXC_PWRSEQ-&amp;gt;reg4 |= MXC_F_PWRSEQ_REG4_PWR_PSEQ_32K_EN;

  // Initialize HCI UART at default 115200
  BT_SERIAL.begin(115200);

  // Swap the RX/TX lines and enable CTS &amp;amp; RTS
  MXC_IOMAN-&amp;gt;uart0_req |= MXC_F_IOMAN_UART0_REQ_CTS_IO_REQ | MXC_F_IOMAN_UART0_REQ_RTS_IO_REQ | MXC_F_IOMAN_UART0_REQ_IO_MAP;

  // Wait for initalisation 
  delay(200);
  
  // Enable the PAN1326C2 module
  digitalWrite(BT_RST, HIGH);

  Serial.println(&amp;quot;Starting...&amp;quot;);

  // Send the HCI reset command
  const char HCI_RESET_CMD[] = {0x01, 0x03, 0x0C, 0x00}; 
  BT_SERIAL.write(HCI_RESET_CMD, sizeof(HCI_RESET_CMD));
}

// The main loop
void loop() {
  if (BT_SERIAL.available()) {
    char data = BT_SERIAL.read();
    Serial.println(data, HEX);
  }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;The solution was so simple. If only it was not such a journey to find it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;So I hope that is helpful. If anyone has any insight to the initialization issues then I would really love to know. If it can be fixed in software then that would make my life so much easier. Also I need to start talking HCI to the Bluetooth module. This should just be some donkey work, and I only need a few commands for my project, but I will look to see if there is an appropriate library I can use instead. Any recommendations are welcome.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Forum Thread 1
EchoGuard – Edge-Based Intelligent Security System | Project Kickoff &amp; Unboxing</title><link>https://community.element14.com/thread/56847?ContentTypeID=0</link><pubDate>Sun, 12 Apr 2026 15:07:42 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:17b07e75-dd89-4fba-94c6-373e1ff01a3f</guid><dc:creator>Nidhee</dc:creator><slash:comments>5</slash:comments><comments>https://community.element14.com/thread/56847?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56847/forum-thread-1-echoguard-edge-based-intelligent-security-system-project-kickoff-unboxing/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h2 id="mcetoc_1jm10qdpa0" data-section-id="159y5w3" data-start="296" data-end="314"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f44b.svg" title="Wave"&gt;&amp;#x1f44b;&lt;/span&gt;&amp;nbsp;Introduction&lt;/h2&gt;
&lt;p data-start="316" data-end="364"&gt;Hey everyone&amp;nbsp;&lt;br data-start="331" data-end="334" /&gt; Welcome to my project journey!&lt;/p&gt;
&lt;p data-start="366" data-end="684"&gt;This is actually my first post in this series, and I&amp;rsquo;m starting a complete build log where I will develop a &lt;strong data-start="474" data-end="512"&gt;smart security system from scratch&lt;/strong&gt; as part of the &lt;strong data-start="528" data-end="618"&gt;&lt;span class="hover:entity-accent entity-underline inline cursor-pointer align-baseline"&gt;&lt;span class="whitespace-normal"&gt;element14 Community&lt;/span&gt;&lt;/span&gt; Smart Security and Surveillance Design Challenge&lt;/strong&gt;, in collaboration with &lt;strong data-start="642" data-end="683"&gt;&lt;span class="hover:entity-accent entity-underline inline cursor-pointer align-baseline"&gt;&lt;span class="whitespace-normal"&gt;Analog Devices&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-start="686" data-end="791"&gt;I&amp;rsquo;m really excited to be part of this challenge and to document my full development process step by step.&lt;/p&gt;
&lt;hr data-start="793" data-end="796" /&gt;
&lt;h2 id="mcetoc_1jm10qdpb1" data-section-id="10h3d6m" data-start="798" data-end="833"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f510.svg" title="Closed lock with key"&gt;&amp;#x1f510;&lt;/span&gt;&amp;nbsp;About the Project &amp;ndash; EchoGuard&lt;/h2&gt;
&lt;p data-start="835" data-end="889"&gt;For this challenge, I&amp;rsquo;ll be building a project called:&lt;/p&gt;
&lt;blockquote data-start="891" data-end="951"&gt;
&lt;h3 id="mcetoc_1jm10qdpb2" data-section-id="1liaanu" data-start="893" data-end="951"&gt;&lt;span&gt;&lt;strong data-start="897" data-end="951"&gt;EchoGuard &amp;ndash; Intelligent Edge-Based Security System&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/blockquote&gt;
&lt;hr data-start="953" data-end="956" /&gt;
&lt;h2 id="mcetoc_1jm10qdpb3" data-section-id="1117po9" data-start="958" data-end="978"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f914.svg" title="Thinking"&gt;&amp;#x1f914;&lt;/span&gt;&amp;nbsp;Why this idea?&lt;/h2&gt;
&lt;p data-start="980" data-end="1033"&gt;Most modern security systems rely heavily on cameras.&lt;/p&gt;
&lt;p data-start="1035" data-end="1085"&gt;But have you ever thought about what happens when:&lt;/p&gt;
&lt;ul data-start="1086" data-end="1153"&gt;
&lt;li data-section-id="e3zxwu" data-start="1086" data-end="1102"&gt;&amp;nbsp; It is dark&lt;/li&gt;
&lt;li data-section-id="12iu8ok" data-start="1103" data-end="1124"&gt;&amp;nbsp;There is smoke&lt;/li&gt;
&lt;li data-section-id="171jtpd" data-start="1125" data-end="1153"&gt;&amp;nbsp;The camera is blocked&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="1155" data-end="1200"&gt;In those situations, visual systems can fail.&lt;/p&gt;
&lt;p data-start="1202" data-end="1234"&gt;That&amp;rsquo;s where EchoGuard comes in.&lt;/p&gt;
&lt;hr data-start="1236" data-end="1239" /&gt;
&lt;h2 id="mcetoc_1jm10qdpb4" data-section-id="16zeh4h" data-start="1241" data-end="1265"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f442.svg" title="Ear"&gt;&amp;#x1f442;&lt;/span&gt;&amp;nbsp;What is EchoGuard?&lt;/h2&gt;
&lt;p data-start="1267" data-end="1310"&gt;Instead of &amp;ldquo;seeing&amp;rdquo;, EchoGuard &lt;strong data-start="1298" data-end="1309"&gt;listens&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-start="1312" data-end="1375"&gt;It uses sound-based intelligence to detect unusual events like:&lt;/p&gt;
&lt;ul data-start="1376" data-end="1455"&gt;
&lt;li data-section-id="1koiv0d" data-start="1376" data-end="1394"&gt;Glass breaking&lt;/li&gt;
&lt;li data-section-id="rkv8l" data-start="1395" data-end="1411"&gt;Forced entry&lt;/li&gt;
&lt;li data-section-id="1w8yld2" data-start="1412" data-end="1435"&gt;Sudden loud impacts&lt;/li&gt;
&lt;li data-section-id="8d79tx" data-start="1436" data-end="1455"&gt;Distress sounds&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="1457" data-end="1509"&gt;And responds in real time using embedded processing.&lt;/p&gt;
&lt;hr data-start="1511" data-end="1514" /&gt;
&lt;h2 id="mcetoc_1jm10qdpb5" data-section-id="wkg9k6" data-start="1516" data-end="1554"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f3a4.svg" title="Microphone"&gt;&amp;#x1f3a4;&lt;/span&gt;&amp;nbsp;Important Update (Hardware Plan)&lt;/h2&gt;
&lt;p data-start="1556" data-end="1618"&gt;Before going further, I want to mention an important addition:&lt;/p&gt;
&lt;p data-start="1620" data-end="1709"&gt;I will also be using an&amp;nbsp;&lt;strong data-start="1647" data-end="1684"&gt;external analog microphone module&lt;/strong&gt; connected to the system.&lt;/p&gt;
&lt;p data-start="1711" data-end="1812"&gt;This will allow EchoGuard to capture real-world sound signals and detect intrusion events accurately.&lt;/p&gt;
&lt;hr data-start="1814" data-end="1817" /&gt;
&lt;h2 id="mcetoc_1jm10qdpb6" data-section-id="1tm0uw1" data-start="1819" data-end="1850"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f4e6.svg" title="Package"&gt;&amp;#x1f4e6;&lt;/span&gt;&amp;nbsp;Unboxing the Hardware Kit&lt;/h2&gt;
&lt;p data-start="1852" data-end="1897"&gt;Alright, now let&amp;rsquo;s move to the unboxing part.&lt;/p&gt;
&lt;hr data-start="1899" data-end="1902" /&gt;
&lt;h3 id="mcetoc_1jm10qdpb7" data-section-id="1fum708" data-start="1904" data-end="1944"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/WhatsApp-Image-2026_2D00_04_2D00_12-at-4.19.02-PM.jpeg" /&gt;&lt;/h3&gt;
&lt;p data-start="1945" data-end="2003"&gt;&amp;ldquo;Let&amp;rsquo;s open the kit and see what we&amp;rsquo;ve got.&amp;rdquo;&lt;/p&gt;
&lt;hr data-start="2053" data-end="2056" /&gt;
&lt;h3 id="mcetoc_1jm10qdpb8" data-section-id="idmqc6" data-start="2058" data-end="2082"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f381.svg" title="Gift"&gt;&amp;#x1f381;&lt;/span&gt;&amp;nbsp;Stickers&amp;nbsp;&lt;/h3&gt;
&lt;p data-start="2084" data-end="2111"&gt;&lt;/p&gt;
&lt;p data-start="2084" data-end="2111"&gt;&lt;img loading="lazy" alt="image" style="max-height:312px;max-width:416px;"  height="312" src="https://community.element14.com/resized-image/__size/832x624/__key/communityserver-discussions-components-files/452/WhatsApp-Image-2026_2D00_04_2D00_12-at-4.30.50-PM.jpeg" width="416" /&gt;&lt;/p&gt;
&lt;p data-start="2113" data-end="2164"&gt;The kit also included some stickers from element14.&lt;/p&gt;
&lt;p data-start="2166" data-end="2183"&gt;One of them says:&lt;/p&gt;
&lt;blockquote data-start="2185" data-end="2215"&gt;
&lt;p data-start="2187" data-end="2215"&gt;&amp;ldquo;&lt;strong&gt;&lt;em&gt;Never enough women in tech&lt;/em&gt;&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-start="2217" data-end="2355"&gt;I really liked this message because even though women are already part of the tech world, they are still underrepresented in many areas.&lt;/p&gt;
&lt;p data-start="2357" data-end="2441"&gt;I believe more balance and representation in technology is important for the future.&lt;/p&gt;
&lt;hr data-start="2443" data-end="2446" /&gt;
&lt;h2 id="mcetoc_1jm10qdpb9" data-section-id="vx5vh2" data-start="2448" data-end="2475"&gt; Main Controller Board&lt;/h2&gt;
&lt;p data-start="2477" data-end="2523"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/WhatsApp-Image-2026_2D00_04_2D00_12-at-4.35.43-PM.jpeg" /&gt;&lt;/p&gt;
&lt;p data-start="2525" data-end="2547"&gt;The main board is the:&lt;/p&gt;
&lt;h3 id="mcetoc_1jm10qdpba" data-section-id="rmtv1r" data-start="2549" data-end="2584"&gt;&lt;span&gt;&lt;strong data-start="2553" data-end="2584"&gt;Analog Devices MAX32630FTHR&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-start="2586" data-end="2622"&gt;This is the &lt;strong data-start="2598" data-end="2621"&gt;brain of the system&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-start="2624" data-end="2630"&gt;It is:&lt;/p&gt;
&lt;ul data-start="2631" data-end="2700"&gt;
&lt;li data-section-id="wjmyir" data-start="2631" data-end="2644"&gt;Low power&lt;/li&gt;
&lt;li data-section-id="13w9juj" data-start="2645" data-end="2661"&gt;Programmable&lt;/li&gt;
&lt;li data-section-id="9zg0zr" data-start="2662" data-end="2700"&gt;Designed for embedded applications&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="2702" data-end="2745"&gt;&amp;nbsp;It will run all the logic for EchoGuard.&lt;/p&gt;
&lt;hr data-start="2747" data-end="2750" /&gt;
&lt;h2 id="mcetoc_1jm10qdpbb" data-section-id="1gdf6c5" data-start="2752" data-end="2784"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f527.svg" title="Wrench"&gt;&amp;#x1f527;&lt;/span&gt;&amp;nbsp;Programming / Helper Board&lt;/h2&gt;
&lt;p data-start="2786" data-end="2823"&gt;&lt;img loading="lazy" alt="image" style="max-height:303px;max-width:404px;"  height="303" src="https://community.element14.com/resized-image/__size/808x606/__key/communityserver-discussions-components-files/452/WhatsApp-Image-2026_2D00_04_2D00_12-at-4.35.49-PM.jpeg" width="404" /&gt;&lt;/p&gt;
&lt;p data-start="2825" data-end="2865"&gt;This small board is used to upload code.&lt;/p&gt;
&lt;p data-start="2867" data-end="2902"&gt;It does NOT run the project itself.&lt;/p&gt;
&lt;p data-start="2904" data-end="2988"&gt;&amp;nbsp;Think of it as a &amp;ldquo;messenger&amp;rdquo; that transfers code from computer to the main board.&lt;/p&gt;
&lt;hr data-start="2990" data-end="2993" /&gt;
&lt;h2 id="mcetoc_1jm10qdpbc" data-section-id="y4uks9" data-start="2995" data-end="3014"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f50c.svg" title="Electric plug"&gt;&amp;#x1f50c;&lt;/span&gt;&amp;nbsp;Adapter Board&lt;/h2&gt;
&lt;p data-start="3016" data-end="3054"&gt;&lt;img loading="lazy" alt="image" style="max-height:310px;max-width:413px;"  height="310" src="https://community.element14.com/resized-image/__size/826x620/__key/communityserver-discussions-components-files/452/WhatsApp-Image-2026_2D00_04_2D00_12-at-4.47.44-PM.jpeg" width="413" /&gt;&lt;/p&gt;
&lt;p data-start="3056" data-end="3068"&gt;This is the:&lt;/p&gt;
&lt;h3 id="mcetoc_1jm10qdpbd" data-section-id="1atfn03" data-start="3070" data-end="3105"&gt;&lt;span&gt;&lt;strong data-start="3074" data-end="3105"&gt;FTHR-PMD-INTZ Adapter Board&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-start="3107" data-end="3139"&gt;It acts like a connector bridge.&lt;/p&gt;
&lt;p data-start="3141" data-end="3244"&gt;&amp;nbsp;It allows the main board to connect with additional sensor modules (like my microphone input later).&lt;/p&gt;
&lt;hr data-start="3246" data-end="3249" /&gt;
&lt;h2 id="mcetoc_1jm10qdpbe" data-section-id="n23oqt" data-start="3251" data-end="3277"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/2699.svg" title="Gear"&gt;&amp;#x2699;&lt;/span&gt;️ Motor Control Module&lt;/h2&gt;
&lt;p data-start="3279" data-end="3315"&gt;&lt;/p&gt;
&lt;p data-start="3279" data-end="3315"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1776005616583v7.png"  /&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1jm10qdpbf" data-section-id="1c4wn8y" data-start="3317" data-end="3364"&gt;&lt;span&gt;&lt;strong data-start="3321" data-end="3364"&gt;Adafruit DC Motor + Stepper FeatherWing&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-start="3366" data-end="3396"&gt;This module allows control of:&lt;/p&gt;
&lt;ul data-start="3397" data-end="3429"&gt;
&lt;li data-section-id="oofv2v" data-start="3397" data-end="3410"&gt;4 DC motors&lt;/li&gt;
&lt;li data-section-id="1b6tuat" data-start="3411" data-end="3429"&gt;2 Stepper motors&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="3431" data-end="3496"&gt;&amp;nbsp;In EchoGuard, it will be used for physical alert actions like:&lt;/p&gt;
&lt;ul data-start="3497" data-end="3545"&gt;
&lt;li data-section-id="1f1zv7c" data-start="3497" data-end="3515"&gt;Alarm movement&lt;/li&gt;
&lt;li data-section-id="sj9c4s" data-start="3516" data-end="3545"&gt;Mechanical warning system&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-start="3547" data-end="3550" /&gt;
&lt;h2 id="mcetoc_1jm10qdpbg" data-section-id="18yozxp" data-start="3552" data-end="3586"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f310.svg" title="Globe with meridians"&gt;&amp;#x1f310;&lt;/span&gt;&amp;nbsp;Internet Connectivity Module&lt;/h2&gt;
&lt;p data-start="3588" data-end="3627"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/WhatsApp-Image-2026_2D00_04_2D00_12-at-4.55.40-PM.jpeg" /&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1jm10qdpbh" data-section-id="ttijgd" data-start="3629" data-end="3666"&gt;&lt;span&gt;&lt;strong data-start="3633" data-end="3666"&gt;Particle Ethernet FeatherWing&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-start="3668" data-end="3722"&gt;This board adds internet connectivity using LAN cable.&lt;/p&gt;
&lt;p data-start="3724" data-end="3750"&gt;&amp;nbsp;It allows EchoGuard to:&lt;/p&gt;
&lt;ul data-start="3751" data-end="3835"&gt;
&lt;li data-section-id="8rfqdl" data-start="3751" data-end="3766"&gt;Send alerts&lt;/li&gt;
&lt;li data-section-id="l8pa6g" data-start="3767" data-end="3806"&gt;Communicate with a system/dashboard&lt;/li&gt;
&lt;li data-section-id="12712kh" data-start="3807" data-end="3835"&gt;Enable remote monitoring&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-start="3837" data-end="3840" /&gt;
&lt;h2 id="mcetoc_1jm10qdpbi" data-section-id="tg8fqx" data-start="3842" data-end="3862"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f4a1.svg" title="Bulb"&gt;&amp;#x1f4a1;&lt;/span&gt;&amp;nbsp;Display Module&lt;/h2&gt;
&lt;h3 id="mcetoc_1jm138uo6p" data-section-id="h5mfw6" data-start="296" data-end="339"&gt;1. IC LED FeatherWing (7&amp;times;15 Display)&lt;/h3&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:251px;max-width:474px;"  height="251" src="https://community.element14.com/resized-image/__size/948x502/__key/communityserver-discussions-components-files/452/WhatsApp-Image-2026_2D00_04_2D00_12-at-5.03.39-PM.jpeg" width="474" /&gt;&lt;/p&gt;
&lt;p data-start="341" data-end="386"&gt;&lt;/p&gt;
&lt;p data-start="388" data-end="438"&gt;This is a &lt;strong data-start="398" data-end="437"&gt;7&amp;times;15 intelligent LED display module&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-start="440" data-end="460"&gt;&amp;nbsp;It is capable of:&lt;/p&gt;
&lt;ul data-start="461" data-end="538"&gt;
&lt;li data-section-id="61gnqn" data-start="461" data-end="480"&gt;Displaying text&lt;/li&gt;
&lt;li data-section-id="w9fq5s" data-start="481" data-end="501"&gt;Showing patterns&lt;/li&gt;
&lt;li data-section-id="7y3cbw" data-start="502" data-end="538"&gt;Creating smoother visual effects&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="540" data-end="564"&gt;&amp;nbsp;This will be used for:&lt;/p&gt;
&lt;ul data-start="565" data-end="676"&gt;
&lt;li data-section-id="3s3uqa" data-start="565" data-end="623"&gt;Detailed messages like &lt;strong data-start="590" data-end="621"&gt;&amp;ldquo;SAFE&amp;rdquo;, &amp;ldquo;ALERT&amp;rdquo;, &amp;ldquo;INTRUDER&amp;rdquo;&lt;/strong&gt;&lt;/li&gt;
&lt;li data-section-id="14u9rgt" data-start="624" data-end="676"&gt;Better readability and clearer status indication&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-start="678" data-end="681" /&gt;
&lt;h3 id="mcetoc_1jm1371nnn" data-section-id="jeoze" data-start="683" data-end="736"&gt;&amp;nbsp;2. Adafruit CharliePlex LED Matrix FeatherWing&lt;/h3&gt;
&lt;p data-start="738" data-end="790"&gt;&lt;img loading="lazy" alt="image" style="max-height:241px;max-width:404px;"  height="241" src="https://community.element14.com/resized-image/__size/808x482/__key/communityserver-discussions-components-files/452/WhatsApp-Image-2026_2D00_04_2D00_12-at-5.01.24-PM.jpeg" width="404" /&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1jm1371nno" data-section-id="y9ublb" data-start="792" data-end="843"&gt;&lt;span&gt;&lt;strong data-start="796" data-end="843"&gt;Adafruit CharliePlex LED Matrix FeatherWing&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-start="845" data-end="886"&gt;This is a &lt;strong data-start="855" data-end="885"&gt;compact LED matrix display&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-start="888" data-end="907"&gt;&amp;nbsp;It is ideal for:&lt;/p&gt;
&lt;ul data-start="908" data-end="981"&gt;
&lt;li data-section-id="a48vi6" data-start="908" data-end="924"&gt;Simple icons&lt;/li&gt;
&lt;li data-section-id="i9diej" data-start="925" data-end="952"&gt;Quick visual indicators&lt;/li&gt;
&lt;li data-section-id="13r81l7" data-start="953" data-end="981"&gt;Low-power display output&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="983" data-end="1019"&gt;&amp;nbsp;In EchoGuard, it will be used for:&lt;/p&gt;
&lt;ul data-start="1020" data-end="1109"&gt;
&lt;li data-section-id="1x2ob4e" data-start="1020" data-end="1067"&gt;Symbol-based alerts (e.g., warning icon&amp;nbsp;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️)&lt;/li&gt;
&lt;li data-section-id="16lprq1" data-start="1068" data-end="1109"&gt;Fast visual feedback during detection&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-start="4025" data-end="4028" /&gt;
&lt;h2 id="mcetoc_1jm10qdpbk" data-section-id="m38y1s" data-start="4030" data-end="4048"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f680.svg" title="Rocket"&gt;&amp;#x1f680;&lt;/span&gt;&amp;nbsp;What&amp;rsquo;s Next?&lt;/h2&gt;
&lt;p data-start="4050" data-end="4076"&gt;In the next steps, I will:&lt;/p&gt;
&lt;ul data-start="4078" data-end="4230"&gt;
&lt;li data-section-id="13osert" data-start="4078" data-end="4120"&gt;Test each hardware module individually&lt;/li&gt;
&lt;li data-section-id="1mu119t" data-start="4121" data-end="4157"&gt;Start reading microphone signals&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-start="4232" data-end="4235" /&gt;
&lt;h2 id="mcetoc_1jm10qdpbl" data-section-id="4kktnr" data-start="4237" data-end="4250"&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f4cc.svg" title="Pushpin"&gt;&amp;#x1f4cc;&lt;/span&gt;&amp;nbsp;Closing&lt;/h2&gt;
&lt;p data-start="4252" data-end="4303"&gt;This is just the beginning of my EchoGuard journey.&lt;/p&gt;
&lt;p data-start="4451" data-end="4482"&gt;Stay tuned for the next update!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Forum#2 - MAX32630FTHR Development Environments - Adaptive Sentinel: Security Intelligence &amp; Surveillance Hub</title><link>https://community.element14.com/thread/56843?ContentTypeID=0</link><pubDate>Fri, 10 Apr 2026 04:46:50 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c23a174a-7f3d-4969-894f-6756da0ced75</guid><dc:creator>skruglewicz</dc:creator><slash:comments>4</slash:comments><comments>https://community.element14.com/thread/56843?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56843/forum-2---max32630fthr-development-environments---adaptive-sentinel-security-intelligence-surveillance-hub/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hey everyone!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;I received the Sponsored Challenger Kit on Wednesday April 9, 2026.&amp;nbsp; I unboxed the kit and took inventory of the contents. Everything was there, including some neat stickers from Element14. Unboxing other evaluation kits, I&amp;rsquo;m refered to some sort of &amp;ldquo;getting started&amp;rdquo; path to become familiar with the device. I did not find one in the MAX32630FTHR package?Since I never experimented with it, I decided to do some research to try and figure out what to do with this thing.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;I noticed some confusing labels on the&lt;/span&gt;&lt;a href="https://www.analog.com/en/products/max32630.html" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt; &lt;b&gt;Analog Devices product page&lt;/b&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;&amp;mdash;specifically that this board is &lt;/span&gt;&lt;b&gt;&amp;quot;Not Recommended for New Designs&amp;quot; (NRND)&lt;/b&gt;&lt;span style="font-weight:400;"&gt;. What I surmise is it just means ADI isn&amp;#39;t pushing it for mass-market commercial products anymore. Turns out, the MAX32630FTHR is an older generation chip. While it&amp;rsquo;s reliable, ADI has moved their focus to newer chips like the MAX32650 and the MAX78000 (AI-focused) series which are supported by the modern MSDK. For us hackers and makers, it&amp;rsquo;s still a powerhouse with a great FeatherWing form factor right.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;OK Fine.. then I stumbled onto the Arm Mbed OS website &lt;/span&gt;&lt;a href="https://os.mbed.com/platforms/MAX32630FTHR/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;span style="font-weight:400;"&gt;MAX32630FTHR | Mbed&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; and I see Mbed is reaching &amp;ldquo;End of Life&amp;rdquo; in July of this year 2026, plastered on this page and all over the website. Apparently, &lt;/span&gt;&lt;b&gt;Mbed OS&lt;/b&gt;&lt;span style="font-weight:400;"&gt; is being phased out in favor of newer IoT frameworks, making it a &amp;quot;legacy&amp;quot; choice for this board.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Ok, now I&amp;rsquo;m beginning to wonder how the heck to program this thing. I hear you can use the Arduino IDE from fellow challenger &lt;/span&gt;&lt;a href="https://community.element14.com/members/alistairuk" data-e14adj="t"&gt;&lt;span style="font-weight:400;"&gt;Alistair&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; (check out his forum post &lt;/span&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56838/programming-the-max32630fthr-with-the-arduino-ide-don-t-forget-to-set" data-e14adj="t"&gt;&lt;span style="font-weight:400;"&gt;Programming the MAX32630FTHR with the Arduino IDE (Don&amp;#39;t Forget to Set) - element14 Community&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;). Then I hear that another challenger &lt;/span&gt;&lt;a href="https://community.element14.com/members/arvindsa" data-e14adj="t"&gt;&lt;span style="font-weight:400;"&gt;arvindsa&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; is going to use &lt;/span&gt;&lt;b&gt;LPSDK (&amp;nbsp;check out&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56840/identity-protocol---part-3---unboxing-and-blinking-with-maxim-lpsdk" data-e14adj="t"&gt;https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56840/identity-protocol---part-3---unboxing-and-blinking-with-maxim-lpsdk&lt;/a&gt;&amp;nbsp; ) .&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;I stopped in my tracks and before jumping on the band wagon and starting installing development environments, I decided to write this blog for this forum post. I&amp;rsquo;m a software Engineer and interested in embedded programming tool chains (there&amp;rsquo;s a lot of them out there). I am now interested in finding out more about these two environments, and I find there is a third option available.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;So here&amp;#39;s a breakdown of how to actually program this thing in 2026.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;Supported Development Environments&lt;/b&gt;&lt;/h3&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Environment&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Pros&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Cons&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Arduino IDE&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Massive library support; easiest for beginners; familiar &amp;quot;Blink&amp;quot; workflow.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Harder to do deep register-level optimization; abstraction hides hardware complexity.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;PlatformIO (VS Code)&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Professional-grade; handles both Arduino and Mbed frameworks; great for version control.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Steeper learning curve than Arduino; requires manual environment switching.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Maxim LPSDK (Eclipse)&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Official C/C++ access is provided at the &amp;quot;bare-metal&amp;quot; level. This includes the original examples and drivers, encompassing all the bare-metal register files, peripheral drivers, and original C examples.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Legacy software; Eclipse can be &amp;quot;clunky&amp;quot;; no longer receiving major updates.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Mbed OS (Legacy)&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Built for ARM; great hardware abstraction for RTOS features.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;End of Life (EOL)&lt;/b&gt;&lt;span style="font-weight:400;"&gt;; online compiler is gone; community support is fading.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;&lt;b&gt;MY Choice for Beginners: Arduino IDE&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;If you want to get a &amp;quot;Blinky&amp;quot; running in under 5 minutes, go with &lt;/span&gt;&lt;b&gt;Arduino&lt;/b&gt;&lt;span style="font-weight:400;"&gt;. Analog Devices maintains an official&lt;/span&gt;&lt;a href="https://github.com/analogdevicesinc/arduino-max326xx" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt; &lt;b&gt;Arduino Core for Maxim&lt;/b&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; git repo for Maxim&amp;#39;s MAX326xx series based Boards.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;Blinky Battle: Comparing the Frameworks&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;To see the differences in how these environments &amp;quot;think,&amp;quot; let&amp;rsquo;s look at how they handle the onboard Green LED (&lt;/span&gt;&lt;b&gt;P2_5&lt;/b&gt;&lt;span style="font-weight:400;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;b&gt;1. The Arduino Way (Procedural)&lt;/b&gt;&lt;/h4&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-weight:400;"&gt;C++&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;code&gt;#include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;void setup() {&lt;br /&gt;&amp;nbsp; pinMode(LED_GREEN, OUTPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;&amp;nbsp; digitalWrite(LED_GREEN, LOW); // Active Low on this board!&lt;br /&gt;&amp;nbsp; delay(500);&lt;br /&gt;&amp;nbsp; digitalWrite(LED_GREEN, HIGH);&lt;br /&gt;&amp;nbsp; delay(500);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Why it&amp;rsquo;s different:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; It uses the standard &lt;/span&gt;&lt;span style="font-weight:400;"&gt;setup/loop&lt;/span&gt;&lt;span style="font-weight:400;"&gt; structure. It&amp;rsquo;s simple, but it hides the fact that you&amp;#39;re interacting with a complex ARM Cortex-M4F.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;b&gt;2. The Mbed Way (Object-Oriented)&lt;/b&gt;&lt;/h4&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-weight:400;"&gt;C++&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;code&gt;#include &amp;quot;mbed.h&amp;quot;&lt;br /&gt;DigitalOut green_led(LED_GREEN);&lt;br /&gt;int main() {&lt;br /&gt;&amp;nbsp; while(1) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; green_led = !green_led; // Toggle logic&lt;br /&gt;&amp;nbsp; &amp;nbsp; thread_sleep_for(500);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;span style="font-weight:400;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Why it&amp;rsquo;s different:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Mbed treats the LED as an &amp;quot;Object&amp;quot; (&lt;/span&gt;&lt;span style="font-weight:400;"&gt;DigitalOut&lt;/span&gt;&lt;span style="font-weight:400;"&gt;). It feels more like modern C++ and is built for multi-threaded applications.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;b&gt;3. The Bare-Metal / LPSDK Way (Register-Level)&lt;/b&gt;&lt;/h4&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-weight:400;"&gt;C++&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;#include &amp;quot;mxc_device.h&amp;quot;&lt;br /&gt;#include &amp;quot;gpio.h&amp;quot;&lt;br /&gt;int main(void) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; const gpio_cfg_t led = { PORT_2, PIN_5, GPIO_FUNC_OUT, GPIO_PAD_NONE };&lt;br /&gt;&amp;nbsp; &amp;nbsp; GPIO_Config(&amp;amp;led);&lt;br /&gt;&amp;nbsp; &amp;nbsp; while (1) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GPIO_OutToggle(&amp;amp;led);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(int i=0; i&amp;lt;1000000; i++) { __NOP(); } // Manual delay&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;ul&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Why it&amp;rsquo;s different:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; This is &amp;quot;the real deal.&amp;quot; You are talking directly to the GPIO registers. It&amp;rsquo;s extremely efficient but requires you to understand the hardware datasheet inside and out.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;I plan to try all Supported Development Environments mentioned above, starting with the&lt;/span&gt;&lt;a href="https://github.com/analogdevicesinc/arduino-max326xx" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt; &lt;b&gt;Arduino IDE&lt;/b&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; to verify my hardware works. Then,to move on to &lt;/span&gt;&lt;b&gt;PlatformIO in VS Code&lt;/b&gt;&lt;span style="font-weight:400;"&gt;. It gives you the best of both worlds: the ease of either using Arduino code or Legacy Mbed code. I might try Maxim LPSDK, since I&amp;#39;m familiar with Eclipse.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;To set up a development environment for the &lt;/span&gt;&lt;b&gt;MAX32630FTHR&lt;/b&gt;&lt;span style="font-weight:400;"&gt; on Windows, you have several options ranging from beginner-friendly to professional-grade toolchains. Since &lt;/span&gt;&lt;b&gt;Mbed OS&lt;/b&gt;&lt;span style="font-weight:400;"&gt; is deprecated, the &lt;/span&gt;&lt;b&gt;Arduino IDE&lt;/b&gt;&lt;span style="font-weight:400;"&gt; or &lt;/span&gt;&lt;b&gt;PlatformIO&lt;/b&gt;&lt;span style="font-weight:400;"&gt; are now the recommended paths.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;Required Hardware&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;For all environments, you must use a &lt;/span&gt;&lt;b&gt;MAX32625PICO&lt;/b&gt;&lt;span style="font-weight:400;"&gt; (DAPLink adapter) and a 10-pin ribbon cable to flash code to the MAX32630FTHR.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;To prepare the boards for programming follow these steps:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Connect the &lt;/span&gt;&lt;b&gt;MAX32625PICO&lt;/b&gt;&lt;span style="font-weight:400;"&gt; to the &lt;/span&gt;&lt;b&gt;MAX32630FTHR &lt;/b&gt;&lt;span style="font-weight:400;"&gt;board with the fine pitch 10 pin ribbon cable.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Apply power to the MAX32630FTHR board through a micro USB connector.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Connect the &lt;/span&gt;&lt;b&gt;MAX32625PICO &lt;/b&gt;&lt;span style="font-weight:400;"&gt;to a computer through a micro USB connector.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-weight:400;"&gt;&lt;img alt="image" style="height:236px;max-height:236px;max-width:404px;"  height="236" src="https://community.element14.com/resized-image/__size/808x472/__key/communityserver-discussions-components-files/452/pastedimage1775861577323v1.png" width="403" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;My host PC is running Windows 11. Once the hardware is connected and the MAX32625PICO is plugged into the computer, the system automatically creates a new COM port and mounts the device as a USB drive.&lt;/p&gt;
&lt;p&gt;As shown in the Device Manager below, the board is recognized as COM15:&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="height:183px;max-height:183px;max-width:246px;"  height="183" src="https://community.element14.com/resized-image/__size/492x366/__key/communityserver-discussions-components-files/452/pastedimage1775875168624v4.png" width="245" /&gt;&lt;/p&gt;
&lt;p&gt;Additionally, the DAPLINK drive appears in the file system. Upon first connection, it contains two default files:&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="height:177px;max-height:177px;max-width:323px;"  height="177" src="https://community.element14.com/resized-image/__size/646x354/__key/communityserver-discussions-components-files/452/pastedimage1775875034482v2.png" width="322" /&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;1. Arduino IDE (Highly Recommended for Beginners)&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;The simplest way to get a &amp;quot;Blinky&amp;quot; running quickly.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Download &amp;amp; Install:&lt;/b&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Download the latest version from the&lt;/span&gt;&lt;a href="https://www.arduino.cc/en/software" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt; &lt;span style="font-weight:400;"&gt;Arduino website&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Run the installer and follow the standard Windows prompts. I have installed version 2.3.8&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Configure:&lt;/b&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Open Arduino IDE and go to &lt;/span&gt;&lt;b&gt;File &amp;gt; Preferences&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Paste this URL into &lt;/span&gt;&lt;b&gt;Additional Boards Manager URLs&lt;/b&gt;&lt;span style="font-weight:400;"&gt;:&amp;nbsp;&lt;/span&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Go to the&amp;nbsp;&lt;span&gt;&amp;nbsp;preferences screen (File, Preferences) add&amp;nbsp;&lt;/span&gt;&lt;em&gt;&lt;a href="https://raw.githubusercontent.com/analogdevicesinc/arduino-max326xx/master/package_maxim_index.json" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://raw.githubusercontent.com/analogdevicesinc/arduino-max326xx/master/package_maxim_index.json&lt;/a&gt;&lt;/em&gt;&lt;span&gt;&amp;nbsp;to the list of &amp;ldquo;Additional Boards Manager URLs&amp;rdquo;.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="height:187px;max-height:187px;max-width:279px;"  height="266" src="https://community.element14.com/resized-image/__size/558x374/__key/communityserver-discussions-components-files/452/pastedimage1775881740963v1.png" width="278" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Go to &lt;/span&gt;&lt;b&gt;Tools &amp;gt; Board &amp;gt; Boards Manager&lt;/b&gt;&lt;span style="font-weight:400;"&gt;, search for &amp;quot;maxim&amp;quot;, and install &lt;/span&gt;&lt;b&gt;Maxim&amp;#39;s 32-bit Microcontroller&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;&lt;img loading="lazy" alt="image" style="height:222px;max-height:222px;max-width:152px;"  height="222" src="https://community.element14.com/resized-image/__size/304x444/__key/communityserver-discussions-components-files/452/pastedimage1775881889665v2.png" width="152" /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Select your board: &lt;/span&gt;&lt;b&gt;Tools &amp;gt; Board &amp;gt; Maxim ARM (32-bit) Boards &amp;gt; MAX32630FTHR&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Select a Port :&amp;nbsp;&lt;b&gt;Tools &amp;gt;Port&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Set the programmer: &lt;/span&gt;&lt;b&gt;Tools &amp;gt; Programmer &amp;gt; DAPLink&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Compile &amp;amp; Run Blinky:&lt;/b&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Open the example: &lt;/span&gt;&lt;b&gt;File &amp;gt; Examples &amp;gt; 01.Basics &amp;gt; Blink&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Connect the board via the MAX32625PICO adapter.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Click the &lt;/span&gt;&lt;b&gt;Upload&lt;/b&gt;&lt;span style="font-weight:400;"&gt; arrow icon.&lt;/span&gt;&lt;span style="font-weight:400;"&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Results:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Here is the IDE after the Upload. Success the LED is blinking using the example code.&lt;strong&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;img loading="lazy" alt="image" style="height:252px;max-height:252px;max-width:354px;"  height="252" src="https://community.element14.com/resized-image/__size/708x504/__key/communityserver-discussions-components-files/452/pastedimage1775883734382v5.png" width="353" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows gotchas&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Since I&amp;#39;m using Windows11, II ran into a few problems that I was able to resolve&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mbed serial driver is required.&amp;nbsp;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;If you are&amp;nbsp;a Windows user and do not already have the mbed serial drivers installed, then you will need to download and install them from&amp;nbsp; &lt;a id="" href="https://os.mbed.com/handbook/Windows-serial-configuration" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://os.mbed.com/handbook/Windows-serial-configuration&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;I need to get this since I&amp;#39;m running Windows 11.&amp;nbsp;&amp;nbsp;But my Chrome browser did not work on the download link, so I needed to use another browser.&lt;/li&gt;
&lt;li&gt;Now that Mbed serial driver is installed , the device manager shows a different COM port from the initial connection of COM15. The port is now COM16 as shown below.&lt;/li&gt;
&lt;li&gt;&lt;img loading="lazy" alt="image" style="height:183px;max-height:183px;max-width:228px;"  height="226" src="https://community.element14.com/resized-image/__size/456x366/__key/communityserver-discussions-components-files/452/pastedimage1775883556771v4.png" width="227" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upload Fails&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;When I clicked the Upload icon, the upload failed.&amp;nbsp; The following error appeared:&lt;/li&gt;
&lt;li&gt;&lt;img loading="lazy" alt="image" style="height:62px;max-height:62px;max-width:326px;"  height="62" src="https://community.element14.com/resized-image/__size/652x124/__key/communityserver-discussions-components-files/452/pastedimage1775883180684v3.png" width="325" /&gt;&lt;/li&gt;
&lt;li&gt;So what is happening? I researched this and found my Arduino IDE for the&amp;nbsp; MAX32630FTHR is trying to use a legacy Windows tool called &lt;strong&gt;wmic&lt;/strong&gt; that Microsoft has recently disabled or removed in Windows 11.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Via Command Line : Open Command Prompt or PowerShell as Administrator and run:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;DISM /Online /Add-Capability /CapabilityName:WMIC~~~~&lt;/span&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;&lt;img loading="lazy" alt="image" style="height:145px;max-height:145px;max-width:398px;"  height="145" src="https://community.element14.com/resized-image/__size/796x290/__key/communityserver-discussions-components-files/452/pastedimage1775885095158v1.png" width="397" /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;After this, restart the Arduino IDE and try your upload again.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ok this is my Arduino setup completed on to the next environment.&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;h2&gt;&lt;span style="font-weight:400;"&gt;Update: APR 15,2026&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;h3&gt;&lt;b style="font-family:inherit;"&gt;2. Mbed - PlatformIO Extensions (VS Code)&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;PlatformIO&lt;/b&gt;&lt;span style="font-weight:400;"&gt; is a professional-grade &lt;/span&gt;&lt;b&gt;VS Code Extension&lt;/b&gt;&lt;span style="font-weight:400;"&gt; that provides a unified development environment capable of handling multiple frameworks&amp;mdash;like Arduino and Mbed&amp;mdash;seamlessly in one place.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Mbed OS (Legacy)&lt;/b&gt;&lt;span style="font-weight:400;"&gt; is still supported via &lt;/span&gt;&lt;b&gt;PlatformIO&lt;/b&gt;&lt;span style="font-weight:400;"&gt; as a local framework, which is a lifesaver now that the online compiler is gone. While it&amp;#39;s officially &lt;/span&gt;&lt;b&gt;End of Life (EOL)&lt;/b&gt;&lt;span style="font-weight:400;"&gt; and not recommended for new projects, you can still compile and run your code locally. Just select &amp;quot;mbed&amp;quot; as your framework when creating a project in PlatformIO to keep working without those discontinued online services.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="list-style-type:none;"&gt;
&lt;ul&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Download &amp;amp; Install:&lt;/b&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Install&lt;/span&gt;&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt; &lt;span style="font-weight:400;"&gt;Visual Studio Code&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Open VS Code, click the &lt;/span&gt;&lt;b&gt;Extensions&lt;/b&gt;&lt;span style="font-weight:400;"&gt; icon, search for &amp;quot;&lt;/span&gt;&lt;b&gt;PlatformIO IDE&lt;/b&gt;&lt;span style="font-weight:400;"&gt;&amp;quot;, and click &lt;/span&gt;&lt;b&gt;Install&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Configure:&lt;/b&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Click the PlatformIO (Ant) icon and select &lt;/span&gt;&lt;b&gt;+ New Project&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Name your project and search for a board: &amp;quot;&lt;/span&gt;&lt;b&gt;Maxim MAX32630FTHR&lt;/b&gt;&lt;span style="font-weight:400;"&gt;&amp;quot;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Mbed&lt;/b&gt;&lt;span style="font-weight:400;"&gt; as the framework.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Compile &amp;amp; Run Blinky:&amp;nbsp;&lt;/b&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Replace the contents of &lt;/span&gt;&lt;span style="font-weight:400;"&gt;src/main.cpp&lt;/span&gt;&lt;span style="font-weight:400;"&gt; with the blinky code.&amp;nbsp;Add this Mbed code from the above section &amp;quot;2. The Mbed Way (Object-Oriented)&amp;quot;.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="padding-left:120px;"&gt;&lt;span style="font-size:inherit;"&gt;&lt;code&gt;&lt;span style="font-weight:400;"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;span style="font-size:inherit;"&gt;&lt;code&gt;&lt;span style="font-weight:400;"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:120px;"&gt;&lt;code&gt;&lt;span style="font-weight:400;"&gt;#include&lt;/span&gt; &lt;span style="font-weight:400;"&gt;&amp;quot;mbed.h&amp;quot;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p style="padding-left:120px;"&gt;&lt;code&gt;&lt;span style="font-weight:400;"&gt;DigitalOut&lt;/span&gt; &lt;span style="font-weight:400;"&gt;green_led&lt;/span&gt;&lt;span style="font-weight:400;"&gt;(&lt;/span&gt;&lt;span style="font-weight:400;"&gt;LED_BLUE&lt;/span&gt;&lt;span style="font-weight:400;"&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p style="padding-left:120px;"&gt;&lt;code&gt;&lt;span style="font-weight:400;"&gt;int&lt;/span&gt; &lt;span style="font-weight:400;"&gt;main&lt;/span&gt;&lt;span style="font-weight:400;"&gt;() {&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p style="padding-left:120px;"&gt;&lt;code&gt;&lt;span style="font-weight:400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-weight:400;"&gt;while&lt;/span&gt;&lt;span style="font-weight:400;"&gt;(&lt;/span&gt;&lt;span style="font-weight:400;"&gt;1&lt;/span&gt;&lt;span style="font-weight:400;"&gt;) &lt;/span&gt;&lt;span style="font-weight:400;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p style="padding-left:120px;"&gt;&lt;code&gt;&lt;span style="font-weight:400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;green_led &lt;/span&gt;&lt;span style="font-weight:400;"&gt;=&lt;/span&gt; &lt;span style="font-weight:400;"&gt;!&lt;/span&gt;&lt;span style="font-weight:400;"&gt;green_led;&lt;/span&gt;&lt;span style="font-weight:400;"&gt; // Toggle logic&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p style="padding-left:120px;"&gt;&lt;code&gt;&lt;span style="font-weight:400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-weight:400;"&gt;thread_sleep_for&lt;/span&gt;&lt;span style="font-weight:400;"&gt;(&lt;/span&gt;&lt;span style="font-weight:400;"&gt;500&lt;/span&gt;&lt;span style="font-weight:400;"&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p style="padding-left:120px;"&gt;&lt;code&gt;&lt;span style="font-weight:400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p style="padding-left:120px;"&gt;&lt;code&gt;&lt;span style="font-weight:400;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p style="padding-left:120px;"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1776291659551v1.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Connect your board via the DAPLink adapter.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Click the &lt;/span&gt;&lt;b&gt;Checkmark&lt;/b&gt;&lt;span style="font-weight:400;"&gt; (Build) and then the &lt;/span&gt;&lt;b&gt;Right Arrow&lt;/b&gt;&lt;span style="font-weight:400;"&gt; (Upload) on the bottom &lt;/span&gt;&lt;b&gt;status bar.&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="padding-left:90px;"&gt;&lt;b&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1776291829865v3.png" /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b style="font-family:inherit;"&gt;Result&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;LED is blinking GREEN now.&lt;/b&gt;&lt;/b&gt;
&lt;p&gt;&lt;b&gt;&lt;img loading="lazy"  src="data:image/png;base64,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" /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;3. Maxim LPSDK (Eclipse-based Legacy)&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight:400;"&gt;Official bare-metal environment specifically for older chips like the MAX32630.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Download &amp;amp; Install:&lt;/b&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Visit the&lt;/span&gt;&lt;a href="https://www.analog.com/en/products/max32630.html" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt; &lt;span style="font-weight:400;"&gt;MAX32630 Product Page&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; and go to &lt;/span&gt;&lt;b&gt;Tools &amp;amp; Simulations&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Download the &lt;/span&gt;&lt;b&gt;LPSDK for Windows&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Critical:&lt;/b&gt;&lt;span style="font-weight:400;"&gt; Install it in a path &lt;/span&gt;&lt;i&gt;&lt;span style="font-weight:400;"&gt;without spaces&lt;/span&gt;&lt;/i&gt;&lt;span style="font-weight:400;"&gt; (e.g., &lt;/span&gt;&lt;span style="font-weight:400;"&gt;C:\MaximSDK\&lt;/span&gt;&lt;span style="font-weight:400;"&gt;) to avoid build tool errors.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Configure:&lt;/b&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Launch the bundled Eclipse IDE.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Import an existing project: &lt;/span&gt;&lt;b&gt;File &amp;gt; Import &amp;gt; General &amp;gt; Existing Projects into Workspace&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Navigate to the &lt;/span&gt;&lt;span style="font-weight:400;"&gt;Examples/MAX32630/Hello_World&lt;/span&gt;&lt;span style="font-weight:400;"&gt; folder within the SDK directory.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;b&gt;Compile &amp;amp; Run Blinky:&lt;/b&gt;
&lt;ol&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;Right-click the project and select &lt;/span&gt;&lt;b&gt;Build Project&lt;/b&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-weight:400;"&gt;&lt;span style="font-weight:400;"&gt;To run, right-click the project and select &lt;/span&gt;&lt;b&gt;Run As &amp;gt; Maxim C/C++ Application&lt;/b&gt;&lt;span style="font-weight:400;"&gt; (ensure your DAPLink is connected).&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks for reading my blog. hope you find it helpful. I&amp;#39;ll be experimenting with these development environments over the next couple of days. Stay tuned and let me know what development Environments you are having success with programming the MAX32630FTHR&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>