<p>ESP32-wroom-32e 모듈을 이용해서 custom board pcb를 제작했어. 여기에 전원공급을 위해서 AAA형 1.5V 배터리 4개를 직렬로 연결하여 입력전원으로 사용하고, MCP1802T-3302I/OT DC-BUCK IC를 이용해서 입력전원 전압을 3.3V로 만들어서 ESP32 모듈에 공급해 주고 있어.
이때 custom board pcb를 esp_deep_sleep_start(); 를 이용해서 슬립모드로 동작할때 6.5digit 멀티미터로 측정시 약 0.18mA가 측정되었어. 슬립모드에서 소모전력을 더 적게 만들 수 있는 방법이 있을지 알려줘.</p>
<p>&nbsp;</p>
<p>ESP32 모듈의 슬립모드에서 전력 소모를 줄이기 위해 몇 가지 방법을 고려할 수 있습니다. 여기 몇 가지 제안 사항을 제공합니다:</p>
<ol>
   <li>
      <p><strong>GPIO 핀 상태 설정</strong>:</p>
      <ul>
         <li>슬립 모드로 들어가기 전에 모든 GPIO 핀을 적절한 상태로 설정합니다. 대부분의 핀을 풀업(Pull-up) 또는 풀다운(Pull-down) 상태로 설정하여 불필요한 전력 소모를 줄입니다.</li>
         <li>
            <code>gpio_hold_en(GPIO_NUM_x)</code>
             함수를 사용하여 슬립 모드에서 핀의 상태를 유지할 수 있습니다.</li>
         </ul>
      </li>
   <li>
      <p><strong>외부 회로 전력 차단</strong>:</p>
      <ul>
         <li>ESP32 외부의 센서나 모듈이 슬립 모드 동안 전력을 소비하지 않도록 합니다. 필요한 경우 MOSFET 또는 다른 스위칭 소자를 사용하여 슬립 모드에서 외부 회로의 전원을 차단할 수 있습니다.</li>
         </ul>
      </li>
   <li>
      <p><strong>RTC 메모리 사용 최소화</strong>:</p>
      <ul>
         <li>슬립 모드에서 유지해야 할 데이터를 최소화합니다. RTC 메모리에 많은 데이터를 저장하면 전력 소모가 증가할 수 있습니다.</li>
         </ul>
      </li>
   <li>
      <p><strong>전원 레귤레이터 최적화</strong>:</p>
      <ul>
         <li>MCP1802T-3302I/OT 레귤레이터의 효율성을 확인합니다. 이 레귤레이터가 슬립 모드에서 여전히 비교적 높은 전력을 소비할 수 있습니다. 저전력 LDO 레귤레이터나 DC-DC 컨버터를 고려해 볼 수 있습니다.</li>
         <li>MCP1700과 같은 초저전력 LDO 레귤레이터를 사용하여 전력 소모를 줄일 수 있습니다.</li>
         </ul>
      </li>
   <li>
      <p><strong>슬립 모드 설정 확인</strong>:</p>
      <ul>
         <li>ESP32의 다양한 슬립 모드 설정을 확인하고 가장 적절한 슬립 모드를 사용합니다. 예를 들어, 
            <code>esp_deep_sleep_start()</code>
             대신 
            <code>esp_light_sleep_start()</code>
            를 사용해도 전력 소모를 줄일 수 있습니다.</li>
         <li>슬립 모드 설정을 적절히 튜닝하여 최소 전력 소모를 달성할 수 있도록 합니다.</li>
         </ul>
      </li>
   <li>
      <p><strong>펌웨어 최적화</strong>:</p>
      <ul>
         <li>슬립 모드로 들어가기 전과 슬립 모드 중에 전력 소모를 최소화하는 코드를 작성합니다. 모든 불필요한 기능이나 인터럽트를 비활성화합니다.</li>
         <li>예를 들어, Wi-Fi나 Bluetooth 모듈이 슬립 모드에서 비활성화되는지 확인합니다.</li>
         </ul>
      </li>
   </ol>
<p>다음은 GPIO 핀을 슬립 모드에서 유지하는 간단한 예제 코드입니다:</p>
<pre>
   <div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium">
      <div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">cpp
         <div class="flex items-center"><span class="" data-state="closed"><button class="flex gap-1 items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" class="icon-sm"><path fill="currentColor" fill-rule="evenodd" d="M7 5a3 3 0 0 1 3-3h9a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3h-2v2a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3v-9a3 3 0 0 1 3-3h2zm2 2h5a3 3 0 0 1 3 3v5h2a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1h-9a1 1 0 0 0-1 1zM5 9a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1v-9a1 1 0 0 0-1-1z" clip-rule="evenodd"></path></svg>코드 복사</button></span></div>
         </div>
      <div class="overflow-y-auto p-4" dir="ltr">
         <code class="!whitespace-pre hljs language-cpp"><span class="hljs-comment">// 슬립 모드에 들어가기 전 GPIO 설정</span><span class="hljs-built_in">gpio_hold_dis</span>(GPIO_NUM_0); <span class="hljs-comment">// GPIO 0을 비활성화</span><span class="hljs-built_in">gpio_hold_en</span>(GPIO_NUM_2);  <span class="hljs-comment">// GPIO 2을 활성화</span><span class="hljs-comment">// 필요한 설정 후 슬립 모드로 진입</span><span class="hljs-built_in">esp_sleep_enable_timer_wakeup</span>(TIME_TO_SLEEP * uS_TO_S_FACTOR);
<span class="hljs-built_in">esp_deep_sleep_start</span>();</code>
         </div>
      </div>
   </pre>