Skip to content

Commit 39b0add

Browse files
committed
post: add: Add WeMos posts
feat: Add preload for profile background image
1 parent 7cdc3e6 commit 39b0add

13 files changed

Lines changed: 250 additions & 149 deletions

build/setup_static_assets.go

Lines changed: 0 additions & 55 deletions
This file was deleted.
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
---
2+
date: 2025-09-15
3+
category: [Arduino]
4+
published: true
5+
fixed: false
6+
---
7+
8+
## arduino-cli 설치
9+
```shell
10+
brew install arduino-cli
11+
```
12+
arduino-cli는 Arduino IDE 보다 더욱 고차원적인 아두이노 관리 프로그램임.
13+
14+
## arduino-cli 최초 설정
15+
```shell
16+
arduino-cli config init
17+
```
18+
arduino-cli를 컴퓨터에 설치한 후 가장 먼저, 딱 한 번만 이 명령어를 실행하면 됨.
19+
이 명령어로 설정 파일의 뼈대를 만든 뒤, ESP8266 보드 URL을 추가하는 등의 설정을 하게 됨.
20+
21+
## WeMos D1 보드 설정 (외부 보드 매니저 주소 추가)
22+
```shell
23+
arduino-cli config set board_manager.additional_urls [http://arduino.esp8266.com/stable/package_esp8266com_index.json](http://arduino.esp8266.com/stable/package_esp8266com_index.json)
24+
```
25+
arduino-cli의 영구적인 설정 파일을 수정하는 명령어임.
26+
27+
arduino-cli의 메인 설정 파일(`arduino-cli.yaml`) 안에 있는 `board_manager.additional_urls` 라는 목록에, 지정된 URL(`http://arduino.esp8266.com/...`)을 추가하고 저장함.
28+
29+
이 명령어는 arduino-cli에게 "앞으로 보드 패키지 목록을 찾을 때, 아두이노 공식 서버뿐만 아니라, 내가 지금 알려주는 이 인터넷 주소도 확인 대상에 포함시켜라" 라고 데이터 소스(Source)를 등록하는 일회성 작업임. 이 명령 자체는 어떠한 다운로드도 수행하지 않음.
30+
31+
32+
## 드라이버 업데이트
33+
```shell
34+
arduino-cli core update-index
35+
```
36+
등록된 모든 데이터 소스로부터 최신 패키지 목록을 다운로드하는 명령어임.
37+
38+
`arduino-cli.yaml` 설정 파일에 등록된 모든 URL(아두이노 공식 URL + 우리가 config set으로 추가한 URL)에 실제로 접속하여, `package_..._index.json` 이라는 이름의 파일들을 다운로드하고 로컬 캐시를 업데이트함.
39+
40+
`package_..._index.json` 파일 안에는 설치 가능한 보드, 라이브러리, 도구들의 이름과 버전 정보가 들어있음.
41+
42+
## WeMos 드라이버 설치
43+
```shell
44+
arduino-cli core install esp8266:esp8266
45+
```
46+
`arduino-cli core update-index` 명령어를 실행 이후에, 최신 목록을 바탕으로 WEMOS D1를 위한 전용 패키지를 설치하기.
47+
48+
## config set ..., core update-index, core install의 차이
49+
- `config set ...` 명령어로 arduino-cli에게 새로운 정보 소스의 주소를 알려줌.
50+
51+
- `core update-index` 명령어는 `config set` 으로 알려준 그 새로운 주소를 포함한 모든 주소에 접속해서, 설치 가능한 패키지 목록을 가져옴.
52+
53+
- `core install ...` 명령어는 `update-index` 가 가져온 그 목록을 보고, 필요한 파일을 설치함.
54+
55+
## Wifi 관련 라이브러리 설치
56+
ESP8266WiFi.h와 같은 WiFi 관련 기능은 별도의 라이브러리를 `lib install`로 설치하는 것이 아님.
57+
이 기능들은 `arduino-cli core install esp8266:esp8266` 명령어로 설치되는 "ESP8266 보드 지원 패키지" 안에 이미 포함되어 있음.
58+
59+
## 아두이노 프로젝트 생성
60+
```shell
61+
arduino-cli sketch new PROJECT_NAME
62+
```
63+
64+
## 아두이노 프로그래밍
65+
`PROJECT_NAME.ino` 이렇게 아두이노 메인 파일 이름은 프로젝트 이름과 동일해야 함이 관례임.
66+
67+
하나의 프로젝트(폴더) 안에는 `setup()``loop()` 함수가 단 한 번만 존재해야 함.
68+
`setup()``loop()`는 프로그램의 시작점임으로, 메인 파일에 위치하는 것이 관례임.
69+
70+
arduino-cli는 프로젝트 내부의 모든 파일들을 독립적으로 인식하는 것이 아니라, 컴파일 직전에 하나의 거대한 파일로 그냥 이어 붙여버림.
71+
컴포넌트 같이 만드러면 `.h` 해더파일을 만들어야함.
72+
73+
아두이노에서 활용하는 언어는 C++의 변형된 프로그래밍 언어를 사용함으로, C++ 프로그래밍과 완전하게 같음.
74+
75+
## 아두이노 관련 VSC 익스텐션 설치
76+
```markdown
77+
Arduino Community Edition
78+
C/C++
79+
C/C++ Extension Pack
80+
```
81+
VSC 익스텐션 3개를 설치해야 함.
82+
83+
## .vscode 디렉토리 생성
84+
`.vscode` 디렉토리를 생성해야 함.
85+
그러나 개발자가 직접 생성 안해도, Arduino 확장 프로그램이 직접 `.vscode` 폴더를 생성하고 `arduino.json` 같은 파일을 거기에 위치시킴.
86+
87+
## VSC에서 아두이노 설정하기
88+
```shell
89+
Arduino: Change Board Type
90+
```
91+
Command Palette에서 `Arduino: Change Board Type` 를 입력한 후, `LOLIN(WeMos) D1 R2 & mini` 선택하기.
92+
93+
이 명령어를 실행하면, `.vscode/arduino.json` 파일이 생성-수정됨.
94+
굳이 arduino.json 파일을 따로 만들지 않아도, .vscode 디렉토리에 자동으로 저장됨.
95+
96+
`arduino.json` 파일은
97+
1. "Arduino" 확장 프로그램의 명령어 생성기 역할
98+
- Arduino: Change Board Type에서 모델을 선택하면, 그 정보("board": "esp8266:esp8266:d1_mini")가 arduino.json에 저장됨.
99+
- 이 정보가 VSC의 UI 버튼(Upload(→) 버튼 등)을 누를 때 명령어 인수로서 활용됨.
100+
2. C/C++ 확장 프로그램의 코드 자동완성(IntelliSense)을 위한 정보 제공 역할
101+
을 수행함.
102+
103+
`arduino.json` 파일 내부의 속성은
104+
105+
- "sketch"
106+
- 어떤 .ino 파일이 메인 파일인지 알려줌.
107+
- 사용자가 직접 수정해야 할 수 있음. (예: 파일 이름을 바꿨을 때)
108+
- "board
109+
- 어떤 보드를 타겟으로 컴파일할지 알려줌. (--fqbn 값)
110+
- Arduino: Change Board Type 메뉴로 설정됨.
111+
- "output"
112+
- 컴파일 결과물을 어디에 저장할지 알려줌.
113+
- Arduino: Initialize 실행 시 기본적으로 추가되거나, 사용자가 직접 추가할 수 있음.
114+
- "port"
115+
- 어느 USB 포트로 업로드할지 알려줌.
116+
- Arduino: Select Serial Port 메뉴로 설정됨.
117+
118+
이것임.
119+
120+
`arduino.json` 파일은 개발자가 직접 관리할 수 있는 파일임.
121+
122+
## 참고: ESP8266은 같은데 왜 이렇게 Board Type은 선택하는 것이 많은가?
123+
각각 보드가 ESP8266은 이라는 핵심 칩(두뇌)은 동일하지만,
124+
그 두뇌를 둘러싼 '몸체'가 다르기 때문에 VS Code에서 그 많은 모델을 선택해야 하는 것임.
125+
126+
`Arduino: Change Board Type` 에서 특정 모델을 선택하는 것은,
127+
컴파일러에게 바로 이 몸체의 미세한 차이점을 알려주는 매우 중요한 과정임.
128+
129+
## VSC에서 아두이노를 위한 C/C++ IntelliSense 설정하기
130+
```shell
131+
Arduino: Rebuild IntelliSense Configuration
132+
```
133+
`arduino-cli lib install "MQ135"` 이렇게 Arduino 관련 새로운 라이브러리 등을 설치하면,
134+
해당 라이브러리를 `#include` 를 사용해서 불러오면 오류가 발생할 수 있음.
135+
외부 라이브러리를 설치한 후, VS Code가 그 라이브러리의 위치를 인식하도록 강제로 해당 명령어를 활용하여 새로고침하기.
136+
137+
이 명령어를 실행하면, `c_cpp_properties.json` 파일이 생성-수정된다.
138+
`c_cpp_properties.json` 파일은 C/C++ 확장 프로그램의 코드 분석기(IntelliSense)만을 위한 것임.
139+
사용자가 절대로 직접 수정해서는 안 됨.
140+
141+
## 컴파일
142+
```shell
143+
arduino-cli compile --fqbn esp8266:esp8266:d1_mini --output-dir ./build .
144+
```
145+
현재 폴더의 모든 .ino 파일을 합쳐서 컴파일함. 결과물은 build 디렉토리에 저장됨.
146+
`build` 디렉토리는 절대 Git/GitHub에 포함시키면 안됨.
147+
148+
## 업로드
149+
```shell
150+
arduino-cli upload -p /dev/cu.usbserial-A5069RR4 --fqbn esp8266:esp8266:d1_mini .
151+
```
152+
build 디렉토리를 바탕으로 업로드를 수행함.
153+
업로드란 아두이노에게 만든 프로그램을 주입하는 것임.
154+
155+
## 아두이노 보드 검색
156+
```shell
157+
arduino-cli core list
158+
```
159+
해당 명령어로 현재 컴퓨터에 연결된 아두이노 보드 검색하기.
160+
만약 업로드할 때 오류가 난다면, 보드가 정상적으로 연결되지 않았다는 것을 의미함으로, 해당 명령어로 연결된 보드를 검색해보기.
161+
162+
## daemon
163+
```shell
164+
arduino-cli daemon
165+
```
166+
이 명령어를 실행해 두면, arduino-cli를 백그라운드에 상주시켜 컴파일 속도를 비약적으로 향상시킴.
167+
168+
## 출력 확인
169+
```shell
170+
arduino-cli monitor -p /dev/cu.usbserial-A5069RR4 -c baudrate=115200"
171+
```
172+
아두이노 보드가 Serial.print()로 보내는 메시지를 컴퓨터 화면에서 확인할 수 있게하는 명령어.
173+
`-c baudrate` 값은 아두이노 코드의 `Serial.begin()` 에 있는 숫자와 반드시 일치해야 함.
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
date: 2025-10-01
3+
category: [Arduino]
4+
published: true
5+
fixed: false
6+
---
7+
8+
## WeMos 보드란 무엇인가?
9+
나는 예전에 아두이노(WeMos 보드)는 다른 컴퓨터에 의존해서만 작동할 수 있다고 배움.
10+
다른 컴퓨터가 없으면 WeMos 보드는 동작할 수 없다고 배움.
11+
12+
그러나, WeMos 보드는 다른 컴퓨터 없이 전원 연결 만으로 완벽하게 단독 실행이 가능함.
13+
14+
단독으로 실행될 때, WeMos 보드는 단일 목적 기기처럼 작동하고,
15+
라즈베리파이는 다목적 컴퓨터처럼 작동한다는 근본적인 차이가 있음.
16+
17+
## 라즈베리파이 vs WeMos
18+
- 마이크로컨트롤러
19+
- 오직 하나의 프로그램만 실행하도록 설계됨.
20+
- 운영체제가 없음. 코드가 하드웨어를 직접 제어함.
21+
- 전원을 켜자마자 즉시 프로그램이 시작됨.
22+
- 배터리 하나로 오랫동안 작동할 수 있음.
23+
- 구조가 간단함.특정 작업을 매우 안정적으로 수행함.
24+
25+
- 단일 보드 컴퓨터
26+
- 리눅스(Linux)라는 운영체제가 설치되어 여러 프로그램을 동시에 실행할 수 있음.
27+
- 일반적인 컴퓨터처럼 모니터, 키보드, 마우스를 연결해서 사용할 수 있음.
28+
- WeMos 보드보다 수백, 수천 배 강력한 CPU와 훨씬 더 큰 RAM을 가지고 있음.
29+
- WeMos 보드보다 훨씬 더 많은 전기를 필요로 하며, 부팅하는 데 수십 초가 걸림.
30+
31+
- 근본적인 차이점
32+
- 마이크로컨트롤러와 단일 보드 컴퓨터를 가르는 근본적인 차이점은, 마이크로컨트롤러는 코드가 하드웨어를 직접 제어하며, 단일 보드 컴퓨터는 운영체제가 하드웨어를 대신 제어한다는 것임.
33+
- 마이크로컨트롤러는 전원이 켜지면, 입력 받은 하나의 프로그램만 영원히 반복함. 그러나, 단일 보드 컴퓨터는 전원이 켜지면, 완전한 컴퓨터 운영체제를 부팅하여, 사용자의 입력에 따라 다양한 프로그램을 선택적으로 실행할 수 있는 상태가 됨.
34+
- 즉, 직접 코드가 하드웨어를 제어하느냐, 아니면 운영체제를 통해 하드웨어를 제어하느냐가 근본적인 차이점임.
35+
36+
## ESP8266이란 무엇인가?
37+
WEMOS 보드에는, CPU를 포함한 여러 기능이 하나로 합쳐진 ESP8266이라는 칩(SoC)이 탑재되어 있음.
38+
39+
ESP8266 칩 안에는
40+
41+
- CPU (Tensilica L106 프로세서)
42+
- Wi-Fi
43+
- GPIO 컨트롤러
44+
- 메모리 컨트롤러
45+
46+
가 들어 있음.
47+
48+
## WeMos vs ESP8266
49+
ESP8266이 일체형 PC의 압축된 메인보드라면, WEMOS D1 R1 보드는 그 메인보드를 실제 제품으로 완성시킨 완제품 일체형 PC임.
50+
51+
WEMOS 보드는 ESP8266 칩이 혼자서는 할 수 없는 생명 유지 장치와 편의 기능을 제공함.
52+
53+
- 전원 회로: USB의 5V 전기를 ESP8266이 필요로 하는 3.3V로 안정적으로 바꿔줌.
54+
- USB 통신 칩: 컴퓨터와 코드를 주고받고 Serial.print 메시지를 보낼 수 있게 해줌.
55+
- 핀 헤더: 우리가 전선을 쉽게 꽂을 수 있도록 만들어진 연결부임.
56+
- 버튼/LED: 사용자가 직접 누르거나 상태를 확인할 수 있는 기본 장치임.
57+
- 외부 플래시 메모리: 우리가 작성한 큰 프로그램을 저장하기 위한 추가적인 저장 공간임.
58+
59+
ESP8266은 단독적으로 완전한 PC가 아니고 메인보드(연산...)를 말하는 것이고,
60+
전원 같은 것을 공급-제공해주는 것이 WeMos 보드임.
61+
62+
즉,
63+
64+
- ESP8266 칩 = 자동차 엔진
65+
- WEMOS 보드 = 완성된 자동차
66+
67+
라고 생각하면 됨.

