<?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>Tue, 26 May 2026 19:35:30 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>RE: NetSentinel – Update 5: Full System Integration, Alert Display &amp; Lessons Le</title><link>https://community.element14.com/thread/235848?ContentTypeID=1</link><pubDate>Tue, 26 May 2026 19:35:30 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:22711f72-3165-4e04-bbf7-9bdd21881765</guid><dc:creator>DAB</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235848?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56991/netsentinel-update-5-full-system-integration-alert-display-lessons-le/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Very good update.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>NetSentinel – Update 5: Full System Integration, Alert Display &amp; Lessons Le</title><link>https://community.element14.com/thread/56991?ContentTypeID=0</link><pubDate>Sun, 24 May 2026 17:49:48 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:5adac766-0451-42c8-9171-04d517ca08ef</guid><dc:creator>GustavoMorales</dc:creator><slash:comments>3</slash:comments><comments>https://community.element14.com/thread/56991?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56991/netsentinel-update-5-full-system-integration-alert-display-lessons-le/rss?ContentTypeId=0</wfw:commentRss><description>&lt;div&gt;
&lt;div&gt;
&lt;p&gt;This final post brings NetSentinel together as a complete system. The individual subsystems &amp;mdash; the network layer, the detection pipeline, the turret mechanism, and the alert display &amp;mdash; were built and tested independently across the previous blogs. Here they converge into a single coordinated response system. This blog covers the MAX Node 1 alert display firmware, the full integrated event flow, and an honest reflection on what worked, what did not, and what NetSentinel demonstrates about building distributed embedded security systems on real network infrastructure.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;MAX Node 1 &amp;mdash; The Operator Alert Panel&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;MAX Node 1 lives on the operator&amp;#39;s desk. Its job is simple and critical: make threats visible without requiring the operator to look at a screen. The CharlieWing 15x7 LED matrix provides that visibility &amp;mdash; a physical, always-on display that reacts to two completely independent threat vectors: physical intrusion from the field and network events from the infrastructure syslog feed.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;The firmware runs an HTTP server on port 8080. When the Raspberry Pi sends an alert POST to /alert, the MAX parses the message, classifies it, and drives the CharlieWing with the appropriate pattern.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;MAX Node 1 firmware &amp;mdash; CharlieWing alert display:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:b128d056-9834-4346-b54c-5a86d04f3a75:type=text&amp;text=%2F%2A%0D%0A%20%2A%20NetSentinel%20%E2%80%94%20MAX%20Node%201%20Desktop%20Alert%20Panel%0D%0A%20%2A%20MAX32630FTHR%20%2B%20Particle%20Ethernet%20FeatherWing%0D%0A%20%2A%20%2B%20CharlieWing%2015x7%20LED%20Matrix%0D%0A%20%2A%0D%0A%20%2A%20Receives%20HTTP%20POST%20alerts%20from%20Raspberry%20Pi%0D%0A%20%2A%20Displays%20alert%20patterns%20on%20CharlieWing%0D%0A%20%2A%2F%0D%0A%0D%0A%23include%20%3CWire.h%3E%0D%0A%23include%20%3CAdafruit_IS31FL3731.h%3E%0D%0A%0D%0A%2F%2F%20%E2%94%80%E2%94%80%E2%94%80%20Configuration%20%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%0D%0A%23define%20HTTP_PORT%20%20%20%20%20%20%208080%0D%0A%23define%20ALERT_MOTION%20%20%20%201%0D%0A%23define%20ALERT_NETWORK%20%20%202%0D%0A%23define%20ALERT_PHOTO%20%20%20%20%203%0D%0A%0D%0A%2F%2F%20%E2%94%80%E2%94%80%E2%94%80%20CharlieWing%20%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%0D%0AAdafruit_CharlieWing%20matrix%20%3D%20Adafruit_CharlieWing%28%29%3B%0D%0A%0D%0A%2F%2F%20%E2%94%80%E2%94%80%E2%94%80%20Alert%20patterns%20%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%0D%0A%0D%0A%2F%2F%20Motion%20detected%20%E2%80%94%20full%20matrix%20pulse%0D%0Avoid%20pattern_motion%28%29%20%7B%0D%0A%20%20%20%20for%20%28int%20cycle%20%3D%200%3B%20cycle%20%3C%203%3B%20cycle%2B%2B%29%20%7B%0D%0A%20%20%20%20%20%20%20%20for%20%28int%20brightness%20%3D%200%3B%20brightness%20%3C%20255%3B%20brightness%20%2B%3D%2015%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28int%20x%20%3D%200%3B%20x%20%3C%2015%3B%20x%2B%2B%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28int%20y%20%3D%200%3B%20y%20%3C%207%3B%20y%2B%2B%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20matrix.drawPixel%28x%2C%20y%2C%20brightness%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20delay%2810%29%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20for%20%28int%20brightness%20%3D%20255%3B%20brightness%20%3E%200%3B%20brightness%20-%3D%2015%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28int%20x%20%3D%200%3B%20x%20%3C%2015%3B%20x%2B%2B%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28int%20y%20%3D%200%3B%20y%20%3C%207%3B%20y%2B%2B%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20matrix.drawPixel%28x%2C%20y%2C%20brightness%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20delay%2810%29%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20matrix.clear%28%29%3B%0D%0A%7D%0D%0A%0D%0A%2F%2F%20Network%20event%20%E2%80%94%20scrolling%20row%20pattern%0D%0Avoid%20pattern_network%28%29%20%7B%0D%0A%20%20%20%20for%20%28int%20pass%20%3D%200%3B%20pass%20%3C%204%3B%20pass%2B%2B%29%20%7B%0D%0A%20%20%20%20%20%20%20%20for%20%28int%20row%20%3D%200%3B%20row%20%3C%207%3B%20row%2B%2B%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20matrix.clear%28%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28int%20x%20%3D%200%3B%20x%20%3C%2015%3B%20x%2B%2B%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20matrix.drawPixel%28x%2C%20row%2C%20180%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20delay%2880%29%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20matrix.clear%28%29%3B%0D%0A%7D%0D%0A%0D%0A%2F%2F%20Photo%20captured%20%E2%80%94%20center%20cross%20pattern%0D%0Avoid%20pattern_photo%28%29%20%7B%0D%0A%20%20%20%20matrix.clear%28%29%3B%0D%0A%20%20%20%20for%20%28int%20x%20%3D%200%3B%20x%20%3C%2015%3B%20x%2B%2B%29%20matrix.drawPixel%28x%2C%203%2C%20200%29%3B%0D%0A%20%20%20%20for%20%28int%20y%20%3D%200%3B%20y%20%3C%207%3B%20y%2B%2B%29%20%20matrix.drawPixel%287%2C%20y%2C%20200%29%3B%0D%0A%20%20%20%20delay%281500%29%3B%0D%0A%20%20%20%20matrix.clear%28%29%3B%0D%0A%7D%0D%0A%0D%0Avoid%20display_alert%28int%20alert_type%29%20%7B%0D%0A%20%20%20%20switch%20%28alert_type%29%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20ALERT_MOTION%3A%20%20pattern_motion%28%29%3B%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20ALERT_NETWORK%3A%20pattern_network%28%29%3B%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20ALERT_PHOTO%3A%20%20%20pattern_photo%28%29%3B%20%20%20break%3B%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0A%0D%0A%2F%2F%20%E2%94%80%E2%94%80%E2%94%80%20HTTP%20message%20parser%20%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%E2%94%80%0D%0Aint%20classify_message%28String%20message%29%20%7B%0D%0A%20%20%20%20message.toLowerCase%28%29%3B%0D%0A%20%20%20%20if%20%28message.indexOf%28%22motion%22%29%20%20%3E%3D%200%29%20return%20ALERT_MOTION%3B%0D%0A%20%20%20%20if%20%28message.indexOf%28%22photo%22%29%20%20%20%3E%3D%200%29%20return%20ALERT_PHOTO%3B%0D%0A%20%20%20%20if%20%28message.indexOf%28%22capture%22%29%20%3E%3D%200%29%20return%20ALERT_PHOTO%3B%0D%0A%20%20%20%20return%20ALERT_NETWORK%3B%20%20%2F%2F%20default%3A%20treat%20as%20network%20event%0D%0A%7D%0D%0A%0D%0Avoid%20setup%28%29%20%7B%0D%0A%20%20%20%20Serial.begin%28115200%29%3B%0D%0A%20%20%20%20delay%281000%29%3B%0D%0A%0D%0A%20%20%20%20Wire.begin%28%29%3B%0D%0A%20%20%20%20if%20%28%21matrix.begin%28%29%29%20%7B%0D%0A%20%20%20%20%20%20%20%20Serial.println%28%22%5BERROR%5D%20CharlieWing%20not%20found%22%29%3B%0D%0A%20%20%20%20%20%20%20%20while%20%281%29%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20matrix.clear%28%29%3B%0D%0A%0D%0A%20%20%20%20Serial.println%28%22%3D%3D%3D%20NetSentinel%20Alert%20Panel%20%3D%3D%3D%22%29%3B%0D%0A%20%20%20%20Serial.println%28%22%5BREADY%5D%20Waiting%20for%20alerts%20from%20RPi...%22%29%3B%0D%0A%0D%0A%20%20%20%20%2F%2F%20Startup%20pattern%20%E2%80%94%20brief%20sweep%20to%20confirm%20display%20is%20live%0D%0A%20%20%20%20pattern_network%28%29%3B%0D%0A%7D%0D%0A%0D%0Avoid%20loop%28%29%20%7B%0D%0A%20%20%20%20%2F%2F%20HTTP%20server%20logic%20handles%20incoming%20POST%20%2Falert%0D%0A%20%20%20%20%2F%2F%20Message%20received%20%E2%86%92%20classify%20%E2%86%92%20display%20pattern%0D%0A%20%20%20%20if%20%28Serial.available%28%29%29%20%7B%0D%0A%20%20%20%20%20%20%20%20String%20msg%20%3D%20Serial.readStringUntil%28%27%5Cn%27%29%3B%0D%0A%20%20%20%20%20%20%20%20msg.trim%28%29%3B%0D%0A%20%20%20%20%20%20%20%20if%20%28msg.length%28%29%20%3E%200%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20Serial.print%28%22%5BALERT%5D%20%22%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20Serial.println%28msg%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20int%20type%20%3D%20classify_message%28msg%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20display_alert%28type%29%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20delay%2810%29%3B%0D%0A%7D]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;Complete Integrated Event Flow&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;With all nodes online the full NetSentinel event flow works as follows.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;A person enters the datacenter. The HC-SR501 PIR output goes HIGH. The MAX32630FTHR on the turret reads the GPIO and simultaneously triggers the ESP32-CAM and sends MOTION_DETECTED to the Raspberry Pi. The ESP32-CAM captures a JPEG and POSTs it to the Pi&amp;#39;s /capture endpoint over WiFi. The Pi receives the motion event, pushes a MOTION DETECTED alert to MAX Node 1, sends the sweep trigger to MAX Node 2, and saves the timestamped photo. MAX Node 1 lights up the full matrix pulse pattern on the operator&amp;#39;s desk. MAX Node 2 executes the 180-degree pan sweep with the NEMA 17.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;Independently and in parallel, the FortiGate 90D, FortiGate 40F, and MikroTik RB3011 are continuously sending syslog to the Raspberry Pi on UDP port 514. When a relevant network event arrives &amp;mdash; a link state change, an authentication failure, an IPS alert &amp;mdash; the Pi parses and forwards it to MAX Node 1. The operator sees the scrolling row pattern, distinct from the motion pulse, and knows the event is network-originated.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;Two threat vectors. One operator panel. One physical response in the field.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The 3D Printed Turret &amp;mdash; Final Assembly&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The physical turret combines all field components into a single deployable unit. The NEMA 17 sits at the base coupled to the T8 lead screw through the red shaft coupler. The MAX32630FTHR stack &amp;mdash; board, Ethernet FeatherWing, DC+Stepper FeatherWing &amp;mdash; sits in the Fusion 360 printed enclosure adjacent to the motor with cables routed to the FeatherWing terminals. The ESP32-CAM in its modified printed case mounts at the top of the lead screw, oriented with the lens facing the sweep arc.&lt;/p&gt;
&lt;p&gt;The rotation is limited by firmware to 180 degrees in each direction to prevent cable wrap on the two power wires running up alongside the screw. In the final demonstration the sweep was performed manually to showcase the concept given a driver failure during integration testing &amp;mdash; the firmware, detection pipeline, and alert system all functioned correctly throughout.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img style="max-height:360px;max-width:640px;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-components-multipleuploadfilemanager/db08024c_2D00_4cfb_2D00_4f99_2D00_9edc_2D00_da1c78c1e724-446629-complete/pastedimage1779546550422v7.png" /&gt;&lt;img style="max-height:360px;max-width:640px;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-components-multipleuploadfilemanager/db08024c_2D00_4cfb_2D00_4f99_2D00_9edc_2D00_da1c78c1e724-446629-complete/pastedimage1779546573461v9.png" /&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;Raspberry Server&lt;br /&gt;&lt;img style="max-height:360px;max-width:640px;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-components-multipleuploadfilemanager/db08024c_2D00_4cfb_2D00_4f99_2D00_9edc_2D00_da1c78c1e724-446629-complete/pastedimage1779546701921v10.png" /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:ad57a98d-d4e0-428b-837e-55a27ba40dde:type=text&amp;text=%28venv%29%20pi%40Element14%3A~%2Fnetsentinel%20%24%20sudo%20venv%2Fbin%2Fpython%20app.py%0D%0A%5Bsudo%5D%20password%20for%20pi%3A%0D%0A%5B09%3A02%3A11%5D%20Syslog%20UDP%20escuchando%20en%20puerto%20514%0D%0A%5B09%3A02%3A11%5D%20Flask%20HTTP%20en%20puerto%205000%0D%0A%20%2A%20Serving%20Flask%20app%20%27app%27%0D%0A%20%2A%20Debug%20mode%3A%20off%0D%0A%5B09%3A02%3A53%5D%20Alerta%20manual%3A%20ALERTA%3A%20login%20fallido%20en%20MikroTik%0D%0A%5B09%3A02%3A54%5D%20Push%20OK%20%E2%86%92%20ALERTA%3A%20login%20fallido%20en%20MikroTik]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[View:~/cfs-file/__key/communityserver-components-multipleuploadfilemanager/db08024c_2D00_4cfb_2D00_4f99_2D00_9edc_2D00_da1c78c1e724-446629-complete/Demo.MOV:480:360]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lessons Learned&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Several things became clear during this build that are worth documenting honestly.&lt;/p&gt;
&lt;p&gt;The stepper motor driver is the most fragile component in the system. The TB6612 on the Adafruit FeatherWing P2927D delivers 1.2A continuous per bridge. The NEMA 17HS19-2004S1 wants 2A per phase. Running the motor at full current during integration testing exceeded the driver&amp;#39;s thermal limits and damaged one of the two H-bridge channels. The lesson: always verify driver current rating against motor requirements before powering up, and add adequate delays between steps to reduce average current draw.&lt;/p&gt;
&lt;p&gt;Library compatibility with non-standard cores requires manual intervention. The Adafruit BusIO library defines BUSIO_USE_FAST_PINIO based on architecture detection macros. The MAX32630FTHR&amp;#39;s ARDUINO_MAXIM identifier was not in BusIO&amp;#39;s exclusion list, causing compilation failures. The fix required patching Adafruit_SPIDevice.h to add ARDUINO_MAXIM to the exclusion condition. This is the kind of issue that consumes hours if you do not know where to look.&lt;/p&gt;
&lt;p&gt;The Arduino IDE upload tool does not handle paths with spaces. The MAXDAP daplink.bat script fails when the sketch path contains spaces &amp;mdash; in this case C:\Users\Gustavo Morales. The workaround is drag-and-drop flashing directly to the DAPLINK USB drive, which works reliably.&lt;/p&gt;
&lt;p&gt;DMZ network architecture adds real complexity but real value. Running the Raspberry Pi in a properly segmented DMZ with firewall policies and OSPF routing is not the easy path for a weekend project. But it produces a system that behaves like real infrastructure, generates real syslog traffic, and demonstrates real security principles. That complexity is the point.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What NetSentinel Demonstrates&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NetSentinel is not a finished product. It is a proof of concept that demonstrates something specific: that a distributed embedded security system can be built on real network infrastructure, with proper network segmentation, using commodity embedded hardware, and produce coordinated physical responses to both network and physical threat events.&lt;/p&gt;
&lt;p&gt;The MAX32630FTHR proved capable as both an alert display controller and a motor control node. The Raspberry Pi as a DMZ-resident syslog aggregator and alert distributor works exactly as designed. The ESP32-CAM as a WiFi-connected evidence capture device integrated cleanly. The FortiGate and MikroTik infrastructure provided real syslog data throughout development.&lt;/p&gt;
&lt;p&gt;The mechanical pan mechanism worked in concept. The T8 lead screw driven by the NEMA 17 successfully rotates the camera platform. Driver thermal limits under continuous operation are a solvable problem with the right driver &amp;mdash; a DRV8825 or TMC2208 rated for 2A continuous would handle the 17HS19-2004S1 without issues.&lt;/p&gt;
&lt;p&gt;Building NetSentinel reconnected a network engineer with the embedded electronics side of the stack &amp;mdash; and demonstrated that the two disciplines, network infrastructure and embedded systems, are more complementary than they are separate.&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;Acknowledgements&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Thank you to element14 and the Smart Security and Surveillance Challenge for providing the hardware kit that made this project possible. The MAX32630FTHR is an underappreciated platform &amp;mdash; powerful, flexible, and worth far more exploration than it typically receives.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>You have too many oustanding abuse reports. Please respond to existing reports in your e-mail before posting.</title><link>https://community.element14.com/thread/56982?ContentTypeID=0</link><pubDate>Sun, 24 May 2026 14:21:02 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:dc0bc34f-e199-4610-b0e8-591aad968692</guid><dc:creator>Alistair</dc:creator><slash:comments>8</slash:comments><comments>https://community.element14.com/thread/56982?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56982/you-have-too-many-oustanding-abuse-reports-please-respond-to-existing-reports-in-your-e-mail-before-posting/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Well this is a fin howdedoo. The site has blocked my account when I was posing my final write up. It kept saying there was an error when I tried to save the draft, and then I was blocked for spam. I have filled in the form to get it unblocked, but that looks like a manual process, so I have created this second account to post the post before the deadline.&lt;/p&gt;
&lt;p&gt;I have removed the list links to my posts and useful links as that is probably what was causing it to be blocked. If we can sort it out then I will add them.&lt;/p&gt;
&lt;p&gt;Is anyone from Element14 in here able to help sort this mess out?&lt;/p&gt;</description></item><item><title>RE: You have too many oustanding abuse reports. Please respond to existing reports in your e-mail before posting.</title><link>https://community.element14.com/thread/235836?ContentTypeID=1</link><pubDate>Tue, 26 May 2026 11:49:53 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a18bcd41-f4b5-4b0e-815b-a20dc361a8d3</guid><dc:creator>Alistair</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235836?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56982/you-have-too-many-oustanding-abuse-reports-please-respond-to-existing-reports-in-your-e-mail-before-posting/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Thank you for that. If you are reading this then I guess it worked. :-)&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NetSentinel – Update 5: Full System Integration, Alert Display &amp; Lessons Le</title><link>https://community.element14.com/thread/235835?ContentTypeID=1</link><pubDate>Tue, 26 May 2026 11:43:35 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:f4036e99-5c72-41c4-8da3-f11d556766b8</guid><dc:creator>cstanton</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235835?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56991/netsentinel-update-5-full-system-integration-alert-display-lessons-le/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;&lt;a href="https://community.element14.com/members/gustavomorales"&gt;GustavoMorales&lt;/a&gt;&amp;nbsp;- looks like&amp;nbsp;your final round up blog is still outstanding! You&amp;#39;ve posted your 5 forum updates though, great work.&lt;/p&gt;
&lt;p&gt;Unfortunately it looks like your&amp;nbsp;images haven&amp;#39;t came through int his post, could you&amp;nbsp;re-upload them? And your video embed is also broken, you&amp;#39;ll need to use the &amp;#39;insert&amp;#39; menu to fix that.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: You have too many oustanding abuse reports. Please respond to existing reports in your e-mail before posting.</title><link>https://community.element14.com/thread/235833?ContentTypeID=1</link><pubDate>Tue, 26 May 2026 11:40:00 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:bc605347-d88c-415c-95d2-caf3969c242b</guid><dc:creator>cstanton</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/235833?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56982/you-have-too-many-oustanding-abuse-reports-please-respond-to-existing-reports-in-your-e-mail-before-posting/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Your posts should now be released, thanks for your patience!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: You have too many oustanding abuse reports. Please respond to existing reports in your e-mail before posting.</title><link>https://community.element14.com/thread/235832?ContentTypeID=1</link><pubDate>Tue, 26 May 2026 11:36:42 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c47f860a-4684-499a-8b32-69275ddeb676</guid><dc:creator>cstanton</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/235832?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56982/you-have-too-many-oustanding-abuse-reports-please-respond-to-existing-reports-in-your-e-mail-before-posting/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi &lt;a href="https://community.element14.com/members/alistairuk2"&gt;Alistair&lt;/a&gt;&amp;nbsp;,&lt;/p&gt;
&lt;p&gt;I can check what&amp;#39;s in the moderation queue,&amp;nbsp;you should have received an e-mail asking you to &amp;#39;appeal&amp;#39; any moderation.&amp;nbsp;Typically people are caught out by &amp;#39;link counts&amp;#39; in content, because it&amp;#39;s one of the fundamental ways we prevent spam on the Community, that does mean that it catches&amp;nbsp;genuine posts out too. I&amp;#39;ll have a look&amp;nbsp;through the queue.&lt;/p&gt;
&lt;p&gt;This&amp;#39;s the kind of thing to post in &lt;a href="https://community.element14.com/members-area/support/"&gt;Feedback and Support&lt;/a&gt;&amp;nbsp;for attention of the moderation team, though we&amp;#39;re typically not&amp;nbsp;available on weekends or UK bank holidays.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: You have too many oustanding abuse reports. Please respond to existing reports in your e-mail before posting.</title><link>https://community.element14.com/thread/235798?ContentTypeID=1</link><pubDate>Sun, 24 May 2026 21:43:02 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:2f7c60ed-1886-49a8-80f4-45bcf99ab029</guid><dc:creator>saramic</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235798?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56982/you-have-too-many-oustanding-abuse-reports-please-respond-to-existing-reports-in-your-e-mail-before-posting/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Yeah ouch - I have been getting a &amp;ldquo;your content cannot be posted, try again later&amp;rdquo; but checking in another tab the post has updated - good to see you got it posted, given how well prepared your finished product was - you needed something to stress you out &lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f61c.svg" title="Stuck out tongue winking eye"&gt;&amp;#x1f61c;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: You have too many oustanding abuse reports. Please respond to existing reports in your e-mail before posting.</title><link>https://community.element14.com/thread/235795?ContentTypeID=1</link><pubDate>Sun, 24 May 2026 18:38:03 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:cd67c0fb-ae48-430e-a65f-794b19619751</guid><dc:creator>arvindsa</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235795?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56982/you-have-too-many-oustanding-abuse-reports-please-respond-to-existing-reports-in-your-e-mail-before-posting/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;False Positive action by the Spam detection, Happened to me too. You should be good to go once they fix it. Hopefully you have appealed it using the link in the email&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: You have too many oustanding abuse reports. Please respond to existing reports in your e-mail before posting.</title><link>https://community.element14.com/thread/235794?ContentTypeID=1</link><pubDate>Sun, 24 May 2026 17:54:25 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c68438fd-4237-468e-b3a9-0988d8621e91</guid><dc:creator>robogary</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235794?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56982/you-have-too-many-oustanding-abuse-reports-please-respond-to-existing-reports-in-your-e-mail-before-posting/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;No sweat. They&amp;#39;ll fix you up Monday.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I got a couple posts held up before, as they contained links that looked bad, but werent.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: You have too many oustanding abuse reports. Please respond to existing reports in your e-mail before posting.</title><link>https://community.element14.com/thread/235793?ContentTypeID=1</link><pubDate>Sun, 24 May 2026 16:18:39 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:80bbe957-aaf8-4064-8ed8-2f34cb23e89f</guid><dc:creator>BigG</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235793?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56982/you-have-too-many-oustanding-abuse-reports-please-respond-to-existing-reports-in-your-e-mail-before-posting/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Sorry to hear. Probably thinks you AI. There&amp;#39;s this bizarre policy where the webmaster&amp;#39;s see AI as a threat.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: You have too many oustanding abuse reports. Please respond to existing reports in your e-mail before posting.</title><link>https://community.element14.com/thread/235792?ContentTypeID=1</link><pubDate>Sun, 24 May 2026 14:50:51 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:8b7a2b22-13f3-4c94-9510-244295c1fa3f</guid><dc:creator>Alistair</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/235792?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56982/you-have-too-many-oustanding-abuse-reports-please-respond-to-existing-reports-in-your-e-mail-before-posting/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;So, I decided to try something and&amp;nbsp;the good news is that I have managed to get a project listed under my normal account, albeit with an entire section removed. After all this work I would hate to feel I was not eligible for a technical reason outside my control. The bad news is that I managed to do this with a blocked account using noting more than the site&amp;#39;s menu options. I will obviously not be making this public, but if someone from the team would like to reach out for a&amp;nbsp;chat I am open to that.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NetSentinel – Blog 5: Full System Integration, Alert Display &amp; Lessons Le</title><link>https://community.element14.com/thread/235834?ContentTypeID=1</link><pubDate>Sun, 24 May 2026 12:47:11 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a9fcad06-3a29-497b-8ed4-59a4457ac840</guid><dc:creator>arvindsa</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235834?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56991/netsentinel-update-5-full-system-integration-alert-display-lessons-le/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hey, There should be 5 Forum post and one Project blog (6 Articles in together)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Sentinel Box - Part V - Concept vs Perfect Build</title><link>https://community.element14.com/thread/235789?ContentTypeID=1</link><pubDate>Sat, 23 May 2026 19:12:56 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:88238a96-271f-4e2c-a9bf-d3068532ecf1</guid><dc:creator>DAB</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235789?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56979/sentinel-box---part-v---concept-vs-perfect-build/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Nice update.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Sentinel Box - Part V - Concept vs Perfect Build</title><link>https://community.element14.com/thread/56979?ContentTypeID=0</link><pubDate>Sat, 23 May 2026 09:55:53 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:ad3077d4-e0e7-4806-bac0-f6e90581549b</guid><dc:creator>saramic</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56979?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56979/sentinel-box---part-v---concept-vs-perfect-build/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;The competition ends tomorrow and I have fallen in a heap a week ago. I need to re-group on what I can achieve with my abilities, and be content with that. It will not be the perfect build I was hoping for, it may only partly touch on the concept I am aiming for, but such is life.&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;strong&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;part I&lt;/code&gt;&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and coding with LPSDK and accessing a fingerprint scanner in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;part II&lt;/code&gt;&lt;/strong&gt;, and mechanical stepper motors and vault lock mechanisms in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;part III&lt;/code&gt;&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and Bluetooth and BTStack in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;part IV&lt;/code&gt;&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/56869/sentinel-box---part-i---the-plan" data-e14adj="t"&gt;Sentinel Box - Part I - the plan&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/56894/sentinel-box---part-ii---back-to-c" data-e14adj="t"&gt;Sentinel Box - Part II - back to C&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/56937/sentinel-box---part-iii---stepper-motor-and-vault-lock-mechanism" data-e14adj="t"&gt;Sentinel Box - Part III - Stepper Motor and Vault lock mechanism&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/56942/sentinel-box---part-iv---bluetooth-and-btstack" data-e14adj="t"&gt;Sentinel Box - Part IV - Bluetooth and BTStack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="perfect-build"&gt;Perfect Build&lt;/h2&gt;
&lt;p&gt;Looking back honestly, I have learnt an enormous amount across this challenge. I attempted a fully hermetic&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Rust&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;build, maybe next time. I did, with the help of the amazing Element 14 community, get to successfully drive a stepper motor, fingerprint scanner and connected&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Bluetooth&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;all for the first time. My final piece was a vault mechanism that look great in initial previews and I was genuinely excited about completing.&lt;/p&gt;
&lt;p&gt;The perspex work is where the gap between concept and reality opened up. Precision mechanical assembly&amp;nbsp;requires&amp;nbsp;tolerance, and I underestimated it badly. Only today I had been watching Clickspring&amp;rsquo;s extraordinary series on building an&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=dRXI9KLImC4&amp;amp;list=PLZioPDnFPNsHnyxfygxA0to4RXv4_jDU2" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Antikythera mechanism (YouTube)&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and there is something humbling about watching someone fit-and-file a part to within a tenth of a millimetre with hand tools. My lock mechanism needed that same care. It did not get it. I cut fast, missed a few steps and thought it better try when I had the right tools and patience to actually get it right and build a mechanism that was &amp;ldquo;square&amp;rdquo;, worked and worthy of display.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img 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/20260523_5F00_vault_5F00_and_5F00_door_5F00_mechanism_5F00_in_5F00_build.jpg" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;The final week did not help. A hectic schedule, a weekend away from home and tools. Even though I was excited about the mechanical build, the perspex was not as forgiving as re-burning a new build onto the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX32630FTHR&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;What I&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;em&gt;did&lt;/em&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;get started on is expanding the Bluetooth communications layer with the browser. As the theoretical setup would need stepper motor setting, reading a number of finger prints and setting up a consensus framework for who can co-operatively open the lock box, doing this via a web site seemed the way to go. The foundation is super sound:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;React 19&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for a&amp;nbsp;modern frontend&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lit 3&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;hybrid with the React to allow for a custom&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;web component&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;code class="language-plaintext highlighter-rouge"&gt;&amp;lt;sentinel-ble-manager&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;shadcn + Radix UI + Tailwind CSS&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for styling&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vite 8&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;as the build&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The part I am most pleased with is that the browser and the firmware speak exactly the same binary protocol. The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MAX32630FTHR&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;stores its config in a 100-byte block in INFO flash, and the web console encodes and decodes the identical layout &amp;mdash; offsets and all &amp;mdash; using&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;DataView&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;Uint8Array&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:aabc4b0b-4017-46bc-82aa-8a639fbf4d25:type=javascript&amp;text=view.setUint16%280x00%2C%20CONFIG_MAGIC%2C%20true%29%20%20%20%2F%2F%20magic%20%200x5B5A%20%28%22SB%22%20LE%29%0Aview.setUint16%280x02%2C%20cfg.vaultSteps%2C%20true%29%20%2F%2F%20vault_steps%0Abuf%5B0x04%5D%20%3D%20enrolledCount%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20fp_count%0Abuf%5B0x05%5D%20%3D%20cfg.unlockPolicy%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20unlock_policy%0Abuf%5B0x06%5D%20%3D%20cfg.relockMinutes%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20relock_minutes%0A%2F%2F%20fp_name%5B10%5D%3A%208%20bytes%20each%20starting%20at%200x08%0A%2F%2F%20fp_role%5B10%5D%3A%201%20byte%20each%20starting%20at%200x58%0Aview.setUint16%28CRC_OFFSET%2C%20crc%2C%20true%29%20%20%20%20%20%20%2F%2F%20CRC-16%2FCCITT%20over%20bytes%200x00%E2%80%930x61%0A]&lt;/p&gt;
&lt;p&gt;&lt;span&gt;To make sure nothing gets corrupted in transit the browser runs the same&amp;nbsp;&lt;/span&gt;&lt;strong&gt;CRC-16/CCITT&lt;/strong&gt;&lt;span&gt;&amp;nbsp;the firmware uses, so a tampered or truncated blob is caught at both ends:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:2a8a423d-2118-407b-b438-8367d07ae850:type=javascript&amp;text=export%20function%20crc16%28data%3A%20Uint8Array%29%3A%20number%20%7B%0A%20%20let%20crc%20%3D%200xffff%0A%20%20for%20%28const%20byte%20of%20data%29%20%7B%0A%20%20%20%20crc%20%5E%3D%20byte%20%3C%3C%208%0A%20%20%20%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%208%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20crc%20%3D%20crc%20%26%200x8000%20%3F%20%28%28crc%20%3C%3C%201%29%20%5E%200x1021%29%20%26%200xffff%20%3A%20%28crc%20%3C%3C%201%29%20%26%200xffff%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20return%20crc%0A%7D]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It is not the kind of JavaScript you write every day, but it is satisfying when the numbers match on both sides of the BLE link.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img 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/20260523_5F00_Red_5F00_Green_5F00_Blue_5F00_via_5F00_bluetooth.gif" width="720" alt=" " /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;So the build is not what I imagined. The vault door is not ready, the full orchestration of fingerprint plus Bluetooth plus stepper motor is het to run end-to-end. But the pieces exist. The concept holds. I know now exactly which joints need filing to tolerance and which parts of the stack are solid. That is not failure, that is a prototype.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="next"&gt;Next&lt;/h2&gt;
&lt;p&gt;Well it&amp;rsquo;s crunch time, next step the full write up at&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/b/projects/posts/sentinel-box---consensus-based-lock-box" data-e14adj="t"&gt;Sentinel box: consensus based lock box&lt;/a&gt;.&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;</description></item><item><title>Integrating with Alexa using Virtual Smart Home (Don't Forger to Set)</title><link>https://community.element14.com/thread/56980?ContentTypeID=0</link><pubDate>Sat, 23 May 2026 15:15:56 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:be59f965-1626-4109-8509-816d3dd3d4d4</guid><dc:creator>Alistair</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/56980?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56980/integrating-with-alexa-using-virtual-smart-home-don-t-forger-to-set/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Just when you thought I was finished, here I am again. I was not planning to create a &amp;ldquo;how to&amp;rdquo; for this and only include it in the setup notes, but it has ballooned a little and is useful beyond the project so I thought I would post it here instead.&lt;/p&gt;
&lt;p&gt;As part of my build I need to activate a 3rd party alarm system. For me personally I could use an unofficial API, but that can break overnight and is only of use to someone with the same system as me. Not to mention that when I upgrade to a better system I will need to rewrite that part of the project. With that in mind I decided to take the unusual step of using Amazon&amp;rsquo;s Alexa. At first it may seem odd, but let me explain.&lt;/p&gt;
&lt;p&gt;There are many connected alarm systems, some with official APIs that allow integration with other systems (like what I am producing here), many more with unofficial APIs that are for internal use but someone has backwards engineered them, and some with no API at all. All the APIs are different and a separate integration would need to be created for each. However many systems have a form of Alexa integration that allows them to be armed using voice. This also allows Alexa routines (a routine being basic &amp;ldquo;if this happens then do that&amp;rdquo; feature within the Alexa ecosystem) to do the same when a button is pressed. All we need to do is to simulate a button being pressed and then we can arm the alarm automatically using their official integration from our code.&lt;/p&gt;
&lt;p&gt;While we could hack a hardware smart button such as an Echo button or Alexa compatible door bell, it is neater to create a virtual button and trigger it across the network. A few services already exist to do this and my preferred option is the URL Routine Trigger skill from Virtual Mart Home.&lt;/p&gt;
&lt;p&gt;You will need an Amazon account and the Alexa app installed to set up and configure things, but you do not need any Alexa hardware and you don&amp;rsquo;t need to pay any subscription.&lt;/p&gt;
&lt;p&gt;So once we have an Amazon account with the Alexa app installed, and you have linked your alarm system to it (normally through an option in your alarm&amp;rsquo;s app), we can create that virtual button and modify an Alexa routine to activate the alarm.&lt;/p&gt;
&lt;p&gt;To start go to &lt;a href="https://www.virtualsmarthome.xyz/url_routine_trigger/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;www.virtualsmarthome.xyz/.../&lt;/a&gt;, click the &amp;ldquo;Login with Amazon&amp;rdquo; button, and follow the instructions. You will then see a screen like this&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/virtualsmarthome.png" /&gt;&lt;/p&gt;
&lt;p&gt;Now (1) enter a name for the virtual button (this can be anything) and (2) click Save. Once created click the down arrow (3) to show the URL information we need, and (4) copy the URL we need to trigger the button and keep it safe. It does not matter which of the URLs you copy as we will not be reading the returned data. Finally consider donating to this service (5) as it exists because of the generosity of the author. If you find yourself using it then do consider making a donation to support it.&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/Alexa-Routine.png" /&gt;&lt;/p&gt;
&lt;p&gt;After all that, open the Alexa App, click the &amp;ldquo;hamburger&amp;rdquo; button at the bottom, click Routines, and you should find a sample routine that has been created mirroring the name of the virtual button name you entered before. You can then add actions to do by clicking the &amp;ldquo;+&amp;rdquo; next to the very descriptive &amp;ldquo;Add another action&amp;rdquo; text. Arming an alarm is normally under Smart Home and Security Panels, but that depends on your exact alarm setup.&lt;/p&gt;
&lt;p&gt;Finally the URL that was noted down needs adding to the configuration at the top of the source code.&lt;/p&gt;
&lt;p&gt;That is it. I hope to have the final writeup posed later today.&lt;/p&gt;</description></item><item><title>NetSentinel – Update 2: 3D Printed Turret Enclosure &amp; Physical Design</title><link>https://community.element14.com/thread/56967?ContentTypeID=0</link><pubDate>Tue, 19 May 2026 21:53:39 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:996e23b6-9f38-4342-92c1-e6710bbbe696</guid><dc:creator>GustavoMorales</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/56967?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56967/netsentinel-update-2-3d-printed-turret-enclosure-physical-design/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/NetSentinel.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;A distributed embedded security system needs a physical presence that matches its purpose. For NetSentinel&amp;#39;s field node &amp;mdash; the turret that houses the MAX32630FTHR, the ESP32-CAM, and the NEMA 17 stepper motor &amp;mdash; a custom enclosure was designed in Fusion 360 and printed on a Voxelab Aquila X2. This blog covers the design process, the mechanical concept, and the physical assembly.&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;Two Nodes, Two Physical Forms&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The two MAX nodes have completely different physical forms reflecting their different roles.&lt;/p&gt;
&lt;p&gt;MAX Node 1 lives on the operator&amp;#39;s desk. It is built on the Particle Ethernet FeatherWing ProtoBoard with the MAX32630FTHR in slot 2 and the CharlieWing 15x7 LED matrix in slot 3. Its enclosure is compact and oriented so the LED matrix is always visible to the operator. This node does not move &amp;mdash; its job is to be seen.&lt;/p&gt;
&lt;p&gt;MAX Node 2 is the field turret. It needed a mechanical design that could rotate a camera through a surveillance arc, house a full Feather stack, and do it all with components already on hand. The solution came from an unexpected place: a lead screw from a 3D printer Z axis.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1779206005219v3.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;The Lead Screw Mechanism&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The pan mechanism is built around a T8 lead screw &amp;mdash; the same Tr8x8 trapezoidal ACME thread used in the Z axis of FDM printers. The NEMA 17 stepper motor (17HS19-2004S1, 200 steps/rev, 2A/phase) drives the lead screw directly through the motor&amp;#39;s shaft coupler. Rather than using the lead screw for linear motion as it would in a printer, here it acts as a rotating vertical axis &amp;mdash; the NEMA spins the screw and the ESP32-CAM mounted at the top of the screw rotates with it, sweeping the surveillance arc.&lt;/p&gt;
&lt;p&gt;The base connection is minimal by design: the lead screw couples directly to the NEMA 17 shaft through the red coupler that came with the screw, with no additional printed parts at the base. This kept the mechanical design simple and the motor easily replaceable.&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;ESP32-CAM Mount &amp;mdash; Fusion 360 Modification&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The ESP32-CAM mount at the top of the lead screw was designed in Fusion 360. Rather than modeling from scratch, an existing ESP32-CAM case was downloaded as a base and modified directly. The key addition was a square block on the lateral face of the case with a hole sized for the T8 screw &amp;mdash; 8.5mm diameter with a T8 ACME thread profile. This block positions the camera at the correct height on the screw and keeps it oriented with the lens facing outward through the sweep arc.&lt;/p&gt;
&lt;p&gt;The T8 thread in the printed block acts as the mounting point &amp;mdash; the case screws onto the lead screw at the desired height and stays fixed there while the whole assembly rotates with the NEMA.&lt;/p&gt;
&lt;p&gt;Cable management for the ESP32-CAM was straightforward: since the ESP32-CAM communicates over WiFi, only two wires run up the screw &amp;mdash; power and ground. These were left with enough slack to allow the full 180-degree sweep without binding, and the firmware limits rotation to prevent a full 360-degree turn that would tangle the cables.&lt;br /&gt;&lt;br /&gt;&lt;img style="max-height:360px;max-width:640px;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1779205827876v2.png" /&gt;&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;Print Settings &amp;mdash; Voxelab Aquila X2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;All printed parts were produced on the Voxelab Aquila X2 in PLA. Layer height was 0.2mm for the main enclosure bodies and 0.15mm for the ESP32-CAM mount where the thread accuracy matters most. Infill was 20% gyroid. Print temperature was 200&amp;deg;C with the bed at 60&amp;deg;C. No supports were needed on any of the pieces.&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;Assembly Sequence&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Assembly starts at the NEMA 17. The motor mounts to the base surface and the T8 lead screw couples to the shaft through the red coupler. The MAX32630FTHR stack &amp;mdash; board, Ethernet FeatherWing, and DC+Stepper FeatherWing &amp;mdash; sits in its enclosure adjacent to the motor with cables routed to the FeatherWing terminals. The ESP32-CAM case threads onto the top of the lead screw at the desired height. Power cables run up alongside the screw with a small spiral of slack to accommodate the sweep rotation.&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;What Comes Next&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With the physical build complete, the next blog goes into the network layer &amp;mdash; the dual-firewall DMZ topology, OSPF routing across FortiGate 90D, FortiGate 40F, and MikroTik RB3011, syslog forwarding to the Raspberry Pi, and the firewall policies that define what each segment can reach.&lt;/p&gt;</description></item><item><title>RE: NetSentinel – Update 2: 3D Printed Turret Enclosure &amp; Physical Design</title><link>https://community.element14.com/thread/235752?ContentTypeID=1</link><pubDate>Fri, 22 May 2026 14:54:46 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26725703-8055-4aa8-b36c-194f65d1ce24</guid><dc:creator>arvindsa</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235752?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56967/netsentinel-update-2-3d-printed-turret-enclosure-physical-design/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Notebook LLM does create some super infographics. Would you mind sharing how you made it?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NetSentinel – Update 1: Project Overview &amp; System Design</title><link>https://community.element14.com/thread/235751?ContentTypeID=1</link><pubDate>Fri, 22 May 2026 14:53:50 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b41efa4c-4582-4c16-8e9b-af89d95bec4c</guid><dc:creator>arvindsa</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235751?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56966/netsentinel-update-1-project-overview-system-design/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I&amp;#39;d make a small change to your text: , with real architecture and &lt;strong&gt;correct implementation&lt;/strong&gt;, they become nodes&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>NetSentinel – Update 1: Project Overview &amp; System Design</title><link>https://community.element14.com/thread/56966?ContentTypeID=0</link><pubDate>Tue, 19 May 2026 21:18:03 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:7244ceff-6d32-4ab3-90ed-cca577560a28</guid><dc:creator>GustavoMorales</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/56966?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56966/netsentinel-update-1-project-overview-system-design/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;br /&gt;Security monitoring has two dimensions that are rarely combined in a single embedded system: physical intrusion detection and network event awareness. NetSentinel was built for the element14 Smart Security and Surveillance Challenge to address both simultaneously &amp;mdash; a distributed embedded SOC (Security Operations Center) node that detects movement in a datacenter environment, captures photographic evidence, performs an automated pan sweep, and delivers real-time visual alerts to an operator at their desk, all while also displaying network-level alerts from syslog sources across the infrastructure.&lt;/p&gt;
&lt;p&gt;This is not a single-device security camera. It is a multi-node distributed system running on enterprise-grade network infrastructure.&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;The Two Nodes &amp;mdash; Two Roles&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NetSentinel is built around two MAX32630FTHR Feather boards, each with a completely different role and physical location.&lt;/p&gt;
&lt;p&gt;MAX Node 1 lives on the operator&amp;#39;s desk. It drives a CharlieWing LED matrix that serves as a physical alert panel. When something happens &amp;mdash; either a motion detection event in the field or a network change event captured via syslog from FortiGates, MikroTik routers, or switches &amp;mdash; the operator sees an immediate visual alert on the display. No screen required, no application to check. The alert comes to the operator physically.&lt;/p&gt;
&lt;p&gt;MAX Node 2 lives in the field, mounted on a turret enclosure printed on a Voxelab Aquila X2. When the Raspberry Pi sends it a trigger over UDP, it drives a NEMA 17 stepper motor through an Adafruit DC+Stepper FeatherWing (P2927D) to perform a 180-degree surveillance sweep of the area where motion was detected. An ESP32-CAM module captures photographic evidence in parallel the moment the PIR fires, before the sweep even begins.&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;The Brain &amp;mdash; Raspberry Pi in the DMZ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Raspberry Pi is the central processing node. It sits in the DMZ of the network topology and has two inputs and two outputs.&lt;/p&gt;
&lt;p&gt;On the input side it receives syslog from network infrastructure &amp;mdash; FortiGate firewalls, MikroTik routers, and switches &amp;mdash; and it receives motion detection events from the ESP32-CAM and PIR sensor in the field. On the output side it forwards processed alerts to MAX Node 1 for visual display, and it sends UDP trigger packets to MAX Node 2 to initiate the pan sweep.&lt;/p&gt;
&lt;p&gt;The full event flow looks like this:&lt;/p&gt;
&lt;div class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"&gt;
&lt;div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"&gt;
&lt;div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"&gt;
&lt;div class="relative"&gt;
&lt;div class="transition-all opacity-100 scale-100"&gt;&lt;/div&gt;
&lt;div class="absolute inset-0 flex items-center justify-center"&gt;
&lt;div class="transition-all opacity-0 scale-50"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="overflow-x-auto"&gt;
&lt;pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5"&gt;&lt;code&gt;&lt;span&gt;FIELD (Datacenter / Turret):
&lt;/span&gt;&lt;span&gt;[PIR sensor] ──► motion detected
&lt;/span&gt;&lt;span&gt;[ESP32-CAM] ──► photo captured ──► RPi
&lt;/span&gt;&lt;span&gt;[MAX Node 2] ◄── UDP trigger ◄── RPi ──► NEMA 17 sweep
&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;BRAIN (DMZ):
&lt;/span&gt;&lt;span&gt;[Raspberry Pi 192.168.2.200]
&lt;/span&gt;&lt;span&gt;    ◄── syslog from FortiGate 90D, FortiGate 40F,
&lt;/span&gt;&lt;span&gt;        MikroTik RB3011, switches
&lt;/span&gt;&lt;span&gt;    ◄── motion events from ESP32-CAM / PIR
&lt;/span&gt;&lt;span&gt;    ──► alert packets to MAX Node 1
&lt;/span&gt;&lt;span&gt;    ──► sweep trigger to MAX Node 2
&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;OPERATOR DESK:
&lt;/span&gt;&lt;span&gt;[MAX Node 1 + CharlieWing]
&lt;/span&gt;&lt;span&gt;    ◄── physical intrusion alerts
&lt;/span&gt;&lt;span&gt;    ◄── network change alerts (syslog)
&lt;/span&gt;&lt;span&gt;    ──► visual LED display to operator&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;Network Architecture&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NetSentinel was deployed on a dual-firewall DMZ architecture originally designed for an MSc Cybersecurity lab at Universidad Galileo. This gave the project a realistic enterprise network context rather than a flat home lab.&lt;/p&gt;
&lt;p&gt;The topology uses a FortiGate 90D as the exterior firewall, a MikroTik RB3011 as the central routing node, and a FortiGate 40F as the interior firewall protecting the LAN where the MAX nodes reside.&lt;/p&gt;
&lt;div class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"&gt;
&lt;div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"&gt;
&lt;div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"&gt;
&lt;div class="relative"&gt;
&lt;div class="transition-all opacity-100 scale-100"&gt;&lt;/div&gt;
&lt;div class="absolute inset-0 flex items-center justify-center"&gt;
&lt;div class="transition-all opacity-0 scale-50"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="overflow-x-auto"&gt;
&lt;pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5"&gt;&lt;code&gt;&lt;span&gt;Internet
&lt;/span&gt;&lt;span&gt;    |
&lt;/span&gt;&lt;span&gt;[FortiGate 90D] &amp;mdash; 192.168.10.1/30
&lt;/span&gt;&lt;span&gt;    |
&lt;/span&gt;&lt;span&gt;[MikroTik RB3011]
&lt;/span&gt;&lt;span&gt;    |&amp;mdash; ether4: 192.168.2.1/24  &amp;larr; DMZ
&lt;/span&gt;&lt;span&gt;    |       |
&lt;/span&gt;&lt;span&gt;    |   [Raspberry Pi &amp;mdash; NetSentinel Core]
&lt;/span&gt;&lt;span&gt;    |   192.168.2.200
&lt;/span&gt;&lt;span&gt;    |
&lt;/span&gt;&lt;span&gt;    |&amp;mdash; ether2: 192.168.20.1/30
&lt;/span&gt;&lt;span&gt;    |
&lt;/span&gt;&lt;span&gt;[FortiGate 40F]
&lt;/span&gt;&lt;span&gt;    |&amp;mdash; LAN: 192.168.4.0/24
&lt;/span&gt;&lt;span&gt;            |
&lt;/span&gt;&lt;span&gt;        [MAX Node 1 &amp;mdash; Operator Alert Panel]
&lt;/span&gt;&lt;span&gt;        [MAX Node 2 &amp;mdash; Field Turret Controller]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;img style="max-height:360px;max-width:640px;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/pastedimage1779202919273v2.png" /&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;OSPF Area 0 runs across all three routing devices, providing full dynamic reachability without static routes. The Raspberry Pi in the DMZ can receive syslog and events from all segments but cannot initiate connections toward the LAN &amp;mdash; a clean security boundary that reflects real DMZ design principles.&lt;/p&gt;
&lt;p&gt;The FortiGates and MikroTik forward syslog to the Raspberry Pi at 192.168.2.200. The Pi processes those logs and determines which events warrant a visual alert on the operator panel.&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;Hardware Summary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The complete bill of materials for NetSentinel includes the Raspberry Pi 4 as the central node, two MAX32630FTHR boards for the alert panel and turret controller, a Particle Ethernet FeatherWing for wired connectivity on each MAX board, an Adafruit CharlieWing LED matrix for the operator display, an Adafruit DC+Stepper FeatherWing P2927D for stepper motor control, a NEMA 17 stepper motor (17HS19-2004S1, 200 steps/rev, 2A/phase) for the pan mechanism, an ESP32-CAM for photographic evidence capture, a PIR sensor as the primary motion trigger, and a Voxelab Aquila X2 3D printer for the custom turret enclosure.&lt;/p&gt;
&lt;hr class="border-border-200 border-t-0.5 my-3 mx-1.5" /&gt;
&lt;p&gt;&lt;strong&gt;What Comes Next&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The following blogs will cover each subsystem in detail: the 3D printed turret enclosure, the network configuration and firewall policies, the PIR and ESP32-CAM detection pipeline, the stepper motor pan mechanism, and the full system integration.&lt;/p&gt;
&lt;p&gt;NetSentinel demonstrates that embedded security systems do not have to be isolated gadgets &amp;mdash; with the right network architecture they become nodes in a real security infrastructure.&lt;/p&gt;</description></item><item><title>It all works!</title><link>https://community.element14.com/thread/56974?ContentTypeID=0</link><pubDate>Thu, 21 May 2026 21:37:29 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:2904b7a2-dadb-4b47-8584-a959deeb8465</guid><dc:creator>Alistair</dc:creator><slash:comments>4</slash:comments><comments>https://community.element14.com/thread/56974?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56974/it-all-works/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Good news. Yesterday I managed to get everything working and a case tidied. Today I did some more serious testing. In short the hard work is done and I juts need to get&amp;nbsp;the final writeup done. Yay!&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:360px;max-width:640px;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/452/IMG_5F00_20260521_5F00_143650813.jpg" /&gt;Thank you to all who have helped or participated. It has ben great working with you.&amp;nbsp;I hope you are as happy with your build as I am. As&amp;nbsp;mine turned out mostly software based around stock hardware I suspect it is not going to be seen as a winner, but it has been enjoyable to create.&amp;nbsp;I have a device that I will actually be using in real life, and perhaps some of my work will carry forward in other people&amp;#39;s projects and give more life to a useful little dev board. I will add that I have really enjoyed the challenge of&amp;nbsp;solving all these problems. Some of the issues were so abstract I am surprised I figured it out, but that made it more rewarding&amp;nbsp;when I found solution.&lt;/p&gt;
&lt;p&gt;If anyone has any questions that I might be able to help with the feel free to reach out.&lt;/p&gt;</description></item><item><title>RE: It all works!</title><link>https://community.element14.com/thread/235747?ContentTypeID=1</link><pubDate>Fri, 22 May 2026 09:55:38 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1d50b89e-06fc-46f1-9cd0-91f15a8bba06</guid><dc:creator>Alistair</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235747?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56974/it-all-works/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;If you are looking for a printer just to print on then&amp;nbsp;I&amp;nbsp;can recommend&amp;nbsp;&lt;span&gt;Bambu&amp;nbsp;printers. They are good value for money. You can get lower cost for the same build volume elsewhere, but the reliability and quality is so much higher. We have a couple of P1S printer at our local hack space&amp;nbsp;where I printed this. They frequently have sales, and at the last Black Friday&amp;nbsp;sale they had there smaller A1 Mini for &amp;pound;140.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The one hesitation I have if they&amp;nbsp;keep doing things to upset the 3D printing community. They have always walked back a little to find a compromise, but one day that might not happen. For example you can still use a toolchain that is not theirs, but you can not use it alongside there mobile app, and there was a firmware release where this was not possible at all until the stepped it back. They are also strongly discouraging the use of third party hardware addons.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: It all works!</title><link>https://community.element14.com/thread/235746?ContentTypeID=1</link><pubDate>Fri, 22 May 2026 06:26:44 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:48730540-d414-4913-9e02-a863b48019d8</guid><dc:creator>arvindsa</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235746?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56974/it-all-works/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Bambu Labs are like apple, expensive, but consistent in output, expensive to repair and has a locked in ecosystem with minimum ability to customize . But really good if you dont want the headache of fine tuning settings for reliability and quality.&lt;/p&gt;
&lt;p&gt;I own a ender 3 s1 pro. Using it for 4 years for now.&amp;nbsp; At my geographical location, its easier to get spares as they are quite standard. Go for creality or Prusa if not for Bambu.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: It all works!</title><link>https://community.element14.com/thread/235745?ContentTypeID=1</link><pubDate>Fri, 22 May 2026 06:05:40 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:59c5e4cc-242e-44d8-80b6-ce066bfb8218</guid><dc:creator>saramic</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/235745?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56974/it-all-works/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;well done - looks great - 3D printing and PCB making are 2 things I am yet to bite off - and not this time round - but my own hardware construction techniques failed me this time round so I will no doubt have to look at 3D printing soon - what gear do you recommend? Bambu Lab? any other options worth considering.&lt;/p&gt;
&lt;p&gt;Well done on finishing! (I know I will be stressing to get only some part of my stuff working)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: It all works!</title><link>https://community.element14.com/thread/235744?ContentTypeID=1</link><pubDate>Fri, 22 May 2026 03:31:50 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:34ea5547-37b6-462d-a5ef-15d6fea12a1e</guid><dc:creator>arvindsa</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/235744?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/smart-security-and-surveillance/f/forum/56974/it-all-works/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;awesome, Winning is never the intention for me, making something i can use is. (Especially when i am making a custom PCB). though the project I am making for this Security challenge is going to be one of the few exceptions.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>