<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects on Richard Medyanto 的博客</title><link>https://richardmedyanto.github.io/zh-cn/categories/projects/</link><description>Recent content in Projects on Richard Medyanto 的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://richardmedyanto.github.io/zh-cn/categories/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>HBT Tools</title><link>https://richardmedyanto.github.io/zh-cn/p/hbt-tools/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/hbt-tools/</guid><description>&lt;blockquote>
&lt;p>本项目在台湾大学 IOED 实验室完成&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>HBT 的表征主要包括两个方面：&lt;strong>直流（DC）分析&lt;/strong>，通过 Gummel 曲线和输出特性曲线分析电流增益、理想因子和漏电流；以及 &lt;strong>射频/交流（RF/AC）分析&lt;/strong>，通过 S 参数测量提取小信号模型参数。在多个偏置点下手动完成这些分析既繁琐又容易出错，因此我开发了一套 Python 工具来自动化这一流程。&lt;/p>
&lt;h2 id="ioed-hbt-tools">IOED HBT Tools
&lt;/h2>&lt;p>&lt;strong>IOED HBT Tools&lt;/strong> 是一个基于 &lt;a class="link" href="https://streamlit.io" target="_blank" rel="noopener"
>Streamlit&lt;/a> 的 Web 应用，用于 HBT 的 DC 分析、RF 表征、小信号模型（SSM）提取以及参数调优。该工具完全使用 Python 编写，可在 &lt;a class="link" href="https://hbt-tools.streamlit.app/" target="_blank" rel="noopener"
>Streamlit 在线服务器&lt;/a> 或本地运行。&lt;/p>
&lt;p>源代码已开源于 GitHub：
&lt;a class="link" href="https://github.com/ioedhbt/hbt-tools/tree/IOED-Tools" target="_blank" rel="noopener"
>ioedhbt/hbt-tools (IOED-Tools 分支)&lt;/a>&lt;/p>
&lt;h2 id="直流分析">直流分析
&lt;/h2>&lt;p>Gummel 分析模块可导入测量得到的 Gummel 曲线数据，并叠加多个偏置点以进行对比。基极电流和集电极电流的理想因子通过对每条曲线的对数-线性斜率自动提取。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/hbt-tools/dc_gummel.png"
width="1361"
height="883"
srcset="https://richardmedyanto.github.io/p/hbt-tools/dc_gummel_hu094fb20538a178161094ca53c593db01_69204_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/hbt-tools/dc_gummel_hu094fb20538a178161094ca53c593db01_69204_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="图：带理想因子提取的 Gummel 曲线"
class="gallery-image"
data-flex-grow="154"
data-flex-basis="369px"
>&lt;/p>
&lt;h2 id="射频提取与小信号模型拟合">射频提取与小信号模型拟合
&lt;/h2>&lt;p>RF 提取模块读取多偏置点的 &lt;code>.s2p&lt;/code> S 参数文件，执行开路/短路去嵌（de-embedding），并计算增益与稳定性指标，包括 |h₂₁|²、Mason 单向增益 U，以及 Rollett 稳定因子 K。在此基础上，按照 Cheng 等人（&lt;em>Microelectronics Journal&lt;/em>, 121, 2022）的方法提取小信号等效电路模型。&lt;/p>
&lt;p>随后，将提取的模型与测量得到的 S 参数进行拟合。下方的 Bode 图/Smith 图展示了拟合后的 S21 幅度与相位，表明模型与测量结果在频率范围内具有良好一致性。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/hbt-tools/smith_bode.png"
width="1767"
height="770"
srcset="https://richardmedyanto.github.io/p/hbt-tools/smith_bode_hua4f11232138af7f682901587a644330f_189125_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/hbt-tools/smith_bode_hua4f11232138af7f682901587a644330f_189125_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="图：SSM 拟合后的 S21/Bode 图"
class="gallery-image"
data-flex-grow="229"
data-flex-basis="550px"
>&lt;/p>
&lt;h2 id="gpu-加速参数调优">GPU 加速参数调优
&lt;/h2>&lt;p>为应对模型参数优化过程中庞大的组合搜索空间，该调优引擎支持通过 &lt;strong>CuPy 实现 CUDA 加速&lt;/strong>。其实现包含自适应批处理大小机制：根据可用显存自动调整每次迭代的计算规模，在资源允许时扩大批次，在显存不足时缩小规模，从而避免在 Windows WDDM 驱动下频繁清空内存池。这使得大规模并行参数扫描成为可能，而在仅使用 CPU 的情况下几乎不可实现。&lt;/p></description></item><item><title>OPTIC 2025</title><link>https://richardmedyanto.github.io/zh-cn/p/optic-2025/</link><pubDate>Wed, 10 Dec 2025 15:46:19 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/optic-2025/</guid><description>&lt;blockquote>
&lt;p>本项目在台湾大学 IOED 实验室完成&lt;/p>
&lt;/blockquote>
&lt;h2 id="optic-2025">OPTIC 2025
&lt;/h2>&lt;p>我有机会在 &lt;strong>Optics &amp;amp; Photonics Taiwan International Conference (OPTIC) 2025&lt;/strong>（2025 年 12 月举办）上展示我的研究成果。这是一次非常宝贵的经历，让我能够与来自光电子领域的研究人员和工程师分享我们在异质结光电晶体管方面的工作，并深入了解光子学和半导体器件研究的最新进展。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/optic-2025/optic.jpg"
width="2268"
height="4032"
srcset="https://richardmedyanto.github.io/p/optic-2025/optic_hu8cbddf9cd217b539c0aef8547def8b8a_3013771_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/optic-2025/optic_hu8cbddf9cd217b539c0aef8547def8b8a_3013771_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="参加 OPTIC 2025"
class="gallery-image"
data-flex-grow="56"
data-flex-basis="135px"
>&lt;/p>
&lt;h2 id="研究">研究
&lt;/h2>&lt;p>我们的研究探讨了 &lt;strong>单量子阱异质结光电晶体管（SQW-HPT）&lt;/strong> 的波长依赖光电流响应。这类器件结合了异质结双极型晶体管（HBT）的电流增益特性以及量子阱的光吸收能力。通过使用 830 nm 和 905 nm 激光二极管照射器件，我们研究了不同光子能量如何影响载流子产生，进而影响晶体管输出。&lt;/p>
&lt;p>核心概念是，在光照条件下，耗尽区中光生载流子会作为一种“光致基极电流”，并被晶体管的内在增益放大。下方的能带图展示了晶体管在光输入下的工作原理：光子在量子阱和耗尽区附近被吸收，产生并驱动载流子，从而形成光电流。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/optic-2025/fig1.png"
width="707"
height="526"
srcset="https://richardmedyanto.github.io/p/optic-2025/fig1_hu3e4148f1fbe82084728ea619f575f53f_98027_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/optic-2025/fig1_hu3e4148f1fbe82084728ea619f575f53f_98027_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="光照条件下的能带图与器件结构"
class="gallery-image"
data-flex-grow="134"
data-flex-basis="322px"
>&lt;/p>
&lt;p>由于 830 nm 光具有更短的波长（更高的光子能量），相比 905 nm 光，在基于 GaAs 的有源层中吸收更强。这会产生更大的光生电流，在基极-集电极（BC）二极管特性中表现为更高的反向电流幅值，并在 Ic–Vce 特性曲线中体现为更大的集电极电流。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/optic-2025/fig23.png"
width="1007"
height="775"
srcset="https://richardmedyanto.github.io/p/optic-2025/fig23_hu1ace7a6d811ced3e85216c553e484cb2_304539_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/optic-2025/fig23_hu1ace7a6d811ced3e85216c553e484cb2_304539_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="830 nm 与 905 nm 光照下的 BC 二极管特性与 Ic-Vce 曲线族"
class="gallery-image"
data-flex-grow="129"
data-flex-basis="311px"
>&lt;/p>
&lt;p>这些结果验证了 SQW-HPT 的波长选择性特性，使其成为波长选择型光电探测器以及光电集成电路（OEIC）应用的有前景候选器件。&lt;/p></description></item><item><title>InP HBT</title><link>https://richardmedyanto.github.io/zh-cn/p/inp-hbt/</link><pubDate>Wed, 16 Jul 2025 15:46:19 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/inp-hbt/</guid><description>&lt;blockquote>
&lt;p>本项目在台湾大学 IOED 实验室完成&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>&lt;strong>异质结双极型晶体管（HBT）&lt;/strong> 是一种在不同区域采用不同材料的晶体管，而不是像硅器件那样仅使用单一材料。与只使用单一载流子的场效应晶体管（FET）不同，HBT 同时利用电子和空穴导电。与基于单一材料的晶体管（如 BJT）相比，这种异质结结构具有更高的电流增益、更快的开关速度、更高的功率效率以及更好的设计灵活性。这些优势使其非常适用于高频放大器和通信领域。&lt;/p>
&lt;p>其中一个应用实例是基于 InP 的太赫兹 HBT，可用于产生或放大太赫兹波，在未来 6G 网络中有望实现超高速（&amp;gt;100 Gb/s）无线通信。&lt;/p>
&lt;h2 id="器件">器件
&lt;/h2>&lt;p>&lt;img src="https://richardmedyanto.github.io/p/inp-hbt/hbt.jpg"
width="1390"
height="929"
srcset="https://richardmedyanto.github.io/p/inp-hbt/hbt_huba59d17bf525733f84d6e242907af411_98620_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/inp-hbt/hbt_huba59d17bf525733f84d6e242907af411_98620_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：发射极尺寸为 10 μm 的 HBT 器件"
class="gallery-image"
data-flex-grow="149"
data-flex-basis="359px"
>&lt;/p>
&lt;p>HBT 由三个区域组成：发射极、基极和集电极。&lt;/p>
&lt;h2 id="制程工艺">制程工艺
&lt;/h2>&lt;p>该器件的外延结构生长在 InP 衬底上。在我们的实验室中，我们使用 MA6 进行光刻，通过湿法刻蚀形成台面结构（mesa），随后沉积金属电极。之后进行退火处理，以实现与半导体之间的欧姆接触。&lt;/p>
&lt;h2 id="直流测量">直流测量
&lt;/h2>&lt;p>下图展示了 Gummel 曲线和输出特性曲线（family curves）。在本次实验中，我们在发射极尺寸为 20 μm 的器件上获得了最大电流增益（β）为 14.6。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/inp-hbt/gummel.png"
width="3216"
height="2462"
srcset="https://richardmedyanto.github.io/p/inp-hbt/gummel_hu17d21aeeb59337eb58c628114141a3cb_86340_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/inp-hbt/gummel_hu17d21aeeb59337eb58c628114141a3cb_86340_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="图：Gummel 曲线"
class="gallery-image"
data-flex-grow="130"
data-flex-basis="313px"
>
&lt;img src="https://richardmedyanto.github.io/p/inp-hbt/family.png"
width="3216"
height="2462"
srcset="https://richardmedyanto.github.io/p/inp-hbt/family_hu031f2db45f58cc7faf6dee184437f2ad_68986_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/inp-hbt/family_hu031f2db45f58cc7faf6dee184437f2ad_68986_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="图：输出特性曲线"
class="gallery-image"
data-flex-grow="130"
data-flex-basis="313px"
>&lt;/p>
&lt;h2 id="后续工作">后续工作
&lt;/h2>&lt;p>为了实现射频（RF）器件，还需要进一步优化工艺。目前我们在 IOED 实验室重点改进的方向包括：降低接触电阻至 1e-8 Ω·cm²、表面钝化以及提高良率。&lt;/p></description></item><item><title>基于微控制器 ESP32 的自动定日镜导向系统</title><link>https://richardmedyanto.github.io/zh-cn/p/heliostat/</link><pubDate>Tue, 01 Aug 2023 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/heliostat/</guid><description>&lt;blockquote>
&lt;p>本项目为我的本科毕业设计。研究成果已在 &lt;a class="link" href="https://stei.itb.ac.id/iceei2023/" target="_blank" rel="noopener"
>ICEEI 2023&lt;/a> 发表，并发表于论文（DOI：&lt;a class="link" href="https://doi.org/10.1109/ICEEI59426.2023.10346650" target="_blank" rel="noopener"
>10.1109/ICEEI59426.2023.10346650&lt;/a>）。&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>太阳能是一种可再生能源，通常通过光伏（太阳能电池板）转换为电能。然而，太阳能电池板的效率较低，因此需要探索其他替代方案，例如定日镜（heliostat）。&lt;/p>
&lt;p>定日镜是一种用于聚光太阳能发电（CSP）系统的装置，通过将阳光反射到锅炉上来产生电能。然而，其较高的投资成本仍然是发展中的主要障碍。&lt;/p>
&lt;p>本研究致力于开发一种能够在一天中持续将阳光反射到目标上的定日镜系统。&lt;/p>
&lt;h2 id="方法">方法
&lt;/h2>&lt;p>定日镜通过在两个轴上移动镜面来工作：方位角轴（azimuth）和仰角轴（elevation）。这两个轴也用于表示在特定时间和地点太阳的位置。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/heliostat/az_elevation.jpg"
width="592"
height="425"
srcset="https://richardmedyanto.github.io/p/heliostat/az_elevation_hubf50283249f7b1118ecbd1cc2d912568_6670_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/heliostat/az_elevation_hubf50283249f7b1118ecbd1cc2d912568_6670_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="方位角与仰角示意图。来源：https://www.celestis.com/resources/faq/what-are-the-azimuth-and-elevation-of-a-satellite/"
class="gallery-image"
data-flex-grow="139"
data-flex-basis="334px"
>&lt;/p>
&lt;p>太阳的位置可以通过 &lt;a class="link" href="https://gml.noaa.gov/grad/solcalc/" target="_blank" rel="noopener"
>NOAA Solar Calculator&lt;/a> 进行算法计算。在获得太阳的方位角与仰角后，可以调整镜面位置，使反射光始终照射在目标上。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/heliostat/reflection1.png"
width="664"
height="551"
srcset="https://richardmedyanto.github.io/p/heliostat/reflection1_hu9476ef283d5350be1703ff5549e97f8b_51465_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/heliostat/reflection1_hu9476ef283d5350be1703ff5549e97f8b_51465_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="定日镜将阳光反射至目标"
class="gallery-image"
data-flex-grow="120"
data-flex-basis="289px"
> &lt;img src="https://richardmedyanto.github.io/p/heliostat/reflection2.png"
width="643"
height="549"
srcset="https://richardmedyanto.github.io/p/heliostat/reflection2_huff564e38fe801c0fc8ae0a7490953cfd_54572_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/heliostat/reflection2_huff564e38fe801c0fc8ae0a7490953cfd_54572_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="镜面转动角速度为太阳的一半"
class="gallery-image"
data-flex-grow="117"
data-flex-basis="281px"
>&lt;/p>
&lt;p>镜面应位于太阳与目标之间。系统可以用如下框图表示：&lt;img src="https://richardmedyanto.github.io/p/heliostat/block-diagram.png"
width="973"
height="277"
srcset="https://richardmedyanto.github.io/p/heliostat/block-diagram_hu48f147ff572c80a63013da167a1a9284_39279_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/heliostat/block-diagram_hu48f147ff572c80a63013da167a1a9284_39279_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="351"
data-flex-basis="843px"
>&lt;/p>
&lt;p>定日镜需要使用加速度计与陀螺仪传感器，以及磁力计来检测镜面的姿态，并通过舵机进行控制。&lt;/p>
&lt;p>这是我在 Desmos 中制作的动画，展示了最终系统的理想行为。红线表示镜面，黄线表示入射阳光，绿线表示反射光。&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/W6gKNx95SNQ"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;h2 id="原型">原型
&lt;/h2>&lt;p>为该系统设计了电路板（PCB）以承载所需的电子元件。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/heliostat/pcb-design.png"
width="652"
height="677"
srcset="https://richardmedyanto.github.io/p/heliostat/pcb-design_hua888925467d428e5abc55bff0264dd12_162461_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/heliostat/pcb-design_hua888925467d428e5abc55bff0264dd12_162461_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="使用 KiCad 设计的 PCB"
class="gallery-image"
data-flex-grow="96"
data-flex-basis="231px"
> &lt;img src="https://richardmedyanto.github.io/p/heliostat/pcb-result.png"
width="697"
height="657"
srcset="https://richardmedyanto.github.io/p/heliostat/pcb-result_hu2839f3b5925e840c3e13cea2ab6b2051_553793_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/heliostat/pcb-result_hu2839f3b5925e840c3e13cea2ab6b2051_553793_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="实物 PCB"
class="gallery-image"
data-flex-grow="106"
data-flex-basis="254px"
>&lt;/p>
&lt;p>随后，将元件焊接并组装至外壳中，如下图所示。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/heliostat/assembled-pcb.jpeg"
width="1599"
height="1200"
srcset="https://richardmedyanto.github.io/p/heliostat/assembled-pcb_hu0b327af37290d355e37e6fe9cb9b8597_184129_480x0_resize_q75_box.jpeg 480w, https://richardmedyanto.github.io/p/heliostat/assembled-pcb_hu0b327af37290d355e37e6fe9cb9b8597_184129_1024x0_resize_q75_box.jpeg 1024w"
loading="lazy"
alt="组装完成的 PCB"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
> &lt;img src="https://richardmedyanto.github.io/p/heliostat/heliostat.png"
width="1397"
height="2398"
srcset="https://richardmedyanto.github.io/p/heliostat/heliostat_hu07ff64f6e609f71fae3475fe34a685d9_1571996_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/heliostat/heliostat_hu07ff64f6e609f71fae3475fe34a685d9_1571996_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="定日镜装置"
class="gallery-image"
data-flex-grow="58"
data-flex-basis="139px"
>&lt;/p>
&lt;h2 id="结果">结果
&lt;/h2>&lt;p>我们进行了实验，以评估系统在保持阳光反射至目标方面的性能，以及其对目标的加热效果。以下为定日镜的演示视频（可开启字幕观看）。&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/LS8yblDopR0"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;p>由反射阳光引起的温度变化如下图所示：&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/heliostat/test-graph.png"
width="784"
height="534"
srcset="https://richardmedyanto.github.io/p/heliostat/test-graph_hu2300b8b88604c29be3648b139124d602_46533_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/heliostat/test-graph_hu2300b8b88604c29be3648b139124d602_46533_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="146"
data-flex-basis="352px"
>&lt;/p>
&lt;h2 id="结论">结论
&lt;/h2>&lt;p>定日镜可以通过计算太阳与目标的位置来确定镜面角度，从而实现对反射光的控制。所开发的原型成功提高了目标区域的温度。&lt;/p></description></item><item><title>IoT 技术应用于 Depok 水培社区</title><link>https://richardmedyanto.github.io/zh-cn/p/depok-iot-hydroponics/</link><pubDate>Wed, 01 Mar 2023 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/depok-iot-hydroponics/</guid><description>&lt;h2 id="背景">背景
&lt;/h2>&lt;p>本项目与德波市地方政府食品安全、农业与渔业局合作完成。项目由 BINUS ASO 讲师 Muhammad Zacky Asyari 先生发起。我参与其中，负责基于 ESP32 与 ESP32-CAM 开发参数控制与摄像监控模块。项目团队共有来自我校的 12 名成员，分别负责仪表盘设计、原型制作以及社区培训等不同工作。&lt;/p>
&lt;h2 id="调研">调研
&lt;/h2>&lt;p>在系统开发之前，我曾跟随 Zacky 先生与德波市政府官员一同前往当地的水培农场进行调研。在参观多个农场并与农场主交流后发现，由于人力不足，当工作人员外出休假时，植物因缺乏营养补给而死亡。&lt;/p>
&lt;p>因此，本项目旨在实现水培营养添加过程的自动化，并对水培植物的环境与参数进行监测。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/depok-iot-hydroponics/observation.jpg"
width="1280"
height="589"
srcset="https://richardmedyanto.github.io/p/depok-iot-hydroponics/observation_hu4331118a1209d7f2674de439a9db2c55_234405_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/depok-iot-hydroponics/observation_hu4331118a1209d7f2674de439a9db2c55_234405_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="德波实地调研"
class="gallery-image"
data-flex-grow="217"
data-flex-basis="521px"
>&lt;/p>
&lt;h2 id="系统">系统
&lt;/h2>&lt;p>系统使用 TDS 与 pH 传感器检测植物水质参数，使用温湿度传感器监测植物生长环境，并使用超声波传感器监测储水罐水位。&lt;/p>
&lt;p>为了控制植物所需的营养与酸碱度，系统采用 20×4 LCD 显示屏显示参数，用户可通过屏幕下方的 4 个按键进行调节。系统使用 4 个泵，通过继电器连接微控制器，用于添加营养液以及 pH 上调/下调溶液。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/depok-iot-hydroponics/device.jpg"
width="1280"
height="590"
srcset="https://richardmedyanto.github.io/p/depok-iot-hydroponics/device_hu8bfb1e7474d55ced9a96e0313fbc48bc_49611_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/depok-iot-hydroponics/device_hu8bfb1e7474d55ced9a96e0313fbc48bc_49611_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="设备实物"
class="gallery-image"
data-flex-grow="216"
data-flex-basis="520px"
>&lt;/p>
&lt;p>同时，我们使用 ThingsBoard 构建了数据仪表盘，用于通过移动设备监控系统状态。另一个独立子系统使用 ESP32-CAM 拍摄植物图像，并将照片上传至 Google Drive，用于远程监控植物状况。&lt;/p>
&lt;h2 id="证书">证书
&lt;/h2>&lt;p>&lt;img src="https://richardmedyanto.github.io/p/depok-iot-hydroponics/certificate.jpg"
width="1227"
height="861"
srcset="https://richardmedyanto.github.io/p/depok-iot-hydroponics/certificate_hu1db778a6584aed19c9c08fe71bd21b3e_186212_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/depok-iot-hydroponics/certificate_hu1db778a6584aed19c9c08fe71bd21b3e_186212_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="项目证书"
class="gallery-image"
data-flex-grow="142"
data-flex-basis="342px"
>&lt;/p></description></item><item><title>智慧汽车系统</title><link>https://richardmedyanto.github.io/zh-cn/p/smart-car/</link><pubDate>Fri, 08 Jul 2022 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/smart-car/</guid><description>&lt;blockquote>
&lt;p>本项目为我本科第六学期课程 &lt;em>Microcontroller Design and Application、Automotive Engineering、Computer System Development and Methodology&lt;/em> 的期末项目。&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>2020 年，印度尼西亚因交通事故死亡人数达到 30,668 人，成为继健康相关死亡之后的第二大死亡原因。&lt;/p>
&lt;p>暴露在阳光下的汽车车厢可能会变得非常炎热，从而引发化学反应，产生有害气体。此外，处于高温环境中的人也可能会遭受中暑。&lt;/p>
&lt;p>根据道路安全行动网络（Safe Distance）的数据，2016 年有 33.63% 的事故发生在 18:00 至 24:00 之间，这表明低光照条件可能是重要原因之一。&lt;/p>
&lt;h2 id="解决方案">解决方案
&lt;/h2>&lt;p>设计一个集成多种智能功能的智能汽车系统，以解决上述问题。&lt;/p>
&lt;h2 id="功能">功能
&lt;/h2>&lt;ul>
&lt;li>定速巡航&lt;/li>
&lt;li>碰撞预防&lt;/li>
&lt;li>自动车厢降温系统&lt;/li>
&lt;li>自动车灯系统&lt;/li>
&lt;li>摄像头监控系统&lt;/li>
&lt;/ul>
&lt;h2 id="系统框图">系统框图
&lt;/h2>&lt;p>以下为原型系统的框图：&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/smart-car/block-diagram.png"
width="1403"
height="781"
srcset="https://richardmedyanto.github.io/p/smart-car/block-diagram_hud83c503222383e897b29d7a1416fbf0d_35386_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/smart-car/block-diagram_hud83c503222383e897b29d7a1416fbf0d_35386_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="框图"
class="gallery-image"
data-flex-grow="179"
data-flex-basis="431px"
>&lt;/p>
&lt;p>作为一个集成系统，该原型使用多个微控制器，并通过 I2C 进行通信。同时，系统使用多种传感器来检测环境输入。例如，ESP32 接收来自 TEMT6000 的光强信号，而 Arduino Uno 则接收来自 4 个 HC-SR04 超声波传感器的距离数据。&lt;/p>
&lt;h2 id="原型">原型
&lt;/h2>&lt;p>&lt;img src="https://richardmedyanto.github.io/p/smart-car/prototype.png"
width="873"
height="755"
srcset="https://richardmedyanto.github.io/p/smart-car/prototype_hu6c7c44ac7522600e0f57bb5a36aeeedd_933769_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/smart-car/prototype_hu6c7c44ac7522600e0f57bb5a36aeeedd_933769_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="原型"
class="gallery-image"
data-flex-grow="115"
data-flex-basis="277px"
>&lt;/p>
&lt;h2 id="演示">演示
&lt;/h2>&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/sk2ViFiFlVM"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div></description></item><item><title>Python 语言单词卡</title><link>https://richardmedyanto.github.io/zh-cn/p/flashcard-python/</link><pubDate>Thu, 21 Apr 2022 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/flashcard-python/</guid><description>&lt;blockquote>
&lt;p>本项目是我基于在线课程所学习的闪卡（flashcard）应用进行的改进版本。&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/flashcard-python/demo-white.jpg"
width="286"
height="254"
srcset="https://richardmedyanto.github.io/p/flashcard-python/demo-white_hude1f93b63fd7970848fea9ad7e31467e_8715_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/flashcard-python/demo-white_hude1f93b63fd7970848fea9ad7e31467e_8715_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="112"
data-flex-basis="270px"
>
&lt;img src="https://richardmedyanto.github.io/p/flashcard-python/demo-green.jpg"
width="300"
height="266"
srcset="https://richardmedyanto.github.io/p/flashcard-python/demo-green_hue9cabaaa6a5fff3c2b83053177b07e64_7952_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/flashcard-python/demo-green_hue9cabaaa6a5fff3c2b83053177b07e64_7952_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="112"
data-flex-basis="270px"
>&lt;/p>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>学习一门新语言最困难的部分之一是词汇积累。对于母语使用拉丁字母的人来说，如果目标语言使用不同书写系统，这一过程会更加困难。&lt;/p>
&lt;p>以中文为例，汉语使用的书写系统是汉字（hànzì，汉字）。汉字可以说是学习中文过程中最大的挑战之一。虽然汉语存在拼音系统（pīnyīn），但拼音主要用于学习阶段，学习者仍然需要掌握汉字本身。&lt;/p>
&lt;h2 id="动机">动机
&lt;/h2>&lt;p>我开发这个闪卡项目的初衷是为了学习中文，同时也展示一些 Python 编程能力。幸运的是，我在 Udemy 上学习的一门课程（&lt;a class="link" href="https://www.udemy.com/course/100-days-of-code" target="_blank" rel="noopener"
>100 Days of Code&lt;/a>，非常推荐）介绍了闪卡应用的基本框架，于是我在此基础上进行了修改，使其可以同时用于学习日语和中文。&lt;/p>
&lt;h2 id="结果">结果
&lt;/h2>&lt;p>以下是应用的一些截图：&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/flashcard-python/languages.jpg"
width="365"
height="267"
srcset="https://richardmedyanto.github.io/p/flashcard-python/languages_huc66aaf202b13a2a54cd7004a55145fe4_10706_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/flashcard-python/languages_huc66aaf202b13a2a54cd7004a55145fe4_10706_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="136"
data-flex-basis="328px"
>
&lt;img src="https://richardmedyanto.github.io/p/flashcard-python/menu2.jpg"
width="303"
height="415"
srcset="https://richardmedyanto.github.io/p/flashcard-python/menu2_hud4a92599d0eaab6730c0fb4185afc51a_15439_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/flashcard-python/menu2_hud4a92599d0eaab6730c0fb4185afc51a_15439_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="73"
data-flex-basis="175px"
>
&lt;img src="https://richardmedyanto.github.io/p/flashcard-python/no_pinyin.jpg"
width="420"
height="382"
srcset="https://richardmedyanto.github.io/p/flashcard-python/no_pinyin_huc4fa40eae35da12c77b74f4f3a85274c_12994_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/flashcard-python/no_pinyin_huc4fa40eae35da12c77b74f4f3a85274c_12994_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="109"
data-flex-basis="263px"
>&lt;/p>
&lt;p>源码： &lt;a class="link" href="https://github.com/richardmedyanto/language-flashcard" target="_blank" rel="noopener"
>Github&lt;/a>&lt;/p></description></item><item><title>VHDL 实现 FIR 与 IIR 滤波器</title><link>https://richardmedyanto.github.io/zh-cn/p/fir-iir-vhdl/</link><pubDate>Mon, 14 Mar 2022 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/fir-iir-vhdl/</guid><description>&lt;blockquote>
&lt;p>本项目是在我担任数字系统课程助教期间完成的。&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>在本科第五学期期间，我作为课程助教为 70 名低年级学生教授数字系统课程。在任课教师 Ir. Sofyan, S.Kom., M.Eng. 的指导下，我负责教学与协助学生完成课程项目，主要讲解 FIR（有限冲激响应）与 IIR（无限冲激响应）滤波器的实现，以支持他们的期末项目开发。&lt;/p>
&lt;h2 id="数字滤波器与优化">数字滤波器与优化
&lt;/h2>&lt;p>数字滤波器接收离散输入并输出滤波后的离散信号，可用于滤除高频、低频或特定频段的信号，广泛应用于传感器处理与各类算法中。常见的数字滤波器包括 FIR 与 IIR。&lt;/p>
&lt;p>FIR 滤波器实现较为简单，通常通过移位寄存器、乘法与加法实现滤波输出，但其缺点是为了获得良好的频率响应，需要较高阶数。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/fir-iir-vhdl/fir.png"
width="1920"
height="1080"
srcset="https://richardmedyanto.github.io/p/fir-iir-vhdl/fir_hub254b05f6ffab2be01091377531453b8_225069_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/fir-iir-vhdl/fir_hub254b05f6ffab2be01091377531453b8_225069_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="FIR filter. Image taken from O&amp;rsquo;Reilly website"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>&lt;/p>
&lt;p>相比之下，IIR 滤波器在较低阶数下即可获得较好的频率响应，相较 FIR 具有更低的计算与存储开销。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/fir-iir-vhdl/iir.png"
width="1920"
height="1080"
srcset="https://richardmedyanto.github.io/p/fir-iir-vhdl/iir_huc2dce436016d1e3302dd98ad0364ab8e_151786_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/fir-iir-vhdl/iir_huc2dce436016d1e3302dd98ad0364ab8e_151786_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="IIR filter. Image taken from National Instruments website"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>&lt;/p>
&lt;p>在上述图中（级联二阶结构形式），系统需要进行多次乘法与加法运算。通常情况下，可以为每个运算单元设计独立硬件，例如一个 section 需要 5 个乘法器和 5 个加法器。但这种并行实现会极大消耗硬件资源，因为乘法与加法属于组合逻辑电路，在 FPGA/CPLD 上资源有限。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/fir-iir-vhdl/iir-problem.png"
width="1920"
height="1080"
srcset="https://richardmedyanto.github.io/p/fir-iir-vhdl/iir-problem_hudf1af61ee2f920d72c7bc38e239f679a_150641_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/fir-iir-vhdl/iir-problem_hudf1af61ee2f920d72c7bc38e239f679a_150641_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="IIR filter 的潜在问题"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>&lt;/p>
&lt;p>因此可以利用时钟频率远高于数据更新速率的特点，将原本并行计算改为顺序执行。通过一个乘加单元（multiply-accumulate, MAC）按顺序完成所有计算，而不是使用多个并行计算单元。这类似于用一台计算器依次完成 10 次计算，而不是使用 10 台计算器同时计算。由于输入来自不同路径，需要使用多路复用器（MUX）来选择输入源。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/fir-iir-vhdl/multiply-accumulate.png"
width="1920"
height="1080"
srcset="https://richardmedyanto.github.io/p/fir-iir-vhdl/multiply-accumulate_hu47a537820f931851913438263be0691a_119044_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/fir-iir-vhdl/multiply-accumulate_hu47a537820f931851913438263be0691a_119044_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Multiply-accumulate approach"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>&lt;/p>
&lt;p>最终实现的 VHDL 程序基于级联二阶结构，实现 FIR 与 IIR 滤波器的数字设计优化版本，以减少硬件资源占用。滤波器增益系数通过 MATLAB Filter Design 计算，并转换为二进制以满足设计规格。完整 VHDL 代码可在 &lt;a class="link" href="https://github.com/richardmedyanto/DigitalSystem" target="_blank" rel="noopener"
>Github&lt;/a> 查看。&lt;/p>
&lt;h2 id="结论">结论
&lt;/h2>&lt;p>最终实现了 7 阶 FIR 滤波器与 6 阶 IIR 滤波器的 VHDL 设计，两者输入与输出均为 8 位。优化后的 IIR 滤波器采用顺序处理的乘加结构，而非纯组合逻辑实现。&lt;/p>
&lt;h2 id="课程讲义">课程讲义
&lt;/h2>&lt;p>我为课程每一节都制作了讲义幻灯片。可在此查看：&lt;a class="link" href="https://drive.google.com/drive/folders/1CD6J7lh3XZlzTd88AjCnveswjOvHbajx?usp=sharing" target="_blank" rel="noopener"
>讲义链接&lt;/a>。FIR 与 IIR 实现内容位于文件夹中的第 15 周讲义。&lt;/p>
&lt;h2 id="参考资料">参考资料
&lt;/h2>&lt;p>&lt;a class="link" href="https://www.oreilly.com/library/view/digital-filters-design/9781905209453/ch007-sec002.html" target="_blank" rel="noopener"
>FIR illustration&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="https://www.ni.com/docs/en-US/bundle/labview-digital-filter-design-toolkit-api-ref/page/lvdfdtconcepts/iir_sos_specs.html" target="_blank" rel="noopener"
>IIR illustration&lt;/a>&lt;/p></description></item><item><title>碰撞预防系统</title><link>https://richardmedyanto.github.io/zh-cn/p/crash-prevention/</link><pubDate>Sat, 12 Feb 2022 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/crash-prevention/</guid><description>&lt;blockquote>
&lt;p>本项目为我本科第五学期《高级控制系统与数字信号处理》课程期末项目。&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>根据印度尼西亚中央统计局（Badan Pusat Statistik）数据，印尼共有 15,800,933 辆乘用车，占全国机动车总数的 11.59%。2019 年交通事故共发生 116,411 起，其中 25,671 人死亡。如此高的交通事故死亡率是一个严重的社会问题，需要采取有效的预防措施。&lt;/p>
&lt;h2 id="解决方案">解决方案
&lt;/h2>&lt;p>本项目提出一种基于距离传感器的自动控制系统，可在必要时自动降低车速或停车以避免碰撞。该系统能够覆盖驾驶员的速度输入，从而优先保证安全。&lt;/p>
&lt;h2 id="原型">原型
&lt;/h2>&lt;p>本原型使用 Arduino Uno、前后各 1 个红外距离传感器、直流电机、L298N H 桥驱动模块以及可充电电池。&lt;/p>
&lt;p>系统采用 PID 控制实现车辆运动，并通过实验对 PID 参数进行优化。传感器的数字信号经过基于汉明窗方法设计的 FIR 滤波器处理，并使用快速傅里叶变换（FFT）进行频谱分析。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/crash-prevention/acs.png"
width="1437"
height="528"
srcset="https://richardmedyanto.github.io/p/crash-prevention/acs_hub70683e5e4307b2ca8bd310f2646f182_55016_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/crash-prevention/acs_hub70683e5e4307b2ca8bd310f2646f182_55016_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="系统框图"
class="gallery-image"
data-flex-grow="272"
data-flex-basis="653px"
>&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/crash-prevention/dsp.png"
width="1436"
height="776"
srcset="https://richardmedyanto.github.io/p/crash-prevention/dsp_hu55005ef17f6188c20c5729a8e31f120f_103480_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/crash-prevention/dsp_hu55005ef17f6188c20c5729a8e31f120f_103480_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="滤波结果"
class="gallery-image"
data-flex-grow="185"
data-flex-basis="444px"
>&lt;/p>
&lt;p>原型展示如下：&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/jkHZy50IedA"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;p>演示视频如下：&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/ViILeSpAEmI"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;p>本项目的展示幻灯片可在此查看：&lt;a class="link" href="https://drive.google.com/file/d/1529pCAZztNKZ6Sh6hqMawIYgnN5aJWL/view" target="_blank" rel="noopener"
>链接&lt;/a>&lt;/p></description></item><item><title>全国医疗记录数据库</title><link>https://richardmedyanto.github.io/zh-cn/p/medical-record-db/</link><pubDate>Thu, 10 Feb 2022 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/medical-record-db/</guid><description>&lt;blockquote>
&lt;p>本项目为《数据库设计与应用》课程期末项目，于本科第五学期完成。&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>印尼的医疗记录系统目前是分散且不互通的，这意味着一个数据库中的数据无法与其他数据库连接。此外，医院无法获取患者在其他医院的病历信息，而部分医院和诊所仍然使用纸质记录来保存病历。&lt;/p>
&lt;p>对一家保险公司的资深业务人员访谈显示，医疗记录在判断保险理赔是否真实有效的过程中至关重要。过去，这一流程需要逐一联系各医院并索取患者资料，效率低下、耗时长，并且容易发生欺诈行为。&lt;/p>
&lt;h2 id="解决方案">解决方案
&lt;/h2>&lt;p>为了解决这一问题，我们团队提出建立一个数据库系统，用于集中存储所有印尼公民的医疗记录历史。该数据库将以网站平台的形式实现，供政府、医院以及保险公司等需要访问医疗记录的机构使用。&lt;/p>
&lt;h2 id="优势">优势
&lt;/h2>&lt;p>对于政府而言，集中管理公民健康记录可以帮助其了解全国居民的健康状况，从而制定更合理的政策，同时评估国家医疗技术与应对能力的发展水平。&lt;/p>
&lt;p>对于保险公司而言，更便捷地访问客户医疗记录可以有效防止客户与代理人的欺诈行为，并帮助筛选合格的新客户，提高理赔决策效率。&lt;/p>
&lt;p>对于医院而言，这一集中式数字数据库可以帮助其更高效地管理病历，减少纸质存储空间。数字化系统也使病历的录入、修改与查询更加便捷。同时，数据在数字化环境中更加安全，不易丢失，也不会因自然灾害或事故而损坏。医院在需要向政府、保险公司或其他机构提供数据时也能节省大量时间。此外，不同医院之间也可以共享患者病历信息。&lt;/p>
&lt;h2 id="数据库">数据库
&lt;/h2>&lt;p>系统采用 MySQL 作为数据库管理系统。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/medical-record-db/er-diagram.jpg"
width="1023"
height="541"
srcset="https://richardmedyanto.github.io/p/medical-record-db/er-diagram_hubd7f1a0b5aeb58b08d18dd6893795534_58524_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/medical-record-db/er-diagram_hubd7f1a0b5aeb58b08d18dd6893795534_58524_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：数据库 ER 图"
class="gallery-image"
data-flex-grow="189"
data-flex-basis="453px"
>&lt;/p>
&lt;h2 id="网站演示">网站演示
&lt;/h2>&lt;p>&lt;img src="https://richardmedyanto.github.io/p/medical-record-db/homepage.jpg"
width="1024"
height="531"
srcset="https://richardmedyanto.github.io/p/medical-record-db/homepage_huf0f59a101a0e1d6049f19ae84874929c_33350_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/medical-record-db/homepage_huf0f59a101a0e1d6049f19ae84874929c_33350_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：网站首页"
class="gallery-image"
data-flex-grow="192"
data-flex-basis="462px"
>
&lt;img src="https://richardmedyanto.github.io/p/medical-record-db/search-result.jpg"
width="1024"
height="531"
srcset="https://richardmedyanto.github.io/p/medical-record-db/search-result_hu2567f6e8c6c3be420a0021e47be7840e_27831_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/medical-record-db/search-result_hu2567f6e8c6c3be420a0021e47be7840e_27831_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：按 ID 查询结果（数据已打码）"
class="gallery-image"
data-flex-grow="192"
data-flex-basis="462px"
>&lt;/p></description></item><item><title>IoT 电动闸门与监控系统</title><link>https://richardmedyanto.github.io/zh-cn/p/motorized-gate/</link><pubDate>Tue, 08 Feb 2022 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/motorized-gate/</guid><description>&lt;blockquote>
&lt;p>本项目为我本科第四学期《计算机网络》课程的期末项目。&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>在驾驶车辆时开关家门存在一定风险。当驾驶员下车开关大门时，车辆可能面临被盗的风险，尤其是在忘记锁车的情况下。&lt;/p>
&lt;p>另一个问题是，每当门铃响起时都需要亲自查看，这带来不便。此外，当屋主不在家时，也无法知道来访者是谁。&lt;/p>
&lt;h2 id="解决方案">解决方案
&lt;/h2>&lt;p>我们团队提出了一种基于物联网（IoT）的解决方案，通过手机控制家门并结合 CCTV 进行监控。现有方案通常通过电机控制大门，并将监控录像存储在本地设备中，这些系统一般只能在屋内控制。我们的目标是利用互联网，使系统可以通过手机进行远程控制——手机是我们随身携带的设备。&lt;/p>
&lt;h2 id="原型">原型
&lt;/h2>&lt;p>在原型设计中，我们使用 ESP32 作为大门控制器，使用 ESP32-CAM 进行图像采集与传输。同时加入门铃功能，当有人按下门铃时，系统会向屋主发送通知，在手机上显示访客图像，并通过电子邮件发送该图像。用户界面采用 Blynk 实现。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/motorized-gate/blynk.jpg"
width="1024"
height="808"
srcset="https://richardmedyanto.github.io/p/motorized-gate/blynk_huf3c9fcdcb2fad1d3cfd5c14d12c8763b_67921_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/motorized-gate/blynk_huf3c9fcdcb2fad1d3cfd5c14d12c8763b_67921_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：Blynk 应用界面与邮件通知"
class="gallery-image"
data-flex-grow="126"
data-flex-basis="304px"
>
&lt;img src="https://richardmedyanto.github.io/p/motorized-gate/prototype.jpg"
width="827"
height="830"
srcset="https://richardmedyanto.github.io/p/motorized-gate/prototype_huc33a43b00fb08dad9e5fe5b9135b9c1a_74454_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/motorized-gate/prototype_huc33a43b00fb08dad9e5fe5b9135b9c1a_74454_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：大门原型"
class="gallery-image"
data-flex-grow="99"
data-flex-basis="239px"
>&lt;/p>
&lt;p>观看下方视频以了解演示：&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/PPq_CMVNdZg"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div></description></item><item><title>模拟车门碰撞预防系统</title><link>https://richardmedyanto.github.io/zh-cn/p/impact-prevention/</link><pubDate>Sun, 11 Jul 2021 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/impact-prevention/</guid><description>&lt;blockquote>
&lt;p>本项目为我本科第四学期《控制系统》课程期末项目。&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>在停车场中，碰撞到墙壁、行人或其他车辆有时很难仅凭视觉避免。超声波传感器通常安装在汽车前后用于检测距离，但车身侧面很少配备此类传感器。本小组项目的目标是在车辆侧面增加红外传感器（由于课程要求，本设计采用模拟电路实现）。&lt;/p>
&lt;h2 id="电路设计">电路设计
&lt;/h2>&lt;p>&lt;img src="https://richardmedyanto.github.io/p/impact-prevention/schematic_consys.jpg"
width="1023"
height="724"
srcset="https://richardmedyanto.github.io/p/impact-prevention/schematic_consys_hu925d696f6f13de582260b5ce28ca5335_88545_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/impact-prevention/schematic_consys_hu925d696f6f13de582260b5ce28ca5335_88545_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：电路设计"
class="gallery-image"
data-flex-grow="141"
data-flex-basis="339px"
>&lt;/p>
&lt;h2 id="工作原理">工作原理
&lt;/h2>&lt;p>&lt;strong>简要说明（TL;DR）&lt;/strong>：红外传感器检测到的距离会与两个固定阈值进行比较。距离越近，蜂鸣器报警频率越高。&lt;/p>
&lt;p>红外传感器在检测到 10–80 cm 范围内的障碍物时会输出模拟电压。障碍物越近，输出电压越高。该模拟电压随后通过两个 LM741 比较器与电位器设定的阈值进行比较。上方比较器在距离较近时输出高电平，下方比较器在距离更近时也会输出高电平。&lt;/p>
&lt;p>电位器的设定位置基于如下近似计算：&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/impact-prevention/pot_turn.jpg"
width="720"
height="403"
srcset="https://richardmedyanto.github.io/p/impact-prevention/pot_turn_hue86ab40088d3aaecb89daa0e23fbdfbc_36837_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/impact-prevention/pot_turn_hue86ab40088d3aaecb89daa0e23fbdfbc_36837_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：电位器旋转比例。来源：https://www.pololu.com/product/136"
class="gallery-image"
data-flex-grow="178"
data-flex-basis="428px"
>&lt;/p>
&lt;p>当仅上方比较器导通时，LM555 会输出约 1.8 Hz 的方波驱动蜂鸣器。这是因为在该状态下，LM555 使用连接到继电器常开端的 33 μF 电容。&lt;/p>
&lt;p>当障碍物更近时，下方比较器也会导通，从而触发继电器，使 LM555 切换到连接常闭端的 10 μF 电容，蜂鸣器输出更高频率信号，约 5.8 Hz。&lt;/p>
&lt;h2 id="原型">原型
&lt;/h2>&lt;p>&lt;img src="https://richardmedyanto.github.io/p/impact-prevention/prototype.png"
width="948"
height="534"
srcset="https://richardmedyanto.github.io/p/impact-prevention/prototype_hub8e2cba4cef5b68b2cd9c4001806d2c5_369106_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/impact-prevention/prototype_hub8e2cba4cef5b68b2cd9c4001806d2c5_369106_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="图：原型"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>&lt;/p>
&lt;h2 id="展示">展示
&lt;/h2>&lt;p>（印尼语）&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/w0EJugUqVQU"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;p>&lt;a class="link" href="https://www.canva.com/design/DAEXnbXfPTM/UMC_lzbS3-lSLgSNfd8P9g/view?utm_content=DAEXnbXfPTM&amp;amp;utm_campaign=designshare&amp;amp;utm_medium=link&amp;amp;utm_source=sharebutton" target="_blank" rel="noopener"
>演示文稿链接&lt;/a>&lt;/p></description></item><item><title>趋光机器人：VHDL 项目</title><link>https://richardmedyanto.github.io/zh-cn/p/light-seeking-robot/</link><pubDate>Sat, 10 Jul 2021 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/light-seeking-robot/</guid><description>&lt;blockquote>
&lt;p>本项目为我本科第四学期《数字系统》课程期末项目。&lt;/p>
&lt;/blockquote>
&lt;h2 id="目标">目标
&lt;/h2>&lt;p>本项目的目标是开发一个寻光机器人，使用 BASYS 3 FPGA 开发板、OV7670 摄像头，以及通过 PMOD HB5 H-Bridge 驱动的一组电机。编程使用 Vivado 与 VHDL 完成。&lt;/p>
&lt;p>由于这是课程项目，我们以小组形式分工合作，分别开发不同模块。我所在的小组负责根据光源的位置与大小输入，决定机器人的运动方向与速度。&lt;/p>
&lt;h2 id="步骤">步骤
&lt;/h2>&lt;ol>
&lt;li>定义需求：输入/输出以及模块间通信（课堂讨论完成）&lt;/li>
&lt;li>设计模块的数字系统&lt;/li>
&lt;li>将数字系统转换为 VHDL 代码&lt;/li>
&lt;li>将各模块整合为完整系统&lt;/li>
&lt;li>在原型上进行测试&lt;/li>
&lt;/ol>
&lt;h2 id="模块设计">模块设计
&lt;/h2>&lt;p>本项目与阈值处理小组以及电机控制与测速小组紧密合作完成。&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/light-seeking-robot/blocks.png"
width="1024"
height="305"
srcset="https://richardmedyanto.github.io/p/light-seeking-robot/blocks_hu7725388aab82b9aae5a466f3dbeb3802_48317_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/light-seeking-robot/blocks_hu7725388aab82b9aae5a466f3dbeb3802_48317_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="小组设计框图"
class="gallery-image"
data-flex-grow="335"
data-flex-basis="805px"
>&lt;/p>
&lt;p>阈值处理模块输出光源的位置（10 位光强与位置数据）。如果没有检测到光源，nolightcounter.vhd 模块会让机器人先原地旋转 360 度后停止。否则，根据光源的大小与位置，控制模块（Ctrl.vhd）决定机器人向左、向右、前进或后退。&lt;/p>
&lt;p>随后，左右电机的目标速度会与实际速度在误差模块（ERROR.vhd）中进行比较，从而计算所需的电机控制信号。S2US.vhd 与 US2S.vhd 模块用于有符号与无符号数据之间的转换，并与电机测速模块进行连接。&lt;/p>
&lt;h2 id="原型">原型
&lt;/h2>&lt;p>&lt;img src="https://richardmedyanto.github.io/p/light-seeking-robot/robot.png"
width="1024"
height="768"
srcset="https://richardmedyanto.github.io/p/light-seeking-robot/robot_hu66d1e6f4ed13c28c6ab4b2adaf4ef147_994128_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/light-seeking-robot/robot_hu66d1e6f4ed13c28c6ab4b2adaf4ef147_994128_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="机器人原型"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>&lt;/p>
&lt;p>注：由于硬件方面存在问题，加上当时处于疫情期间，我们没有足够时间完成整个项目的调试与收尾。&lt;/p>
&lt;h2 id="贡献">贡献
&lt;/h2>&lt;p>作为小组组长，我负责协调团队任务分工，推动各子模块开发，并代表小组参与课堂讨论与汇报。&lt;/p>
&lt;h2 id="教程">教程
&lt;/h2>&lt;p>我们将该项目的制作教程发布在 &lt;a class="link" href="https://www.instructables.com/VHDL-Motor-Speed-Control-Decide-Direction-and-Spee" target="_blank" rel="noopener"
>Instructables&lt;/a>&lt;/p></description></item><item><title>模拟车内空气排放系统</title><link>https://richardmedyanto.github.io/zh-cn/p/car-cabin-exhaust/</link><pubDate>Fri, 11 Dec 2020 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/car-cabin-exhaust/</guid><description>&lt;blockquote>
&lt;p>本项目为我本科第三学期《电路与信号、电子器件项目》课程项目。&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>雅加达的气温最高可达 34°C。在阳光直射下，停放车辆的车内温度更加危险，甚至可达到 70°C。此外，车内材料发生的化学反应也可能对人体健康造成影响，增加中暑及致癌风险。&lt;/p>
&lt;h2 id="解决方案">解决方案
&lt;/h2>&lt;p>我们设计了一种简单的模拟电路系统，用于排出车内空气。当车内温度达到 28°C 时，风扇将自动启动，将车内空气强制排出。&lt;/p>
&lt;h2 id="原型">原型
&lt;/h2>&lt;p>&lt;img src="https://richardmedyanto.github.io/p/car-cabin-exhaust/circuit.jpg"
width="823"
height="479"
srcset="https://richardmedyanto.github.io/p/car-cabin-exhaust/circuit_hue6a3bfaaa1329b28af920d6bfcac8ba0_86957_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/car-cabin-exhaust/circuit_hue6a3bfaaa1329b28af920d6bfcac8ba0_86957_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：电路设计"
class="gallery-image"
data-flex-grow="171"
data-flex-basis="412px"
>
&lt;img src="https://richardmedyanto.github.io/p/car-cabin-exhaust/pcb.jpg"
width="917"
height="700"
srcset="https://richardmedyanto.github.io/p/car-cabin-exhaust/pcb_hubb391fc6503365843b296521c28bc20a_88997_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/car-cabin-exhaust/pcb_hubb391fc6503365843b296521c28bc20a_88997_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：PCB 设计"
class="gallery-image"
data-flex-grow="131"
data-flex-basis="314px"
>&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/car-cabin-exhaust/prototype.jpg"
width="1024"
height="576"
srcset="https://richardmedyanto.github.io/p/car-cabin-exhaust/prototype_hu704f77dab924bdebff48f76e92297ad5_99089_480x0_resize_q75_box.jpg 480w, https://richardmedyanto.github.io/p/car-cabin-exhaust/prototype_hu704f77dab924bdebff48f76e92297ad5_99089_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="图：原型"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>&lt;/p></description></item><item><title>C 语言简易财务记录应用程序</title><link>https://richardmedyanto.github.io/zh-cn/p/finance-record-c/</link><pubDate>Mon, 17 Aug 2020 00:00:00 +0000</pubDate><guid>https://richardmedyanto.github.io/zh-cn/p/finance-record-c/</guid><description>&lt;blockquote>
&lt;p>本项目为我本科第二学期《算法与程序设计基础》课程期末项目。&lt;/p>
&lt;/blockquote>
&lt;h2 id="背景">背景
&lt;/h2>&lt;p>财务记录的管理相对复杂。许多企业仍然使用纸质记录，需要手动计算收入与支出。而使用现有应用的人，也常常因为功能过多而感到难以上手。&lt;/p>
&lt;h2 id="解决方案">解决方案
&lt;/h2>&lt;p>本项目的目标是开发一个简单的财务记录应用。该程序采用命令行界面（CLI），并能够将记录保存到文件中。程序使用 C 语言编写。&lt;/p>
&lt;h2 id="结果">结果
&lt;/h2>&lt;p>以下是该应用的一些截图：&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/finance-record-c/example1.png"
width="643"
height="664"
srcset="https://richardmedyanto.github.io/p/finance-record-c/example1_hue0b90ee6178f540db192b454b6c96674_41649_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/finance-record-c/example1_hue0b90ee6178f540db192b454b6c96674_41649_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="96"
data-flex-basis="232px"
>&lt;/p>
&lt;p>&lt;img src="https://richardmedyanto.github.io/p/finance-record-c/example2.png"
width="530"
height="694"
srcset="https://richardmedyanto.github.io/p/finance-record-c/example2_hu500751c1be1d589cfa71cb1f3c7e85af_38901_480x0_resize_box_3.png 480w, https://richardmedyanto.github.io/p/finance-record-c/example2_hu500751c1be1d589cfa71cb1f3c7e85af_38901_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="76"
data-flex-basis="183px"
>&lt;/p>
&lt;p>源码：&lt;a class="link" href="https://github.com/richardmedyanto/AAPF" target="_blank" rel="noopener"
>Github&lt;/a>&lt;/p></description></item></channel></rss>