content/home/home.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ published: false
33
fixed: false
44
---
55

6-
반갑습니다. 개발자 차한음입니다.
6+
차한음 블로그에 오신 것을 환영합니다.

content/개발 회고/Go로 정적 블로그 개발해 본 후기.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@ fixed: false
88
![](/assets/gopher.png)
99

1010
작성 중...
11+
12+
GitHub Repo 구경가기: https://github.com/chebread/chebread.github.io

content/해커톤/해커톤을 처음 나가는 개발자들을 위한 팁.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ published: true
66
fixed: false
77
---
88

9-
> 저는 이번 처음 한국코드페어 해커톤을 출전하여 동상을 수상하였습니다. 거기서 느낀 경험담을 들리고자 합니다.
9+
> 저는 이번 한국코드페어 해커톤을 출전하여 동상을 수상하였습니다. 거기서 느낀 경험담을 들리고자 합니다.
1010
1111
## 주어질 주제에 대해 지나치게 신경 쓰지 마라
1212
나는 해커톤을 하기 몇 주 전부터 뭐가 주제로 정해질 지 많이 걱정했다. 그렇지만, 해커톤이 시작한 후 주제를 알려주는데 16가지나 주어 저 그렇게 문제가 되지는 않았다. 그러니 해커톤은 그저 개발과 아이디어만 잘 짜면 된다.

layout/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="차한음">

layout/index.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="차한음">

lib/compare_ko_en.go

Lines changed: 0 additions & 14 deletions
This file was deleted.

lib/copy_dir.go

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)