R-Pico 2 W Wireless Access Point + Analog Devices DS18B20 1-Wire Sensor de Temperatura (IoT)

Aquí esta el demo de un Raspberry Pico 2W usando el C SDK que combina dos previos artículos, uno de ellos es el Sensor de Temperatura de 1-Cable Analog Devices DS18B20 - foro en español - DigiKey TechForum - An Electronic Component and Engineering Solution Forum y el otro es el R-Pico 2 W Wireless Access Point (Controlando IoT LED) - foro en español - DigiKey TechForum - An Electronic Component and Engineering Solution Forum, códigos en C para crear una aplicación sencilla IoT via la Raspberry Pico 2 W C-SDK. Ambos fueron integrados y las modificaciones necesarias fueron en esta sección del código previamente mostrado en el artículo R-Pico 2 W Wireless Access Point + Analog Devices DS18B20 1-Wire Sensor de Temperatura (IoT),

#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"

Esto define el HTML que se presenta al usuario via el WiFi Access Point que provee la Raspberry Pico 2 W. Estos fueron cambiados para acomodar los 3 Analog Devices DS18B20 temperature sensors en un “breadboard” mostrado en el previo artculo. En el archivo main.c del R-Pico 2 W Wireless Access Point (Controlling IoT LED) la siguiente sección fue modificada,

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;
}

Especificamente fue modificada donde genera el resultado HTML al usuario,

  len = snprintf(result, max_result_len, LED_TEST_BODY, "ON", 0, "OFF");

Aquí está la foto del “breadboard” usado mostrando los 3 Analog Devices DS18B20 temperature sensors

El “breadboard” se colocó afuera y fue suministrado con energía eléctrica via una bateria en el USB para medir la temperatura exterior. La Raspberry Pico 2 W provee en demanda lectura de los sensores de temperatura con via directa al Wireless Access Point desde un teléfono celular con un “web browser”. Aquí se muestra una captura del telefono celular accesando e Wireless Access Point via la linea 1-Wire bus donde los 3 Analog Devices DS18B20 temperature sensors estan conectados.

La temperatura ha dramaticamente cambiado desde 11F a las 12 AM a este nivel cerca de las 2 PM lo que es un cambio de cerca de +35F. La Raspberry Pico 2 W es una excellente platforma para desarrollar este tipo de aplicaciones IoT. Tambien los Analog Devices DS18B20 temperature sensors son una gran manera de medir temperatura para muchas aplicaciones. Ambos estan disponibles en DigiKey. Que tenga un buen día.

Este artículo esta disponible en inglés aqui.

This article is available in english here.

1 Like