<?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/in-reach-ultrasonic-sensor-sensing-challenge/f/forum</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><lastBuildDate>Fri, 21 Nov 2025 06:27:10 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum" /><item><title>Couldn't continue my project due to health issues</title><link>https://community.element14.com/thread/56454?ContentTypeID=0</link><pubDate>Wed, 19 Nov 2025 11:12:30 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:d6d09dde-4187-4542-938d-36ef54f898cb</guid><dc:creator>sunnyiut</dc:creator><slash:comments>4</slash:comments><comments>https://community.element14.com/thread/56454?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56454/couldn-t-continue-my-project-due-to-health-issues/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello everyone,&lt;/p&gt;
&lt;p&gt;I am sorry to inform you all that I have been suffering from sciatica pain for the last one month. It was due to a disc bulge at lower back. I was in complete bed rest for three weeks, after that I started physiotherapy in limited manner. Unfortunately I developed dropped foot condition which is a neurological deficit and surgery is the only option. I was supposed to have the surgery after 21st November. However, observing my improvement (a very little though) doctor suggested to wait for a couple of weeks to decide whether I need to go for surgery or not. Therefore, I was totally out of the design challenge.&lt;/p&gt;
&lt;p&gt;I am sorry. However, I wish you would consider that and I would love to carry on my project again once I get better. Though I couldn&amp;#39;t follow others&amp;#39; projects, I would like to congratulate everyone for participating here. Please pray for me.&lt;/p&gt;</description></item><item><title>RE: Couldn't continue my project due to health issues</title><link>https://community.element14.com/thread/232008?ContentTypeID=1</link><pubDate>Fri, 21 Nov 2025 06:27:10 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:38bf02f4-c069-4c59-b184-90f15a4a98f4</guid><dc:creator>sunnyiut</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/232008?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56454/couldn-t-continue-my-project-due-to-health-issues/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I really appreciate you taking the time to check in and share your support. It genuinely means a lot, especially while I&amp;rsquo;m trying to recover.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Couldn't continue my project due to health issues</title><link>https://community.element14.com/thread/232007?ContentTypeID=1</link><pubDate>Fri, 21 Nov 2025 06:22:03 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:10c4b954-2d1e-4e76-848c-f85a3da26405</guid><dc:creator>sunnyiut</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/232007?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56454/couldn-t-continue-my-project-due-to-health-issues/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Thanks a lot for your understanding and support. It gives me motivation and comfort.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Couldn't continue my project due to health issues</title><link>https://community.element14.com/thread/231962?ContentTypeID=1</link><pubDate>Wed, 19 Nov 2025 18:40:19 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:3d124d9a-f412-4fc0-a37a-b2b97acb8d4e</guid><dc:creator>beacon_dave</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/231962?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56454/couldn-t-continue-my-project-due-to-health-issues/rss?ContentTypeId=0</wfw:commentRss><description>[quote userid="14329" url="~/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56454/couldn-t-continue-my-project-due-to-health-issues"]observing my improvement (a very little though)[/quote]
&lt;p&gt;I&amp;#39;d say that any improvement after one month is a very good sign. It took me around&amp;nbsp;ten months before I noticed any signs of improvement.&lt;/p&gt;
&lt;p&gt;Hope your improvement continues.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Couldn't continue my project due to health issues</title><link>https://community.element14.com/thread/231945?ContentTypeID=1</link><pubDate>Wed, 19 Nov 2025 11:19:25 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:2c3630ec-e6fa-4f38-a659-199b4d96aa1a</guid><dc:creator>cstanton</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/231945?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56454/couldn-t-continue-my-project-due-to-health-issues/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span&gt;Thanks for letting us know, and please don&amp;rsquo;t worry about stepping away from the challenge. Your health comes first. It&amp;rsquo;s good to hear there&amp;rsquo;s been some improvement, even if it&amp;rsquo;s small, and I hope the next couple of weeks bring more progress.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Take all the time you need to recover. When you&amp;rsquo;re ready to return to your project, the community will be here. Wishing you strength and a smooth recovery.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Setting up the KR260: Ubuntu 22.04, Pynq and Vitis AI Runtime v3.5</title><link>https://community.element14.com/thread/56445?ContentTypeID=0</link><pubDate>Tue, 18 Nov 2025 15:46:24 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:dad62c33-f639-4813-9e3c-cc82d0864470</guid><dc:creator>veluv01</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/56445?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56445/setting-up-the-kr260-ubuntu-22-04-pynq-and-vitis-ai-runtime-v3-5/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/20251115_5F00_185132.jpg" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;KR260 was chosen for this project due to its FPGA-accelerated AI processing and built-in ROS2 support. This allows it to handle ML inference, camera feeds, and ultrasonic sensor data in real time. Its hardware acceleration and flexible I/O make it perfect for applications that use multiple sensors and need quick responses.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id="mcetoc_1ja94puaq7"&gt;Ubuntu 22.04 on KR260&lt;/h3&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/Screenshot-from-2025_2D00_11_2D00_14-15_2D00_58_2D00_01.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;For this project I am using the Ubuntu 22.04 instead of the 24.04 version which is available as the latest version as I faced some issues due to the Python version mismatch during the startup when I set the default interpreter to python3.10 as the VART 3.5 requires it.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763409816876v11.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;For the setup I referred the guide &amp;quot;&lt;a href="https://xilinx.github.io/kria-apps-docs/kr260/linux_boot/ubuntu_24_04/build/html/docs/intro.html" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Booting Kria Starter Kit Linux on KR260&lt;/a&gt;&amp;quot;, which has all the information regarding the basic setup of the Ubuntu 22.04 for KR260.It&amp;#39;s also better to choose an SD with a storage capacity of 64 GB max for flashing the Ubuntu 22.04.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/Screenshot-from-2025_2D00_11_2D00_14-15_2D00_57_2D00_54.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;I used the Raspberry Pi Imager to flash the Ubuntu 22.04 Image onto the SD card.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763409438561v6.png" alt=" " /&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1ja94t88b8"&gt;Initialization&lt;/h3&gt;
&lt;p&gt;Before deploying AI workloads or running PYNQ overlays on the KR260, the board must be configured using AMD&amp;rsquo;s official initialization tools.This process prepares the operating system, sets up FPGA-related services, and installs board support packages to ensure that the runtime and PYNQ framework operate correctly.&lt;/p&gt;
&lt;p&gt;The first step is to install the xlnx-config tool, which AMD provides through the Snap store. This utility automates KRIA-specific system configuration tasks, such as enabling FPGA management services, installing boot-time utilities, and preparing system directories used by XRT and runtime components. Installing the tool with the --classic option allows it to access the system-level paths needed for hardware configuration. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:98476a7f-873e-4092-a72b-a048de6971ce:type=powershell&amp;text=sudo%20snap%20install%20xlnx-config%20--classic%20--channel%3D2.x]&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763410069314v13.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;After installation, the board is&amp;nbsp;initialized using the sysinit routine.&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:b2493ba1-3aee-4a1e-867d-7db052c1275b:type=powershell&amp;text=xlnx-config.sysinit]&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763410083342v14.png" alt=" " /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id="mcetoc_1ja95g5rc9"&gt;Setting Up PYNQ for Kria&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;[embed:6b06e1a7-0ec1-4e43-9421-8caaf95469b6:54010b4f-e6be-440d-8e8e-1af91d8e5ceb:message=PYNQ%28Python%20Productivity%20for%20Zynq%29%20is%20an%20open-source%20framework%20from%20AMD%2FXilinx%20that%20makes%20it%20easier%20to%20work%20with%20Xilinx%27s%20reconfigurable%20hardware%2C%20like%20the%20FPGA%20fabric%20on%20the%20Kria%20KR260.%20&amp;type=information]&lt;/p&gt;
&lt;p&gt;To enable a Python-based workflow on the KR260, AMD provides the Kria-PYNQ framework. This repository includes board overlays, configuration scripts, Python drivers, and prevalidated examples.Cloning the repository ensures that the latest PYNQ board files and acceleration libraries are available locally for the setup.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:5f6b8b25-c874-4d3f-9d96-42552783edd0:type=powershell&amp;text=git%20clone%20https%3A%2F%2Fgithub.com%2FXilinx%2FKria-PYNQ.git]&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763409749658v10.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;The final step is to run the installation script, specifying the target board. The install.sh script configures Jupyter, installs required Python packages, deploys PYNQ overlays, and sets up runtime services. Using the &amp;quot;-b KR260&amp;quot; flag ensures that the installation process applies the correct board-specific settings, including kernel modules and device-tree overlays.&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:446dd4d7-dbc4-4cad-a22e-419bd217a77e:type=powershell&amp;text=sudo%20bash%20install.sh%20-b%20KR260]&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763409997247v12.png" alt=" " /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id="mcetoc_1ja95m0qva"&gt;Setting up the&amp;nbsp;Vitis AI 3.5 Runtime&lt;/h3&gt;
&lt;p&gt;Deploying AI workloads on the AMD/Xilinx KR260 requires the Vitis AI Runtime (VART). This runtime serves as the main execution engine for running quantized deep-learning models on the KR260&amp;rsquo;s DPU accelerator. The VART stack includes libraries for tensor processing, model graph handling, logging, and device abstraction. All of these need to be installed before running any inference workloads.&lt;/p&gt;
&lt;p&gt;The Vitis AI runtime for KR260 is offered as a compressed ZIP file from AMD&amp;rsquo;s public download server. This package contains all the necessary libraries, device-specific binaries, and support tools.&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:7b8ee950-dffa-42c6-bf25-8e290b4a14d0:type=powershell&amp;text=wget%20-O%20vai3.5_kr260.zip%20%22https%3A%2F%2Fwww.xilinx.com%2Fbin%2Fpublic%2FopenDownload%3Ffilename%3Dvai3.5_kr260.zip%22]&lt;/p&gt;
&lt;p&gt;Once downloaded, the compressed archive must be extracted.&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:0f8f5b84-6b08-4141-8939-93661385f65d:type=powershell&amp;text=unzip%20vai3.5_kr260.zip]&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763409530752v7.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;The runtime_deb directory holds Vitis AI&amp;#39;s core runtime .deb files. These include important components like libunilog, libxir, libtarget-factory, libvart, and libvitis-ai-library. Together, they make up the VART execution layer. AMD provides a script called setup.sh in this directory to install these packages in the right order and ensure that earlier versions are upgraded properly.&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:f9234a32-1c22-4533-825a-af8b43aa37f6:type=powershell&amp;text=pushd%20vai3.5_kr260%2Ftarget%2Fruntime_deb%2F%20%20%0Abash%20setup.sh%20%20]&lt;/p&gt;
&lt;p&gt;This script automatically installs all the needed dependencies and configures the system for Vitis AI inference.&lt;/p&gt;
&lt;p&gt;The KR260 Ubuntu image might lack certain low-level shared libraries needed by the Vitis AI runtime. AMD provides these in a compressed file named lack_lib.tar.gz. Extracting and copying them into /usr/lib fixes any missing dependency problems that could cause VART applications to fail at runtime due to unresolved symbols&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:f54cbf7c-7f24-4df5-bd20-d620c24e2e70:type=powershell&amp;text=cd%20..%20%20%0Atar%20-xzf%20lack_lib.tar.gz%20%20%0Asudo%20cp%20-r%20lack_lib%2F%2A%20%2Fusr%2Flib]&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763409592107v8.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;After installing the runtime and any missing libraries, it&amp;rsquo;s helpful to return to the original working directory using the popd command. This step navigates back to the main vai3.5_kr260 folder, preparing for the installation of utilities like xbutil2.&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:15986115-8a35-4e7d-a793-5f83022cd214:type=text&amp;text=popd]&lt;/p&gt;
&lt;p&gt;The KR260 needs a functioning xbutil2 utility for system inspection, FPGA health checks, and DPU diagnostics. This tool checks if the accelerator is properly initialized and if the Vitis AI runtime environment is ready for use. The utility is located in the xbutil_tool directory and must be copied to the correct system binary location (/usr/bin/unwrapped/) for the Ubuntu to recognize it.&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:f58631e7-936c-4499-897d-78bc3a918495:type=powershell&amp;text=sudo%20cp%20.%2Fxbutil_tool%2Fxbutil2%20%2Fusr%2Fbin%2Funwrapped%2F]&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763410157359v15.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;After installation, users can verify system health using&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:897a3dde-267e-48cf-8c34-2fd4b923b2ab:type=powershell&amp;text=sudo%20xbutil2%20examine]&lt;/p&gt;</description></item><item><title>Final Hardware Setup</title><link>https://community.element14.com/thread/56444?ContentTypeID=0</link><pubDate>Tue, 18 Nov 2025 15:42:02 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1d1b1fb0-a8e0-437f-ac93-ffde3f386be1</guid><dc:creator>veluv01</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/56444?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56444/final-hardware-setup/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;In this post let&amp;#39;s explore the final hardware setup of the project.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id="mcetoc_1ja9t8fvv10"&gt;Required Hardware&lt;/h3&gt;
&lt;table style="margin-left:auto;margin-right:auto;" height="117"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TDK USSM Demo Kit&lt;/td&gt;
&lt;td&gt;Ultrasonic sensing module for precise distance measurement and object proximity detection.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KR260 Robotics Starter Kit&lt;/td&gt;
&lt;td&gt;Primary computing platform featuring AMD Xilinx Kria K26 SoM for real time ML inference, sensor data processing, and ROS2 middleware integration.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wireless USB Adapter&lt;/td&gt;
&lt;td&gt;Enables WiFi connectivity for remote monitoring, data transmission, and network based control.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB Camera Module&lt;/td&gt;
&lt;td&gt;Captures real-time video for vision processing, object detection, and environmental perception.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mounting Spacers&lt;/td&gt;
&lt;td&gt;Hardware fasteners for secure component installation and proper PCB elevation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adjustable Tripod Stand&lt;/td&gt;
&lt;td&gt;Provides stable support with adjustable height and positioning for optimal sensor placement.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Acrylic Mounting Sheets&lt;/td&gt;
&lt;td&gt;Rigid, transparent platform for organized hardware assembly and improved cable management.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3 id="mcetoc_1ja9t1u5tv"&gt;Block Diagram&lt;/h3&gt;
&lt;p&gt;Here&amp;#39;s the block diagram showing how the hardware is connected to the KR260&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/444/pastedimage1763416526639v21.png" alt=" " /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id="mcetoc_1ja9tpae311"&gt;Setting up...&lt;/h3&gt;
&lt;p&gt;The setup starts with preparing the acrylic sheets, cutting them to the required size for the tripod mounting and drilling the mounting holes to mount the hardware.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:196px;max-width:349px;" height="196" src="https://community.element14.com/resized-image/__size/698x392/__key/communityserver-discussions-components-files/444/20251116_5F00_100742.jpg" width="349" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;The main support structure has a two-layer design with upper and lower platforms. An additional medium-sized sheet is used for mounting the camera and TDK USSM modules. A smaller sheet is specifically reserved for the TDK Demo Kit.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/20251116_5F00_120543_2800_1_2900_.jpg" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Assembly begins with securely attaching the bottom acrylic layer to the tripod stand. This creates a stable foundation for the entire system.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763418034784v26.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Once the base is properly positioned and leveled, the KR260 Robotics Starter Kit is installed on this bottom layer with the help of plastic spacers. These spacers serve two purposes: they provide electrical isolation for the board and ensure there is enough space for ventilation, which helps with thermal management.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/20251117_5F00_104412_2800_1_2900_.jpg" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;With the controller in place, the next step is to create the upper structure. Metal spacers establish standoffs between the bottom and top layers, ensuring both strong structural support and effective heat dissipation. The TDK Demo Kit is securely positioned on this top acrylic platform.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763418283973v28.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;The final phase of setup focuses on installing the sensor module. The USB camera is attached to its designated mounting sheet using a magnetic mount that allows for quick adjustments and repositioning. The TDK USSM modules are installed next to the camera on the same sheet.This complete camera + USSM sensor unit is then secured to the main structure using metal angle brackets. These brackets allow for tilting and adjusting the sensor orientation to achieve the best field of view and detection range.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s the final setup after assembly....&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763417973475v25.png" alt=" " /&gt;&lt;/p&gt;</description></item><item><title>Early Flood Warning and Monitoring System #5 Testing the Flood Warning System by prototype assembly</title><link>https://community.element14.com/thread/56433?ContentTypeID=0</link><pubDate>Sun, 16 Nov 2025 19:11:31 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:be033a4b-bf3b-4ef8-a7f0-f21705db2663</guid><dc:creator>sandeepdwivedi17</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56433?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56433/early-flood-warning-and-monitoring-system-5-testing-the-flood-warning-system-by-prototype-assembly/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;Testing the Flood Warning System by prototype assembly&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, this is it. The moment of truth.&lt;br /&gt; After weeks of code, cables, and caffeine, it was time to see if my little flood warning system could actually &lt;em&gt;handle the real world.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Spoiler: it didn&amp;rsquo;t catch fire. So, that&amp;rsquo;s already a win.&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/444/IMG_5F00_20251116_5F00_081254814.jpg" /&gt;&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/444/IMG_5F00_20251116_5F00_082234728_5F00_HDR.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Setting the Scene&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It was a Sunny morning &amp;mdash; the perfect &amp;ldquo;let&amp;rsquo;s see what the water does&amp;rdquo; day. as this is winter time so not much changesin water level of river so decide to check it in a bucket filled with water. hwere i can rapidaly increase or decrease water level.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;it is working good.&lt;br /&gt;Google sheet Data LLog&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/444/pastedimage1763319985765v2.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;email alert screen shot&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/444/WhatsApp-Image-2025_2D00_11_2D00_17-at-12.35.12-AM.jpeg" /&gt;&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/444/WhatsApp-Image-2025_2D00_11_2D00_17-at-12.35.04-AM.jpeg" /&gt;.&lt;/p&gt;
&lt;p&gt;For Now System is working good.&lt;/p&gt;
&lt;p&gt;[View:/cfs-file/__key/communityserver-discussions-components-files/444/WhatsApp-Video-2025_2D00_11_2D00_17-at-12.40.31-AM.mp4:640:360]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>RE: Early Flood Warning and Monitoring System #5 Testing the Flood Warning System by prototype assembly</title><link>https://community.element14.com/thread/231864?ContentTypeID=1</link><pubDate>Sun, 16 Nov 2025 19:42:06 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:bda6d8b0-e04f-4e21-ae61-62ae0def58e4</guid><dc:creator>beacon_dave</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/231864?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56433/early-flood-warning-and-monitoring-system-5-testing-the-flood-warning-system-by-prototype-assembly/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;The real world is where it tends to get interesting as you have the local weather and the local wildlife to contend with. You may have debris in the water that interferes with the sensing or rubbish carried by the wind that snags around your sensor housing.&amp;nbsp;Wildlife&amp;nbsp;tends to take advantage of equipment housings for their own purposes.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Early Flood Warning and Monitoring System #4 - Wiring the Brains: Hooking Up the TDK Ultrasonic Sensors to the MKR 1010</title><link>https://community.element14.com/thread/56432?ContentTypeID=0</link><pubDate>Sun, 16 Nov 2025 18:47:41 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9044206f-6089-492d-bd7c-a05c164ac035</guid><dc:creator>sandeepdwivedi17</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/56432?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56432/early-flood-warning-and-monitoring-system-4---wiring-the-brains-hooking-up-the-tdk-ultrasonic-sensors-to-the-mkr-1010/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;So the fun part begins &amp;mdash; &lt;strong&gt;wires, boards, and the faint smell of solder&lt;/strong&gt;.&lt;br /&gt; This is where the project goes from &amp;ldquo;cool idea&amp;rdquo; to &amp;ldquo;actual blinking lights.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Here in this blog we will discuss the wiring of all components and the Code inside the Arduino Board.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Circuit Arrangement:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;img style="max-height:360px;max-width:640px;" alt="Final Circuit" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/Final-Circuit.png" /&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Required Hardware:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TDK USSM Distance measurement sendor&lt;/strong&gt; &amp;mdash; the stars of the show.They send ultrasonic pings and measure how long it takes for echoes to come back.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arduino MKR WiFi 1010&lt;/strong&gt; &amp;mdash; the brain that reads data, processes it, and sends it to the online google sheet for collection anf furture analysis as well as initiate warning email when danger mark is near.&lt;/li&gt;
&lt;li&gt;BS170 MOSFET , 15 k Ohm Resistance , used for logic level converter to safely operate our arduino&lt;/li&gt;
&lt;li&gt;LM2596S DC-DC Buck Converter Power Supply to poweup the sensor with 12 v&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A bunch of colorful jumper wires&lt;/strong&gt; &amp;mdash; because what&amp;rsquo;s a DIY project without a rainbow of cables?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763317552086v1.jpeg" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763317569883v2.jpeg" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1763317578824v3.jpeg" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Open Arduino IDE and Upload following code into it&lt;br /&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:13f2fe1d-207b-494f-9d21-20b3e1313b31:type=c_cpp&amp;text=%2F%2F%20TDK-MKR-Logger%20-%20MKR%20WiFi%201010%20sketch%20%28simulation%20mode%29%20-%20API%20key%20%2B%20server-config%20reflect%0A%2F%2F%20Paste%20into%20Arduino%20IDE%20and%20upload%20to%20MKR%20WiFi%201010%0A%2F%2F%20Requires%3A%20WiFiNINA%2C%20ArduinoJson%20%28v6.x%29%0A%0A%2F%2F%20------------------------%20user%20config%20%28replace%20placeholders%29%20------------------------%0A%0A%0A%2F%2F%20set%20this%20to%20the%20API_SECRET%20%2F%20key%20you%20put%20in%20ConfigDetails%20%28column%20Value%20for%20key%20API_SECRET%29%0Aconst%20char%2A%20API_KEY%20%3D%20%22jlkajlkj%22%3B%20%2F%2F%20%3C---%20replace%20to%20match%20your%20sheet%27s%20API_SECRET%0A%0Aconst%20char%2A%20SENSOR_NAME%20%3D%20%22MKR_UltraSim_01%22%3B%20%2F%2F%20change%20if%20needed%0Aconst%20unsigned%20long%20POST_TIMEOUT_MS%20%3D%2030UL%20%2A%201000UL%3B%20%20%20%20%20%2F%2F%20wait%20up%20to%2030s%20for%20server%20response%0A%2F%2F%20------------------------------------------------------------------------------------%0A%0A%23include%20%3CWiFiNINA.h%3E%0A%23include%20%3CArduinoJson.h%3E%0A%23include%20%22arduino_secrets.h%22%20%2F%2F%20must%20contain%20SECRET_SSID%20and%20SECRET_PASS%0A%23include%20%3CTDK_USSM.h%3E%0A%0A%2F%2F--%20Instanciate%20Single%20Sensor%0ATDK_USSM%20TdkUssm%282%29%3B%20%2F%2FInitialize%20Sensor%20Pins%20%28IoPin%29%0A%0Aunsigned%20long%20POST_INTERVAL_MS%20%3D%2010000%3B%20%2F%2F%20default%20if%20server%20doesn%27t%20override%0Afloat%20THRESHOLD_VALUE%20%3D%2015.0%3B%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20default%20if%20server%20doesn%27t%20override%0A%0Aunsigned%20long%20lastPost%20%3D%200%3B%0A%0Avoid%20setup%28%29%20%7B%0A%20%20Serial.begin%28115200%29%3B%0A%20%20while%20%28%21Serial%20%26%26%20millis%28%29%20%3C%204000%29%20%3B%20%2F%2F%20wait%20for%20Serial%20%28short%29%0A%20%20Serial.println%28%29%3B%0A%20%20Serial.println%28%22TDK-MKR-Logger%20%28with%20API%20key%29%20starting...%22%29%3B%0A%0A%20%20randomSeed%28analogRead%28A0%29%29%3B%20%2F%2F%20seed%20random%20for%20simulation%0A%0A%20%20connectWiFi%28%29%3B%0A%0A%20%20%2F%2F%20Optional%3A%20if%20you%20set%20GAS_CONFIG_URL%20and%20want%20to%20fetch%20config%20on%20boot%2C%20uncomment%3A%0A%20%20%2F%2F%20if%20%28strlen%28GAS_CONFIG_URL%29%20%3E%200%29%20tryFetchConfig%28%29%3B%0A%0A%20%20lastPost%20%3D%20millis%28%29%20-%201000%3B%0A%7D%0A%0Avoid%20loop%28%29%20%7B%0A%20%20unsigned%20long%20now%20%3D%20millis%28%29%3B%0A%0A%20%20%2F%2F%20Only%20try%20posting%20on%20interval%0A%20%20if%20%28now%20-%20lastPost%20%3E%3D%20POST_INTERVAL_MS%29%20%7B%0A%20%20%20%20lastPost%20%3D%20now%3B%0A%0A%20%20%20%20int%20value%20%3D%20readDistanceSim%28%29%3B%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20you%20changed%20to%20int%0A%20%20%20%20bool%20alertNeeded%20%3D%20%28value%20%3C%20THRESHOLD_VALUE%29%3B%0A%0A%20%20%20%20%2F%2F%20Build%20JSON%20payload%0A%20%20%20%20StaticJsonDocument%3C256%3E%20doc%3B%0A%20%20%20%20doc%5B%22sensor_name%22%5D%20%3D%20SENSOR_NAME%3B%0A%20%20%20%20doc%5B%22value%22%5D%20%3D%20value%3B%0A%20%20%20%20doc%5B%22alert_requested%22%5D%20%3D%20alertNeeded%3B%0A%20%20%20%20doc%5B%22device%22%5D%20%3D%20%22MKR1010%22%3B%0A%20%20%20%20doc%5B%22uptime_ms%22%5D%20%3D%20now%3B%0A%20%20%20%20doc%5B%22api_key%22%5D%20%3D%20API_KEY%3B%0A%0A%20%20%20%20String%20payload%3B%0A%20%20%20%20serializeJson%28doc%2C%20payload%29%3B%0A%0A%20%20%20%20Serial.print%28%22Posting%20payload%3A%20%22%29%3B%0A%20%20%20%20Serial.println%28payload%29%3B%0A%0A%20%20%20%20String%20serverResp%3B%0A%20%20%20%20const%20int%20MAX_POST_ATTEMPTS%20%3D%203%3B%0A%20%20%20%20bool%20postOk%20%3D%20false%3B%0A%20%20%20%20int%20attempt%20%3D%200%3B%0A%20%20%20%20unsigned%20long%20backoff%20%3D%20500%3B%20%2F%2F%20ms%20-%20initial%20backoff%0A%0A%20%20%20%20while%20%28attempt%20%3C%20MAX_POST_ATTEMPTS%20%26%26%20%21postOk%29%20%7B%0A%20%20%20%20%20%20attempt%2B%2B%3B%0A%20%20%20%20%20%20Serial.print%28%22POST%20attempt%20%22%29%3B%0A%20%20%20%20%20%20Serial.println%28attempt%29%3B%0A%20%20%20%20%20%20if%20%28httpPostJson%28FLOOD_POST_URL%2C%20payload%2C%20serverResp%29%29%20%7B%0A%20%20%20%20%20%20%20%20postOk%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20Serial.println%28%22POST%20succeeded.%22%29%3B%0A%20%20%20%20%20%20%20%20Serial.print%28%22Server%20raw%20response%3A%20%22%29%3B%0A%20%20%20%20%20%20%20%20Serial.println%28serverResp%29%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20parse%20%26%20apply%20server%20config%20%28same%20as%20before%29...%0A%20%20%20%20%20%20%20%20StaticJsonDocument%3C512%3E%20respDoc%3B%0A%20%20%20%20%20%20%20%20DeserializationError%20err%20%3D%20deserializeJson%28respDoc%2C%20serverResp%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21err%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28respDoc.containsKey%28%22config%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20JsonObject%20cfg%20%3D%20respDoc%5B%22config%22%5D.as%3CJsonObject%3E%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28cfg.containsKey%28%22THRESHOLD_VALUE%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20float%20newTh%20%3D%20cfg%5B%22THRESHOLD_VALUE%22%5D.as%3Cfloat%3E%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Serial.print%28%22Server%20requested%20THRESHOLD_VALUE%20%3D%20%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Serial.println%28newTh%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20THRESHOLD_VALUE%20%3D%20newTh%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28cfg.containsKey%28%22POST_INTERVAL_MS%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20unsigned%20long%20newInterval%20%3D%20cfg%5B%22POST_INTERVAL_MS%22%5D.as%3Cunsigned%20long%3E%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Serial.print%28%22Server%20requested%20POST_INTERVAL_MS%20%3D%20%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Serial.println%28newInterval%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20POST_INTERVAL_MS%20%3D%20newInterval%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28respDoc.containsKey%28%22alert%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20char%2A%20alertText%20%3D%20respDoc%5B%22alert%22%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Serial.print%28%22Server%20alert%3A%20%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Serial.println%28alertText%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20Serial.print%28%22Failed%20to%20parse%20server%20JSON%3A%20%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20Serial.println%28err.c_str%28%29%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20Serial.println%28%22POST%20failed%20on%20attempt.%22%29%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20small%20delay%20with%20backoff%20before%20retrying%0A%20%20%20%20%20%20%20%20delay%28backoff%29%3B%0A%20%20%20%20%20%20%20%20backoff%20%3D%20min%28backoff%20%2A%202%2C%205000UL%29%3B%20%2F%2F%20cap%20at%205s%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20%2F%2F%20end%20attempts%0A%0A%20%20%20%20if%20%28%21postOk%29%20%7B%0A%20%20%20%20%20%20Serial.println%28%22All%20POST%20attempts%20failed.%22%29%3B%0A%20%20%20%20%20%20%2F%2F%20Only%20attempt%20WiFi%20reconnect%20if%20link%20is%20actually%20not%20connected%0A%20%20%20%20%20%20if%20%28WiFi.status%28%29%20%21%3D%20WL_CONNECTED%29%20%7B%0A%20%20%20%20%20%20%20%20Serial.print%28%22WiFi%20status%20%21%3D%20CONNECTED%20%28%22%29%3B%0A%20%20%20%20%20%20%20%20Serial.print%28WiFi.status%28%29%29%3B%0A%20%20%20%20%20%20%20%20Serial.println%28%22%29%20-%20attempting%20reconnect.%22%29%3B%0A%20%20%20%20%20%20%20%20connectWiFi%28%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20Serial.println%28%22WiFi%20appears%20connected%3B%20not%20reconnecting.%20Will%20try%20again%20on%20next%20interval.%22%29%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20Optionally%3A%20you%20could%20force%20a%20reconnect%20if%20you%20see%20many%20consecutive%20POST%20failures%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20If%20WiFi%20truly%20drops%20outside%20POST%2C%20try%20reconnecting%20%28small%20check%20once%20every%2010s%29%0A%20%20static%20unsigned%20long%20lastWifiCheck%20%3D%200%3B%0A%20%20if%20%28millis%28%29%20-%20lastWifiCheck%20%3E%2010000%29%20%7B%0A%20%20%20%20lastWifiCheck%20%3D%20millis%28%29%3B%0A%20%20%20%20if%20%28WiFi.status%28%29%20%21%3D%20WL_CONNECTED%29%20%7B%0A%20%20%20%20%20%20Serial.print%28%22WiFi%20status%20check%3A%20not%20connected%20%28%22%29%3B%0A%20%20%20%20%20%20Serial.print%28WiFi.status%28%29%29%3B%0A%20%20%20%20%20%20Serial.println%28%22%29.%20Reconnecting.%22%29%3B%0A%20%20%20%20%20%20connectWiFi%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20delay%2850%29%3B%0A%7D%0A%0A%0Avoid%20printConfig%28%29%20%7B%0A%20%20Serial.println%28F%28%22%5Cn---%20Current%20Configuration%20---%22%29%29%3B%0A%20%20Serial.print%28F%28%22THRESHOLD_VALUE%3A%20%22%29%29%3B%0A%20%20Serial.println%28THRESHOLD_VALUE%29%3B%0A%20%20Serial.print%28F%28%22POST_INTERVAL_MS%3A%20%22%29%29%3B%0A%20%20Serial.println%28POST_INTERVAL_MS%29%3B%0A%20%20Serial.println%28F%28%22------------------------------%5Cn%22%29%29%3B%0A%7D%0A%0A%2F%2A%20--------------------%20helpers%20--------------------%20%2A%2F%0A%0Aint%20readDistanceSim%28%29%20%7B%0A%20%20TdkUssm.GetDistanceCm%28%29%3B%20%20%2F%2F%20Prints%20Distance%20in%20cm.%0A%7D%0A%0A%0Avoid%20connectWiFi%28%29%20%7B%0A%20%20Serial.print%28%22Connecting%20to%20WiFi%20SSID%3A%20%22%29%3B%0A%20%20Serial.println%28SECRET_SSID%29%3B%0A%0A%20%20WiFi.end%28%29%3B%0A%20%20delay%28200%29%3B%0A%0A%20%20int%20status%20%3D%20WiFi.begin%28SECRET_SSID%2C%20SECRET_PASS%29%3B%0A%20%20unsigned%20long%20start%20%3D%20millis%28%29%3B%0A%20%20while%20%28WiFi.status%28%29%20%21%3D%20WL_CONNECTED%20%26%26%20%28millis%28%29%20-%20start%29%20%3C%20POST_TIMEOUT_MS%29%20%7B%0A%20%20%20%20delay%28500%29%3B%0A%20%20%20%20Serial.print%28%22.%22%29%3B%0A%20%20%7D%0A%20%20if%20%28WiFi.status%28%29%20%3D%3D%20WL_CONNECTED%29%20%7B%0A%20%20%20%20Serial.println%28%29%3B%0A%20%20%20%20Serial.print%28%22WiFi%20connected.%20IP%3A%20%22%29%3B%0A%20%20%20%20Serial.println%28WiFi.localIP%28%29%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20Serial.println%28%29%3B%0A%20%20%20%20Serial.print%28%22WiFi%20connect%20failed%2C%20status%3D%22%29%3B%0A%20%20%20%20Serial.println%28WiFi.status%28%29%29%3B%0A%20%20%7D%0A%7D%0A%0A%2F%2F%20Simple%20HTTPS%20POST%20with%20JSON%20payload%3B%20returns%20server%20response%20body%0Abool%20httpPostJson%28const%20String%20%26url%2C%20const%20String%20%26jsonPayload%2C%20String%20%26responseBody%29%20%7B%0A%20%20responseBody%20%3D%20%22%22%3B%0A%20%20if%20%28url.length%28%29%20%3D%3D%200%29%20%7B%0A%20%20%20%20Serial.println%28%22GAS_POST_URL%20not%20set%21%22%29%3B%0A%20%20%20%20return%20false%3B%0A%20%20%7D%0A%0A%20%20String%20host%20%3D%20hostFromUrl%28url%29%3B%0A%20%20String%20path%20%3D%20pathFromUrl%28url%29%3B%0A%20%20if%20%28host.length%28%29%20%3D%3D%200%20%7C%7C%20path.length%28%29%20%3D%3D%200%29%20%7B%0A%20%20%20%20Serial.println%28%22Invalid%20GAS_POST_URL.%22%29%3B%0A%20%20%20%20return%20false%3B%0A%20%20%7D%0A%0A%20%20WiFiSSLClient%20client%3B%0A%20%20Serial.print%28%22HTTPS%20POST%20to%20host%3A%20%22%29%3B%0A%20%20Serial.print%28host%29%3B%0A%20%20Serial.print%28%22%20path%3A%20%22%29%3B%0A%20%20Serial.println%28path%29%3B%0A%0A%20%20if%20%28%21client.connect%28host.c_str%28%29%2C%20443%29%29%20%7B%0A%20%20%20%20Serial.println%28%22Connection%20failed%20%28POST%29.%22%29%3B%0A%20%20%20%20return%20false%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Build%20request%0A%20%20client.print%28String%28%22POST%20%22%29%20%2B%20path%20%2B%20%22%20HTTP%2F1.1%5Cr%5Cn%22%29%3B%0A%20%20client.print%28String%28%22Host%3A%20%22%29%20%2B%20host%20%2B%20%22%5Cr%5Cn%22%29%3B%0A%20%20client.print%28%22Connection%3A%20close%5Cr%5Cn%22%29%3B%0A%20%20client.print%28%22Content-Type%3A%20application%2Fjson%5Cr%5Cn%22%29%3B%0A%20%20client.print%28String%28%22Content-Length%3A%20%22%29%20%2B%20jsonPayload.length%28%29%20%2B%20%22%5Cr%5Cn%22%29%3B%0A%20%20client.print%28%22User-Agent%3A%20MKR1010%5Cr%5Cn%22%29%3B%0A%20%20client.print%28%22%5Cr%5Cn%22%29%3B%0A%20%20client.print%28jsonPayload%29%3B%0A%0A%20%20unsigned%20long%20timeout%20%3D%20millis%28%29%3B%0A%20%20while%20%28client.connected%28%29%20%26%26%20%21client.available%28%29%29%20%7B%0A%20%20%20%20if%20%28millis%28%29%20-%20timeout%20%3E%208000%29%20%7B%0A%20%20%20%20%20%20Serial.println%28%22Timeout%20waiting%20for%20POST%20response.%22%29%3B%0A%20%20%20%20%20%20client.stop%28%29%3B%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20read%20status%20line%0A%20%20String%20statusLine%20%3D%20client.readStringUntil%28%27%5Cn%27%29%3B%0A%20%20statusLine.trim%28%29%3B%0A%20%20Serial.print%28%22Status%3A%20%22%29%3B%0A%20%20Serial.println%28statusLine%29%3B%0A%0A%20%20%2F%2F%20skip%20headers%0A%20%20while%20%28client.available%28%29%29%20%7B%0A%20%20%20%20String%20line%20%3D%20client.readStringUntil%28%27%5Cn%27%29%3B%0A%20%20%20%20line.trim%28%29%3B%0A%20%20%20%20if%20%28line.length%28%29%20%3D%3D%200%29%20break%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20read%20body%0A%20%20String%20body%20%3D%20%22%22%3B%0A%20%20unsigned%20long%20start%20%3D%20millis%28%29%3B%0A%20%20while%20%28client.available%28%29%29%20%7B%0A%20%20%20%20char%20c%20%3D%20client.read%28%29%3B%0A%20%20%20%20body%20%2B%3D%20c%3B%0A%20%20%20%20if%20%28millis%28%29%20-%20start%20%3E%208000%29%20break%3B%0A%20%20%7D%0A%0A%20%20client.stop%28%29%3B%0A%20%20responseBody%20%3D%20body%3B%0A%20%20return%20true%3B%0A%7D%0A%0A%2F%2F%20URL%20helpers%0AString%20hostFromUrl%28const%20String%20%26url%29%20%7B%0A%20%20int%20idx%20%3D%20url.indexOf%28%22%3A%2F%2F%22%29%3B%0A%20%20int%20start%20%3D%20%28idx%20%3E%3D%200%29%20%3F%20idx%20%2B%203%20%3A%200%3B%0A%20%20int%20slash%20%3D%20url.indexOf%28%27%2F%27%2C%20start%29%3B%0A%20%20if%20%28slash%20%3C%200%29%20return%20url.substring%28start%29%3B%0A%20%20return%20url.substring%28start%2C%20slash%29%3B%0A%7D%0A%0AString%20pathFromUrl%28const%20String%20%26url%29%20%7B%0A%20%20int%20idx%20%3D%20url.indexOf%28%22%3A%2F%2F%22%29%3B%0A%20%20int%20start%20%3D%20%28idx%20%3E%3D%200%29%20%3F%20idx%20%2B%203%20%3A%200%3B%0A%20%20int%20slash%20%3D%20url.indexOf%28%27%2F%27%2C%20start%29%3B%0A%20%20if%20%28slash%20%3C%200%29%20return%20%22%2F%22%3B%0A%20%20return%20url.substring%28slash%29%3B%0A%7D%0A]&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:52cef194-af8b-4bb4-bfa0-5ff2e7bc6347:type=c_cpp&amp;text=%2F%2F%20arduino_secrets.h%0A%2F%2F%20Put%20this%20in%20the%20same%20folder%20as%20your%20sketch%20or%20in%20your%20Arduino%20sketchbook%2Flibraries%20folder.%0A%2F%2F%20Replace%20the%20values%20between%20the%20quotes%20exactly%20%28case-sensitive%29.%20No%20trailing%20spaces.%0A%0A%23ifndef%20ARDUINO_SECRETS_H%0A%23define%20ARDUINO_SECRETS_H%0A%0A%23define%20SECRET_SSID%20%22WIFIname%22%20%20%20%20%20%20%2F%2F%20%3C--%20replace%20with%20your%20Wi-Fi%20SSID%20%282.4%20GHz%29%0A%23define%20SECRET_PASS%20%22wifipass%22%20%20%2F%2F%20%3C--%20replace%20with%20your%20Wi-Fi%20password%0A%0A%0A%0A%0A%0A%0A%0A%23define%20HTTPS_PORT_NUMBER%20443%0A%0A%23define%20FLOOD_POST_URL%20%20%20%22https%3A%2F%2Fscript.google.com%2Fmacros%2Fs%2FAKfycbw27cP9jphgyeJNA7Mr2523E2NE8FiNO1ZGUrQqqFY99Hr-roe357eSuJDAVEvfmZKCzw%2Fexec%22%20%0A%2F%2F%20OPTIONAL%3A%20endpoint%20that%20returns%20JSON%20config%20%7B%20%22THRESHOLD_VALUE%22%3A%2015%2C%20%22POST_INTERVAL_MS%22%3A%2010000%20%7D%0A%2F%2F%20If%20you%20don%27t%20have%20this%2C%20set%20GAS_CONFIG_URL%20to%20%22%22%20and%20sketch%20will%20use%20defaults%20below.%0A%23define%20FLOOD_CONFIG_URL%20%22https%3A%2F%2Fscript.google.com%2Fmacros%2Fs%2FREPLACE_WITH_YOUR_CONFIG_URL%2Fexec%22%0A%0A%23endif%0A%0A%0A%0A%0A]&lt;strong&gt;&lt;em&gt;&lt;br /&gt;In Next Blog we will see the testing and results&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Early Flood Warning and Monitoring System #3 - Code and Cloud Making the MKR Talk to Google Sheets</title><link>https://community.element14.com/thread/56429?ContentTypeID=0</link><pubDate>Sun, 16 Nov 2025 17:44:52 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:121f65c9-6af3-4d4d-b09c-e9f19d258cf0</guid><dc:creator>sandeepdwivedi17</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/56429?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56429/early-flood-warning-and-monitoring-system-3---code-and-cloud-making-the-mkr-talk-to-google-sheets/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Alright &amp;mdash; time for the slightly nerdy, very satisfying bit.&lt;br /&gt; This is where the sensors stop being lonely hardware and start sending real data to the cloud.&lt;br /&gt; No smoke. No drama. Just packets, spreadsheets, and the occasional garbage value that makes you laugh and cry.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The simple goal &amp;mdash; in one line&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Read water level. Send it. Get an alert if things go wrong.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What I stitch together here&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Arduino MKR WiFi 1010&lt;/strong&gt; &amp;mdash; the brain and Wi-Fi radio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TDK Eval board + USSM sensors&lt;/strong&gt; &amp;mdash; they do distance sensing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Sheets&lt;/strong&gt; &amp;mdash; the datastore and quick dashboard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Apps Script&lt;/strong&gt; &amp;mdash; the tiny web API that accepts posts and emails alerts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Think: sensor &amp;rarr; MKR &amp;rarr; HTTPS POST &amp;rarr; Apps Script &amp;rarr; Sheet &amp;rarr; emails.&lt;br /&gt; That chain is the whole system.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why Google Sheets? (Spoiler: Because it&amp;rsquo;s fast)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sheets is free, easy, and everyone knows it.&lt;br /&gt; You don&amp;rsquo;t need a server or a database yet.&lt;br /&gt; For a prototype and a competition demo, it&amp;rsquo;s perfect.&lt;br /&gt; Later we can swap it for a proper backend. But right now &amp;mdash; speed wins.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Server-side: Apps Script doPost&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On the Google side, doPost(e) checks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JSON parse ok?&lt;/li&gt;
&lt;li&gt;api_key matches?&lt;/li&gt;
&lt;li&gt;value is numeric?&lt;/li&gt;
&lt;li&gt;alert_requested true AND value compared vs THRESHOLD_VALUE in the sheet?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If conditions match, it sends email(s) and writes Alert Sent @ TIMESTAMP into the DataLog row.&lt;br /&gt;&lt;br /&gt;Create a google sheet &amp;quot;TDK-MKR-Logger&amp;quot; with 3 tabs.&lt;br /&gt;tab1 named &amp;quot;&lt;span style="background-color:#d8e5f8;color:#222222;float:none;font-family:&amp;#39;Google Sans&amp;#39;, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;font-size:14px;font-style:normal;font-weight:bold;letter-spacing:0.4px;text-align:start;text-indent:0px;text-transform:none;white-space:pre;"&gt;ConfigDetails&lt;/span&gt;&amp;quot;&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/444/pastedimage1763314457898v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Tab 2 &amp;quot;&lt;span style="background-color:#d8e5f8;color:#222222;float:none;font-family:&amp;#39;Google Sans&amp;#39;, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;font-size:14px;font-style:normal;font-weight:bold;letter-spacing:0.4px;text-align:start;text-indent:0px;text-transform:none;white-space:pre;"&gt;Email_list&lt;/span&gt;&amp;quot;&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/444/pastedimage1763314524919v2.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Tab 3 &amp;quot;&lt;span style="background-color:#d8e5f8;color:#222222;float:none;font-family:&amp;#39;Google Sans&amp;#39;, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;font-size:14px;font-style:normal;font-weight:bold;letter-spacing:0.4px;text-align:start;text-indent:0px;text-transform:none;white-space:pre;"&gt;DataLog&lt;/span&gt;&amp;quot;&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/444/pastedimage1763314557558v3.png" /&gt;&lt;br /&gt;&lt;br /&gt;Click on Extensions and select Apps Script&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/444/pastedimage1763315223363v1.png" /&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/444/pastedimage1763314694300v5.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Copy and Paste my Code into it.&lt;br /&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:842a88df-6cc3-4f08-90a0-0e08669a69af:type=html&amp;text=%2F%2A%2A%0A%20%2A%20Google%20Apps%20Script%20for%20%22TDK-MKR-Logger%22%20Google%20Sheet%0A%20%2A%0A%20%2A%20Sheets%20expected%3A%0A%20%2A%201%29%20%22ConfigDetails%22%20-%20columns%3A%20key%20%7C%20Value%20%7C%20Description%0A%20%2A%20%20%20%20%20%20-%20keys%20expected%3A%20THRESHOLD_VALUE%2C%20POST_INTERVAL_MS%0A%20%2A%202%29%20%22Email_list%22%20%20%20%20-%20column%20A%20header%20%22Email%20Addresses%22%20followed%20by%20emails%0A%20%2A%203%29%20%22DataLog%22%20%20%20%20%20%20%20-%20columns%3A%20Timestamp%20%7C%20Sensor%20Name%20%7C%20Value%20%7C%20Alert%20Sent%0A%20%2A%0A%20%2A%20doPost%28e%29%3A%20Accepts%20JSON%20payload%20and%20appends%20row%20to%20DataLog%0A%20%2A%20%20%20%20%20%20%20%20%20%20%20Payload%20example%3A%0A%20%2A%20%20%20%20%20%20%20%20%20%20%20%7B%20%22sensor_name%22%3A%20%22MKR_UltraSim_01%22%2C%20%22value%22%3A%2012.3%2C%20%22alert_requested%22%3A%20true%20%7D%0A%20%2A%0A%20%2A%20doGet%28e%29%3A%20Returns%20JSON%20config%3A%20%7B%20%22THRESHOLD_VALUE%22%3A%2015%2C%20%22POST_INTERVAL_MS%22%3A%2010000%20%7D%0A%20%2A%0A%20%2A%20Notes%3A%0A%20%2A%20-%20This%20script%20uses%20MailApp%20to%20send%20emails%20%28requires%20permission%29.%0A%20%2A%20-%20Deploy%20as%20Web%20App%20and%20set%20%22Execute%20as%3A%20Me%22%20so%20MailApp%20runs%20under%20your%20account.%0A%20%2A%2F%0A%0Aconst%20SHEET_NAME%20%3D%20%27TDK-MKR-Logger%27%3B%0Aconst%20TAB_CONFIG%20%3D%20%27ConfigDetails%27%3B%0Aconst%20TAB_EMAILS%20%3D%20%27Email_list%27%3B%0Aconst%20TAB_DATALOG%20%3D%20%27DataLog%27%3B%0A%0A%2F%2F%20MAIN%20-%20POST%20handler%0Afunction%20doPost%28e%29%20%7B%0A%20%20try%20%7B%0A%20%20%20%20if%20%28%21e%20%7C%7C%20%21e.postData%20%7C%7C%20%21e.postData.contents%29%20%7B%0A%20%20%20%20%20%20return%20jsonResponse%28%7B%20error%3A%20%27No%20POST%20data%20received%27%20%7D%2C%20400%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20parse%20JSON%20body%0A%20%20%20%20let%20payload%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20payload%20%3D%20JSON.parse%28e.postData.contents%29%3B%0A%20%20%20%20%7D%20catch%20%28err%29%20%7B%0A%20%20%20%20%20%20return%20jsonResponse%28%7B%20error%3A%20%27Invalid%20JSON%27%2C%20details%3A%20err.toString%28%29%20%7D%2C%20400%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20const%20sensorName%20%3D%20%28payload.sensor_name%20%7C%7C%20payload.sensor%20%7C%7C%20%27UnknownSensor%27%29.toString%28%29%3B%0A%20%20%20%20%2F%2F%20coerce%20numeric%0A%20%20%20%20const%20value%20%3D%20parseFloat%28payload.value%29%3B%0A%20%20%20%20const%20alertRequested%20%3D%20Boolean%28payload.alert_requested%20%7C%7C%20payload.alert%20%7C%7C%20false%29%3B%0A%0A%20%20%20%20if%20%28isNaN%28value%29%29%20%7B%0A%20%20%20%20%20%20return%20jsonResponse%28%7B%20error%3A%20%27Value%20must%20be%20a%20number%27%20%7D%2C%20400%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20const%20ss%20%3D%20SpreadsheetApp.getActiveSpreadsheet%28%29%3B%0A%20%20%20%20if%20%28%21ss%29%20%7B%0A%20%20%20%20%20%20return%20jsonResponse%28%7B%20error%3A%20%27Spreadsheet%20not%20found%20or%20not%20opened%27%20%7D%2C%20500%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20const%20configSheet%20%3D%20ss.getSheetByName%28TAB_CONFIG%29%3B%0A%20%20%20%20const%20emailSheet%20%3D%20ss.getSheetByName%28TAB_EMAILS%29%3B%0A%20%20%20%20const%20dataSheet%20%20%3D%20ss.getSheetByName%28TAB_DATALOG%29%3B%0A%0A%20%20%20%20if%20%28%21configSheet%20%7C%7C%20%21emailSheet%20%7C%7C%20%21dataSheet%29%20%7B%0A%20%20%20%20%20%20return%20jsonResponse%28%7B%20error%3A%20%27One%20or%20more%20expected%20tabs%20not%20found%27%2C%20requiredTabs%3A%20%5BTAB_CONFIG%2C%20TAB_EMAILS%2C%20TAB_DATALOG%5D%20%7D%2C%20500%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20read%20config%20values%0A%20%20%20%20const%20config%20%3D%20readConfig%28configSheet%29%3B%0A%20%20%20%20const%20threshold%20%3D%20Number%28config.THRESHOLD_VALUE%29%3B%0A%20%20%20%20%2F%2F%20fallback%20if%20config%20missing%20or%20invalid%0A%20%20%20%20const%20THRESHOLD_VALUE%20%3D%20isFinite%28threshold%29%20%3F%20threshold%20%3A%2015%3B%0A%20%20%20%20const%20nowIso%20%3D%20%28new%20Date%28%29%29.toISOString%28%29%3B%0A%0A%20%20%20%20%2F%2F%20prepare%20row%3A%20Timestamp%20%7C%20Sensor%20Name%20%7C%20Value%20%7C%20Alert%20Sent%0A%20%20%20%20let%20alertSentText%20%3D%20%27%27%3B%0A%20%20%20%20const%20newRow%20%3D%20%5B%20nowIso%2C%20sensorName%2C%20value%2C%20%27%27%20%5D%3B%0A%20%20%20%20dataSheet.appendRow%28newRow%29%3B%0A%20%20%20%20const%20lastRow%20%3D%20dataSheet.getLastRow%28%29%3B%0A%0A%20%20%20%20%2F%2F%20If%20alert%20requested%20AND%20value%20is%20below%20threshold%20%28per%20your%20spec%20%22lesser%20than%20threshold%20triggers%20alert%22%29%0A%20%20%20%20if%20%28alertRequested%20%26%26%20value%20%3C%20THRESHOLD_VALUE%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20read%20emails%0A%20%20%20%20%20%20const%20emails%20%3D%20readEmails%28emailSheet%29%3B%0A%20%20%20%20%20%20if%20%28emails.length%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20const%20subject%20%3D%20%60ALERT%3A%20%24%7BsensorName%7D%20reading%20%24%7Bvalue%7D%20%3C%20%24%7BTHRESHOLD_VALUE%7D%60%3B%0A%20%20%20%20%20%20%20%20const%20body%20%3D%20%5B%0A%20%20%20%20%20%20%20%20%20%20%60Sensor%3A%20%24%7BsensorName%7D%60%2C%0A%20%20%20%20%20%20%20%20%20%20%60Value%3A%20%24%7Bvalue%7D%60%2C%0A%20%20%20%20%20%20%20%20%20%20%60Threshold%3A%20%24%7BTHRESHOLD_VALUE%7D%60%2C%0A%20%20%20%20%20%20%20%20%20%20%60Timestamp%3A%20%24%7BnowIso%7D%60%2C%0A%20%20%20%20%20%20%20%20%20%20%27%27%2C%0A%20%20%20%20%20%20%20%20%20%20%27This%20alert%20was%20generated%20by%20the%20TDK-MKR-Logger%20Google%20Apps%20Script.%27%0A%20%20%20%20%20%20%20%20%5D.join%28%27%5Cn%27%29%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20send%20to%20each%20email%20%28MailApp.sendEmail%20handles%20comma-separated%20list%20too%29%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20MailApp.sendEmail%28emails.join%28%27%2C%27%29%2C%20subject%2C%20body%29%3B%0A%20%20%20%20%20%20%20%20%20%20alertSentText%20%3D%20%60Alert%20Sent%20%40%20%24%7BnowIso%7D%60%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20write%20alert%20info%20into%20the%20Alert%20Sent%20column%20%284th%20column%29%0A%20%20%20%20%20%20%20%20%20%20dataSheet.getRange%28lastRow%2C%204%29.setValue%28alertSentText%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%20%28mailErr%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20email%20failed%20-%20log%20error%20into%20sheet%20in%20Alert%20Sent%20column%0A%20%20%20%20%20%20%20%20%20%20const%20errText%20%3D%20%60Alert%20FAILED%20%40%20%24%7BnowIso%7D%20--%20%24%7BmailErr.toString%28%29%7D%60%3B%0A%20%20%20%20%20%20%20%20%20%20dataSheet.getRange%28lastRow%2C%204%29.setValue%28errText%29%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20return%20success%20with%20warning%20about%20email%20failure%0A%20%20%20%20%20%20%20%20%20%20return%20jsonResponse%28%7B%20status%3A%20%27ok%27%2C%20message%3A%20%27row%20appended%2C%20email%20failed%27%2C%20error%3A%20mailErr.toString%28%29%20%7D%2C%20200%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20no%20emails%20found%20-%20put%20note%20in%20Alert%20Sent%0A%20%20%20%20%20%20%20%20const%20note%20%3D%20%60Alert%20requested%20but%20no%20email%20addresses%20found%20%40%20%24%7BnowIso%7D%60%3B%0A%20%20%20%20%20%20%20%20dataSheet.getRange%28lastRow%2C%204%29.setValue%28note%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Successful%20append%20%28and%20maybe%20alert%29%0A%20%20%20%20return%20jsonResponse%28%7B%20status%3A%20%27ok%27%2C%20row%3A%20lastRow%2C%20alert%3A%20alertSentText%20%7C%7C%20null%2C%20config%3A%20config%20%7D%2C%20200%29%3B%0A%0A%20%20%7D%20catch%20%28err%29%20%7B%0A%20%20%20%20return%20jsonResponse%28%7B%20error%3A%20%27Unhandled%20exception%27%2C%20details%3A%20err.toString%28%29%20%7D%2C%20500%29%3B%0A%20%20%7D%0A%7D%0A%0A%2F%2F%20GET%20handler%20-%20returns%20config%20as%20JSON%0Afunction%20doGet%28e%29%20%7B%0A%20%20try%20%7B%0A%20%20%20%20const%20ss%20%3D%20SpreadsheetApp.getActiveSpreadsheet%28%29%3B%0A%20%20%20%20const%20configSheet%20%3D%20ss.getSheetByName%28TAB_CONFIG%29%3B%0A%20%20%20%20if%20%28%21configSheet%29%20%7B%0A%20%20%20%20%20%20return%20jsonResponse%28%7B%20error%3A%20%27ConfigDetails%20sheet%20not%20found%27%20%7D%2C%20500%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20const%20config%20%3D%20readConfig%28configSheet%29%3B%0A%20%20%20%20%2F%2F%20ensure%20numeric%20where%20appropriate%0A%20%20%20%20if%20%28config.POST_INTERVAL_MS%29%20config.POST_INTERVAL_MS%20%3D%20Number%28config.POST_INTERVAL_MS%29%3B%0A%20%20%20%20if%20%28config.THRESHOLD_VALUE%29%20config.THRESHOLD_VALUE%20%3D%20Number%28config.THRESHOLD_VALUE%29%3B%0A%20%20%20%20return%20jsonResponse%28config%2C%20200%29%3B%0A%20%20%7D%20catch%20%28err%29%20%7B%0A%20%20%20%20return%20jsonResponse%28%7B%20error%3A%20%27Unhandled%20exception%27%2C%20details%3A%20err.toString%28%29%20%7D%2C%20500%29%3B%0A%20%20%7D%0A%7D%0A%0A%2F%2A%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20Helper%20functions%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20%2A%2F%0A%0Afunction%20readConfig%28sheet%29%20%7B%0A%20%20%2F%2F%20Expecting%20two%20columns%3A%20key%20%28A%29%20%7C%20Value%20%28B%29%0A%20%20%2F%2F%20Read%20all%20data%20and%20build%20a%20simple%20key-%3Evalue%20object%0A%20%20const%20values%20%3D%20sheet.getDataRange%28%29.getValues%28%29%3B%0A%20%20const%20config%20%3D%20%7B%7D%3B%0A%20%20for%20%28let%20i%20%3D%201%3B%20i%20%3C%20values.length%3B%20i%2B%2B%29%20%7B%20%2F%2F%20skip%20header%20row%20assumed%20at%20row%201%0A%20%20%20%20const%20row%20%3D%20values%5Bi%5D%3B%0A%20%20%20%20const%20key%20%3D%20%28row%5B0%5D%20%7C%7C%20%27%27%29.toString%28%29.trim%28%29%3B%0A%20%20%20%20const%20val%20%3D%20%28row%5B1%5D%20%21%3D%3D%20undefined%20%26%26%20row%5B1%5D%20%21%3D%3D%20null%29%20%3F%20row%5B1%5D%20%3A%20%27%27%3B%0A%20%20%20%20if%20%28key%29%20config%5Bkey%5D%20%3D%20val%3B%0A%20%20%7D%0A%20%20return%20config%3B%0A%7D%0A%0Afunction%20readEmails%28sheet%29%20%7B%0A%20%20%2F%2F%20Read%20column%20A%20%28skip%20header%29%3B%20filter%20empty%20and%20validate%20basic%20email%20format%0A%20%20const%20col%20%3D%20sheet.getRange%282%2C%201%2C%20Math.max%280%2C%20sheet.getLastRow%28%29%20-%201%29%2C%201%29.getValues%28%29%3B%0A%20%20const%20emails%20%3D%20%5B%5D%3B%0A%20%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20col.length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20const%20v%20%3D%20%28col%5Bi%5D%5B0%5D%20%7C%7C%20%27%27%29.toString%28%29.trim%28%29%3B%0A%20%20%20%20if%20%28v%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Allow%20comma-separated%20addresses%20in%20single%20cell%20too%3B%20split%20and%20trim%0A%20%20%20%20%20%20const%20parts%20%3D%20v.split%28%27%2C%27%29%3B%0A%20%20%20%20%20%20parts.forEach%28p%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20const%20e%20%3D%20p.trim%28%29%3B%0A%20%20%20%20%20%20%20%20if%20%28e%20%26%26%20e.indexOf%28%27%40%27%29%20%3E%20-1%29%20emails.push%28e%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20%2F%2F%20dedupe%20simple%0A%20%20return%20Array.from%28new%20Set%28emails%29%29%3B%0A%7D%0A%0Afunction%20jsonResponse%28obj%2C%20statusCode%29%20%7B%0A%20%20%2F%2F%20Apps%20Script%20ContentService%20doesn%27t%20allow%20setting%20HTTP%20status%20codes%20directly%20to%20callers%2C%0A%20%20%2F%2F%20but%20when%20deployed%20as%20Web%20App%20it%20will%20return%20200%20unless%20an%20exception%20is%20thrown.%0A%20%20%2F%2F%20We%27ll%20return%20a%20JSON%20wrapper%20with%20a%20code%20field%20so%20the%20device%20can%20inspect%20success%2Ffailure.%0A%20%20const%20wrapper%20%3D%20Object.assign%28%7B%7D%2C%20obj%2C%20%7B%20_code%3A%20statusCode%20%7C%7C%20200%20%7D%29%3B%0A%20%20const%20json%20%3D%20JSON.stringify%28wrapper%29%3B%0A%20%20return%20ContentService.createTextOutput%28json%29.setMimeType%28ContentService.MimeType.JSON%29%3B%0A%7D%0A]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Click on Deploy&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/444/pastedimage1763314823531v6.png" /&gt;&lt;br /&gt;&lt;br /&gt;Select New Deployment&amp;gt; in description type any thing you want &amp;gt;in Who has access select anyone &amp;gt;Click Deploy&amp;nbsp; &amp;gt; from there a web URL will be created. Copy it and save for next part of arduino mkr 1010 Programming.&lt;br /&gt;In next Blog we will discuss the hardware part.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Early Flood Warning and Monitoring System #1 - Introduction</title><link>https://community.element14.com/thread/56421?ContentTypeID=0</link><pubDate>Sat, 15 Nov 2025 13:50:44 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:eca2eafc-b4d6-4876-8634-ef0519a9625e</guid><dc:creator>sandeepdwivedi17</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56421?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56421/early-flood-warning-and-monitoring-system-1---introduction/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;You ever stood by a river after a long night of rain?&lt;br /&gt; The air smells like wet soil, frogs are losing their minds, and the water looks calm&amp;hellip; until it&amp;rsquo;s not.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s where this project started.&lt;/p&gt;
&lt;p&gt;One evening last monsoon, I watched a lot of news regarding river flood in some states , bikes were stalled, people were pushing carts through knee-deep water, and the power cut out.&lt;/p&gt;
&lt;p&gt;So yeah, that&amp;rsquo;s what pushed me to build a &lt;strong&gt;river water monitoring and flood warning system&lt;/strong&gt; using &lt;strong&gt;TDK Ultrasonic Sensors&lt;/strong&gt; .&lt;/p&gt;
&lt;p&gt;I came across the &lt;strong&gt;TDK In-Reach Ultrasonic Sensing Challenge&lt;/strong&gt; on Element14 and thought, &amp;ldquo;Wait&amp;hellip; that&amp;rsquo;s &lt;em&gt;exactly&lt;/em&gt; the kind of tech that could help.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Perfect for tracking how close the water is to trouble.it could give people a few extra hours to move to safety. And in a flood, a few hours can make a huge difference.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Image: &amp;nbsp;TDK kit photo)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;img style="max-height:360px;max-width:640px;" alt="TDK Demo Kit" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/IMG_5F00_20251114_5F00_162607060.jpg" /&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what I&amp;rsquo;m building:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &amp;nbsp;&lt;strong&gt;TDK USSM ultrasonic sensors&lt;/strong&gt; mounted above a river or Water body.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;Arduino MKR WiFi 1010&lt;/strong&gt; that reads water levels from sensors and sends data to &lt;strong&gt;Google Sheets&lt;/strong&gt; (yep, good old Sheets&amp;mdash;simple, free, works).&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Google Apps Script&lt;/strong&gt; that emails alerts when levels go past a threshold.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So basically, it&amp;rsquo;s a mini early warning station in a waterproof box that can be deployed in quick pace to any desired location for flood tracking.&lt;br /&gt; Think of it as the river&amp;rsquo;s way of texting you: &amp;ldquo;Hey buddy, I&amp;rsquo;m rising fast.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not a big corporation or a disaster management expert. I&amp;rsquo;m just someone who got tired of watching small floods cause big chaos.&lt;/p&gt;
&lt;p&gt;People lose things they can&amp;rsquo;t replace&amp;mdash;photos, furniture, sometimes entire homes&amp;mdash;because no one tells them in time.&lt;br /&gt; If a simple sensor and a Wi-Fi board can give them that heads-up&amp;hellip; why not build it?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What Makes This Special&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t just about distance sensing. It&amp;rsquo;s about turning that distance into &lt;em&gt;action&lt;/em&gt;.&lt;br /&gt; Every reading is logged, timestamped, and compared against a threshold stored in a Google Sheet.That can be used as Data Analysis also in future to predict floods even before water level crosses the danger mark for flood.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What&amp;rsquo;s Next&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Over the next few blogs, I&amp;rsquo;ll be posting my full build journey here on Element14.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s my rough plan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Blog 2 The Flow Chart of Data in My Flood Warning System&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blog 3:&lt;/strong&gt; Wiring the Brains Hooking Up the TDK Ultrasonic Sensors&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blog 4:&lt;/strong&gt; Code walkthrough + Google Sheet connection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blog 5:&lt;/strong&gt; Testing the Flood Warning System by prototype assembly, Final build, results, and thoughts on real-world deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Final Thought&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If this project works&amp;mdash;even in a small way&amp;mdash;it could be used by anyone living near a water body.&lt;br /&gt; A farmer. A fisherman. A small-town engineer trying to protect their community.&lt;/p&gt;</description></item><item><title>RE: Early Flood Warning and Monitoring System #1 - Introduction</title><link>https://community.element14.com/thread/231851?ContentTypeID=1</link><pubDate>Sat, 15 Nov 2025 19:18:32 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:261312be-37a6-4cf6-b8e9-e85f4efbd6cb</guid><dc:creator>beacon_dave</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/231851?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56421/early-flood-warning-and-monitoring-system-1---introduction/rss?ContentTypeId=0</wfw:commentRss><description>[quote userid="15394" url="~/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56421/early-flood-warning-and-monitoring-system-1---introduction"]The air smells like wet soil[/quote]
&lt;p&gt;A nice&amp;nbsp;word&amp;nbsp;for that is &amp;quot;&lt;em&gt;petrichor&lt;/em&gt;&amp;quot;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Early Flood Warning and Monitoring System #2 - The Flow of Data</title><link>https://community.element14.com/thread/231849?ContentTypeID=1</link><pubDate>Sat, 15 Nov 2025 15:01:42 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:45cfffa7-c8f4-4792-b021-b1ab7f297045</guid><dc:creator>sandeepdwivedi17</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/231849?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56422/early-flood-warning-and-monitoring-system-2---the-flow-of-data/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I will Follow your suggestion in my project. Thanks for this useful advice.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Early Flood Warning and Monitoring System #2 - The Flow of Data</title><link>https://community.element14.com/thread/56422?ContentTypeID=0</link><pubDate>Sat, 15 Nov 2025 13:58:12 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:067e512f-76c7-4e86-b1a6-20ef735bcea6</guid><dc:creator>sandeepdwivedi17</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/56422?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56422/early-flood-warning-and-monitoring-system-2---the-flow-of-data/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Every good project needs a brain.&lt;br /&gt; But the real magic? That&amp;rsquo;s in the &lt;strong&gt;flow&lt;/strong&gt; &amp;mdash; how information moves from sensors to the cloud and back.&lt;/p&gt;
&lt;p&gt;This blog is all about that invisible choreography. The part you don&amp;rsquo;t really &lt;em&gt;see&lt;/em&gt; but totally depends on.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" alt="Flow Chart of Early Flood Warning Sytem" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/Flow-Chart.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Working of my Project&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s break it down.&lt;br /&gt; Imagine water rising in a river.&lt;br /&gt; Here&amp;rsquo;s what happens, step by step, inside my setup:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;TDK Ultrasonic Sensors&lt;/strong&gt; measure water level distance from Sensor which is placed at Danger line marking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arduino will Connect to wifi. If not connected it will keep trying until its connected.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Once wifi connected it will fetch the google sheet Named &amp;ldquo;TDK-MKR-Logger&amp;rsquo; tab &amp;ldquo;&lt;/strong&gt;&lt;strong&gt;ConfigDetails&amp;rdquo;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;From there it will fetch the &lt;/strong&gt;THRESHOLD_VALUE and POST_INTERVAL_MS parameter&lt;/li&gt;
&lt;li&gt;THRESHOLD_VALUE will define the alarming water level to send upcoming flood alert&lt;/li&gt;
&lt;li&gt;POST_INTERVAL_MS will tell the frequency of distance measurement i.e. interval after which distance is measured&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Arduino will keep measureing distance of water level from Danger mark at fixed time interval (POST_INTERVAL_MS ) from TKD Sensors. It packages that info into a neat little &lt;strong&gt;JSON payload&lt;/strong&gt; .&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Then send this distance to Google sheet. payload is sent via &lt;strong&gt;HTTPS POST&lt;/strong&gt; to my &lt;strong&gt;Google Apps Script Web App . &lt;/strong&gt;The script logs it in &lt;strong&gt;Google Sheets&lt;/strong&gt; under the &amp;ldquo;DataLog&amp;rdquo; tab.&lt;/li&gt;
&lt;li&gt;When distance from water level is received by google sheet it will check if Distance is less than threshold ?&lt;br /&gt; if yes then it will send alert to Predefined Email addresses stored in &amp;ldquo;&lt;strong&gt;Email_list&amp;rdquo; Tab in sheet.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;I keep configuration in google sheet so that in case if you want to change the threshold level or frequency of measurement taken , yoou don&amp;rsquo;t need to go to riverbed or waterbody and take Arduino out of box and reprogram it. Just simply change configuration details in google sheet and it will work . no need to reprogram Arduino for each time we change Flood parameters Configuration.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The System at a glance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So when the water rises, this happens in about 3&amp;ndash;4 seconds:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sensor sees distance drop&lt;/li&gt;
&lt;li&gt;Arduino detects it&amp;rsquo;s below threshold&lt;/li&gt;
&lt;li&gt;JSON sent to script&lt;/li&gt;
&lt;li&gt;Sheet updates&lt;/li&gt;
&lt;li&gt;Email alert sent&lt;/li&gt;
&lt;li&gt;Arduino confirms&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From splash to inbox &amp;mdash; all automated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why This Flow Works&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s &lt;strong&gt;modular&lt;/strong&gt;, &lt;strong&gt;lightweight&lt;/strong&gt;, and &lt;strong&gt;transparent&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Change the cloud? Just update the endpoint URL.&lt;/li&gt;
&lt;li&gt;Change sensors? Code barely changes.&lt;/li&gt;
&lt;li&gt;No complex cloud subscription, no hidden dependencies.&lt;/li&gt;
&lt;li&gt;Can be created multiple such small packets of devices at different places of the water body or river with unique names so can be get more clear picture of flood estimation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;rsquo;s simple enough for DIYers, yet structured enough for scaling. But for now we will be focused only on our useful tiny Project.&lt;/p&gt;</description></item><item><title>RE: Early Flood Warning and Monitoring System #2 - The Flow of Data</title><link>https://community.element14.com/thread/231848?ContentTypeID=1</link><pubDate>Sat, 15 Nov 2025 14:33:30 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4a1dccee-396e-48d7-a691-d0b517ab1eb8</guid><dc:creator>beacon_dave</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/231848?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56422/early-flood-warning-and-monitoring-system-2---the-flow-of-data/rss?ContentTypeId=0</wfw:commentRss><description>[quote userid="15394" url="~/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56422/early-flood-warning-and-monitoring-system-2---the-flow-of-data"]&lt;strong&gt;TDK Ultrasonic Sensors&lt;/strong&gt; measure water level distance from Sensor which is placed at Danger line marking.[/quote]
&lt;p&gt;You may want to place the sensor at some distance above the &amp;#39;danger line marking&amp;#39; as the rising water level could continue to rise well above this. Unless you are on flat land then the danger line marking is probably going to be based upon the lowest and first to be affected by rising water levels, which could be significantly different from the highest and last to be affected.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Power Management (EchoFill #5)</title><link>https://community.element14.com/thread/56413?ContentTypeID=0</link><pubDate>Fri, 14 Nov 2025 07:03:03 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1f41cc73-7167-47d6-b30e-8bd926ac4c62</guid><dc:creator>taifur</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/56413?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56413/power-management-echofill-5/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Power management is one of the challenging parts of a project. My device will be independent, battery-powered, as it will be placed on the rooftop tank; utility supply may not always be available. The device will be powered from a 18650 li-ion battery. The nominal voltage of a Li-ion battery is 3.7, which is not appropriate for an ESP8266 MCU board. I need to boost it to 5V or down it to 3.3V. Besides, I need a charging mechanism for the battery. I decided to use a Monocrystalline Solar Panel (5V, 1A) from DFRobot.&amp;nbsp;&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/444/solar_5F00_panel.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;The panel has an internal regulator and provides a constant 5V to the output through the USB port.&amp;nbsp;&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/444/solar.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;A&amp;nbsp;Li-ion battery requires a sensitive charging mechanism, and we can not directly connect a battery to a 5V supply. So, I manage the following UPS circuit for the battery, which takes 5V and charges the li-ion battery and also provides 5V constant output.&amp;nbsp;&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/444/c1.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;The circuit came with a separate battery holder. So, I soldered the battery holder with the circuit.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:379px;max-width:515px;" alt=" " height="379" src="https://community.element14.com/resized-image/__size/1030x758/__key/communityserver-discussions-components-files/444/c2.jpg" width="515" /&gt;&lt;/p&gt;
&lt;p&gt;The circuit has a jumper that must be shorted to enable the output.&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/444/c3.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;So, I added some solder and shorted the jumper to enable the 5V output.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:366px;max-width:594px;" alt=" " height="366" src="https://community.element14.com/resized-image/__size/1188x732/__key/communityserver-discussions-components-files/444/c4.jpg" width="594" /&gt;&lt;/p&gt;
&lt;p&gt;The 5V output is shown in the following image. This output will be provided to the Wemos D1 Mini board.&amp;nbsp;&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/444/c5.jpg" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The sensor required 8 to 18 V to its Vsup pin. I decided to provide 12V to this pin. So, I collected an MT3608 adjustable boost converter module and adjusted the output to 12V for 5V input.&amp;nbsp;&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/444/boost.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;I connected the power supply output to the input of the boost converter module and attached the multimeter to its output. Then I gradually adjusted the trim pot until the module&amp;rsquo;s output reached 12V.&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/444/IMG_5F00_2581.jpeg" /&gt;&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/444/IMG_5F00_2582.jpeg" /&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1ja0gsf7u0" class="product-name"&gt;&lt;/h1&gt;</description></item><item><title>Smart Blind Assistance Device #2:Hardware &amp; Sofware</title><link>https://community.element14.com/thread/56402?ContentTypeID=0</link><pubDate>Wed, 12 Nov 2025 21:42:30 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c14f7b3f-1af1-4345-9e6e-d71c4421e01b</guid><dc:creator>meera_hussien</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56402?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56402/smart-blind-assistance-device-2-hardware-sofware/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h2 id="mcetoc_1j9sr0e230"&gt;&lt;strong&gt;Block Diagram&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The figure below shows the simple block diagram for this project.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:362px;max-width:724px;" alt=" " height="362" src="https://community.element14.com/resized-image/__size/1448x724/__key/communityserver-discussions-components-files/444/Vibration-Motor.png" width="724" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j9sr0e231"&gt;&lt;strong&gt;The Hardware&lt;/strong&gt;&lt;/h2&gt;
&lt;h3 id="mcetoc_1j9sseeqld"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;Ultrasonic Sensor Demo Kit&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The first hardware that we would like to look at is the &lt;strong&gt;&lt;a href="https://www.tdk-electronics.tdk.com/en/ultrasonic_sensor_module" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;TDK Demo Kit&lt;/a&gt;&lt;/strong&gt;.&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;{gallery}My Gallery Title&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&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/444/photo_5F00_7_5F00_2025_2D00_11_2D00_13_5F00_05_2D00_44_2D00_13.jpg" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&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/444/photo_5F00_6_5F00_2025_2D00_11_2D00_13_5F00_05_2D00_44_2D00_13.jpg" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&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/444/photo_5F00_5_5F00_2025_2D00_11_2D00_13_5F00_05_2D00_44_2D00_13.jpg" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&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/444/photo_5F00_4_5F00_2025_2D00_11_2D00_13_5F00_05_2D00_44_2D00_13.jpg" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&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/444/photo_5F00_3_5F00_2025_2D00_11_2D00_13_5F00_05_2D00_44_2D00_13.jpg" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&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/444/photo_5F00_2_5F00_2025_2D00_11_2D00_13_5F00_05_2D00_44_2D00_13.jpg" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&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/444/photo_5F00_1_5F00_2025_2D00_11_2D00_13_5F00_05_2D00_44_2D00_13.jpg" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Figure below illustrate the hardware reference design of the TDK USSM Demo Board.&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/444/pastedimage1762979772087v21.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And below is the TDK B59110W2111W032 Ultrasonic sensor and its overview&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;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1762983659219v34.png" /&gt;&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;" alt=" " src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/444/pastedimage1762983578116v33.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The kit comes with the user interface software which can be downloaded &lt;a href="https://www.tdk-electronics.tdk.com/en/3126242/design-support/design-tools/ussm/tdk-demo-kit-software" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;here&lt;/a&gt;. The file is an executable file hence no installation is required. The figure below shows how the User Interface&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:434px;max-width:696px;" alt=" " height="434" src="https://community.element14.com/resized-image/__size/1392x868/__key/communityserver-discussions-components-files/444/pastedimage1762979207231v18.png" width="696" /&gt;&lt;/p&gt;
&lt;p&gt;Before we go in details into the demo board, lets go through the other main hardware that is used in this project as well&lt;/p&gt;
&lt;h3 id="mcetoc_1j9sr0e233"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;Arduino Nano 33 IoT&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;The next hardware that we would like into is the Arduino Nano 33 IoT. One of the main reason for me to choose this controller is because it comes with the on-board Wi-Fi module which is pretty much similar to ESP32.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:384px;max-width:384px;" alt=" " height="384" src="https://community.element14.com/resized-image/__size/768x768/__key/communityserver-discussions-components-files/444/pastedimage1762980035635v22.jpeg" width="384" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:488px;max-width:712px;" alt=" " height="488" src="https://community.element14.com/resized-image/__size/1424x976/__key/communityserver-discussions-components-files/444/pastedimage1762980197317v23.png" width="712" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j9sr0e234"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;Vibration Sensor &amp;amp; Buzzer&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;For the vibration sensor i will be using the&amp;nbsp;&lt;/span&gt;Seeed Studio Mini Vibration Motor&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/444/pastedimage1762980418618v24.jpeg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And as for the buzzer, i will be using the&amp;nbsp;&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:372px;max-width:391px;" alt=" " height="372" src="https://community.element14.com/resized-image/__size/782x744/__key/communityserver-discussions-components-files/444/pastedimage1762980603422v26.jpeg" width="391" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j9sr0e235"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;Power Supply Module&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;At the time of designing this, i am thinking of using the &lt;/span&gt;Lithium Battery TP4056 1A USB-C Charger with Protection as the charger controller&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;" alt=" " height="550" src="https://community.element14.com/resized-image/__size/1100x1100/__key/communityserver-discussions-components-files/444/pastedimage1762980767427v27.jpeg" width="550" /&gt;&lt;/p&gt;
&lt;p&gt;and the&amp;nbsp;3.7V 5000mAh LiPo Battery with JST-PH2.0 as the power source&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:393px;max-width:393px;" alt=" " height="393" src="https://community.element14.com/resized-image/__size/786x786/__key/communityserver-discussions-components-files/444/pastedimage1762980841229v28.png" width="393" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Please note that, the hardware the charging module may need to be changed in the future based on the testing.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;Now we have looked at the main hardware that is used in this project. The other hardware that is used in developing this project will be discussed later in other upcoming post. Now let&amp;#39;s move on to the software part.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h2 id="mcetoc_1j9stp34mk"&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;The Software&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;There will two main software that we will be using in this project. First is the TDK Ultrasonic Sensor User Interface and Arduino IDE. Since Arduino IDE is pretty straight forward, i will not be covering it here. We will look more into the&amp;nbsp;&lt;span&gt;TDK Ultrasonic Sensor User Interface.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;Inside the the Zip file there will be two files. One is the config folder and second is the executable file.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&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/444/pastedimage1762981572121v29.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;The config files consists the ml_models, STM32_Bootloader and other files&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:387px;max-width:731px;" alt=" " height="387" src="https://community.element14.com/resized-image/__size/1462x774/__key/communityserver-discussions-components-files/444/pastedimage1762982262717v31.png" width="731" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;The functions of each button in the GUI window is as explained below&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:524px;max-width:833px;" alt=" " height="524" src="https://community.element14.com/resized-image/__size/1666x1048/__key/communityserver-discussions-components-files/444/pastedimage1762983148854v32.png" width="833" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;That&amp;#39;s about the hardware and software used in this project. In the next post, we shall see how to get started with the TDK Ultrasonic Demo Kit&lt;/span&gt;&lt;/p&gt;
&lt;div class="footer-box"&gt;&lt;/div&gt;</description></item><item><title>RE: Smart Blind Assistance Device #2:Hardware &amp; Sofware</title><link>https://community.element14.com/thread/231814?ContentTypeID=1</link><pubDate>Thu, 13 Nov 2025 20:51:05 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1d430937-715a-46e0-8ce1-a727ebae5c50</guid><dc:creator>DAB</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/231814?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56402/smart-blind-assistance-device-2-hardware-sofware/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>RE: Interfacing TDK Ultrasonic Sensor with ESP8266 Board (EchoFill #4)</title><link>https://community.element14.com/thread/231812?ContentTypeID=1</link><pubDate>Thu, 13 Nov 2025 20:48:53 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:15b58894-a27f-4442-b998-da603694d0a2</guid><dc:creator>DAB</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/231812?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56404/interfacing-tdk-ultrasonic-sensor-with-esp8266-board-echofill-4/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>Interfacing TDK Ultrasonic Sensor with ESP8266 Board (EchoFill #4)</title><link>https://community.element14.com/thread/56404?ContentTypeID=0</link><pubDate>Thu, 13 Nov 2025 07:18:21 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:eb002d46-44bb-4f1f-9862-0b83aa3aa506</guid><dc:creator>taifur</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/56404?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56404/interfacing-tdk-ultrasonic-sensor-with-esp8266-board-echofill-4/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;My project needs an internet connection to send the water level to the cloud. So, I selected ESP8266-based Wemos D1 Mini board for its form factor and low price. As the connector of the TDK Ultrasonic sensor is not breadboard-friendly, I removed the official green connector from the sensor.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:473px;max-width:636px;" alt=" " height="473" src="https://community.element14.com/resized-image/__size/1272x946/__key/communityserver-discussions-components-files/444/con1.jpg" width="636" /&gt;&lt;/p&gt;
&lt;p&gt;Then I attached a breadboard-friendly 3-pin connector to the sensor wire.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:475px;max-width:636px;" alt=" " height="475" src="https://community.element14.com/resized-image/__size/1272x950/__key/communityserver-discussions-components-files/444/con2.jpg" width="636" /&gt;&lt;/p&gt;
&lt;p&gt;I added the TDK USSM Arduino library to my Arduino IDE. I opened the &lt;em&gt;single sensor cm&lt;/em&gt; measurement example file and tried to compile it for my Wemos D1 Mini board. Unfortunately, I was getting the following error messaage.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:374px;max-width:634px;" alt=" " height="374" src="https://community.element14.com/resized-image/__size/1268x748/__key/communityserver-discussions-components-files/444/Screenshot-2025_2D00_11_2D00_11-111805.png" width="634" /&gt;&lt;/p&gt;
&lt;p&gt;After doing some research and with the help of ChatGPT I was able to solve the problem by replacing STATUS with TDK_STATUS as shown in the image below.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:413px;max-width:502px;" alt=" " height="413" src="https://community.element14.com/resized-image/__size/1004x826/__key/communityserver-discussions-components-files/444/tdk_5F00_status.png" width="502" /&gt;&lt;/p&gt;
&lt;p&gt;After making the changes, the code was successfully compiled and uploaded to my board.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:505px;max-width:513px;" alt=" " height="505" src="https://community.element14.com/resized-image/__size/1026x1010/__key/communityserver-discussions-components-files/444/Screenshot-2025_2D00_11_2D00_11-111439.png" width="513" /&gt;&lt;/p&gt;
&lt;p&gt;After uploading the code to my ESP8266 board, I&amp;nbsp;provided 12V&amp;nbsp;to the sensor from my power supply.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:426px;max-width:643px;" alt=" " height="426" src="https://community.element14.com/resized-image/__size/1286x852/__key/communityserver-discussions-components-files/444/con3.jpg" width="643" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:459px;max-width:645px;" alt=" " height="459" src="https://community.element14.com/resized-image/__size/1290x918/__key/communityserver-discussions-components-files/444/con4.jpg" width="645" /&gt;&lt;/p&gt;
&lt;p&gt;I was getting the sensor data in the serial monitor, as shown in the screenshot below.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:401px;max-width:708px;" alt=" " height="401" src="https://community.element14.com/resized-image/__size/1416x802/__key/communityserver-discussions-components-files/444/Screenshot-2025_2D00_11_2D00_13-120650.png" width="708" /&gt;&lt;/p&gt;</description></item><item><title>Smart Blind Assistance Device #1: Introduction and Project Concept</title><link>https://community.element14.com/thread/56388?ContentTypeID=0</link><pubDate>Tue, 11 Nov 2025 11:48:00 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:aefc2056-0cb0-4ad6-bb04-6131d1cb0257</guid><dc:creator>meera_hussien</dc:creator><slash:comments>5</slash:comments><comments>https://community.element14.com/thread/56388?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56388/smart-blind-assistance-device-1-introduction-and-project-concept/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h1 id="mcetoc_1j9pi0pq80" style="text-align:center;"&gt;&lt;img style="max-height:194px;max-width:776px;" alt=" " height="194" src="https://community.element14.com/resized-image/__size/1552x388/__key/communityserver-discussions-components-files/444/Untitled-design-_2800_2_2900_.png" width="776" /&gt;&lt;/h1&gt;
&lt;h2 id="mcetoc_1j9pi0pq81"&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Mobility and independence are essential aspects of everyday life, yet for visually impaired individuals, navigating crowded or unfamiliar environments can be challenging and unsafe. The &lt;strong&gt;Smart Blind Assistance Device&lt;/strong&gt; aims to bridge this gap using advanced sensing technology and intelligent feedback mechanisms. By combining &lt;strong&gt;TDK&amp;rsquo;s USSM Plus-FS ultrasonic sensors&lt;/strong&gt; with haptic and audio feedback, the device enhances spatial awareness&amp;mdash;allowing users to detect obstacles in real time through vibration or sound cues.&lt;/p&gt;
&lt;p&gt;This project is developed as part of the &lt;strong&gt;TDK Ultrasonic Sensor Sensing Challenge&lt;/strong&gt;, which encourages creators to explore innovative ways to apply TDK&amp;rsquo;s high-performance sensing technology to real-world problems.&lt;/p&gt;
&lt;h2 id="mcetoc_1j9pi0pq82"&gt;&lt;strong&gt;Problem Statement&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Traditional white canes, while effective, offer limited sensing range and cannot detect elevated obstacles such as hanging signs, tables, or moving objects. Existing electronic aids are often expensive or cumbersome. The &lt;strong&gt;Smart Blind Assistance Device&lt;/strong&gt; is designed to be &lt;strong&gt;compact, lightweight, and affordable&lt;/strong&gt;, offering an intuitive feedback system that can easily be adapted into various form factors&amp;mdash;such as a wearable glove, a cane attachment, or a clip-on module.&lt;/p&gt;
&lt;h2 id="mcetoc_1j9pi0pq83"&gt;Project Concept&lt;/h2&gt;
&lt;p&gt;At the heart of this device lies the &lt;strong&gt;TDK USSM Plus-FS ultrasonic sensor&lt;/strong&gt;, a high-precision distance sensor that measures the proximity of nearby objects. The device continuously monitors its surroundings and translates the measured distance into &lt;em&gt;vibration intensity&lt;/em&gt; or &lt;em&gt;audio feedback&lt;/em&gt;, depending on how close the user is to an obstacle.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;ul&gt;
&lt;li&gt;When the object is &lt;strong&gt;far&lt;/strong&gt;, the vibration is weak or silent.&lt;/li&gt;
&lt;li&gt;As the object &lt;strong&gt;approaches&lt;/strong&gt;, the vibration strength increases.&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;very close obstacles&lt;/strong&gt;, a short audio or buzzer alert may trigger as a final warning.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;This intuitive sensory mapping allows users to build a mental picture of their environment without visual input, helping them move confidently and safely.&lt;/p&gt;
&lt;h2 id="mcetoc_1j9pi0pq84"&gt;System Overview&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Function&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TDK USSM Plus-FS Ultrasonic Sensor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Measures distance to obstacles using ultrasonic waves&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Arduino Nano 33 IoT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Controls sensors and processes data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vibration Motors&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Provide tactile (haptic) feedback proportional to distance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Buzzer or Audio Module (optional)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Provides auditory alerts for close obstacles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Battery &amp;amp; Charging Circuit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Powers the system for portable use&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img style="max-height:16px;width:auto;" alt="System Block Diagram" src="https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/p/block-diagram.jpg" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j9pi0pq85"&gt;&lt;strong&gt;Development Plan&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The project will be developed in five main phases, each covered in a dedicated post:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Introduction and Concept&lt;/strong&gt; (this post)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hardware and Circuit Design&lt;/strong&gt; &amp;ndash; connecting the TDK sensor, Arduino, and feedback modules&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firmware and Sensor Integration&lt;/strong&gt; &amp;ndash; programming distance detection and response logic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3D Enclosure Design&lt;/strong&gt; &amp;ndash; designing and printing the wearable shell&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing and Results&lt;/strong&gt; &amp;ndash; performance evaluation and final prototype demonstration&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1j9pi0pq86"&gt;&lt;strong&gt;Expected Impact&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;By leveraging TDK&amp;rsquo;s ultrasonic sensing capabilities, this device can become a &lt;strong&gt;low-cost assistive tool&lt;/strong&gt; for enhancing independent mobility among the visually impaired. It demonstrates how modern sensor technology can transform accessibility&amp;mdash;blending empathy, innovation, and practicality into a single, meaningful project.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j9pi0pq87"&gt;&lt;strong&gt;Unboxing The&amp;nbsp;&lt;span&gt;TDK Evaluation Board&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Now let&amp;#39;s do the unboxing of the TDK Evaluation Board.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;[View:/cfs-file/__key/communityserver-discussions-components-files/444/20251111_2D00_234632.avi:640:360]&lt;/p&gt;
&lt;h2 id="mcetoc_1j9pi0pq88"&gt;&lt;strong&gt;Next Steps&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;In the next blog post, &lt;em&gt;&lt;strong&gt;Smart Blind Assistance Device #2: Hardware and Circuit Design&lt;/strong&gt;&lt;/em&gt;, I&amp;rsquo;ll dive into the hardware setup, showing how the TDK USSM Plus-FS sensor interfaces with the Arduino Nano IoT, vibration motors, and buzzer.&lt;/p&gt;
&lt;div class="footer-box"&gt;
&lt;h3 id="mcetoc_1j9pi0pq89"&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="footer-box"&gt;&lt;/div&gt;</description></item><item><title>RE: Smart Blind Assistance Device #1: Introduction and Project Concept</title><link>https://community.element14.com/thread/231791?ContentTypeID=1</link><pubDate>Tue, 11 Nov 2025 23:04:33 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4183831b-ad41-4feb-ade7-a5d71376ad8d</guid><dc:creator>kmikemoo</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/231791?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56388/smart-blind-assistance-device-1-introduction-and-project-concept/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Fantastic idea.&amp;nbsp; Good luck on your project.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Measuring Water Level (EchoFill #3)</title><link>https://community.element14.com/thread/231789?ContentTypeID=1</link><pubDate>Tue, 11 Nov 2025 20:47:45 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:12738386-a6ec-4351-b240-a9b7519a5606</guid><dc:creator>DAB</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/231789?ContentTypeID=1</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56386/measuring-water-level-echofill-3/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Nice experiment, though curious result for the bottle.&lt;/p&gt;
&lt;p&gt;Given the better results with the open bucket you might well have been getting a lot of spurious echo&amp;#39;s confusing the sensor.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Measuring Water Level (EchoFill #3)</title><link>https://community.element14.com/thread/56386?ContentTypeID=0</link><pubDate>Mon, 10 Nov 2025 18:02:24 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:6c6a1837-3264-458c-8a95-d93d27711437</guid><dc:creator>taifur</dc:creator><slash:comments>5</slash:comments><comments>https://community.element14.com/thread/56386?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/challenges-projects/design-challenges/in-reach-ultrasonic-sensor-sensing-challenge/f/forum/56386/measuring-water-level-echofill-3/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;One of the main goals of my project is to measure the water level using the ultrasonic sensor. So, I was trying to measure the water level using the&amp;nbsp;&lt;span&gt;TDK Demo Kit. I used a 25-liter water jar and positioned the sensor unit at the top opening of the jar. After launching the demo kit software, I activated the sensor&amp;rsquo;s zero calibration. With this setup, the sensor measured a distance of 235 cm. I was a bit confused about the reading because the actual height of an empty jar should be more.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:517px;max-width:388px;" alt=" " height="517" src="https://community.element14.com/resized-image/__size/776x1034/__key/communityserver-discussions-components-files/444/IMG_5F00_2542.jpeg" width="388" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I filled one-third of the jar and measured the distance again. Surprisingly, I got the same reading from the sensor, which is shown in the following image.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:517px;max-width:388px;" alt=" " height="517" src="https://community.element14.com/resized-image/__size/776x1034/__key/communityserver-discussions-components-files/444/IMG_5F00_2551.jpeg" width="388" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I filled the jar to about half and still read the same value. I became very disappointed.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:519px;max-width:389px;" alt=" " height="519" src="https://community.element14.com/resized-image/__size/778x1038/__key/communityserver-discussions-components-files/444/IMG_5F00_2546.jpeg" width="389" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I continued the experiment and filled the jar to about two-thirds of its capacity, but the measured value remained unchanged.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:517px;max-width:388px;" alt=" " height="517" src="https://community.element14.com/resized-image/__size/776x1034/__key/communityserver-discussions-components-files/444/IMG_5F00_2549.jpeg" width="388" /&gt;&lt;/p&gt;
&lt;p&gt;I was quite disappointed with the reading, yet at the same time, curious to understand the reason behind it. I suspected that the narrow neck of the jar might be causing the inaccurate measurement. To eliminate this issue, I decided to use a water bucket instead of the jar. The bucket has a wide opening, which should prevent any obstruction or disturbance to the sensor readings. I made the following setup to measure the water level of the bucket using the sensor kit.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:517px;max-width:388px;" alt=" " height="517" src="https://community.element14.com/resized-image/__size/776x1034/__key/communityserver-discussions-components-files/444/IMG_5F00_2556.jpeg" width="388" /&gt;&lt;/p&gt;
&lt;p&gt;With a portion filled, I was getting the following result (not 235cm at this time!). The reading was around 165cm.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:516px;max-width:387px;" alt=" " height="516" src="https://community.element14.com/resized-image/__size/774x1032/__key/communityserver-discussions-components-files/444/IMG_5F00_2553.jpeg" width="387" /&gt;&lt;/p&gt;
&lt;p&gt;I added more water to the bucket until it was nearly full, and the sensor reading changed as expected. This confirmed that the previous error was for the narrow neck of the jar.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:516px;max-width:387px;" alt=" " height="516" src="https://community.element14.com/resized-image/__size/774x1032/__key/communityserver-discussions-components-files/444/IMG_5F00_2555.jpeg" width="387" /&gt;&lt;/p&gt;
&lt;p&gt;Since I plan to measure the water level in a large tank that doesn&amp;rsquo;t have a narrow opening, the sensor is unlikely to face any difficulties or produce errors in level detection. I got a very accurate level in the case of the water bucket.&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>