이번 글은 C SDK를 사용하는 라즈베리 파이 피코 2 W (이하 피코 2 W)의 데모에 관한 것입니다. 이 데모는 이전 게시글인 라즈베리 파이 피코 2 W로 구축하는 무선 액세스 포인트 기반 LED 제어와 아나로그디바이스 DS18B20 1-Wire 온도 센서의 C 코드를 결합한 내용으로, Pico C SDK를 활용하여 간단한 IoT 시스템을 구현하였습니다. 두 코드를 통합하였으며, 근본적은 수정사항은 라즈베리 파이 피코 2 W로 구축하는 무선 액세스 포인트 기반 LED 제어 글에 있는 C 코드 중 아래 부분에서 이루어졌습니다.
#define LED_TEST_BODY "<html><body><h1>Hello from Pico.</h1><p>Led is %s</p><p><a href=\"?led=%d\">Turn led %s</a></body></html>"
#define LED_PARAM "led=%d"
이 부분은 피코 2 W가 와이파이 액세스 포인트를 통해 사용자에게 제공하는 HTML 파일을 정의하며, 이전 게시글에서처럼 브레드 보드에 장착된 3개의 DS18B20 온도 센서를 수용하고 표시할 수 있도록 수정되었습니다. 라즈베리 파이 피코 2 W로 구축하는 무선 액세스 포인트 기반 LED 제어 글에 있는 main.c 파일의 다음 부분이 수정되었습니다.
static int test_server_content(const char *request, const char *params, char *result, size_t max_result_len) {
int len = 0;
if (strncmp(request, LED_TEST, sizeof(LED_TEST) - 1) == 0) {
// Get the state of the led
bool value;
cyw43_gpio_get(&cyw43_state, LED_GPIO, &value);
int led_state = value;
// See if the user changed it
if (params) {
int led_param = sscanf(params, LED_PARAM, &led_state);
if (led_param == 1) {
if (led_state) {
// Turn led on
cyw43_gpio_set(&cyw43_state, LED_GPIO, true);
} else {
// Turn led off
cyw43_gpio_set(&cyw43_state, LED_GPIO, false);
}
}
}
// Generate result
if (led_state) {
len = snprintf(result, max_result_len, LED_TEST_BODY, "ON", 0, "OFF");
} else {
len = snprintf(result, max_result_len, LED_TEST_BODY, "OFF", 1, "ON");
}
}
return len;
}
구체적으로, 결과를 생성하여 사용자에게 전달하는 아래 부분이 수정되었습니다.
len = snprintf(result, max_result_len, LED_TEST_BODY, "ON", 0, "OFF");
아래는 사용된 브레드보드의 사진으로, 3개의 DS18B20 온도 센서를 확인할 수 있습니다.
외부 온도를 측정하기 위해 USB 배터리로 전원을 공급하고 브레드보드는 실외에 설치하였습니다. 피코 2 W는 무선 액세스 포인트를 통해 요청이 있을 때마다 스마트폰 웹 브라우저로 온도 측정값을 제공합니다. 아래는 스마트폰이 무선 액세스 포인트에 접속해, 1‑Wire 버스로 연결된 DS18B20 온도 센서 3개의 데이터를 표시하는 화면입니다.
온도는 자정 무렵 약 11°F에서 오후 2시경 약 +35°F 상승한 수준까지 크게 변하였습니다. 피코 2 W는 이러한 유형의 IoT 애플리케이션을 개발하기에 매우 적합한 플랫폼이며, DS18B20 온도 센서 역시 다양한 응용 분야에서 온도를 측정하는 데 매우 효과적인 솔루션입니다. 두 제품 모두 디지키에서 구매 가능합니다.
좋은 하루 되세요!
영문 원본: R-Pico 2 W Wireless Access Point + Analog Devices DS18B20 1-Wire Temperature Sensors (IoT)

