Skip to content

Commit 126a4c9

Browse files
committed
Deploy post/2025-10-01-03 39b0add
1 parent 4d37a10 commit 126a4c9

8 files changed

Lines changed: 506 additions & 8 deletions

about.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
66

7+
<link rel="preload" href="/assets/profile.webp" as="image" type="image/webp">
8+
79
<title>어바웃 | 차한음 블로그</title>
810
<meta name="description" content="어바웃 | 차한음 블로그">
911
<meta name="author" content="차한음">

index.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
66

7+
<link rel="preload" href="/assets/profile.webp" as="image" type="image/webp">
8+
79
<title>차한음 블로그</title>
810
<meta name="description" content="개발자 차한음 블로그">
911
<meta name="author" content="차한음">
@@ -70,7 +72,7 @@ <h1>차한음 블로그</h1>
7072
</header>
7173

7274
<main class="home-content">
73-
<article class="markdown-body"><p>반갑습니다. 개발자 차한음입니다.</p>
75+
<article class="markdown-body"><p>차한음 블로그에 오신 것을 환영합니다.</p>
7476
</article>
7577
</main>
7678
<footer class="home-footer">
Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
<!DOCTYPE html>
2+
<html lang="ko">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6+
7+
<title>WeMos D1 R1 보드 (ESP8266) 설정 방법 | 차한음 블로그</title>
8+
<meta name="description" content="arduino-cli 설치 brew install arduino-cli arduino-cli는 Arduino IDE 보다 더욱 고차원적인 아두이노 관리 프로그램임. arduino-...">
9+
<meta name="author" content="차한음">
10+
<link rel="canonical" href="https://chebread.github.io/">
11+
12+
<meta property="og:title" content="WeMos D1 R1 보드 (ESP8266) 설정 방법 | 차한음 블로그">
13+
<meta property="og:description" content="arduino-cli 설치 brew install arduino-cli arduino-cli는 Arduino IDE 보다 더욱 고차원적인 아두이노 관리 프로그램임. arduino-...">
14+
<meta property="og:type" content="article">
15+
<meta property="og:url" content="https://chebread.github.io/post/wemos-d1-r1-보드-esp8266-설정-방법">
16+
<meta property="og:site_name" content="차한음 블로그">
17+
18+
<meta name="twitter:card" content="summary_large_image">
19+
<meta name="twitter:title" content="WeMos D1 R1 보드 (ESP8266) 설정 방법 | 차한음 블로그">
20+
<meta name="twitter:description" content="arduino-cli 설치 brew install arduino-cli arduino-cli는 Arduino IDE 보다 더욱 고차원적인 아두이노 관리 프로그램임. arduino-...">
21+
22+
<script type="application/ld+json">
23+
{
24+
"@context": "https://schema.org",
25+
"@type": "BlogPosting",
26+
"headline": "WeMos D1 R1 보드 (ESP8266) 설정 방법 | 차한음 블로그",
27+
"author": {
28+
"@type": "Person",
29+
"name": "차한음"
30+
},
31+
"publisher": {
32+
"@type": "Organization",
33+
"name": "차한음",
34+
},
35+
"datePublished": "2025-09-15",
36+
"description": "arduino-cli 설치 brew install arduino-cli arduino-cli는 Arduino IDE 보다 더욱 고차원적인 아두이노 관리 프로그램임. arduino-..."
37+
}
38+
</script>
39+
40+
<link rel="stylesheet" href="/styles/reset.css" />
41+
<link rel="stylesheet" href="/styles/layout.css" />
42+
<link rel="stylesheet" href="/styles/color-palette.css">
43+
<link rel="stylesheet" href="/styles/chroma.css">
44+
45+
<link rel="stylesheet" href="/styles/github-markdown.css">
46+
<link rel="stylesheet" href="/styles/post.css">
47+
48+
<link rel="icon" href="/favicons/favicon.ico" sizes="any">
49+
<link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png">
50+
<link rel="apple-touch-icon" href="/favicons/apple-touch-icon.png">
51+
</head>
52+
<body>
53+
<div class="root">
54+
<div class="post">
55+
<nav class="post-nav">
56+
<a href="/" class="">
57+
<span></span>
58+
</a>
59+
<a href="/about" class="">
60+
<span>어바웃</span>
61+
</a>
62+
<a href="/posts" class="active">
63+
<span>포스트</span>
64+
</a>
65+
</nav>
66+
67+
<main class="post-content">
68+
<header class="post-header">
69+
<h1 class="post-title">WeMos D1 R1 보드 (ESP8266) 설정 방법</h1>
70+
<p class="post-date"><time datetime="2025-09-15">2025년 09월 15일</time></p>
71+
<p class="post-category"><a href="/posts/arduino">[Arduino]</a></p>
72+
</header>
73+
<div class="post-body">
74+
<article class="markdown-body"><h2>arduino-cli 설치</h2>
75+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">brew install arduino-cli
76+
</span></span></code></pre><p>arduino-cli는 Arduino IDE 보다 더욱 고차원적인 아두이노 관리 프로그램임.</p>
77+
<h2>arduino-cli 최초 설정</h2>
78+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">arduino-cli config init
79+
</span></span></code></pre><p>arduino-cli를 컴퓨터에 설치한 후 가장 먼저, 딱 한 번만 이 명령어를 실행하면 됨.
80+
이 명령어로 설정 파일의 뼈대를 만든 뒤, ESP8266 보드 URL을 추가하는 등의 설정을 하게 됨.</p>
81+
<h2>WeMos D1 보드 설정 (외부 보드 매니저 주소 추가)</h2>
82+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">arduino-cli config <span class="nb">set</span> board_manager.additional_urls <span class="o">[</span>http://arduino.esp8266.com/stable/package_esp8266com_index.json<span class="o">](</span>http://arduino.esp8266.com/stable/package_esp8266com_index.json<span class="o">)</span>
83+
</span></span></code></pre><p>arduino-cli의 영구적인 설정 파일을 수정하는 명령어임.</p>
84+
<p>arduino-cli의 메인 설정 파일(<code>arduino-cli.yaml</code>) 안에 있는 <code>board_manager.additional_urls</code> 라는 목록에, 지정된 URL(<code>http://arduino.esp8266.com/...</code>)을 추가하고 저장함.</p>
85+
<p>이 명령어는 arduino-cli에게 &quot;앞으로 보드 패키지 목록을 찾을 때, 아두이노 공식 서버뿐만 아니라, 내가 지금 알려주는 이 인터넷 주소도 확인 대상에 포함시켜라&quot; 라고 데이터 소스(Source)를 등록하는 일회성 작업임. 이 명령 자체는 어떠한 다운로드도 수행하지 않음.</p>
86+
<h2>드라이버 업데이트</h2>
87+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">arduino-cli core update-index
88+
</span></span></code></pre><p>등록된 모든 데이터 소스로부터 최신 패키지 목록을 다운로드하는 명령어임.</p>
89+
<p><code>arduino-cli.yaml</code> 설정 파일에 등록된 모든 URL(아두이노 공식 URL + 우리가 config set으로 추가한 URL)에 실제로 접속하여, <code>package_..._index.json</code> 이라는 이름의 파일들을 다운로드하고 로컬 캐시를 업데이트함.</p>
90+
<p><code>package_..._index.json</code> 파일 안에는 설치 가능한 보드, 라이브러리, 도구들의 이름과 버전 정보가 들어있음.</p>
91+
<h2>WeMos 드라이버 설치</h2>
92+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">arduino-cli core install esp8266:esp8266
93+
</span></span></code></pre><p><code>arduino-cli core update-index</code> 명령어를 실행 이후에, 최신 목록을 바탕으로 WEMOS D1를 위한 전용 패키지를 설치하기.</p>
94+
<h2>config set ..., core update-index, core install의 차이</h2>
95+
<ul>
96+
<li>
97+
<p><code>config set ...</code> 명령어로 arduino-cli에게 새로운 정보 소스의 주소를 알려줌.</p>
98+
</li>
99+
<li>
100+
<p><code>core update-index</code> 명령어는 <code>config set</code> 으로 알려준 그 새로운 주소를 포함한 모든 주소에 접속해서, 설치 가능한 패키지 목록을 가져옴.</p>
101+
</li>
102+
<li>
103+
<p><code>core install ...</code> 명령어는 <code>update-index</code> 가 가져온 그 목록을 보고, 필요한 파일을 설치함.</p>
104+
</li>
105+
</ul>
106+
<h2>Wifi 관련 라이브러리 설치</h2>
107+
<p>ESP8266WiFi.h와 같은 WiFi 관련 기능은 별도의 라이브러리를 <code>lib install</code>로 설치하는 것이 아님.
108+
이 기능들은 <code>arduino-cli core install esp8266:esp8266</code> 명령어로 설치되는 &quot;ESP8266 보드 지원 패키지&quot; 안에 이미 포함되어 있음.</p>
109+
<h2>아두이노 프로젝트 생성</h2>
110+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">arduino-cli sketch new PROJECT_NAME
111+
</span></span></code></pre><h2>아두이노 프로그래밍</h2>
112+
<p><code>PROJECT_NAME.ino</code> 이렇게 아두이노 메인 파일 이름은 프로젝트 이름과 동일해야 함이 관례임.</p>
113+
<p>하나의 프로젝트(폴더) 안에는 <code>setup()</code><code>loop()</code> 함수가 단 한 번만 존재해야 함.
114+
<code>setup()</code><code>loop()</code>는 프로그램의 시작점임으로, 메인 파일에 위치하는 것이 관례임.</p>
115+
<p>arduino-cli는 프로젝트 내부의 모든 파일들을 독립적으로 인식하는 것이 아니라, 컴파일 직전에 하나의 거대한 파일로 그냥 이어 붙여버림.
116+
컴포넌트 같이 만드러면 <code>.h</code> 해더파일을 만들어야함.</p>
117+
<p>아두이노에서 활용하는 언어는 C++의 변형된 프로그래밍 언어를 사용함으로, C++ 프로그래밍과 완전하게 같음.</p>
118+
<h2>아두이노 관련 VSC 익스텐션 설치</h2>
119+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">Arduino Community Edition
120+
</span></span><span class="line"><span class="cl">C/C++
121+
</span></span><span class="line"><span class="cl">C/C++ Extension Pack
122+
</span></span></code></pre><p>VSC 익스텐션 3개를 설치해야 함.</p>
123+
<h2>.vscode 디렉토리 생성</h2>
124+
<p><code>.vscode</code> 디렉토리를 생성해야 함.
125+
그러나 개발자가 직접 생성 안해도, Arduino 확장 프로그램이 직접 <code>.vscode</code> 폴더를 생성하고 <code>arduino.json</code> 같은 파일을 거기에 위치시킴.</p>
126+
<h2>VSC에서 아두이노 설정하기</h2>
127+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">Arduino: Change Board Type
128+
</span></span></code></pre><p>Command Palette에서 <code>Arduino: Change Board Type</code> 를 입력한 후, <code>LOLIN(WeMos) D1 R2 &amp; mini</code> 선택하기.</p>
129+
<p>이 명령어를 실행하면, <code>.vscode/arduino.json</code> 파일이 생성-수정됨.
130+
굳이 arduino.json 파일을 따로 만들지 않아도, .vscode 디렉토리에 자동으로 저장됨.</p>
131+
<p><code>arduino.json</code> 파일은</p>
132+
<ol>
133+
<li>&quot;Arduino&quot; 확장 프로그램의 명령어 생성기 역할
134+
<ul>
135+
<li>Arduino: Change Board Type에서 모델을 선택하면, 그 정보(&quot;board&quot;: &quot;esp8266:esp8266:d1_mini&quot;)가 arduino.json에 저장됨.</li>
136+
<li>이 정보가 VSC의 UI 버튼(Upload(→) 버튼 등)을 누를 때 명령어 인수로서 활용됨.</li>
137+
</ul>
138+
</li>
139+
<li>C/C++ 확장 프로그램의 코드 자동완성(IntelliSense)을 위한 정보 제공 역할
140+
을 수행함.</li>
141+
</ol>
142+
<p><code>arduino.json</code> 파일 내부의 속성은</p>
143+
<ul>
144+
<li>&quot;sketch&quot;
145+
<ul>
146+
<li>어떤 .ino 파일이 메인 파일인지 알려줌.</li>
147+
<li>사용자가 직접 수정해야 할 수 있음. (예: 파일 이름을 바꿨을 때)</li>
148+
</ul>
149+
</li>
150+
<li>&quot;board
151+
<ul>
152+
<li>어떤 보드를 타겟으로 컴파일할지 알려줌. (--fqbn 값)</li>
153+
<li>Arduino: Change Board Type 메뉴로 설정됨.</li>
154+
</ul>
155+
</li>
156+
<li>&quot;output&quot;
157+
<ul>
158+
<li>컴파일 결과물을 어디에 저장할지 알려줌.</li>
159+
<li>Arduino: Initialize 실행 시 기본적으로 추가되거나, 사용자가 직접 추가할 수 있음.</li>
160+
</ul>
161+
</li>
162+
<li>&quot;port&quot;
163+
<ul>
164+
<li>어느 USB 포트로 업로드할지 알려줌.</li>
165+
<li>Arduino: Select Serial Port 메뉴로 설정됨.</li>
166+
</ul>
167+
</li>
168+
</ul>
169+
<p>이것임.</p>
170+
<p><code>arduino.json</code> 파일은 개발자가 직접 관리할 수 있는 파일임.</p>
171+
<h2>참고: ESP8266은 같은데 왜 이렇게 Board Type은 선택하는 것이 많은가?</h2>
172+
<p>각각 보드가 ESP8266은 이라는 핵심 칩(두뇌)은 동일하지만,
173+
그 두뇌를 둘러싼 '몸체'가 다르기 때문에 VS Code에서 그 많은 모델을 선택해야 하는 것임.</p>
174+
<p><code>Arduino: Change Board Type</code> 에서 특정 모델을 선택하는 것은,
175+
컴파일러에게 바로 이 몸체의 미세한 차이점을 알려주는 매우 중요한 과정임.</p>
176+
<h2>VSC에서 아두이노를 위한 C/C++ IntelliSense 설정하기</h2>
177+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">Arduino: Rebuild IntelliSense Configuration
178+
</span></span></code></pre><p><code>arduino-cli lib install &quot;MQ135&quot;</code> 이렇게 Arduino 관련 새로운 라이브러리 등을 설치하면,
179+
해당 라이브러리를 <code>#include</code> 를 사용해서 불러오면 오류가 발생할 수 있음.
180+
외부 라이브러리를 설치한 후, VS Code가 그 라이브러리의 위치를 인식하도록 강제로 해당 명령어를 활용하여 새로고침하기.</p>
181+
<p>이 명령어를 실행하면, <code>c_cpp_properties.json</code> 파일이 생성-수정된다.
182+
<code>c_cpp_properties.json</code> 파일은 C/C++ 확장 프로그램의 코드 분석기(IntelliSense)만을 위한 것임.
183+
사용자가 절대로 직접 수정해서는 안 됨.</p>
184+
<h2>컴파일</h2>
185+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">arduino-cli compile --fqbn esp8266:esp8266:d1_mini --output-dir ./build .
186+
</span></span></code></pre><p>현재 폴더의 모든 .ino 파일을 합쳐서 컴파일함. 결과물은 build 디렉토리에 저장됨.
187+
<code>build</code> 디렉토리는 절대 Git/GitHub에 포함시키면 안됨.</p>
188+
<h2>업로드</h2>
189+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">arduino-cli upload -p /dev/cu.usbserial-A5069RR4 --fqbn esp8266:esp8266:d1_mini .
190+
</span></span></code></pre><p>build 디렉토리를 바탕으로 업로드를 수행함.
191+
업로드란 아두이노에게 만든 프로그램을 주입하는 것임.</p>
192+
<h2>아두이노 보드 검색</h2>
193+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">arduino-cli core list
194+
</span></span></code></pre><p>해당 명령어로 현재 컴퓨터에 연결된 아두이노 보드 검색하기.
195+
만약 업로드할 때 오류가 난다면, 보드가 정상적으로 연결되지 않았다는 것을 의미함으로, 해당 명령어로 연결된 보드를 검색해보기.</p>
196+
<h2>daemon</h2>
197+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">arduino-cli daemon
198+
</span></span></code></pre><p>이 명령어를 실행해 두면, arduino-cli를 백그라운드에 상주시켜 컴파일 속도를 비약적으로 향상시킴.</p>
199+
<h2>출력 확인</h2>
200+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl">arduino-cli monitor -p /dev/cu.usbserial-A5069RR4 -c <span class="nv">baudrate</span><span class="o">=</span>115200<span class="s2">&#34;
201+
</span></span></span></code></pre><p>아두이노 보드가 Serial.print()로 보내는 메시지를 컴퓨터 화면에서 확인할 수 있게하는 명령어.
202+
<code>-c baudrate</code> 값은 아두이노 코드의 <code>Serial.begin()</code> 에 있는 숫자와 반드시 일치해야 함.</p>
203+
</article>
204+
</div>
205+
</main>
206+
207+
<footer class="post-footer">
208+
<section>
209+
<p>&copy; 2025 Cha Haneum</p>
210+
</section>
211+
<section>
212+
<a href="https://github.com/chebread">
213+
<span>깃허브</span>
214+
</a>
215+
<a href="">
216+
<span>이메일</span>
217+
</a>
218+
</section>
219+
</footer>
220+
</div>
221+
</div>
222+
223+
<script src="/js/main.js"></script>
224+
</body>
225+
</html>

0 commit comments

Comments
 (0)