<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.uktech.com.br/bloguk/maker/feed" rel="self" type="application/rss+xml"/><title>UKTech - Blog UKTech , Maker</title><description>UKTech - Blog UKTech , Maker</description><link>https://www.uktech.com.br/bloguk/maker</link><lastBuildDate>Thu, 07 May 2026 09:37:33 -0700</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[ESP-IDF: Utilizando MQTT em seus projetos]]></title><link>https://www.uktech.com.br/bloguk/post/esp-idf-utilizando-mqtt-em-seus-projetos</link><description><![CDATA[<img align="left" hspace="5" src="https://www.uktech.com.br/ilya-pavlov-OqtafYT5kTw-unsplash.jpg"/>O MQTT (Message Queuing Telemetry Transport) emerge como uma poderosa solução de comunicação para o mundo interconectado de dispositivos na era da Int ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_NPqUDks4RoWvCcAlgyJ4HA" data-element-type="section" class="zpsection "><style type="text/css"> [data-element-id="elm_NPqUDks4RoWvCcAlgyJ4HA"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_6gyCB6dURCqICFRlNlTFCg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_5HGJGuNSTaKLCxTFLLcmVA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_rnV1JAdJQVuJjdKVsoCEaA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_rnV1JAdJQVuJjdKVsoCEaA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-justify " data-editor="true"><div style="color:inherit;"><div>O MQTT (Message Queuing Telemetry Transport) emerge como uma poderosa solução de comunicação para o mundo interconectado de dispositivos na era da Internet das Coisas (IoT). Este protocolo leve e eficiente foi projetado para facilitar a troca de mensagens entre dispositivos distribuídos em redes com larguras de banda variadas. Com sua arquitetura baseada em publicação/assinatura, o MQTT proporciona uma comunicação assíncrona, permitindo que dispositivos troquem informações de forma eficaz e sem a necessidade de conexões persistentes.&nbsp;</div><div>Uma das principais vantagens do uso do MQTT é a sua baixa sobrecarga de rede, o que o torna ideal para dispositivos com recursos limitados, como micro controladores. Além disso, o MQTT é altamente escalável e flexível, permitindo a comunicação entre milhares de dispositivos simultaneamente.</div><div>Para utilizar o MQTT em seus projetos baseados no ESP-IDF, é necessário primeiro configurar um broker MQTT, que será responsável por receber e encaminhar as mensagens entre os dispositivos. Em seguida, você pode utilizar a biblioteca MQTT do ESP-IDF para se conectar ao broker, publicar e assinar tópicos e trocar informações com outros dispositivos.</div><div>Ao utilizar o MQTT em seus projetos, você poderá criar aplicações IoT robustas e eficientes, permitindo que seus dispositivos se comuniquem de forma confiável e escalável.</div></div></div>
</div><div data-element-id="elm_38QznfqGgc0Pgv5tHwjW5Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_38QznfqGgc0Pgv5tHwjW5Q"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Broker</span></h2></div>
<div data-element-id="elm_jFPdFMimYm1ojYy3LLXPqQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_jFPdFMimYm1ojYy3LLXPqQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>Para fins didaticos neste tutorial utilizaremos o broker de testes gratuito disponível no endereço:</div><div><div><a href="https://www.emqx.com/en/mqtt/public-mqtt5-broker" title="[broker.emqx.io]" target="_blank" rel="">[broker.emqx.io]</a>&nbsp;na porta 1883.</div></div></div></div>
</div><div data-element-id="elm_o7blYvav0zPvbkZ-2RlG7w" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_o7blYvav0zPvbkZ-2RlG7w"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Objetivo</span></h2></div>
<div data-element-id="elm_JUPLLSzaa1_TViF2HKSN2g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_JUPLLSzaa1_TViF2HKSN2g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">A aplicação ira conectar ao WiFi obeter o endereço IP via DHCP, em seguida a mesma ira se increver no topico MQTT e publicar uma mensagem, além de imprimir no monitor serial as mensagens recebidas no mesmo topico.</span><br></p></div>
</div><div data-element-id="elm_3BV9V3ZMRrc2klHnnJhIBQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_3BV9V3ZMRrc2klHnnJhIBQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Código</span></h2></div>
<div data-element-id="elm_ZXfuMhvYRovhYNk7VUB_Wg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ZXfuMhvYRovhYNk7VUB_Wg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">A execução inicial do código é conduzida pela função wifi_app_start(). Essa função tem a responsabilidade de iniciar o Wi-Fi, estabelecer a conexão com a internet e, adicionalmente, através de uma função de callback configurada para ser acionada após o ESP receber um endereço IP válido, estabelecer a conexão com o MQTT.</span><br></p></div>
</div><div data-element-id="elm_DnpBvPzhRw2h4eheDzvgpg" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script><pre style="font-family:monospace;font-size:14px;background-color:rgb(229, 230, 230);"><code class="prettyprint">
static void wifi_event_handler(void *event_handler_arg, esp_event_base_t event_base, int32_t event_id, void *event_data)
{
    if (event_id == WIFI_EVENT_STA_START)
    {
        ESP_LOGI(TAG, "Tentando conexao wifi....\n");
    }
    else if (event_id == WIFI_EVENT_STA_CONNECTED)
    {
        ESP_LOGI(TAG, "WiFi conenctado");
    }
    else if (event_id == WIFI_EVENT_STA_DISCONNECTED)
    {
        ESP_LOGI(TAG, "WiFi desconectado\n");
        if (retry_num < 5) { esp_wifi_connect(); retry_num++; ESP_LOGI(TAG, "Tentando reconexao wifi...\n"); } } else if (event_id== IP_EVENT_STA_GOT_IP) { ESP_LOGI(TAG, "IP recebido"); //Inicia procedimento de conexão ao MQTT mqtt_app_start(); } } esp_err_t wifi_app_start() { //Inicializa o armazenamento flash (requerido pelo driver de wifi) ESP_ERROR_CHECK(nvs_flash_init()); //Inicializa o sistema Wi-fi e a pilha TCP/IP esp_netif_init(); esp_event_loop_create_default(); esp_netif_create_default_wifi_sta(); wifi_init_config_t wifi_initiation=WIFI_INIT_CONFIG_DEFAULT(); esp_wifi_init(&wifi_initiation); //Registra as funçoes de callback para os eventos de wifi e ip esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, wifi_event_handler, NULL); esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, wifi_event_handler, NULL); //Estrutura de incialização wifi_config_t wifi_configuration={ .sta={ .ssid="" , .password="" , } }; //Faz uma cópia das variaveis globais para dentro da estrutura de inicialização strcpy((char*)wifi_configuration.sta.ssid, ssid); strcpy((char*)wifi_configuration.sta.password, passwd); //Atribui os parametros de inicialização esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_configuration); //Inicializa a conexão esp_wifi_start(); esp_wifi_set_mode(WIFI_MODE_STA); esp_wifi_connect(); return ESP_OK; }</code></pre></div>
</div><div data-element-id="elm_tZtnZ2OZ1bTqkN0_xmfBCQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_tZtnZ2OZ1bTqkN0_xmfBCQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">A função mqtt_app_start() é invocada para configurar o endereço do broker MQTT e definir a função de callback responsável por gerenciar os eventos associados. Após a conexão bem-sucedida com o broker, o ESP se inscreve em um tópico específico e envia uma mensagem correspondente. Adicionalmente, o conteúdo desse tópico é impresso no monitor serial.&nbsp;&nbsp;</span><br></p></div>
</div><div data-element-id="elm_z5GGI8NhSj2mlOkbgUjUiw" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script><pre style="font-family:monospace;font-size:14px;background-color:rgb(229, 230, 230);"><code class="prettyprint">
static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
{
    esp_mqtt_event_handle_t event = event_data;
    switch ((esp_mqtt_event_id_t)event_id)
    {
    case MQTT_EVENT_CONNECTED:
        ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");

        char *topico = "testtopic/238191212838";
        char *mensagem = "Olá mundo";

        esp_mqtt_client_publish(handler_args, topico, mensagem, 0, 0 ,0 );
        esp_mqtt_client_subscribe_single(handler_args, topico, 0);

        break;
    case MQTT_EVENT_DISCONNECTED:
        ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
        break;
    case MQTT_EVENT_SUBSCRIBED:
        break;
    case MQTT_EVENT_UNSUBSCRIBED:
        ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id);
        break;
    case MQTT_EVENT_PUBLISHED:
        ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
        break;
    case MQTT_EVENT_DATA:
        ESP_LOGI(TAG, "Dados recebidos: ");
        printf("TOPICO=%.*s\r\n", event->topic_len, event->topic);
        printf("DADOS=%.*s\r\n", event->data_len, event->data);
        break;
    default:
        ESP_LOGI(TAG, "Other event id:%d", event->event_id);
        break;
    }
}

static void mqtt_app_start(void)
{

    esp_mqtt_client_config_t mqtt_cfg = {
        .broker.address.uri = "mqtt://broker.emqx.io:1883",
    };

    esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);

    esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, client);
    esp_mqtt_client_start(client);
}
</code></pre></div>
</div><div data-element-id="elm_8Ok4iBs488FRcyeSvZ9l5g" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_8Ok4iBs488FRcyeSvZ9l5g"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Resultado</span></h2></div>
<div data-element-id="elm_Se17MxBBMyPywuRtOAwaIQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Se17MxBBMyPywuRtOAwaIQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Usando o cliente MQTTX para interagir com o broker:</span><br></p></div>
</div><div data-element-id="elm_EQMPp1GgkqgO1JMXtcefyA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_EQMPp1GgkqgO1JMXtcefyA"] .zpimage-container figure img { width: 1110px ; height: 887.65px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_EQMPp1GgkqgO1JMXtcefyA"] .zpimage-container figure img { width:723px ; height:578.17px ; } } @media (max-width: 767px) { [data-element-id="elm_EQMPp1GgkqgO1JMXtcefyA"] .zpimage-container figure img { width:415px ; height:331.87px ; } } [data-element-id="elm_EQMPp1GgkqgO1JMXtcefyA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled-2.png" width="415" height="331.87" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_pjryIkcCqAWCDctAwsNuNA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_pjryIkcCqAWCDctAwsNuNA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Mensagem enviada pelo computador:</span><br></p></div>
</div><div data-element-id="elm_XHwaNxweWGM50s3kyeuItA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_XHwaNxweWGM50s3kyeuItA"] .zpimage-container figure img { width: 736px !important ; height: 184px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_XHwaNxweWGM50s3kyeuItA"] .zpimage-container figure img { width:736px ; height:184px ; } } @media (max-width: 767px) { [data-element-id="elm_XHwaNxweWGM50s3kyeuItA"] .zpimage-container figure img { width:736px ; height:184px ; } } [data-element-id="elm_XHwaNxweWGM50s3kyeuItA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-1--1.png" width="736" height="184" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_tI9k5EczVvged_OxWd9mig" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_tI9k5EczVvged_OxWd9mig"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Mensagem recebida no ESP:</span><br></p></div>
</div><div data-element-id="elm_Ksd3MUtFWkCdbiiSOzQvvg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_Ksd3MUtFWkCdbiiSOzQvvg"] .zpimage-container figure img { width: 1110px ; height: 217.66px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_Ksd3MUtFWkCdbiiSOzQvvg"] .zpimage-container figure img { width:723px ; height:141.77px ; } } @media (max-width: 767px) { [data-element-id="elm_Ksd3MUtFWkCdbiiSOzQvvg"] .zpimage-container figure img { width:415px ; height:81.38px ; } } [data-element-id="elm_Ksd3MUtFWkCdbiiSOzQvvg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-2-.png" width="415" height="81.38" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_PO-6J9UgKsROQklOzr37lA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_PO-6J9UgKsROQklOzr37lA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Bônus: Código completo:</span><br></h2></div>
<div data-element-id="elm_QGzeSNHlNTljCbhEsLUxyw" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script><pre style="font-family:monospace;font-size:14px;background-color:rgb(229, 230, 230);"><code class="prettyprint">
#include <stdio.h>
#include <stdint.h>
#include <stddef.h>
#include <string.h>
#include "esp_wifi.h"
#include "esp_system.h"
#include "nvs_flash.h"
#include "esp_event.h"
#include "esp_netif.h"

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "freertos/queue.h"

#include "lwip/sockets.h"
#include "lwip/dns.h"
#include "lwip/netdb.h"

#include "esp_log.h"
#include "mqtt_client.h"


char *ssid = "Nome canonico da rede wifi";
char *passwd = "senha";

static const char *TAG = "EXEMPLO_MQTT";
int retry_num = 0;

static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
{
    esp_mqtt_event_handle_t event = event_data;
    switch ((esp_mqtt_event_id_t)event_id)
    {
    case MQTT_EVENT_CONNECTED:
        ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");

        char *topico = "testtopic/238191212838";
        char *mensagem = "Olá mundo";

        esp_mqtt_client_publish(handler_args, topico, mensagem, 0, 0 ,0 );
        esp_mqtt_client_subscribe_single(handler_args, topico, 0);

        break;
    case MQTT_EVENT_DISCONNECTED:
        ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
        break;
    case MQTT_EVENT_SUBSCRIBED:
        break;
    case MQTT_EVENT_UNSUBSCRIBED:
        ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id);
        break;
    case MQTT_EVENT_PUBLISHED:
        ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
        break;
    case MQTT_EVENT_DATA:
        ESP_LOGI(TAG, "Dados recebidos: ");
        printf("TOPICO=%.*s\r\n", event->topic_len, event->topic);
        printf("DADOS=%.*s\r\n", event->data_len, event->data);
        break;
    default:
        ESP_LOGI(TAG, "Other event id:%d", event->event_id);
        break;
    }
}

static void mqtt_app_start(void)
{

    esp_mqtt_client_config_t mqtt_cfg = {
        .broker.address.uri = "mqtt://broker.emqx.io:1883",
    };

    esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);

    esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, client);
    esp_mqtt_client_start(client);
}

static void wifi_event_handler(void *event_handler_arg, esp_event_base_t event_base, int32_t event_id, void *event_data)
{
    if (event_id == WIFI_EVENT_STA_START)
    {
        ESP_LOGI(TAG, "Tentando conexao wifi....\n");
    }
    else if (event_id == WIFI_EVENT_STA_CONNECTED)
    {
        ESP_LOGI(TAG, "WiFi conenctado");
    }
    else if (event_id == WIFI_EVENT_STA_DISCONNECTED)
    {
        ESP_LOGI(TAG, "WiFi desconectado\n");
        if (retry_num < 5) { esp_wifi_connect(); retry_num++; ESP_LOGI(TAG, "Tentando reconexao wifi...\n"); } } else if (event_id== IP_EVENT_STA_GOT_IP) { ESP_LOGI(TAG, "IP recebido"); //Inicia procedimento de conexão ao MQTT mqtt_app_start(); } } esp_err_t wifi_app_start() { //Inicializa o armazenamento flash (requerido pelo driver de wifi) ESP_ERROR_CHECK(nvs_flash_init()); //Inicializa o sistema Wi-fi e a pilha TCP/IP esp_netif_init(); esp_event_loop_create_default(); esp_netif_create_default_wifi_sta(); wifi_init_config_t wifi_initiation=WIFI_INIT_CONFIG_DEFAULT(); esp_wifi_init(&wifi_initiation); //Registra as funçoes de callback para os eventos de wifi e ip esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, wifi_event_handler, NULL); esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, wifi_event_handler, NULL); //Estrutura de incialização wifi_config_t wifi_configuration={ .sta={ .ssid="" , .password="" , } }; //Faz uma cópia das variaveis globais para dentro da estrutura de inicialização strcpy((char*)wifi_configuration.sta.ssid, ssid); strcpy((char*)wifi_configuration.sta.password, passwd); //Atribui os parametros de inicialização esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_configuration); //Inicializa a conexão esp_wifi_start(); esp_wifi_set_mode(WIFI_MODE_STA); esp_wifi_connect(); return ESP_OK; } void app_main(void) { esp_log_level_set("*", ESP_LOG_NONE); ESP_ERROR_CHECK(wifi_app_start()); }</code></pre></div>
</div><div data-element-id="elm_y0pFy4fLcOziNE1DKQC1ew" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_y0pFy4fLcOziNE1DKQC1ew"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_-OmBLlFpdRKT2MTUWG1rFw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_-OmBLlFpdRKT2MTUWG1rFw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>Sobre o autor:<br></div><div>Matheus desempenha o papel de desenvolvedor de sistemas de tecnologia da informação dentro da equipe da UKTech. Possui&nbsp; experiência no domínio de micro controladores e desenvolvimento de software, e está na reta final de sua graduação em Engenharia de Computação. Em seus momentos de lazer, ele se dedica a interesses como jogos de computador e a apreciação de animes.</div></div></div>
</div><div data-element-id="elm_7IkFOG2J5757SqlW_IjmwQ" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_7IkFOG2J5757SqlW_IjmwQ"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 29 Jan 2024 16:35:11 -0300</pubDate></item><item><title><![CDATA[ESP-IDF: UART, lendo e escrevendo dados utilizando o conversor serial FT232RL.]]></title><link>https://www.uktech.com.br/bloguk/post/esp-idf-uart-lendo-e-escrevendo-dados-utilizando-o-conversor-serial-ft232rl.</link><description><![CDATA[<img align="left" hspace="5" src="https://www.uktech.com.br/Untitled -27-.png"/>O tutorial de hoje tem como objetivo mostrar como se da a utilização do protocolo UART através da comunicação do ESP32-C3 e o conversor serial FT232RL.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_xnwpC1heQQ-dfkWM-DZgWA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_NVYIs1CkR7OxCAYeP8QRcw" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_R9_I0rSNQAasdPN7V4UkAA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_R9_I0rSNQAasdPN7V4UkAA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_diElpsJ3QK-WZZrGw0Yrrg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_diElpsJ3QK-WZZrGw0Yrrg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p><span style="color:inherit;">O tutorial de hoje tem como objetivo mostrar como se da a utilização do protocolo <span style="font-weight:600;">UART</span> através da comunicação do <span style="font-weight:600;">ESP32-C3</span> e o conversor serial <span style="font-weight:600;">FT232RL</span>.</span><br></p></div>
</div><div data-element-id="elm_onMeyjZ4jzvL8xRDX-qYZg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_onMeyjZ4jzvL8xRDX-qYZg"] .zpimage-container figure img { width: 800px ; height: 600.00px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_onMeyjZ4jzvL8xRDX-qYZg"] .zpimage-container figure img { width:500px ; height:375.00px ; } } @media (max-width: 767px) { [data-element-id="elm_onMeyjZ4jzvL8xRDX-qYZg"] .zpimage-container figure img { width:500px ; height:375.00px ; } } [data-element-id="elm_onMeyjZ4jzvL8xRDX-qYZg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-large zpimage-tablet-fallback-large zpimage-mobile-fallback-large hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-3-.jpeg" width="500" height="375.00" loading="lazy" size="large" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_7jBVIklEq6fDkwK57CCm6g" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_7jBVIklEq6fDkwK57CCm6g"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><h2><span style="font-size:20px;">O que é UART ?</span></h2></div></h2></div>
<div data-element-id="elm_qfRsshswrFrmJN1o154e-g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_qfRsshswrFrmJN1o154e-g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Um Receptor/Transmissor Assíncrono Universal (<span style="font-weight:600;">UART</span>) é um recurso de comunicação amplamente usado e adotado que utiliza como o nome já diz comunicação assíncrona serial, como por exemplo RS232, RS422, e RS485. <span style="font-weight:600;">UART</span> é um método barato de comunicação que pode ser feito de maneira <span style="font-style:italic;">full-duplex</span> ou <span style="font-style:italic;">half-duplex</span> entre diferentes dispositivos.&nbsp;</span><br></p></div>
</div><div data-element-id="elm_VYK2pMAIuqChbDIUzSLxCQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_VYK2pMAIuqChbDIUzSLxCQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><h2><span style="font-size:20px;">Começando:</span></h2></div></h2></div>
<div data-element-id="elm_tFk_D2DlrwfPBANX-b5vnA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_tFk_D2DlrwfPBANX-b5vnA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Vamos criar um componente que será responsável pelo <span style="font-weight:600;">UART</span>, dentro de um projeto basta rodar o comando:</span><br></p></div>
</div><div data-element-id="elm_laetZFFror1K0Wy5mRUIDg" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script><pre style="font-family:monospace;font-size:14px;background-color:rgb(229, 230, 230);"><code class="prettyprint">
idf.py create-component uart_simple_reader
</code></pre></div>
</div><div data-element-id="elm_VeXERPQPqvoPVkrvPkC-RA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_VeXERPQPqvoPVkrvPkC-RA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Esse comando criara uma pasta com o nome uart_simple_reader, devemos move-la para dentro de uma pasta chamada <span style="font-style:italic;">components</span> na raiz do projeto, se ela não existir basta criá-la.</span><br></p></div>
</div><div data-element-id="elm_bzoCt7EZpZsBXVqjVICq9Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_bzoCt7EZpZsBXVqjVICq9Q"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><h2><span style="font-size:20px;">Configurando o componente:</span></h2></div></h2></div>
<div data-element-id="elm_R2QpYpSilOHilGa8v15lKQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_R2QpYpSilOHilGa8v15lKQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Dentro do<span style="font-weight:600;"> CMakeLists.txt</span> desse componente iremos adicionar o parâmetro “REQUIRES driver” para que o mesmo tenha acesso aos recursos responsáveis pelo <span style="font-weight:600;">UART</span> do ESP-IDF, ficando assim:</span><br></p></div>
</div><div data-element-id="elm_fPyrsiF70LPyiFL6jgvl-w" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script><pre style="font-family:monospace;font-size:14px;background-color:rgb(229, 230, 230);"><code class="prettyprint">
idf_component_register(SRCS "uart_simple_reader.c"
                    REQUIRES driver
                    INCLUDE_DIRS "include")
</code></pre></div>
</div><div data-element-id="elm_hqai8ObXBonQE5k3E4q4VA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_hqai8ObXBonQE5k3E4q4VA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><h2><div style="color:inherit;"></div></h2><h2><span style="font-size:20px;">Criando o arquivo de cabeçalho:</span></h2></div></h2></div>
<div data-element-id="elm_gNKTV2K9HED-Ks9bpXgXrQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_gNKTV2K9HED-Ks9bpXgXrQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p>Iremos utilizar duas funções para executar as tarefas, uma irá ficar responsável por inicializar o componente e a outra será uma <em>task</em> responsável pela leitura e escrita de fato.</p><p>Além disso iremos definir duas constantes que serão utilizadas mais a frente, ficando assim:</p></div></div>
</div><div data-element-id="elm_WSmehVIoXI7CvE0-XWJUTA" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script><pre style="font-family:monospace;font-size:14px;background-color:rgb(229, 230, 230);"><code class="prettyprint">
#include "esp_log.h"
#include "driver/uart.h"
#include "driver/gpio.h"

#define BUF_SIZE (1024)
#define UART_NUM UART_NUM_1

void readUartTask(void *arg);

esp_err_t uartInit(uart_port_t uart_num,
									 uart_config_t *uart_config,
									 int *intr_alloc_flags,
									 gpio_num_t tx_pin, 
									 gpio_num_t rx_pin)
</code></pre></div>
</div><div data-element-id="elm_R1aaHHNAiz_DsnpRiLZ2GA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_R1aaHHNAiz_DsnpRiLZ2GA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Implementação:</span><br></h2></div>
<div data-element-id="elm_dTyisAZ8LYDP4gZhpZPgYw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_dTyisAZ8LYDP4gZhpZPgYw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p>Como citado anteriormente a função <strong>uartInit</strong> ficara responsável por receber os parâmetros de inicialização, esses sendo qual o <strong>UART</strong> interno utilizado, parâmetros de funcionamento e os pinos a qual serão atribuídos <strong>TX</strong> e <strong>RX</strong>.</p><p>Já a função <strong>readUartTask</strong> ficara responsável por ler e escrever, recebendo apenas como parâmetro de <em>task</em> a unidade <strong>UART</strong> que estaremos utilizando.</p></div></div>
</div><div data-element-id="elm_jWz6Mvn4JXmKF1UJru90yA" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script><pre style="font-family:monospace;font-size:14px;background-color:rgb(229, 230, 230);"><code class="prettyprint">
#include <stdio.h>
#include "uart_simple_reader.h"

void readUartTask(void *arg)
{
    uint8_t *data = (uint8_t *)malloc(BUF_SIZE);

    while (1)
    {
        int len = uart_read_bytes((uart_port_t)arg, data, (BUF_SIZE - 1), pdMS_TO_TICKS(20));
        if (len)
        {
            data[len] = '\0';
            uart_write_bytes((uart_port_t)arg, data, len);
            uart_write_bytes((uart_port_t)arg, "\n", 1);
            ESP_LOGI("TAG", "Recv str: %s", (char *)data);
        }
    }
}

esp_err_t uartInit(uart_port_t uart_num, uart_config_t *uart_config, int *intr_alloc_flags, gpio_num_t tx_pin, gpio_num_t rx_pin)
{   
     uart_config = malloc(sizeof(uart_config_t));
    if (uart_config == NULL) {
        return ESP_FAIL;
    }

    *uart_config = (uart_config_t){
        .baud_rate = 115200,
        .data_bits = UART_DATA_8_BITS,
        .parity = UART_PARITY_DISABLE,
        .stop_bits = UART_STOP_BITS_1,
        .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
    };

#if CONFIG_UART_ISR_IN_IRAM
    intr_alloc_flags = ESP_INTR_FLAG_IRAM;
#endif

    ESP_ERROR_CHECK(uart_driver_install(uart_num, BUF_SIZE * 2, 0, 0, NULL, *intr_alloc_flags));
    ESP_ERROR_CHECK(uart_param_config(uart_num, uart_config));
    ESP_ERROR_CHECK(uart_set_pin(uart_num, tx_pin, rx_pin, 0, 0));

    return ESP_OK;
}
</code></pre></div>
</div><div data-element-id="elm_o8QZK4lOeF23p2fxGTh-Xw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_o8QZK4lOeF23p2fxGTh-Xw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><h1><span style="font-size:20px;">Utilizando o componente:</span></h1></div></h2></div>
<div data-element-id="elm_UFyh1u2UBUgdGN0wHd5tmw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_UFyh1u2UBUgdGN0wHd5tmw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>Primeiramente é necessário declara a utilização do mesmo, dentro da pasta main adicionamos “REQUIRES uart_simple_reader” ao CMakeLists.txt.</div><br><div>Depois importamos o componente dentro do arquivo main, criamos os parâmetros de inicialização e chamamos a função uartInit. Então criamos a task do FreeRTOS e passamos por parâmetro qual UART estamos utilizando.</div></div></div>
</div><div data-element-id="elm_BZ-HXR15nphS0O-z4gRBOQ" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script><pre style="font-family:monospace;font-size:14px;background-color:rgb(229, 230, 230);"><code class="prettyprint">
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "sdkconfig.h"
#include "esp_log.h"
#include "uart_simple_reader.h"

void app_main(void)
{
    uart_config_t uart_config;
    int intr_alloc_flags = 0;
    uart_port_t uart_port = UART_NUM;
    gpio_num_t tx = 3;
    gpio_num_t rx = 2;
    ESP_ERROR_CHECK(uartInit(uart_port, 
														&uart_config, 
														&intr_alloc_flags, 
														tx, rx));

    xTaskCreate(readUartTask, "uart_task", 2048, (void *)uart_port, 10, NULL);
}
</code></pre></div>
</div><div data-element-id="elm_Y-7HOJwhuKXO5purly6K-A" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_Y-7HOJwhuKXO5purly6K-A"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><h2><strong><span style="font-size:20px;">Acessando o serial:</span></strong></h2></div></h2></div>
<div data-element-id="elm_CPdKL_Mm_PmjuTyeVpsiYw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_CPdKL_Mm_PmjuTyeVpsiYw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Com o código já rodando no </span>micro controlador<span style="color:inherit;">, estabelecemos uma conexão serial, no caso iremos utilizar o pyseria-miniter, outra alternativa é utilizar o PuTTY.</span><br></p></div>
</div><div data-element-id="elm__MudX1NTem3kn4cUN3lfZA" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script><pre style="font-family:monospace;font-size:14px;background-color:rgb(229, 230, 230);"><code class="prettyprint">

pyserial-miniterm /dev/ttyUSB0 115200

</code></pre></div>
</div><div data-element-id="elm_HiyjP6FWEw8yHqVLfxv8Fw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_HiyjP6FWEw8yHqVLfxv8Fw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Onde enviaremos a string “Olá UART”:</span><br></p></div>
</div><div data-element-id="elm_MqtVCXTcPpEdA-xH2hV2Lw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_MqtVCXTcPpEdA-xH2hV2Lw"] .zpimage-container figure img { width: 1110px ; height: 345.35px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_MqtVCXTcPpEdA-xH2hV2Lw"] .zpimage-container figure img { width:723px ; height:224.95px ; } } @media (max-width: 767px) { [data-element-id="elm_MqtVCXTcPpEdA-xH2hV2Lw"] .zpimage-container figure img { width:415px ; height:129.12px ; } } [data-element-id="elm_MqtVCXTcPpEdA-xH2hV2Lw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-26-.png" width="415" height="129.12" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_2LcxorierS_8q-EpgzH92A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_2LcxorierS_8q-EpgzH92A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Que será mostrada na saída serial padrão do </span>micro controlador<span style="color:inherit;">:</span><br></p></div>
</div><div data-element-id="elm_JollUrLsrFecWNYwpZHDNg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_JollUrLsrFecWNYwpZHDNg"] .zpimage-container figure img { width: 1110px ; height: 361.94px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_JollUrLsrFecWNYwpZHDNg"] .zpimage-container figure img { width:723px ; height:235.75px ; } } @media (max-width: 767px) { [data-element-id="elm_JollUrLsrFecWNYwpZHDNg"] .zpimage-container figure img { width:415px ; height:135.32px ; } } [data-element-id="elm_JollUrLsrFecWNYwpZHDNg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-27-.png" width="415" height="135.32" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_qzbSGCSyt3n1pCaWiwV5mQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_qzbSGCSyt3n1pCaWiwV5mQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><h2><span style="font-size:20px;">Exemplo disponível em:</span></h2></div></h2></div>
<div data-element-id="elm_NYR79OE6MfOcZ2_gb8JGwQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_NYR79OE6MfOcZ2_gb8JGwQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><a href="https://github.com/uktechbr/esp-devkit-samples/tree/main/uart-simple">https://github.com/uktechbr/esp-devkit-samples/tree/main/uart-simple</a></p></div></div>
</div><div data-element-id="elm_FJyqVX1-SnkFz8Dqed6ncw" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_FJyqVX1-SnkFz8Dqed6ncw"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_3fY6Alk_b88YBIgJSjYLaQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_3fY6Alk_b88YBIgJSjYLaQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>Sobre o autor:<br><br></div><div>Matheus desempenha o papel de desenvolvedor de sistemas de tecnologia da informação dentro da equipe da UKTech. Possui&nbsp; experiência no domínio de micro controladores e desenvolvimento de software, e está na reta final de sua graduação em Engenharia de Computação. Em seus momentos de lazer, ele se dedica a interesses como jogos de computador e a apreciação de animes.</div></div></div>
</div><div data-element-id="elm_hQUM9ikjMpSkYG57z8Lbbw" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_hQUM9ikjMpSkYG57z8Lbbw"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 11 Dec 2023 11:10:40 -0300</pubDate></item><item><title><![CDATA[ESP-IDF: Publicando componentes para o Espressif IDF Component Registry]]></title><link>https://www.uktech.com.br/bloguk/post/esp-idf-publicando-componentes-para-o-espressif-idf-component-registry</link><description><![CDATA[<img align="left" hspace="5" src="https://www.uktech.com.br/leandra-rieger-GsiX1c51hGs-unsplash.jpg"/>O tutorial de hoje tem como objetivo ensinar a publicar componentes para o novíssimo Espressif IDF Component Registry, esse que tem por objetivo se tornar o padrão para distribuição de componentes dentro da plataforma IDF.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_QRSsl1y-k3rTRAXc5eGriw" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_QRSsl1y-k3rTRAXc5eGriw"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_0MLKRMO2cxPWJzQL4qfF7Q" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_0MLKRMO2cxPWJzQL4qfF7Q"].zprow{ border-radius:1px; } </style><div data-element-id="elm_bKHp4lH9Q7jLfX3HPHyrfw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_bKHp4lH9Q7jLfX3HPHyrfw"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_JV6rMVUI-R6UrK8RZEkyow" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_JV6rMVUI-R6UrK8RZEkyow"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">O tutorial de hoje tem como objetivo ensinar a publicar componentes para o novíssimo <span style="font-weight:600;"> Espressif IDF Component Registry, </span>esse que tem por objetivo se tornar o padrão para distribuição de componentes dentro da plataforma IDF.</span><br></p></div>
</div><div data-element-id="elm_LJ--EpqJcOW29KxONsKJYg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_LJ--EpqJcOW29KxONsKJYg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;">Credenciais:</span></h2></div>
<div data-element-id="elm_LOf4oxVuQHF-3eJ6iYXigg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_LOf4oxVuQHF-3eJ6iYXigg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">O primeiro passo para publicação de um componente é a criação de uma conta no <a href="https://components.espressif.com/users/me">ESP Registry</a>, com a conta criada basta gerar um <span style="font-weight:600;">Token</span> de acesso com permissão de criação de componentes no mesmo.</span><br></p></div>
</div><div data-element-id="elm_Gq6C-GBm0cnMK7HTJfiM2g" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_Gq6C-GBm0cnMK7HTJfiM2g"] .zpimage-container figure img { width: 1110px ; height: 356.16px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_Gq6C-GBm0cnMK7HTJfiM2g"] .zpimage-container figure img { width:723px ; height:231.99px ; } } @media (max-width: 767px) { [data-element-id="elm_Gq6C-GBm0cnMK7HTJfiM2g"] .zpimage-container figure img { width:415px ; height:133.16px ; } } [data-element-id="elm_Gq6C-GBm0cnMK7HTJfiM2g"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-21-.png" width="415" height="133.16" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_UUo7pBtX1hGHc1IFgvTDVw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_UUo7pBtX1hGHc1IFgvTDVw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Com as credencias agora é necessário criar o arquivo<span style="font-weight:600;"> idf_component_manager.yml </span>dentro da pasta de instalação do IDF (no Linux ~/.espressif/idf_component_manager.yml). Com a seguinte estrutura</span><br></p></div>
</div><div data-element-id="elm_c8U1w6V9RxuPR-mwmJghZg" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"> profiles: default: api_token: token default_namespace: meu-namespace </div>
</div><div data-element-id="elm_d2ldaLSxz_GIU5LMxykzgQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_d2ldaLSxz_GIU5LMxykzgQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><h3>Configurar o componente:</h3></div></h2></div>
<div data-element-id="elm_NGs7dia6zenfUrpmOrc7Zg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_NGs7dia6zenfUrpmOrc7Zg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><p style="color:inherit;">As informações da publicação do componente são referentes a um arquivo chamado <strong>idf_component.yml</strong> que deve residir na raiz do projeto. Este contém a informação da versão, descrição, url do repositório remoto do projeto (ex: Github), dependências e a licença do componente.</p><p><span style="font-size:20px;color:rgb(17, 55, 106);">Exemplo:</span></p></div></div>
</div><div data-element-id="elm_13ll3zsDn8g2Sygd7ydlvQ" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"> version: "1.0.1" description: Emonlib ESP-IDF url: https://github.com/uktechbr/emonlib-esp-idf dependencies: idf: ">=4.0" license: "AGPL-3.0-only" </div>
</div><div data-element-id="elm_wv09QhXhc8Hw2RTDmD1Y1g" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_wv09QhXhc8Hw2RTDmD1Y1g"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><h3>Publicar componente</h3></div></h2></div>
<div data-element-id="elm_22xUdR2g8utDp36wJqOo5g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_22xUdR2g8utDp36wJqOo5g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p>Com todas as etapas anteriores concluídas basta rodar o comando:</p><p><code>compote component upload --namespace [namespace] --name [nome do componente]</code></p></div></div>
</div><div data-element-id="elm_Rpv-ULg2Xp_hR6ADj0Boig" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_Rpv-ULg2Xp_hR6ADj0Boig"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;">Curiosidade:</span></h2></div>
<div data-element-id="elm_os3eFuthBmqXaQAmRHZDBw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_os3eFuthBmqXaQAmRHZDBw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Primeiro componente publicado pela UKTech:</span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><a href="https://components.espressif.com/components/uktech/emonlib-esp-idf">https://components.espressif.com/components/uktech/emonlib-esp-idf</a><br></span></p></div>
</div><div data-element-id="elm_58V50Z49LutTDajW9l4RZA" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_58V50Z49LutTDajW9l4RZA"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_4q_l8zR61nPWVyNDFhlJjQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_4q_l8zR61nPWVyNDFhlJjQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><span style="color:rgb(17, 55, 106);">Sobre o autor:</span><br><br></div><div style="color:inherit;">Matheus desempenha o papel de desenvolvedor de sistemas de tecnologia da informação dentro da equipe da UKTech. Possui&nbsp; experiência no domínio de microcontroladores e desenvolvimento de software, e está na reta final de sua graduação em Engenharia de Computação. Em seus momentos de lazer, ele se dedica a interesses como jogos de computador e a apreciação de animes.</div></div></div>
</div><div data-element-id="elm_5HqcIecejR4SkyRvoc5N2g" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_5HqcIecejR4SkyRvoc5N2g"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 01 Nov 2023 17:32:52 -0300</pubDate></item><item><title><![CDATA[ESP-IDF: Criando e utilizando componentes]]></title><link>https://www.uktech.com.br/bloguk/post/esp-idf-criando-e-utilizando-componentes</link><description><![CDATA[<img align="left" hspace="5" src="https://www.uktech.com.br/behnam-norouzi-VgN_G9M1zXA-unsplash.jpg"/>Componentes são a base dos projetos feitos no ESP-IDF, eles são uma ótima ferramenta para modularizar, abstrair e reutilizar código.&nbsp; Os component ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_6eMBZ6WnLp8cwq1RyHzsdw" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_6eMBZ6WnLp8cwq1RyHzsdw"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_MrR_-o2_gUcMfCLo6rXIbw" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_MrR_-o2_gUcMfCLo6rXIbw"].zprow{ border-radius:1px; } </style><div data-element-id="elm_NoxmfklDA2i0EPvA5qAgEg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_NoxmfklDA2i0EPvA5qAgEg"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_pdop8bE0zi4kP604fDMZZg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_pdop8bE0zi4kP604fDMZZg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;"><span style="color:inherit;">Componentes são a base dos projetos feitos no ESP-IDF, eles são uma ótima ferramenta para modularizar, abstrair e reutilizar código.&nbsp;</span><br></p></div>
</div><div data-element-id="elm_ZPNLNFD3JkZ8KhVAzkCErw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_ZPNLNFD3JkZ8KhVAzkCErw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Onde ficam os componentes de um projeto ?</span><br></h2></div>
<div data-element-id="elm_x-PSWbb59XjRwG1oZ3EBew" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_x-PSWbb59XjRwG1oZ3EBew"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Os componentes de um projeto por padrão se encontram na pasta <span style="font-style:italic;">components</span> dentro da raiz do mesmo.</span><br></p></div>
</div><div data-element-id="elm__l0cmBNEzAPQuDBDZkl0Zg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm__l0cmBNEzAPQuDBDZkl0Zg"] .zpimage-container figure img { width: 1110px ; height: 153.39px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm__l0cmBNEzAPQuDBDZkl0Zg"] .zpimage-container figure img { width:723px ; height:99.91px ; } } @media (max-width: 767px) { [data-element-id="elm__l0cmBNEzAPQuDBDZkl0Zg"] .zpimage-container figure img { width:415px ; height:57.35px ; } } [data-element-id="elm__l0cmBNEzAPQuDBDZkl0Zg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-13-.png" width="415" height="57.35" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_gG5woDGRQQOQKpdH1CTfvw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_gG5woDGRQQOQKpdH1CTfvw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Criando um componente:</span><br></h2></div>
<div data-element-id="elm_gYUfSlrlh1QWhoylteObWw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_gYUfSlrlh1QWhoylteObWw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Basta utilizar o atalho CTRL + SHIFT + P e selecionar o comando <span style="font-weight:600;">ESP-IDF: Create new ESP-IDF Component</span>, em seguida declarar o nome deste novo componente.</span><br></p></div>
</div><div data-element-id="elm_2jumzDThXK79ZVHbEGdr9w" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_2jumzDThXK79ZVHbEGdr9w"] .zpimage-container figure img { width: 601px !important ; height: 448px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_2jumzDThXK79ZVHbEGdr9w"] .zpimage-container figure img { width:601px ; height:448px ; } } @media (max-width: 767px) { [data-element-id="elm_2jumzDThXK79ZVHbEGdr9w"] .zpimage-container figure img { width:601px ; height:448px ; } } [data-element-id="elm_2jumzDThXK79ZVHbEGdr9w"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-14-.png" width="601" height="448" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_dvDOnSaCjHATcZlD8Sx_kg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_dvDOnSaCjHATcZlD8Sx_kg"] .zpimage-container figure img { width: 601px !important ; height: 64px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_dvDOnSaCjHATcZlD8Sx_kg"] .zpimage-container figure img { width:601px ; height:64px ; } } @media (max-width: 767px) { [data-element-id="elm_dvDOnSaCjHATcZlD8Sx_kg"] .zpimage-container figure img { width:601px ; height:64px ; } } [data-element-id="elm_dvDOnSaCjHATcZlD8Sx_kg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-16-.png" width="601" height="64" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_f-981PiKLh8vxWTHhP1WpA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_f-981PiKLh8vxWTHhP1WpA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Estrutura de um Componente:</span></h2></div>
<div data-element-id="elm_nhhatUrEgs3HiEbWEguLvA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_nhhatUrEgs3HiEbWEguLvA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>Por padrão um componente consiste em um pasta include para arquivos de cabeçalho, arquivos de código fonte e um arquivo CMakeLists.txt.</div><br><div>A função do arquivo CMakeLists.txt é justamente declarar essa estrutura, mas não só, ele também é responsável por declarar as dependências externas do componente, como por exemplo a API de log’s do próprio IDF.</div></div></div>
</div><div data-element-id="elm_K7bn7AVZqs3Vphu7hxoB-Q" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_K7bn7AVZqs3Vphu7hxoB-Q"] .zpimage-container figure img { width: 482px !important ; height: 167px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_K7bn7AVZqs3Vphu7hxoB-Q"] .zpimage-container figure img { width:482px ; height:167px ; } } @media (max-width: 767px) { [data-element-id="elm_K7bn7AVZqs3Vphu7hxoB-Q"] .zpimage-container figure img { width:482px ; height:167px ; } } [data-element-id="elm_K7bn7AVZqs3Vphu7hxoB-Q"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-17-.png" width="482" height="167" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_kdfPtVvf0xdjmE_jghYuSw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_kdfPtVvf0xdjmE_jghYuSw"] .zpimage-container figure img { width: 672px !important ; height: 105px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_kdfPtVvf0xdjmE_jghYuSw"] .zpimage-container figure img { width:672px ; height:105px ; } } @media (max-width: 767px) { [data-element-id="elm_kdfPtVvf0xdjmE_jghYuSw"] .zpimage-container figure img { width:672px ; height:105px ; } } [data-element-id="elm_kdfPtVvf0xdjmE_jghYuSw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-18-.png" width="672" height="105" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_xrbBGgLNpCKD9p9WpvE9Og" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_xrbBGgLNpCKD9p9WpvE9Og"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Usando um componente:</span><br></h2></div>
<div data-element-id="elm_3ip2gCmndhzffXE9LDssig" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_3ip2gCmndhzffXE9LDssig"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Vamos tomar como exemplo um componente <span style="font-weight:600;">hello </span>que tem como função imprimir um log na saída serial do microcontrolador, o nome dessa função também sera hello, basta incluir o arquivo de cabeçalho na função main.</span><br></p></div>
</div><div data-element-id="elm_TiZ_jh2acSHQbAFCPSFDRA" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://gist.github.com/MatheusReichert/269b6a3557583ec516ae7bb8d46af69d.js"></script></div>
</div><div data-element-id="elm_woHJ6aKBmrQ6iRgHSpPL8w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_woHJ6aKBmrQ6iRgHSpPL8w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:20px;">E declarar a dependência no arquivo CMakeLists.txt da pasta main.</span></span><br></p></div>
</div><div data-element-id="elm_ViExekmBqeJk8aSt3ejnEg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_ViExekmBqeJk8aSt3ejnEg"] .zpimage-container figure img { width: 672px !important ; height: 105px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_ViExekmBqeJk8aSt3ejnEg"] .zpimage-container figure img { width:672px ; height:105px ; } } @media (max-width: 767px) { [data-element-id="elm_ViExekmBqeJk8aSt3ejnEg"] .zpimage-container figure img { width:672px ; height:105px ; } } [data-element-id="elm_ViExekmBqeJk8aSt3ejnEg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-18-.png" width="672" height="105" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_JRJkkOs7wsynczAWEW0ObQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_JRJkkOs7wsynczAWEW0ObQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Resultado rodando no micro controlador</span></h2></div>
<div data-element-id="elm_bEplG3C8RAHGnghPQeD5ig" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_bEplG3C8RAHGnghPQeD5ig"] .zpimage-container figure img { width: 1110px ; height: 255.20px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_bEplG3C8RAHGnghPQeD5ig"] .zpimage-container figure img { width:723px ; height:166.22px ; } } @media (max-width: 767px) { [data-element-id="elm_bEplG3C8RAHGnghPQeD5ig"] .zpimage-container figure img { width:415px ; height:95.41px ; } } [data-element-id="elm_bEplG3C8RAHGnghPQeD5ig"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-20-.png" width="415" height="95.41" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_Z2d51LZch8G0Rdb795t-uA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_Z2d51LZch8G0Rdb795t-uA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Código fonte deste tutorial disponível na pasta hello-component em:</span><br></h2></div>
<div data-element-id="elm_S-irVNIIrsrnOrWIp0bVsg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_S-irVNIIrsrnOrWIp0bVsg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><a href="https://github.com/uktechbr/esp-devkit-samples/">https://github.com/uktechbr/esp-devkit-samples/</a><br></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 25 Oct 2023 15:47:07 -0300</pubDate></item><item><title><![CDATA[ESP-IDF: Meu primeiro projeto (Hello World)]]></title><link>https://www.uktech.com.br/bloguk/post/esp-idf-meu-primeiro-projeto-hello-world</link><description><![CDATA[<img align="left" hspace="5" src="https://www.uktech.com.br/getty-images-SdaYKNBkXEg-unsplash.jpg"/>No tutorial de hoje vamos criar um projeto passo a passo utilizando o ESP-IDF, assumindo que o ESP-IDF já esta instalado, o projeto ira utilizar a saída serial do microcontrolador para imprimir o texto “Hello World” (Olá Mundo).]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_eoD8KxBWSrqfcMSggs7P4A" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_JmLTBJXcSmCSVRKMCYF5TQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_6dZt-FUnTYKqeF-Hv1Nh2w" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_6dZt-FUnTYKqeF-Hv1Nh2w"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_WewO3JKhQ3eg7-QGzBZGFA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_WewO3JKhQ3eg7-QGzBZGFA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;"><span style="color:inherit;">No tutorial de hoje vamos criar um projeto passo a passo utilizando o ESP-IDF, assumindo que o ESP-IDF já esta instalado, o projeto ira utilizar a saída serial do microcontrolador para imprimir o texto “Hello World” (Olá Mundo).</span><br></p></div>
</div><div data-element-id="elm_m2V3SZJeEkckCt9NUOti4g" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_m2V3SZJeEkckCt9NUOti4g"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">VSCode</span><br></h2></div>
<div data-element-id="elm_G8zmPL6J7FE0xJZIsNwXlA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_G8zmPL6J7FE0xJZIsNwXlA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Utilizando o atalho CTRL + SHIFT + P irá abrir a janela de comandos no VSCode.</span><br></p></div>
</div><div data-element-id="elm_nc5nZJpUUHqvV_Bmc3Ymqg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_nc5nZJpUUHqvV_Bmc3Ymqg"] .zpimage-container figure img { width: 1110px ; height: 625.35px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_nc5nZJpUUHqvV_Bmc3Ymqg"] .zpimage-container figure img { width:723px ; height:407.32px ; } } @media (max-width: 767px) { [data-element-id="elm_nc5nZJpUUHqvV_Bmc3Ymqg"] .zpimage-container figure img { width:415px ; height:233.80px ; } } [data-element-id="elm_nc5nZJpUUHqvV_Bmc3Ymqg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-fit" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-size-fit zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled-1.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled-1.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled-1.png" width="415" height="233.80" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_ha9fn1fw5vrO6uYCg6Q9Ig" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_ha9fn1fw5vrO6uYCg6Q9Ig"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Criando o projeto</span></h2></div>
<div data-element-id="elm_0pLzB5bqifvMJQteONQ4dg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0pLzB5bqifvMJQteONQ4dg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Selecione a opção ESP-IDF: New Project.</span><br></p></div>
</div><div data-element-id="elm_-PLXmIRMwoqaxdJ8Fa3aHg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_-PLXmIRMwoqaxdJ8Fa3aHg"] .zpimage-container figure img { width: 613px !important ; height: 460px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_-PLXmIRMwoqaxdJ8Fa3aHg"] .zpimage-container figure img { width:613px !important ; height:460px !important ; } } @media (max-width: 767px) { [data-element-id="elm_-PLXmIRMwoqaxdJ8Fa3aHg"] .zpimage-container figure img { width:415px ; height:311.42px ; } } [data-element-id="elm_-PLXmIRMwoqaxdJ8Fa3aHg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-size-original zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-1-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-1-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-1-.png" width="415" height="311.42" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_QR8sXe6CYvz3rB2IrZDA3A" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_QR8sXe6CYvz3rB2IrZDA3A"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Configurando o projeto</span></h2></div>
<div data-element-id="elm_VzIQwYdKXuKx3wiLAoTaxw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_VzIQwYdKXuKx3wiLAoTaxw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Agora vamos definir o nome do projeto, o diretório (”pasta”) onde o mesmo deve ser salvo e as configurações relativas a placa de desenvolvimento utilizada.&nbsp;</span><br></p></div>
</div><div data-element-id="elm_11NT3I1uuQwmficTVyKkHg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_11NT3I1uuQwmficTVyKkHg"] .zpimage-container figure img { width: 1110px ; height: 495.96px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_11NT3I1uuQwmficTVyKkHg"] .zpimage-container figure img { width:723px ; height:323.04px ; } } @media (max-width: 767px) { [data-element-id="elm_11NT3I1uuQwmficTVyKkHg"] .zpimage-container figure img { width:415px ; height:185.43px ; } } [data-element-id="elm_11NT3I1uuQwmficTVyKkHg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-fit" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-size-fit zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-3-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-3-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-3-.png" width="415" height="185.43" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_CEwA8bQWfBQYIDvn6SKftg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_CEwA8bQWfBQYIDvn6SKftg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Template</span></h2></div>
<div data-element-id="elm_0IKtTXdDCvyqRVuMsJHdDQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0IKtTXdDCvyqRVuMsJHdDQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">O ESP-IDF nos permite iniciar nosso projeto a partir de um template, os arquivos de template geralmente são os exemplos dentro do repositório do mesmo, para o nosso projeto vamos escolher o template hello_world.</span><br></p></div>
</div><div data-element-id="elm__OFEaMeIOYKg1J7rHKfPXg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm__OFEaMeIOYKg1J7rHKfPXg"] .zpimage-container figure img { width: 1110px ; height: 529.03px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm__OFEaMeIOYKg1J7rHKfPXg"] .zpimage-container figure img { width:723px ; height:344.58px ; } } @media (max-width: 767px) { [data-element-id="elm__OFEaMeIOYKg1J7rHKfPXg"] .zpimage-container figure img { width:415px ; height:197.79px ; } } [data-element-id="elm__OFEaMeIOYKg1J7rHKfPXg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-fit" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-size-fit zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-4-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-4-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-4-.png" width="415" height="197.79" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_NuQaX_cMpeJuW4Ivk-ta3A" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_NuQaX_cMpeJuW4Ivk-ta3A"] .zpimage-container figure img { width: 1110px ; height: 529.03px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_NuQaX_cMpeJuW4Ivk-ta3A"] .zpimage-container figure img { width:723px ; height:344.58px ; } } @media (max-width: 767px) { [data-element-id="elm_NuQaX_cMpeJuW4Ivk-ta3A"] .zpimage-container figure img { width:415px ; height:197.79px ; } } [data-element-id="elm_NuQaX_cMpeJuW4Ivk-ta3A"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-fit" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-size-fit zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-5-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-5-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-5-.png" width="415" height="197.79" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_Ho_dJ_45qdXSD_3ni0C0dw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Ho_dJ_45qdXSD_3ni0C0dw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">⚠ Se atente ao pop-up que vai surgir para abrir o novo projeto criado.</span><br></p></div>
</div><div data-element-id="elm_Q1XfIKvQ-JAzG8eiXfYG3w" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_Q1XfIKvQ-JAzG8eiXfYG3w"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">CMake: como o IDF configura o projeto</span><br></h2></div>
<div data-element-id="elm_3WkYVlL2tgt2p5svX6e50A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_3WkYVlL2tgt2p5svX6e50A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p>O ESP-IDF utiliza o CMake para gerenciar as configurações de um projeto, como esse não é o foco do tutorial cobriremos apenas o básico sobre.</p><p>Após a criação do projeto é necessário popular o arquivo sdkconfig com as variáveis relativas ao micro controlador e projeto, para isso basta selecionar na barra inferior do vscode o micro controlador.</p></div></div>
</div><div data-element-id="elm_xwnP0xFtaibT6k1Xxl850g" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_xwnP0xFtaibT6k1Xxl850g"] .zpimage-container figure img { width: 1431.31px ; height: 49px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_xwnP0xFtaibT6k1Xxl850g"] .zpimage-container figure img { width:723px ; height:24.84px ; } } @media (max-width: 767px) { [data-element-id="elm_xwnP0xFtaibT6k1Xxl850g"] .zpimage-container figure img { width:415px ; height:14.26px ; } } [data-element-id="elm_xwnP0xFtaibT6k1Xxl850g"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-fit" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-size-fit zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-6-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-6-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-6-.png" width="415" height="14.26" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_sBIVQvLDwlTt8KRbT5UpIQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_sBIVQvLDwlTt8KRbT5UpIQ"] .zpimage-container figure img { width: 1110.36px !important ; height: 459px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_sBIVQvLDwlTt8KRbT5UpIQ"] .zpimage-container figure img { width:607px !important ; height:251px !important ; } } @media (max-width: 767px) { [data-element-id="elm_sBIVQvLDwlTt8KRbT5UpIQ"] .zpimage-container figure img { width:415px ; height:171.61px ; } } [data-element-id="elm_sBIVQvLDwlTt8KRbT5UpIQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-size-original zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-7-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-7-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-7-.png" width="415" height="171.61" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_8TkIDLeNfW15ilcb9NBYSA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_8TkIDLeNfW15ilcb9NBYSA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Como estou utilizando o UKT-ESP32C3-DEV-MINI-USB selecionarei o ESP32-C3, para utilizar um conversor serial (opção mais comum) seleciono a opção via ESP-PROG.</span><br></p></div>
</div><div data-element-id="elm_lU1RT3z9M36M15saNVZ5UA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_lU1RT3z9M36M15saNVZ5UA"] .zpimage-container figure img { width: 1115px !important ; height: 216px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_lU1RT3z9M36M15saNVZ5UA"] .zpimage-container figure img { width:599px !important ; height:116px !important ; } } @media (max-width: 767px) { [data-element-id="elm_lU1RT3z9M36M15saNVZ5UA"] .zpimage-container figure img { width:415px ; height:80.37px ; } } [data-element-id="elm_lU1RT3z9M36M15saNVZ5UA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-size-original zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-8-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-8-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-8-.png" width="415" height="80.37" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_6kzzIDSMpreKgY36yfTzDA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_6kzzIDSMpreKgY36yfTzDA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Note que agora o arquivo sdkconfig contem todas as variáveis de ambiente necessárias.</span><br></p></div>
</div><div data-element-id="elm_WRyF68T9uowbdk68MiDoKQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_WRyF68T9uowbdk68MiDoKQ"] .zpimage-container figure img { width: 1109.96px !important ; height: 627px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_WRyF68T9uowbdk68MiDoKQ"] .zpimage-container figure img { width:723px ; height:406.69px ; } } @media (max-width: 767px) { [data-element-id="elm_WRyF68T9uowbdk68MiDoKQ"] .zpimage-container figure img { width:415px ; height:233.44px ; } } [data-element-id="elm_WRyF68T9uowbdk68MiDoKQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-fit" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-custom zpimage-tablet-size-fit zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-9-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-9-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-9-.png" width="415" height="233.44" loading="lazy" size="custom" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_wJn8S1vpTSWDkBMIvB9lNQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_wJn8S1vpTSWDkBMIvB9lNQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Estrutura de um projeto padrão utilizando o ESP-IDF</span><br></h2></div>
<div data-element-id="elm_DAFqkSD24kD86NAgvSi24Q" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_DAFqkSD24kD86NAgvSi24Q"] .zpimage-container figure img { width: 1110px ; height: 164.31px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_DAFqkSD24kD86NAgvSi24Q"] .zpimage-container figure img { width:723px ; height:107.02px ; } } @media (max-width: 767px) { [data-element-id="elm_DAFqkSD24kD86NAgvSi24Q"] .zpimage-container figure img { width:415px ; height:61.43px ; } } [data-element-id="elm_DAFqkSD24kD86NAgvSi24Q"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-fit" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-size-fit zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-10-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-10-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-10-.png" width="415" height="61.43" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_hNsO1K1TEcdurXpyivg7-w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_hNsO1K1TEcdurXpyivg7-w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><ul><li><em>build</em>: diretório com arquivos gerados no processo de compilação do projeto;</li><li><em>main</em>: diretório que contem o código fonte;</li><li><em>sdkconfig</em>: como citado na seção acima arquivo com todas as variáveis de ambiente do projeto;</li><li><em>CMakeLists.txt</em>: arquivo responsável pela estrutura do projeto, onde se define as pastas de componentes externos e como se estrutura o código fonte, por padrão aponta para o diretório main;</li><li><a href="http://pytest.py">pytest.py</a>: utilizado ao criar testes unitários;</li></ul></div></div>
</div><div data-element-id="elm_I9hipVz-vG-YtNddbosK_A" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_I9hipVz-vG-YtNddbosK_A"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">O código fonte e a função app_main()</span><br></h2></div>
<div data-element-id="elm_0r_8wD8yqST9S--fQjIf0A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0r_8wD8yqST9S--fQjIf0A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p>O código padrão ira exibir no monitor serial a string “Hello World”, para isso ele utiliza a função <em>printf</em> (<em>print formated</em> - <strong>imprimir formatado</strong>) que por padrão imprime um vetor de caracteres no monitor serial, todo código no ESP-IDF tem por inicio sua execução na função <em>app_main.</em></p><p>O código abaixo é criado automaticamente devido a seleção do template, as funções abaixo do <em>printf</em> servem para mostrar diversas informações do micro controlador no monitor serial e reiniciar.</p></div></div>
</div><div data-element-id="elm_nMXqKbUfBuxgkcuOIu608A" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://gist.github.com/MatheusReichert/1293274c60d8484c81745c043c39b370.js"></script></div>
</div><div data-element-id="elm_rjZY3oT-0UmUOKPx-ltTNQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_rjZY3oT-0UmUOKPx-ltTNQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Compilar, descarregar o binário na memoria do microcontrolador (flash) e monitorar</span><br></h2></div>
<div data-element-id="elm_fePiA0IvztPSfSVnpwfXyQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_fePiA0IvztPSfSVnpwfXyQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Basta selecionar e aguardar, se aparecer um pop-up perguntando o método de flash, selecione UART.</span><br></p></div>
</div><div data-element-id="elm_17WYhiNaEHD8VfhzE7sPlg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_17WYhiNaEHD8VfhzE7sPlg"] .zpimage-container figure img { width: 500px ; height: 90.99px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_17WYhiNaEHD8VfhzE7sPlg"] .zpimage-container figure img { width:577px !important ; height:105px !important ; } } @media (max-width: 767px) { [data-element-id="elm_17WYhiNaEHD8VfhzE7sPlg"] .zpimage-container figure img { width:415px ; height:75.52px ; } } [data-element-id="elm_17WYhiNaEHD8VfhzE7sPlg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-medium zpimage-tablet-size-original zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-11-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-11-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-11-.png" width="415" height="75.52" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_4ofCz168JWwbXKW_3e7X0A" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_4ofCz168JWwbXKW_3e7X0A"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Monitor serial</span><br></h2></div>
<div data-element-id="elm_aKJJkX04gNHH8PheMDweow" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_aKJJkX04gNHH8PheMDweow"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Após a etapa anterior o monitor serial ira abrir sozinho e será possível ver o projeto rodando ao vivo.</span><br></p></div>
</div><div data-element-id="elm_Mg7jHvGWOE_lzHdvaqDXKA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_Mg7jHvGWOE_lzHdvaqDXKA"] .zpimage-container figure img { width: 836px !important ; height: 284px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_Mg7jHvGWOE_lzHdvaqDXKA"] .zpimage-container figure img { width:723px ; height:245.61px ; } } @media (max-width: 767px) { [data-element-id="elm_Mg7jHvGWOE_lzHdvaqDXKA"] .zpimage-container figure img { width:415px ; height:140.98px ; } } [data-element-id="elm_Mg7jHvGWOE_lzHdvaqDXKA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-fit" data-size-mobile="size-fit" data-align="center" data-tablet-image-separate="true" data-mobile-image-separate="true" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-size-fit zpimage-mobile-size-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><source class="mobile-image-source" media="(max-width: 767.8px)" srcset="/Untitled%20-12-.png"><source class="tablet-image-source" media="(max-width: 991.8px) and (min-width: 768px)" srcset="/Untitled%20-12-.png"><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%20-12-.png" width="415" height="140.98" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_Mkd0SjhTDCMkSnNpexCZBg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_Mkd0SjhTDCMkSnNpexCZBg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Conclusão</span><br></h2></div>
<div data-element-id="elm_OVDWYxRBBjmFQgxkE71Tpw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_OVDWYxRBBjmFQgxkE71Tpw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">&nbsp;A partir deste tutorial, você aprendeu como configurar o projeto no VSCode, escolher um template, definir as configurações do projeto e compilar o código. Agora você está pronto para começar a desenvolver seus próprios projetos usando o ESP-IDF. Divirta-se explorando todas as possibilidades que esta plataforma oferece!!!</span><br></p></div>
</div><div data-element-id="elm_Qw27nXGGVRmyxh9BCUQYWg" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_Qw27nXGGVRmyxh9BCUQYWg"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_w44wMdhfd19dhJjfh7977Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_w44wMdhfd19dhJjfh7977Q"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Sobre o autor:</span><br></h2></div>
<div data-element-id="elm_Kdj3GUjNx2u7FwXdvuzRBw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Kdj3GUjNx2u7FwXdvuzRBw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Matheus desempenha o papel de desenvolvedor de sistemas de tecnologia da informação dentro da equipe da UKTech. Possui&nbsp; experiência no domínio de micro controladores e desenvolvimento de software, e está na reta final de sua graduação em Engenharia de Computação. Em seus momentos de lazer, ele se dedica a interesses como jogos de computador e a apreciação de animes.</span><br></p></div>
</div><div data-element-id="elm_niXea7-kGy7TECjDuqgUkQ" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_niXea7-kGy7TECjDuqgUkQ"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_Q2iXcUOj6seMh_vMje6OyA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Q2iXcUOj6seMh_vMje6OyA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p style="text-align:center;">Mídias Sociais UKTech</p></div>
</div><div data-element-id="elm_cEPSfTgVJxo4dUW_IHRMWQ" itemscope="" data-element-type="socialprofile" class="zpelement zpelem-socialprofile" data-element-id="elm_cEPSfTgVJxo4dUW_IHRMWQ"><style type="text/css"> [data-element-id="elm_cEPSfTgVJxo4dUW_IHRMWQ"].zpelem-socialprofile{ border-radius:1px; } </style><div data-socialprofile_container class="zpsocialprofile-container zpsocialprofile-size-md zpsocialprofile-halign-center zpsocialprofile-style-none zpsocialprofile-type-color "><a href="https://api.whatsapp.com/send/?phone=554735128200" class="zpsocialprofile-wrapper zpsocialprofile-whatsapp" target="_blank" aria-label="WhatsApp"><svg aria-hidden="true" class="zpsocialprofile" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><defs><linearGradient x1="49.9999983%" y1="100%" x2="49.9999983%" y2="0.00237659529%" id="wtlinearGradient-1"><stop stop-color="#F9F9F9" offset="0%"></stop><stop stop-color="#FFFFFF" offset="100%"></stop></linearGradient></defs><g stroke="none" stroke-width="1" fill-rule="evenodd"><g fill-rule="nonzero"><path class="cl-path-transparent" d="M1.10771574,62.8926967 L5.4728797,47.0284478 C2.78074848,42.3847708 1.36440022,37.1174751 1.3659281,31.7224137 C1.37356752,14.8421228 15.1734138,1.1088243 32.1283401,1.1088243 C40.3575222,1.11186634 48.0825026,4.30144735 53.8884609,10.0874112 C59.6974751,15.873375 62.8938079,23.5651781 62.8907543,31.745229 C62.8831127,48.6255199 49.0832664,62.3603394 32.1283401,62.3603394 C32.1283401,62.3603394 32.1283401,62.3603394 32.1283401,62.3603394 L32.1145892,62.3603394 C26.9656208,62.3588184 21.9067976,61.0720346 17.4148193,58.633838 L1.10618786,62.8911757 L1.10771574,62.8926967 Z" fill="#25D266"></path><path class="cl-path-inherit" d="M32.1344517,0 C40.6585153,0.00304204197 48.6585147,3.30669962 54.6753211,9.30104333 C60.6905995,15.295387 64.0030515,23.264016 64,31.7376239 C63.9924328,49.0469187 49.9804471,63.1660029 32.660306,63.4466537 L32.1344517,63.4509114 L32.1344517,63.4509114 L32.1207007,63.4509114 C26.7883863,63.4493904 21.5477449,62.116976 16.893811,59.5905602 L0.00152788378,64 L0,64 L4.52100811,47.5668893 C1.73262021,42.7574209 0.265851778,37.3015186 0.267379662,31.7117665 C0.27501908,14.2261093 14.5683718,0 32.1344517,0 Z M32.143619,5.35703591 C17.5339943,5.35703591 5.65316999,17.179932 5.6470572,31.7132875 C5.64553057,36.6931103 7.04507211,41.5436462 9.69595047,45.7401431 L10.3269665,46.7379328 L7.65011409,56.464862 L17.6745596,53.8487059 L17.6760875,53.8487059 L18.6432379,54.4190888 C22.7089366,56.8207809 27.37051,58.0908335 32.1237565,58.0938755 L32.1344517,58.0938755 C46.7318533,58.0938755 58.6142055,46.2694584 58.6203176,31.7345818 C58.6218449,24.6907337 55.8701262,18.0682083 50.8693626,13.0868646 C45.868599,8.10552083 39.2192487,5.36007795 32.143619,5.35703591 Z M20.8510299,17.0688705 C21.3827335,17.0688705 21.9129092,17.0673765 22.3773858,17.0871497 C22.9457586,17.1099651 23.5737188,17.1358224 24.1695935,18.4560686 L24.1695935,18.4560686 C24.8785316,20.0242413 26.4262779,23.9439124 26.6249028,24.3408988 C26.8235276,24.7378853 26.9564535,25.2002757 26.6906018,25.729591 C26.42475,26.2589063 26.2918241,26.5889678 25.8945743,27.0513582 C25.4957966,27.5152696 25.057294,28.0856525 24.6997692,28.4400504 C24.2994636,28.8339948 23.8854071,29.2644438 24.3498838,30.0568957 C24.8143605,30.8508686 26.4125269,33.4457304 28.7792189,35.5462604 C31.8212355,38.2460727 34.3865524,39.0826342 35.1825798,39.4796207 C35.9786073,39.8766072 36.4430839,39.8096822 36.9075606,39.2803669 C37.3720373,38.7525727 38.8983932,36.966894 39.4285688,36.1744421 C39.9602724,35.3804691 40.4904481,35.512798 41.2207765,35.7774556 C41.9511049,36.0405922 45.8655432,37.9585997 46.6615706,38.3555862 C47.4575981,38.7525727 47.9893016,38.9503054 48.1879265,39.2803669 C48.3865514,39.6119495 48.3865514,41.1983744 47.7234499,43.0494569 C47.0588204,44.9005395 43.8090116,46.6846971 42.3483547,46.8170259 C42.2952399,46.8218379 42.2422464,46.8271688 42.189112,46.8328475 L42.0290247,46.850756 C40.6602396,47.0089406 39.0295689,47.2820712 32.7929696,44.8336146 C24.6997692,41.6562017 19.5905258,33.3970578 19.1917482,32.8692635 C18.7944984,32.3399482 15.9404115,28.5708582 15.9404115,24.6709604 C15.9404115,20.7710626 17.996943,18.8530551 18.7272715,18.0606032 C19.4575999,17.2681512 20.3193264,17.0688705 20.8510299,17.0688705 Z" fill="url(#wtlinearGradient-1)"></path></g></g></svg></a><a href="https://www.instagram.com/uktechtecnologia/" class="zpsocialprofile-wrapper zpsocialprofile-instagram" target="_blank" aria-label="Instagram"><svg aria-hidden="true" class="zpsocialprofile" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient x1="72.5875139%" y1="0%" x2="28.281045%" y2="106.524963%" id="linearGradient-1"><stop stop-color="#9A1DF1" offset="0%"></stop><stop stop-color="#ED1E64" offset="49.3618943%"></stop><stop stop-color="#FFD002" offset="100%"></stop></linearGradient><path d="M18.7470755,0.221595251 C15.3422244,0.382299247 13.0166948,0.927668835 10.9845413,1.72394402 C8.8808805,2.5440464 7.09761014,3.64310557 5.32364538,5.42434073 C3.54758782,7.20661909 2.45687425,8.99304465 1.64301187,11.0988238 C0.855031083,13.1361614 0.321066295,15.4627981 0.170711099,18.8697484 C0.0214311023,22.2829708 -0.012802497,23.3716107 0.00383750267,32.0611721 C0.0204135023,40.7496967 0.0587623014,41.8403975 0.221527098,45.254631 C0.384285494,48.6585158 0.927619882,50.9830597 1.72388866,53.0162565 C2.54502785,55.1199428 3.64296062,56.9022276 5.42521338,58.6772547 C7.20645494,60.4522883 8.9939045,61.5419779 11.1006629,62.3569282 C13.1359204,63.1438722 15.46353,63.6799042 18.8694627,63.8291842 C22.2826082,63.9795458 23.3722466,64.0127042 32.0596384,63.9961282 C40.7511454,63.9795458 41.8408478,63.941165 45.2539933,63.7794178 C48.6588444,63.616653 50.9822875,63.0712898 53.0165275,62.2770946 C55.1201883,61.4538563 56.9034586,60.3579395 58.6774234,58.5756547 C60.4513945,56.7943876 61.5421081,55.0069188 62.3560345,52.9001285 C63.1440153,50.8648453 63.6800089,48.5372038 63.8282777,45.1333446 C63.9775577,41.7180679 64.0128665,40.6273351 63.9962265,31.9388169 C63.9796441,23.2492555 63.9402841,22.1606092 63.7785369,18.7484684 C63.6167897,15.3414861 63.0714329,13.0179854 62.2761753,10.9837454 C61.4540249,8.88005905 60.3571033,7.0987919 58.5758618,5.32274074 C56.7946202,3.54875038 55.0071771,2.4559312 52.9004123,1.64411682 C50.8641371,0.856129637 48.5375324,0.319048049 45.1316061,0.171822452 C41.7184606,0.0204496555 40.6288222,-0.0127087437 31.9383264,0.00387365592 C23.2499298,0.0204560555 22.160285,0.0577936547 18.7470755,0.221595251 M19.1203747,58.0696835 C16.0006051,57.9338499 14.3064996,57.4154436 13.1774308,56.9810372 C11.682346,56.4024772 10.6154853,55.7088452 9.49261809,54.5942852 C8.37184371,53.4755524 7.67612533,52.4117765 7.09241974,50.9198021 C6.65381495,49.7906885 6.12611576,48.0986182 5.97993337,44.9788358 C5.82129017,41.6060871 5.78502777,40.5941383 5.76945657,32.0497481 C5.75287417,23.5074443 5.78394617,22.4954955 5.93120377,19.1196428 C6.06491897,16.0019213 6.58648055,14.3057037 7.01983094,13.1776334 C7.59834613,11.6804686 8.28988531,10.6156558 9.40655089,9.49280784 C10.5252389,8.36992787 11.5889956,7.67628948 13.081994,7.0925775 C14.2100452,6.65191191 15.9021283,6.12831512 19.0208227,5.98007832 C22.3956194,5.82038552 23.4064738,5.78618392 31.9486944,5.76960153 C40.4929438,5.75298713 41.5048734,5.78307992 44.8807453,5.93134872 C47.9983644,6.06715032 49.6945564,6.58350231 50.8216028,7.0199951 C52.3176987,7.59852308 53.3845595,8.28801427 54.5064091,9.40674704 C55.628201,10.5254798 56.323913,11.5871694 56.9076186,13.0832846 C57.3482458,14.2082189 57.8718362,15.9023821 58.0190938,19.0201036 C58.1797594,22.3949387 58.2160858,23.4068555 58.231593,31.9491913 C58.2481754,40.4935879 58.2171034,41.5054983 58.0688346,44.8792902 C57.933033,47.9990726 57.4156442,49.6942725 56.9802074,50.8243973 C56.4016858,52.3184581 55.710089,53.3853316 54.5924123,54.5082116 C53.4747995,55.6269444 52.4110427,56.3246916 50.9169691,56.9084356 C49.7910044,57.348026 48.0968988,57.8726723 44.9802333,58.0209411 C41.6055006,58.1795587 40.5945822,58.2158467 32.0492576,58.2314179 C23.507037,58.2480131 22.4961826,58.2158659 19.1203747,58.0696835 M45.2073489,14.8946189 C45.2114717,17.0138765 46.9346204,18.729806 49.053846,18.7256663 C51.1740891,18.7215116 52.8900251,16.9993549 52.8869253,14.8800973 C52.8827483,12.7608398 51.1595931,11.043899 49.03935,11.0480387 C46.9191132,11.052187 45.2031773,12.7753614 45.2073489,14.8946189 M15.5693094,32.0310857 C15.5869347,41.1063495 22.957565,48.4469894 32.0305952,48.4293954 C41.1046942,48.4117446 48.4493852,41.0430983 48.4318231,31.9678665 C48.414134,22.8957323 41.0424926,15.5509133 31.967376,15.5685072 C22.8942818,15.5861645 15.5516836,22.9579403 15.5693094,32.0310857 M21.3328633,32.0196937 C21.3225058,26.1295435 26.0897377,21.344654 31.978768,21.3342528 C37.868867,21.3228812 42.6547101,26.0880651 42.6661227,31.9792585 C42.6775581,37.870452 37.9103198,42.6542983 32.0192032,42.6657427 C26.1301793,42.6771143 21.3442722,37.9108872 21.3328633,32.0196937" id="path-2"></path></defs><g stroke="none" stroke-width="1" fill-rule="evenodd"><mask fill="white"><use xlink:href="#path-2"></use></mask><use class="cl-path-inherit" fill="url(#linearGradient-1)" xlink:href="#path-2"></use></g></svg></a><a href="https://www.facebook.com/uktechti" class="zpsocialprofile-wrapper zpsocialprofile-facebook" target="_blank" aria-label="Facebook"><svg aria-hidden="true" class="zpsocialprofile" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><path d="M64,32.1989637 C64,14.4248705 49.6642636,0 32,0 C14.3357364,0 -8.52651283e-14,14.4248705 -8.52651283e-14,32.1989637 C-8.52651283e-14,48.2818653 11.6992791,61.6124352 27.0236869,64 L27.0236869,41.4839378 L18.8506694,41.4839378 L18.8506694,32.1989637 L27.0236869,32.1989637 L27.0236869,25.1025907 C27.0236869,17.0445596 31.76931,12.5678756 39.0854789,12.5678756 C42.5787848,12.5678756 46.2039135,13.2310881 46.2039135,13.2310881 L46.2039135,21.0901554 L42.1833162,21.0901554 C38.1956746,21.0901554 36.9433574,23.6103627 36.9433574,26.1305699 L36.9433574,32.1658031 L45.8414006,32.1658031 L44.4243048,41.4507772 L36.9433574,41.4507772 L36.9433574,63.9668394 C52.3007209,61.6124352 64,48.2818653 64,32.1989637 Z"></path></svg></a><a href="https://www.linkedin.com/company/uktechti/" class="zpsocialprofile-wrapper zpsocialprofile-linkedin" target="_blank" aria-label="LinkedIn"><svg aria-hidden="true" class="zpsocialprofile" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><path d="M64 4.706v54.588A4.706 4.706 0 0 1 59.294 64H4.706A4.706 4.706 0 0 1 0 59.294V4.706A4.706 4.706 0 0 1 4.706 0h54.588A4.706 4.706 0 0 1 64 4.706zM18.824 24.47H9.412v30.117h9.412V24.471zm.847-10.353a5.421 5.421 0 0 0-5.384-5.46h-.17a5.459 5.459 0 0 0 0 10.918 5.421 5.421 0 0 0 5.554-5.289v-.17zm34.917 22.174c0-9.054-5.76-12.574-11.482-12.574a10.73 10.73 0 0 0-9.525 4.856h-.263v-4.103H24.47v30.117h9.411V38.57a6.25 6.25 0 0 1 5.647-6.738h.358c2.993 0 5.214 1.882 5.214 6.625v16.132h9.412l.075-18.296z"/></svg></a><a href="mailto:contato@uktech.com.br" class="zpsocialprofile-wrapper zpsocialprofile-email" target="_blank" aria-label="Email"><svg aria-hidden="true" class="zpsocialprofile" xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><path d="M58.4 8c3 0 5.6 2.5 5.6 5.6v37.7c0 3-2.5 5.6-5.6 5.6H5.6c-3 0-5.6-2.5-5.6-5.6V13.6C0 10.6 2.5 8 5.6 8h52.8zM43.2 34.9l-3.5 3.4c-2.2 2.2-5 3.4-7.9 3.4-3 0-5.7-1.2-7.9-3.4L20.4 35 3.7 51.6c.2.9.9 1.4 1.8 1.4h52.8c.8 0 1.5-.5 1.7-1.3L43.2 35zm17-17L45.6 32.3l14.4 14.4V18zM3.5 18v28.6L18 32.3 3.6 18zm54.7-6.4H5.5c-1 0-1.6.6-1.8 1.4l22.8 22.7c2.9 2.9 7.8 2.9 10.8 0L60 12.9c-.2-.8-.9-1.3-1.7-1.3z"/></svg></a><a href="https://www.youtube.com/@uktechengenhariaetecnologi9792" class="zpsocialprofile-wrapper zpsocialprofile-youtube" target="_blank" aria-label="YouTube"><svg aria-hidden="true" class="zpsocialprofile" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><path d="M32.786 10l.106.001.392.002c1.94.009 6.896.05 11.873.237l.765.03c4.589.187 9.063.504 11.068 1.04 2.71.73 4.84 2.86 5.56 5.56 1.204 4.505 1.301 13.515 1.31 14.939v.382c-.009 1.424-.106 10.434-1.31 14.939a7.885 7.885 0 0 1-5.56 5.56c-4.455 1.19-21.107 1.3-24.098 1.309h-.923c-2.99-.01-19.635-.118-24.099-1.309a7.885 7.885 0 0 1-5.56-5.56c-.401-1.502-.68-3.504-.873-5.559l-.058-.65c-.314-3.688-.368-7.394-.377-8.552L1 32.124v-.194-.054l.002-.245c.009-1.158.063-4.864.377-8.552l.058-.65c.193-2.055.472-4.057.873-5.559a7.885 7.885 0 0 1 5.56-5.56c4.296-1.146 19.878-1.29 23.706-1.307L31.97 10h.105zM26.15 22.57v18.86L42.48 32l-16.33-9.43z"/></svg></a><a href="https://business.facebook.com/latest/inbox/all?bpn_id=1911964258931436&amp;asset_id=401185193313843&amp;nav_ref=redirect_biz_inbox_comet_profile_plus_ap_page_inbox_message_button&amp;mailbox_id=401185193313843&amp;selected_item_id=340282366841710301244259355614033762281" class="zpsocialprofile-wrapper zpsocialprofile-messenger" target="_blank" aria-label="Messenger"><svg aria-hidden="true" class="zpsocialprofile" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><defs><radialGradient cx="19.2474387%" cy="99.4651948%" fx="19.2474387%" fy="99.4651948%" r="108.959789%" id="mradialGradient-1"><stop stop-color="#0099FF" offset="0%"></stop><stop stop-color="#A033FF" offset="60.9753877%"></stop><stop stop-color="#FF5280" offset="93.482299%"></stop><stop stop-color="#FF7061" offset="100%"></stop></radialGradient></defs><path d="M32,0 C13.97344,0 0,13.20448 0,31.04 C0,40.369152 3.82336,48.430592 10.049792,53.99872 C10.57248,54.46656 10.888,55.12192 10.90944,55.82336 L11.083712,61.51552 C11.139392,63.3312 13.014848,64.51264 14.676288,63.7792 L21.02784,60.97536 C21.566272,60.73792 22.1696,60.69376 22.73696,60.84992 C25.65568,61.65248 28.762112,62.08 32,62.08 C50.02656,62.08 64,48.87552 64,31.04 C64,13.20448 50.02656,0 32,0 Z" fill="url(#mradialGradient-1)"></path><path d="M12.784128,40.117504 L22.184128,25.204224 C23.67936,22.831744 26.88128,22.241024 29.1248,23.923584 L36.601088,29.530816 C37.28704,30.045376 38.230848,30.042624 38.91392,29.524224 L49.011008,21.861184 C50.35872,20.838464 52.117888,22.451264 51.216,23.882496 L41.816,38.795904 C40.32064,41.168256 37.11872,41.759104 34.875328,40.076416 L27.398848,34.469056 C26.71296,33.954624 25.769088,33.957376 25.08608,34.475776 L14.988928,42.138816 C13.64128,43.161472 11.882048,41.548672 12.784128,40.117504 Z" fill="#FFFFFF"></path></svg></a><a href="https://www.google.com/maps/@-26.2480107,-49.3836885,3a,75y,108.84h,95.83t/data=!3m7!1e1!3m5!1sSyt_o98HsUif-TDdVekfMw!2e0!6shttps:%2F%2Fstreetviewpixels-pa.googleapis.com%2Fv1%2Fthumbnail%3Fpanoid%3DSyt_o98HsUif-TDdVekfMw%26cb_client%3Dmaps_sv.tactile.gps%26w%3D203%26h%3D100%26yaw%3D148.3533%26pitch%3D0%26thumbfov%3D100!7i13312!8i6656?entry=ttu" class="zpsocialprofile-wrapper zpsocialprofile-googlemap" target="_blank" aria-label="Google Maps"><svg aria-hidden="true" class="zpsocialprofile" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(9.000000, 0.000000)" fill-rule="nonzero"><path d="M45.0743374,15.3482543 L45.0652742,15.3570852 C45.2597854,15.8959996 45.4410502,16.4416533 45.5962873,16.9982294 C45.4387263,16.4409561 45.2697782,15.8885631 45.0743374,15.3482543 Z M23.2391247,0 L6.80676698,6.80742545 L16.247878,16.2487689 C20.0905551,12.3796526 26.3421989,12.3582193 30.2113152,16.2008964 C34.0804316,20.0435735 34.1018648,26.2952172 30.2591878,30.1643336 L44.154302,16.2673602 L45.0652742,15.356388 C41.7544536,6.14841002 33.0242335,0.00602350029 23.2391247,0 Z" fill="#4285F4"></path><path d="M23.2391247,33.1001273 C19.2470388,33.0994674 15.6478944,30.69564 14.1181004,27.0082995 C12.5883063,23.3209589 13.4287139,19.0752621 16.247878,16.2487689 L6.80676698,6.80742545 C2.44186099,11.1607613 -0.00781495236,17.0743576 1.98799424e-05,23.239086 C1.98799424e-05,33.4775301 5.26392407,39.8940741 11.4569081,46.4781719 C11.8721906,46.9029824 12.2177558,47.3733415 12.6093344,47.8134898 L30.1799425,30.2426493 C28.3347893,32.0748364 25.8394123,33.1021627 23.2391247,33.1001273 Z" fill="#FFBA00"></path><path d="M23.2391247,0 C10.4045319,0 6.19213639e-15,10.4044932 6.19213639e-15,23.239086 C-0.00468573634,25.9653324 0.423117701,28.6750679 1.26749845,31.2672606 L31.1308859,1.40503514 C28.6020794,0.48111094 25.9314223,0.00563190491 23.2391247,0 Z" fill="#0066DA"></path><path d="M25.3331987,62.4899022 C27.4440954,56.6166652 30.6206077,51.183348 34.7031982,46.4628341 C41.3600343,39.6990982 46.4782106,33.4782272 46.4782106,23.239086 C46.4728195,20.5469444 45.9977376,17.8763884 45.0743374,15.3475572 L12.6093344,47.8125602 C16.346929,52.0610809 19.1859535,57.0221406 20.9554197,62.3969458 C21.2597655,63.3354841 22.1248397,63.978528 23.1112685,63.9994735 C24.0976974,64.020419 24.9892879,63.4146756 25.3331987,62.4899022 Z" fill="#00AC47"></path><path d="M11.4569081,46.4781719 C11.8721906,46.9029824 12.2177558,47.3733415 12.6093344,47.8134898 L12.6093344,47.8134898 C12.2168262,47.3740387 11.871261,46.9036796 11.4569081,46.4781719 Z M2.80499638,12.1626404 C2.0836616,13.4905702 1.49443612,14.8861083 1.04579757,16.3291761 C1.49453738,14.8861453 2.08375876,13.4906169 2.80499638,12.1626404 L2.80499638,12.1626404 Z M1.04579757,16.3291761 C0.586654018,17.8059978 0.276797908,19.3251491 0.120881953,20.863819 C0.276821106,19.3251526 0.586676746,17.8060036 1.04579757,16.3291761 L1.04579757,16.3291761 Z" fill="#0066DA" opacity="0.5"></path><path d="M17.7119405,55.0694296 C17.6257235,54.9137277 17.5541471,54.7482654 17.4658385,54.5937255 C17.5532175,54.7489626 17.626653,54.9139601 17.7119405,55.0694296 Z M20.9554197,62.3969458 C20.479948,60.9970233 19.9449842,59.6362973 19.3505284,58.314768 C19.9375477,59.640093 20.479948,60.9958613 20.9554197,62.3969458 Z M31.8647762,50.0172523 C31.286123,50.8245782 30.7774194,51.6730372 30.2550047,52.5133625 C30.7757926,51.6721076 31.2875173,50.8252753 31.8647762,50.0172523 Z" fill="#FFFFFF"></path><path d="M25.6717922,61.6858298 L25.6717922,61.6858298 C26.2165164,60.3116252 26.8022188,58.9615892 27.4288995,57.6357219 C26.7984231,58.9589554 26.2165164,60.3114702 25.6717922,61.6858298 Z M29.4671997,53.7482876 C28.7981464,54.9002491 28.18905,56.0879988 27.6080728,57.2903891 C28.18905,56.0868368 28.8004703,54.9016434 29.4671997,53.7482876 Z" fill="#FFFFFF"></path><path d="M6.80676698,6.80742545 C2.44186099,11.1607613 -0.00781495236,17.0743576 2.06404546e-15,23.239086 C-0.00468573634,25.9653324 0.423117701,28.6750679 1.26749845,31.2672606 L16.2673989,16.2673602 L6.80676698,6.80742545 Z" fill="#EA4435"></path></g></g></svg></a><a href="https://www.uktech.com.br/bloguk/" class="zpsocialprofile-wrapper zpsocialprofile-rss" target="_blank" aria-label="RSS"><svg aria-hidden="true" class="zpsocialprofile" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><path d="M8.282 47.433C3.715 47.433 0 51.15 0 55.715c0 4.567 3.715 8.282 8.282 8.282s8.282-3.715 8.282-8.282c0-4.566-3.716-8.282-8.282-8.282zM1.377 23.84a1.31 1.31 0 0 0-1.354 1.31v10.627c0 .7.552 1.277 1.252 1.31 13.98.637 25.002 11.66 25.64 25.64.032.7.609 1.25 1.309 1.25h10.627a1.313 1.313 0 0 0 1.31-1.353c-.338-10.188-4.513-19.787-11.754-27.029-7.242-7.241-16.84-11.415-27.03-11.755zm43.872-5.087C33.497 7.003 17.91.343 1.36 0a1.264 1.264 0 0 0-.943.375 1.311 1.311 0 0 0-.394.935v10.62c0 .712.567 1.293 1.278 1.311 26.605.669 48.79 22.855 49.457 49.457a1.309 1.309 0 0 0 1.31 1.277h10.62A1.312 1.312 0 0 0 64 62.638c-.343-16.551-7.003-32.138-18.751-43.885z"/></svg></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 19 Oct 2023 15:08:37 -0300</pubDate></item><item><title><![CDATA[Utilizando o ESP32-C3 em conjunto com o display OLED para exibir imagens]]></title><link>https://www.uktech.com.br/bloguk/post/utilizando-o-esp32-c3-em-conjunto-com-o-display-oled-para-exibir-imagens</link><description><![CDATA[<img align="left" hspace="5" src="https://www.uktech.com.br/vishnu-mohanan-r98pDCvbcfM-unsplash.jpg"/>No tutorial de hoje vamos mostrar como usar o ESP32-C3 em conjunto com o display OLED para exibir imagens. Materiais utilizados: 1. ESP32-C3 (UKT-ESP32C ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_VvQUh915Tm-xBWyUS4_FgQ" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_VvQUh915Tm-xBWyUS4_FgQ"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_cfVpmi0SMcUt_I9LMxyePQ" data-element-type="row" class="zprow zprow-container zpalign-items-center zpjustify-content-center " data-equal-column=""><style type="text/css"> [data-element-id="elm_cfVpmi0SMcUt_I9LMxyePQ"].zprow{ border-radius:1px; } </style><div data-element-id="elm_pQ-qvL9E5-AGHbIA7f3DmQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_pQ-qvL9E5-AGHbIA7f3DmQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_FV1a-8_ufkf5d04WKSO1Qg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_FV1a-8_ufkf5d04WKSO1Qg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><div><div><div><p style="color:inherit;text-align:left;">No tutorial de hoje vamos mostrar como usar o ESP32-C3 em conjunto com o display OLED para exibir imagens.</p><p style="color:inherit;text-align:left;"><br/></p><p style="text-align:left;"><span style="font-size:28px;color:rgba(49, 188, 173, 0.88);">Materiais utilizados:</span></p><p style="color:inherit;text-align:left;">1. ESP32-C3 (UKT-ESP32C3-DEV-MINI-USB)<a href="https://www.uktech.eng.br/MLB-3441547157-placa-desenvolvimento-esp32-c3-usb-c-carregador-de-bateria-_JM" title="(Onde comprar)" target="_blank" rel=""><br/></a></p><p style="color:inherit;text-align:left;">2. Display LCD (128x32);</p><p style="color:inherit;text-align:left;">3. Jumper’s ou fios.</p><p style="color:inherit;text-align:left;"><br/></p><p style="text-align:left;"><span style="font-size:28px;color:rgb(49, 188, 173);">Esquemático:</span></p></div></div></div></div>
</div><div data-element-id="elm_h23P9hnKd1Yy9d4nr4L9Dg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_h23P9hnKd1Yy9d4nr4L9Dg"] .zpimage-container figure img { width: 500px ; height: 666.67px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_h23P9hnKd1Yy9d4nr4L9Dg"] .zpimage-container figure img { width:500px ; height:666.67px ; } } @media (max-width: 767px) { [data-element-id="elm_h23P9hnKd1Yy9d4nr4L9Dg"] .zpimage-container figure img { width:500px ; height:666.67px ; } } [data-element-id="elm_h23P9hnKd1Yy9d4nr4L9Dg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled.png" width="500" height="666.67" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_5kvsAZ7lPK4sgdcItH9JkA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_5kvsAZ7lPK4sgdcItH9JkA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><p style="color:inherit;">Bibliotecas Arduíno utilizadas:</p><ul style="color:inherit;"><li>SSD1306 by Adafruit.</li></ul><p style="color:inherit;">E dependências das respectivas bibliotecas acima.</p><p style="color:inherit;text-align:justify;"><br/></p><p style="text-align:justify;"><span style="font-size:28px;color:rgb(49, 188, 173);">Seleção da placa na Arduíno IDE:</span></p><div style="color:inherit;"><figure><div><img src="https://media.licdn.com/dms/image/D4D12AQH30VwLri90WQ/article-inline_image-shrink_1500_2232/0/1696504869849?e=1701907200&amp;v=beta&amp;t=dJbXLspWglwmMQYgZK9lAj-iZO67x64jdRighEQL6lE" alt=""></div></figure></div><p style="color:inherit;">Selecionamos o módulo ESP32C3.</p><p style="color:inherit;"><br/></p><p><span style="font-size:28px;color:rgb(49, 188, 173);">Código</span><span style="color:inherit;">:</span></p></div></div></div>
</div><div data-element-id="elm_5W4Q07bBKKQjDiCrQLYPSg" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><pre><code>#include &quot;Adafruit_SSD1306.h&quot;

// Define o tamanho do display OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32

const unsigned char uktech_negativo_branco [] PROGMEM = {
	// &#x27;uktech_negativo_branco, 128x32px
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x70, 0x3d, 0xe0, 0xff, 0xfe, 0xff, 0xe0, 0xfc, 0x1c, 0x0e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x70, 0x3d, 0xe1, 0xff, 0xfe, 0xff, 0xe3, 0xff, 0x3c, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x70, 0x3d, 0xe3, 0xff, 0xfe, 0xff, 0xe7, 0xff, 0xbc, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x70, 0x3d, 0xe7, 0x81, 0xe0, 0xf0, 0x0f, 0xcf, 0xbc, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x70, 0x3d, 0xef, 0x01, 0xe0, 0xf0, 0x0f, 0x02, 0x3c, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x70, 0x3d, 0xfe, 0x01, 0xe0, 0xf0, 0x1e, 0x00, 0x3c, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x70, 0x3d, 0xfe, 0x01, 0xe0, 0xff, 0xde, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x70, 0x3d, 0xfe, 0x01, 0xe0, 0xff, 0xde, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x70, 0x3d, 0xff, 0x01, 0xe0, 0xff, 0xde, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x78, 0x3d, 0xe7, 0x81, 0xe0, 0xf0, 0x1e, 0x00, 0x3c, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x78, 0x3d, 0xe3, 0xc1, 0xe0, 0xf0, 0x0f, 0x03, 0xbc, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x3c, 0x79, 0xe3, 0xc1, 0xe0, 0xff, 0xef, 0xcf, 0xbc, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x3f, 0xf9, 0xe1, 0xe1, 0xe0, 0xff, 0xe7, 0xff, 0xbc, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x1f, 0xf1, 0xe0, 0xf1, 0xe0, 0xff, 0xe3, 0xff, 0x3c, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x0f, 0xc1, 0xe0, 0xf9, 0xe0, 0xff, 0xe0, 0xfc, 0x3c, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x20, 0x20, 0x1c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x13, 0x24, 0xb2, 0xe8, 0x89, 0x2c, 0xa9, 0x88, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x12, 0xcf, 0x6a, 0xad, 0xcb, 0xc9, 0x76, 0x98, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x1a, 0x6d, 0x6e, 0xbd, 0xcb, 0xe9, 0xad, 0x98, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;Wire, -1);


void setup() {
  //Velocidade do monitor serial
  Serial.begin(115200);
  // Pinos do barramento I2C
  Wire.begin(18, 19);

   // Verifica estado de inicialização do display, acusa falha em caso de erro
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0, false, true)) {
    Serial.println(F(&quot;Falha ao inicializar o SSD1306&quot;));
    for (;;)
      ;
  }

}

void loop() {
display.clearDisplay();
  display.drawBitmap(0, 0, uktech_negativo_branco, 128, 32, SSD1306_WHITE); // Draw the bitmap
  display.display(); // Show the image on the display
  delay(1000); // Pause for 1 second

}</code></pre></div>
</div><div data-element-id="elm_pNMfi0P63_y2SDJfS5g3dQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_pNMfi0P63_y2SDJfS5g3dQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:20px;">Onde o vetor uktech_negativo_branco[] foi gerado a partir da seguinte imagem.</span></span><br/></p></div>
</div><div data-element-id="elm_-OsiyM1MS_4mc5gIaqILIQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_-OsiyM1MS_4mc5gIaqILIQ"] .zpimage-container figure img { width: 500px ; height: 186.25px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_-OsiyM1MS_4mc5gIaqILIQ"] .zpimage-container figure img { width:500px ; height:186.25px ; } } @media (max-width: 767px) { [data-element-id="elm_-OsiyM1MS_4mc5gIaqILIQ"] .zpimage-container figure img { width:500px ; height:186.25px ; } } [data-element-id="elm_-OsiyM1MS_4mc5gIaqILIQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/uktech_negativo_verde.png" width="500" height="186.25" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_KVlCK4RVlE9G8J1yi22nPg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_KVlCK4RVlE9G8J1yi22nPg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="font-size:28px;color:rgb(49, 188, 173);">Como obter o vetor de bytes a partir de uma imagem:&nbsp;</span></p><p><span style="color:inherit;">Basta utilizar algum das ferramentas abaixo:</span></p><ul><li><span style="color:inherit;"><a href="https://javl.github.io/image2cpp/" title="https://javl.github.io/image2cpp/&nbsp;" target="_blank" rel="">https://javl.github.io/image2cpp/&nbsp;</a></span><br/></li><li><span style="color:inherit;"><a href="https://diyusthad.com/image2cpp" title="https://diyusthad.com/image2cpp&nbsp;" target="_blank" rel="">https://diyusthad.com/image2cpp&nbsp;</a></span><br/></li><li><span style="color:inherit;"><a href="https://mischianti.org/images-to-byte-array-online-converter-cpp-arduino/" title="https://mischianti.org/images-to-byte-array-online-converter-cpp-arduino/" target="_blank" rel="">https://mischianti.org/images-to-byte-array-online-converter-cpp-arduino/</a></span><br/></li></ul></div>
</div><div data-element-id="elm_aQ-iDdPyfKJ2v-hvstDiLg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_aQ-iDdPyfKJ2v-hvstDiLg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:rgb(49, 188, 173);font-size:28px;">Resultado:</span><br/></p></div>
</div><div data-element-id="elm_8HfNx78h6WekdZ3wi-mDBw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_8HfNx78h6WekdZ3wi-mDBw"] .zpimage-container figure img { width: 500px ; height: 666.67px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_8HfNx78h6WekdZ3wi-mDBw"] .zpimage-container figure img { width:500px ; height:666.67px ; } } @media (max-width: 767px) { [data-element-id="elm_8HfNx78h6WekdZ3wi-mDBw"] .zpimage-container figure img { width:500px ; height:666.67px ; } } [data-element-id="elm_8HfNx78h6WekdZ3wi-mDBw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Untitled%201.png" width="500" height="666.67" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_8qocvXLaOpfWoka3TN8a3w" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_8qocvXLaOpfWoka3TN8a3w"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_OgBEGXwO_Eg3_dhq88ZeLA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_OgBEGXwO_Eg3_dhq88ZeLA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><p><span style="font-size:18px;color:rgb(49, 188, 173);">Sobre o autor:</span></p><p style="color:inherit;"><span style="font-family:verdana, sans-serif;">Matheus Ernan Reichert</span></p><p style="color:inherit;"><span style="color:inherit;">Matheus desempenha o papel de desenvolvedor de sistemas de tecnologia da informação dentro da equipe da UKTech. Possui experiência no domínio de micro controladores e desenvolvimento de software, e está na reta final de sua graduação em Engenharia de Computação. Em seus momentos de lazer, ele se dedica a interesses como jogos de computador e a apreciação de animes.</span><br/></p></div></div>
</div><div data-element-id="elm_SKn6lUyXjU2FkJhAV4_hqA" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_SKn6lUyXjU2FkJhAV4_hqA"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_xxO0A9jJKthwKr_NQEPLNA" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_xxO0A9jJKthwKr_NQEPLNA"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/Fale-conosco" target="_blank"><span class="zpbutton-content">Entre em contato conosco</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 05 Oct 2023 09:37:58 -0300</pubDate></item><item><title><![CDATA[Utilizando o ESP32-C3 em conjunto com o sensor BME680e a Arduíno IDE]]></title><link>https://www.uktech.com.br/bloguk/post/utilizando-o-esp32-c3-em-conjunto-com-o-sensor-bme680e-a-arduíno-ide</link><description><![CDATA[<img align="left" hspace="5" src="https://www.uktech.com.br/getty-images-CCjYIrjpYvM-unsplash.jpg"/>No tutorial de hoje vamos mostrar como usar o ESP32-C3 em conjunto com o sensor BME680 para medir temperatura, umidade, pressão e VOC (Composto orgâni ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_Srg3otbJSauSPUjDjMWe8g" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_EN_OefMoQBSUi4QmBd37kA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_FvHKve1qQpyvQM8K07AbyA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_nLqn6s_zTz2d71y6qTrplA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;"><span style="color:inherit;">No tutorial de hoje vamos mostrar como usar o ESP32-C3 em conjunto com o sensor BME680 para medir temperatura, umidade, pressão e VOC (Composto orgânico volátil), também vamos mostrar essas informações em um display OLED.</span><br/></p></div>
</div><div data-element-id="elm_8iClLPrd0JtIbmokag7h7w" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_8iClLPrd0JtIbmokag7h7w"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Materiais utilizados:</span><br/></h2></div>
<div data-element-id="elm_6AmRqsbODvJoaFK-KKOkyg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_6AmRqsbODvJoaFK-KKOkyg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li><span style="color:inherit;">ESP32-C3 (UKT-ESP32C3-DEV-MINI-USB)</span></li><li><span style="color:inherit;">BME680&nbsp;</span></li><li><span style="color:inherit;">Display LCD (128x32)&nbsp;<br/></span></li><li><span style="color:inherit;">Jumpers ou fios</span></li></ol></div>
</div><div data-element-id="elm_KAh5y2q8Q4CO9WbA405FQw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_KAh5y2q8Q4CO9WbA405FQw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;"><span style="font-size:20px;">Esquemático</span>:</span><br/></h2></div>
<div data-element-id="elm_HopaNaHLTpqw3pYPd8ywvg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_HopaNaHLTpqw3pYPd8ywvg"] .zpimage-container figure img { width: 962px ; height: 633.75px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_HopaNaHLTpqw3pYPd8ywvg"] .zpimage-container figure img { width:723px ; height:476.30px ; } } @media (max-width: 767px) { [data-element-id="elm_HopaNaHLTpqw3pYPd8ywvg"] .zpimage-container figure img { width:415px ; height:273.40px ; } } [data-element-id="elm_HopaNaHLTpqw3pYPd8ywvg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/3.esquema.png" width="415" height="273.40" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_M4z92bvvuvhixWc2_bgpjQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_M4z92bvvuvhixWc2_bgpjQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Bibliotecas Arduíno utilizadas:</span><br/></h2></div>
<div data-element-id="elm_ekbT7TFVGW3FTd6e0oM0WQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ekbT7TFVGW3FTd6e0oM0WQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ul><li><span style="color:inherit;">BME680 by Adafruit&nbsp;</span></li><li><span style="color:inherit;">SSD1306 by Adafruit&nbsp;</span></li></ul><p><span style="color:inherit;">E dependências das respectivas bibliotecas acima.</span><br/></p></div>
</div><div data-element-id="elm_Hz_6E4QRKAPBqRH9njImfg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_Hz_6E4QRKAPBqRH9njImfg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Seleção da placa na Arduíno IDE:&nbsp;</span><br/></h2></div>
<div data-element-id="elm_8nlACJjNwIQlFm6GSuJsKw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_8nlACJjNwIQlFm6GSuJsKw"] .zpimage-container figure img { width: 277px !important ; height: 51px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_8nlACJjNwIQlFm6GSuJsKw"] .zpimage-container figure img { width:277px ; height:51px ; } } @media (max-width: 767px) { [data-element-id="elm_8nlACJjNwIQlFm6GSuJsKw"] .zpimage-container figure img { width:277px ; height:51px ; } } [data-element-id="elm_8nlACJjNwIQlFm6GSuJsKw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/2023-09-18-14-53-23-Captura%20de%20tela%20de%202023-09-18%2014-53-18.png" width="277" height="51" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_9r-ZGcQ6uW0eV8xzil1tmw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_9r-ZGcQ6uW0eV8xzil1tmw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Selecionamos o módulo ESP32C3.</span><br/></p></div>
</div><div data-element-id="elm_ePUST2HSmHGR9ByV1Wc76Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_ePUST2HSmHGR9ByV1Wc76Q"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Código:</span><br/></h2></div>
<div data-element-id="elm_86Ej6H-V7UKSVDy-653BGw" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><pre><code class="fenced-code-block language-arduino"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">"Adafruit_SSD1306.h"</span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">"Adafruit_BME680.h"</span></span>

<span class="token comment">// Define o tamanho do display OLED</span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">SCREEN_WIDTH</span> <span class="token expression"><span class="token number">128</span></span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">SCREEN_HEIGHT</span> <span class="token expression"><span class="token number">32</span></span></span>

<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">SEALEVELPRESSURE_HPA</span> <span class="token expression"><span class="token punctuation">(</span><span class="token number">1013.25</span><span class="token punctuation">)</span></span></span>

<span class="token comment">// Inidicaliza o sensor e o display</span>
Adafruit_BME680 bme<span class="token punctuation">;</span>
Adafruit_SSD1306 <span class="token function">display</span><span class="token punctuation">(</span>SCREEN_WIDTH<span class="token punctuation">,</span> SCREEN_HEIGHT<span class="token punctuation">,</span> <span class="token operator">&amp;</span><span class="token builtin">Wire</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

<span class="token keyword">void</span> <span class="token keyword">setup</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token comment">//Velocidade do monitor serial</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token number">115200</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token comment">// Pinos do barramento I2C</span>
  <span class="token builtin">Wire</span><span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

   <span class="token comment">// Verifica estado de inicialização do display, acusa falha em caso de erro</span>
  <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span>SSD1306_SWITCHCAPVCC<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"Falha ao inicializar o SSD1306"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token punctuation">;</span><span class="token punctuation">;</span><span class="token punctuation">)</span>
      <span class="token punctuation">;</span>
  <span class="token punctuation">}</span>

  <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>bme<span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"Could not find a valid BME680 sensor, check wiring!"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token punctuation">}</span>

  <span class="token comment">// Ajusta os filtros da biblioteca do sensor</span>
  bme<span class="token punctuation">.</span><span class="token function">setTemperatureOversampling</span><span class="token punctuation">(</span>BME680_OS_8X<span class="token punctuation">)</span><span class="token punctuation">;</span>
  bme<span class="token punctuation">.</span><span class="token function">setHumidityOversampling</span><span class="token punctuation">(</span>BME680_OS_2X<span class="token punctuation">)</span><span class="token punctuation">;</span>
  bme<span class="token punctuation">.</span><span class="token function">setPressureOversampling</span><span class="token punctuation">(</span>BME680_OS_4X<span class="token punctuation">)</span><span class="token punctuation">;</span>
  bme<span class="token punctuation">.</span><span class="token function">setIIRFilterSize</span><span class="token punctuation">(</span>BME680_FILTER_SIZE_3<span class="token punctuation">)</span><span class="token punctuation">;</span>
  bme<span class="token punctuation">.</span><span class="token function">setGasHeater</span><span class="token punctuation">(</span><span class="token number">320</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 320*C for 150 ms</span>

  <span class="token comment">// Limpe o buffer do display</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">clearDisplay</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">// Configuração do texto</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">setTextSize</span><span class="token punctuation">(</span><span class="token number">1.5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>             <span class="token comment">// Tamanho do texto (1 = 6x8 pixels)</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">setTextColor</span><span class="token punctuation">(</span>SSD1306_WHITE<span class="token punctuation">)</span><span class="token punctuation">;</span>  <span class="token comment">// Cor do texto</span>
<span class="token punctuation">}</span>

<span class="token keyword">void</span> <span class="token keyword">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token comment">// Tempo entre cada medida</span>
  <span class="token function">delay</span><span class="token punctuation">(</span><span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>


  <span class="token comment">// BME680 inicia o processo de amostragem</span>
  unsigned <span class="token keyword">long</span> endTime <span class="token operator">=</span> bme<span class="token punctuation">.</span><span class="token function">beginReading</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token keyword">if</span> <span class="token punctuation">(</span>endTime <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"Falha ao obter medicao"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">return</span><span class="token punctuation">;</span>
  <span class="token punctuation">}</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"Medicao comecou em: "</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">millis</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">" e terminou em "</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>endTime<span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>bme<span class="token punctuation">.</span><span class="token function">endReading</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"Falha com completar medicao"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">return</span><span class="token punctuation">;</span>
  <span class="token punctuation">}</span>

  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class=</div>
	</div>




            

          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          

              


  











<div data-element-id="elm_K0NDm-NRp--Yj-ImfmoM6A" data-element-type="heading" class="zpelement zpelem-heading ">


  

  

  

  

  
  
  

  

  


  
  

  
  

  

  

  

  
  
  

	<style>
  
    
    
      [data-element-id="elm_K0NDm-NRp--Yj-ImfmoM6A"].zpelem-heading {
      	 border-radius:1px;
      }
    
    
  

  

  
  </style>
  
  <h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Resultado:</span></h2>
</div>



          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          

              
    



    


<div data-element-id="elm_yosqX4uqDtAldoDUlTJWdw" data-element-type="image" class="zpelement zpelem-image ">

























    

<style>

@media (min-width: 992px) {
  [data-element-id="elm_yosqX4uqDtAldoDUlTJWdw"] .zpimage-container figure img {
        width: 900px   !important ;
        height: 908px  !important ;
  }
}



    @media (max-width: 991px) and (min-width: 768px) {
      [data-element-id="elm_yosqX4uqDtAldoDUlTJWdw"] .zpimage-container figure img {
        width:900px ;
        height:908px ;
      }
    }



    @media (max-width: 767px) {
      [data-element-id="elm_yosqX4uqDtAldoDUlTJWdw"] .zpimage-container figure img {
        width:900px ;
        height:908px ;
      }
    }



    
    
    
    [data-element-id="elm_yosqX4uqDtAldoDUlTJWdw"].zpelem-image {
        border-radius:1px;
    }
    





</style>

  <div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-original zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark">
        <figure role="none" class="zpimage-data-ref">
        
          <span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;">
          
          <picture>

            
            
            <img class="zpimage zpimage-style-none zpimage-space-none " src="/3.final.jpeg" width="900" height="908" loading="lazy" size="original" data-lightbox="true"/>
          </picture>
        
          </span>
          
      
    </figure>
  </div>

</div>


          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          

            <div data-element-id="elm_B9ZShV7BQZeruF5QR1G4LA" data-element-type="divider" class="zpelement zpelem-divider ">

    

    

    

    

    

    

    
      <style type="text/css">
    
        [data-element-id="elm_B9ZShV7BQZeruF5QR1G4LA"].zpelem-divider{
            border-radius:1px;
        }
    
    
    
    </style>
    <style>
    
    </style>
    
    <div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid ">
      <div class="zpdivider-common"></div>

    </div>
</div>


          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          

              


  










<div data-element-id="elm_JnwGxOo4e3Y2-MiWs1Cf3g" data-element-type="text" class="zpelement zpelem-text ">





 

 

  

  











<style>

    [data-element-id="elm_JnwGxOo4e3Y2-MiWs1Cf3g"].zpelem-text {
        border-radius:1px;
    }
    



</style>


    <div class="zptext zptext-align-left " data-editor="true"><p><span style="color:rgb(49, 188, 173);font-size:18px;">Sobre o autor:</span></p><p><span style="color:inherit;">Matheus desempenha o papel de desenvolvedor de sistemas de tecnologia da informação dentro da equipe da UKTech. Possui&nbsp; experiência no domínio de microcontroladores e desenvolvimento de software, e está na reta final de sua graduação em Engenharia de Computação. Em seus momentos de lazer, ele se dedica a interesses como jogos de computador e a apreciação de animes.</span><br/></p></div>

</div>


          
    


    
    
</div>


          
    


    

</div>


          
    


  
</div>


















































</div>


           
    


    

</div>


















]]></content:encoded>
				<pubDate>Mon, 02 Oct 2023 14:19:42 -0300</pubDate>
			</item>
		
			<item>
				<title><![CDATA[Utilizando o ESP32-C3 em conjunto com o sensor de luz ultravioleta ML8511 e a Arduíno IDE]]></title>
				<link>https://www.uktech.com.br/bloguk/post/utilizando-o-esp32-c3-em-conjunto-com-o-sensor-de-luzultravioleta-ml8511-e-a-arduíno-ide</link>
				<description><![CDATA[<img align="left" hspace="5" src="https://www.uktech.com.br/images/photo-1635280145597-3eb75459ee55"/>Crie projetos com o ESP32-C3 em conjunto com o sensor ML8511 para medir a luminosidade no espectro ultravioleta e mostrar essas informações em um display OLED.]]></description>
				<content:encoded><![CDATA[<div class="zpcontent-container blogpost-container ">
    
    
      


  

      
      
      

      
        
      
      
      

      
  
          

              
                  
                      
                      
                              
              

              







































    






<div data-element-id="elm_wDuwbGK932g4olQbmuIykQ" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg ">











<style type="text/css">





</style>




<div class="zpcontainer-fluid zpcontainer">
  
  


  

      
      
      

      
        
      
      
      

      
  
          

              
<div data-element-id="elm_afUrrxdQaj5JR0_DItBh6g" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start " data-equal-column="">















<style type="text/css">



</style>
    
        


  

      
      
      

      
        
      
      
      

      
  
          

              









<div data-element-id="elm_x78zbcjv29_vjfy7XNB9Aw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg ">
    

    
    


    
    


    

    

    

    
    
      <style type="text/css">
        
        
        
        
      </style>
    
    
    
        


  

      
      
      

      
        
      
      
      

      
  
          

              
    



    


<div data-element-id="elm_St04_W-2aI1zML9qxRoTDQ" data-element-type="image" class="zpelement zpelem-image ">

























    

<style>

@media (min-width: 992px) {
  [data-element-id="elm_St04_W-2aI1zML9qxRoTDQ"] .zpimage-container figure img {
        width: 1110px  ;
        height: 628.26px ;
  }
}



    @media (max-width: 991px) and (min-width: 768px) {
      [data-element-id="elm_St04_W-2aI1zML9qxRoTDQ"] .zpimage-container figure img {
        width:723px ;
        height:409.22px ;
      }
    }



    @media (max-width: 767px) {
      [data-element-id="elm_St04_W-2aI1zML9qxRoTDQ"] .zpimage-container figure img {
        width:415px ;
        height:234.89px ;
      }
    }



    
    
    
    [data-element-id="elm_St04_W-2aI1zML9qxRoTDQ"].zpelem-image {
        border-radius:1px;
    }
    





</style>

  <div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit ">
        <figure role="none" class="zpimage-data-ref">
        
          <span class="zpimage-anchor">
          
          <picture>

            
            
            <img class="zpimage zpimage-style-none zpimage-space-none " src="/images/photo-1635280145597-3eb75459ee55" width="415" height="234.89" loading="lazy" size="fit"/>
          </picture>
        
          </span>
          
      
    </figure>
  </div>

</div>


          
    


    
    
</div>


          
    


    

</div>


          
    


  
</div>


















































</div>


           
    


    
      


  

      
      
      

      
        
      
      
      

      
  
          

              
                  
                      
                      
                              
              

              












































<div data-element-id="elm_nH7IBjnxQJSL1YQ_n4Y61A" data-element-type="section" class="zpsection ">











<style type="text/css">





</style>




<div class="zpcontainer-fluid zpcontainer">
  
  


  

      
      
      

      
        
      
      
      

      
  
          

              
<div data-element-id="elm_tap_zgfCTGeL-JW7fgrhYw" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column="">















<style type="text/css">



</style>
    
        


  

      
      
      

      
        
      
      
      

      
  
          

              









<div data-element-id="elm_LAJ4-P29RsazLZC7lLIxuA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- ">
    

    
    


    
    


    

    

    

    
    
      <style type="text/css">
        
          [data-element-id="elm_LAJ4-P29RsazLZC7lLIxuA"].zpelem-col{
              border-radius:1px;
          }
        
        
        
        
      </style>
    
    
    
        


  

      
      
      

      
        
      
      
      

      
  
          

              


  





  





  


<div data-element-id="elm_IwDCegfZTkyBQYIc3yOcHg" data-element-type="text" class="zpelement zpelem-text ">





 

 

  

  











<style>

    [data-element-id="elm_IwDCegfZTkyBQYIc3yOcHg"].zpelem-text {
        border-radius:1px;
    }
    



</style>


    <div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;"><span style="color:inherit;">No tutorial de hoje, vamos mostrar como usar o ESP32-C3 em conjunto com o sensor ML8511 para luminosidade no espectro ultravioleta, também vamos mostrar essas informações em um display OLED.</span><br/></p><p style="text-align:left;"><span style="color:inherit;"><br/></span></p><div><div><div><p style="text-align:left;"><span style="font-family:verdana, sans-serif;color:rgb(49, 188, 173);font-size:20px;">Materiais utilizados:&nbsp;</span></p><ul><li style="text-align:left;">ESP32-C3 (UKT-ESP32C3-DEV-MINI-USB)<br/></li><li style="color:inherit;text-align:left;"><span style="color:inherit;">ML8511&nbsp;</span><br/></li><li style="color:inherit;text-align:left;"><span style="color:inherit;">Display LCD (128x32)</span></li><li style="color:inherit;text-align:left;">Jumpers ou fios</li></ul></div></div><div style="color:inherit;"><h2 style="text-align:left;"><span style="font-size:20px;">Esquemático:</span></h2></div></div></div>

</div>


          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          

              
    



    


<div data-element-id="elm_tmNN9MFAIv10mlHAcsfWTw" data-element-type="image" class="zpelement zpelem-image ">

























    

<style>

@media (min-width: 992px) {
  [data-element-id="elm_tmNN9MFAIv10mlHAcsfWTw"] .zpimage-container figure img {
        width: 500px  ;
        height: 375.00px ;
  }
}



    @media (max-width: 991px) and (min-width: 768px) {
      [data-element-id="elm_tmNN9MFAIv10mlHAcsfWTw"] .zpimage-container figure img {
        width:500px ;
        height:375.00px ;
      }
    }



    @media (max-width: 767px) {
      [data-element-id="elm_tmNN9MFAIv10mlHAcsfWTw"] .zpimage-container figure img {
        width:500px ;
        height:375.00px ;
      }
    }



    
    
    
    [data-element-id="elm_tmNN9MFAIv10mlHAcsfWTw"].zpelem-image {
        border-radius:1px;
    }
    





</style>

  <div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark">
        <figure role="none" class="zpimage-data-ref">
        
          <span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;">
          
          <picture>

            
            
            <img class="zpimage zpimage-style-none zpimage-space-none " src="/Utilizando%20o%20ESP32-C3%20em%20conjunto%20com%20o%20sensor%20ml-1-.png" width="500" height="375.00" loading="lazy" size="medium" data-lightbox="true"/>
          </picture>
        
          </span>
          
      
    </figure>
  </div>

</div>


          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          

              


  










<div data-element-id="elm_A0_p-rE00McDIH3qkA1vXQ" data-element-type="text" class="zpelement zpelem-text ">





 

 

  

  











<style>

    [data-element-id="elm_A0_p-rE00McDIH3qkA1vXQ"].zpelem-text {
        border-radius:1px;
    }
    



</style>


    <div class="zptext zptext-align-left " data-editor="true"><p><span style="font-family:verdana, sans-serif;color:rgb(49, 188, 173);font-size:20px;">Bibliotecas Arduíno utilizadas:&nbsp;</span></p><ul><li><span style="color:inherit;">ML8511 by RobTillaart&nbsp;</span></li><li><span style="color:inherit;">SSD1306 by Adafruit</span></li></ul><div><br/></div><div><span style="color:inherit;">E dependências das respectivas bibliotecas acima.</span><br/></div></div>

</div>


          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          

              


  











<div data-element-id="elm_zAx3EBPOsVKPQAJUiMw6jA" data-element-type="heading" class="zpelement zpelem-heading ">


  

  

  

  

  
  
  

  

  


  
  

  
  

  

  

  

  
  
  

	<style>
  
    
    
      [data-element-id="elm_zAx3EBPOsVKPQAJUiMw6jA"].zpelem-heading {
      	 border-radius:1px;
	



    
  

      
  

    

        


    
      
    


    
      margin-block-start:-3px;
      }
    
    
  

  

  
  </style>
  
  <h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:20px;">Seleção da placa na Arduíno IDE:</span><br/></h2>
</div>



          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          

              
    



    


<div data-element-id="elm_XsGPIGU9-hYQQ29mUXL0nQ" data-element-type="image" class="zpelement zpelem-image ">

























    

<style>

@media (min-width: 992px) {
  [data-element-id="elm_XsGPIGU9-hYQQ29mUXL0nQ"] .zpimage-container figure img {
        width: 277px   !important ;
        height: 51px  !important ;
  }
}



    @media (max-width: 991px) and (min-width: 768px) {
      [data-element-id="elm_XsGPIGU9-hYQQ29mUXL0nQ"] .zpimage-container figure img {
        width:277px ;
        height:51px ;
      }
    }



    @media (max-width: 767px) {
      [data-element-id="elm_XsGPIGU9-hYQQ29mUXL0nQ"] .zpimage-container figure img {
        width:277px ;
        height:51px ;
      }
    }



    
    
    
    [data-element-id="elm_XsGPIGU9-hYQQ29mUXL0nQ"].zpelem-image {
        border-radius:1px;
    }
    





</style>

  <div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark">
        <figure role="none" class="zpimage-data-ref">
        
          <span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;">
          
          <picture>

            
            
            <img class="zpimage zpimage-style-none zpimage-space-none " src="/2023-09-18-14-53-23-Captura%20de%20tela%20de%202023-09-18%2014-53-18.png" width="277" height="51" loading="lazy" size="original" data-lightbox="true"/>
          </picture>
        
          </span>
          
      
    </figure>
  </div>

</div>


          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          

              


  










<div data-element-id="elm_dVdRCBk7I0-rYGu7kWgpXg" data-element-type="text" class="zpelement zpelem-text ">





 

 

  

  











<style>

    [data-element-id="elm_dVdRCBk7I0-rYGu7kWgpXg"].zpelem-text {
        border-radius:1px;
    }
    



</style>


    <div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Selecionamos o módulo ESP32C3.</span><br/></p></div>

</div>


          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          

              


  











<div data-element-id="elm_3wpLV_MtYt5510wVR1wFig" data-element-type="heading" class="zpelement zpelem-heading ">


  

  

  

  

  
  
  

  

  


  
  

  
  

  

  

  

  
  
  

	<style>
  
    
    
      [data-element-id="elm_3wpLV_MtYt5510wVR1wFig"].zpelem-heading {
      	 border-radius:1px;
      }
    
    
  

  

  
  </style>
  
  <h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Código:</span></h2>
</div>



          
    


    
        


  

      
      
      

      
        
      
      
      

      
  
          
            

              

	<div data-element-id="elm_Qds91ejClcv6yLAt2gVt8A" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet ">
	 	<div class="zpsnippet-container">
			
				<pre><code class="fenced-code-block language-arduino"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">"Adafruit_SSD1306.h"</span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;ML8511.h&gt;</span></span>

<span class="token comment">// Define o tamanho do display OLED</span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">SCREEN_WIDTH</span> <span class="token expression"><span class="token number">128</span></span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">SCREEN_HEIGHT</span> <span class="token expression"><span class="token number">32</span></span></span>

<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">ANALOGPIN</span> <span class="token expression"><span class="token number">0</span></span></span>
ML8511 <span class="token function">ml</span><span class="token punctuation">(</span>ANALOGPIN<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Inidicaliza o sensor e o display</span>
Adafruit_SSD1306 <span class="token function">display</span><span class="token punctuation">(</span>SCREEN_WIDTH<span class="token punctuation">,</span> SCREEN_HEIGHT<span class="token punctuation">,</span> <span class="token operator">&amp;</span><span class="token builtin">Wire</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

<span class="token keyword">void</span> <span class="token keyword">setup</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token comment">//Velocidade do monitor serial</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token number">115200</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token comment">// Pinos do barramento I2C</span>
  <span class="token builtin">Wire</span><span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

   <span class="token comment">// Verifica estado de inicialização do display, acusa falha em caso de erro</span>
  <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span>SSD1306_SWITCHCAPVCC<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"Falha ao inicializar o SSD1306"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token punctuation">}</span>
  <span class="token comment">//Parametros da tensão de operação do sensor e do adc</span>
  ml<span class="token punctuation">.</span><span class="token function">setVoltsPerStep</span><span class="token punctuation">(</span><span class="token number">3.3</span><span class="token punctuation">,</span> <span class="token number">4096</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   

  <span class="token comment">// Limpe o buffer do display</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">clearDisplay</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">// Configuração do texto</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">setTextSize</span><span class="token punctuation">(</span><span class="token number">1.5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>             <span class="token comment">// Tamanho do texto (1 = 6x8 pixels)</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">setTextColor</span><span class="token punctuation">(</span>SSD1306_WHITE<span class="token punctuation">)</span><span class="token punctuation">;</span>  <span class="token comment">// Cor do texto</span>
<span class="token punctuation">}</span>

<span class="token keyword">void</span> <span class="token keyword">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token comment">// Tempo entre cada medida</span>
  <span class="token function">delay</span><span class="token punctuation">(</span><span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>


  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"UV: "</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span> ml<span class="token punctuation">.</span><span class="token function">getUV</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">// Formata o dados para exibir no display</span>
  char uvString<span class="token punctuation">[</span><span class="token number">25</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
  <span class="token function">sprintf</span><span class="token punctuation">(</span>uvString<span class="token punctuation">,</span> <span class="token string">"Ultravioleta: %.5f"</span><span class="token punctuation">,</span> ml<span class="token punctuation">.</span><span class="token function">getUV</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">// Limpa o buffer do display</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">clearDisplay</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token comment">// Posição inicial do cursor no display</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">setCursor</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token comment">//Envia novos dados ao buffer do display</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>uvString<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token comment">// Atualiza o display para mostrar os dados no buffer</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">display</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre></div>
</div><div data-element-id="elm_qdhG74SqffJCXzvt3SNIxg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_qdhG74SqffJCXzvt3SNIxg"].zpelem-heading { border-radius:1px; margin-block-start:-11px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:20px;">Resultado:</span></h2></div>
<div data-element-id="elm_I8P2vo9gWMPvhSI8S5R4FA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_I8P2vo9gWMPvhSI8S5R4FA"] .zpimage-container figure img { width: 500px ; height: 375.00px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_I8P2vo9gWMPvhSI8S5R4FA"] .zpimage-container figure img { width:500px ; height:375.00px ; } } @media (max-width: 767px) { [data-element-id="elm_I8P2vo9gWMPvhSI8S5R4FA"] .zpimage-container figure img { width:500px ; height:375.00px ; } } [data-element-id="elm_I8P2vo9gWMPvhSI8S5R4FA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Utilizando%20o%20ESP32-C3%20em%20conjunto%20com%20o%20sensor%20ml-1-final.jpeg" width="500" height="375.00" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_Bz8tL57goq7DQY4DaZbQtg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Bz8tL57goq7DQY4DaZbQtg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p style="text-align:justify;">Agora, o ESP32-C3 deve ler os valores do sensor ML8511 e exibi-los no display OLED. Você verá a luminosidade no espectro ultravioleta em tempo real.</p><p style="text-align:justify;"><br/></p><p style="text-align:justify;">Este é um exemplo básico para começar a trabalhar com o sensor ML8511 e um display OLED em um ESP32-C3. Você pode personalizar o código e adicionar recursos adicionais, como a conversão para unidades UV específicas ou a inclusão de informações adicionais no display, conforme necessário para o seu projeto.</p></div></div>
</div><div data-element-id="elm_dZ0gMzMKUo1L063tqgO1bw" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_dZ0gMzMKUo1L063tqgO1bw"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_81TedfHy-KQL6i5kzi0_qQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_81TedfHy-KQL6i5kzi0_qQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="font-style:italic;">Sobre o autor:</span></p><div><pre style="color:inherit;margin-right:26px;font-size:15px;"><span style="font-family:arial, sans-serif;">Matheus desempenha o papel de desenvolvedor de sistemas de tecnologia da informação dentro da equipe da UKTech. Possui  experiência no</span></pre><pre style="margin-right:26px;"><span style="color:inherit;font-family:arial, sans-serif;font-size:15px;">domínio de </span><span style="font-family:arial, sans-serif;font-size:15px;">micro controladores</span><span style="color:inherit;font-family:arial, sans-serif;font-size:15px;"> e desenvolvimento de software, e está na reta final de sua graduação em Engenharia de Computação. </span></pre><pre style="color:inherit;margin-right:26px;font-size:15px;"><span style="font-family:arial, sans-serif;">Em seus momentos de lazer, ele se dedica a interesses como jogos de computador e a apreciação de animes.</span></pre></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 26 Sep 2023 11:45:54 -0300</pubDate></item><item><title><![CDATA[Utilizando o ESP32-C3 em conjunto com o sensor de temperatura e umidade DHT11/DHT22 e a Arduíno IDE]]></title><link>https://www.uktech.com.br/bloguk/post/utilizando-o-esp32-c3-em-conjunto-com-o-sensor-detemperatura-e-umidade-dht11-dht22-e-a-arduíno-ide</link><description><![CDATA[<img align="left" hspace="5" src="https://www.uktech.com.br/allison-saeng-I4t4Ym-YZBs-unsplash.jpg"/>Tutorial de como usar o ESP32-C3 em conjunto com o sensor DHT11/DHT22 para medir temperatura e umidade, todas as informações aparecerão em um display OLED.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_Cy3eSVMPSfSN31DehJ_MDw" data-element-type="section" class="zpsection "><style type="text/css"> [data-element-id="elm_Cy3eSVMPSfSN31DehJ_MDw"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_t35Ki2v8SriV1VQmEGgsGg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_W-eRWQfZSua1-20n5qC0rA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_W-eRWQfZSua1-20n5qC0rA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_7bP9Ta_sRaOQhLh08hbh7w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_7bP9Ta_sRaOQhLh08hbh7w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;"><span style="color:inherit;">No tutorial de hoje vamos mostrar como usar o ESP32-C3 em conjunto com o sensor DHT11/DHT22 para medir temperatura e umidade, também vamos mostrar essas informações em um display OLED.&nbsp;</span></p><p style="text-align:left;"><span style="color:rgb(49, 188, 173);">Materiais utilizados:&nbsp;</span></p><ul><li style="text-align:left;"><span style="color:inherit;">ESP32-C3 (UKT-ESP32C3-DEV-MINI-USB)</span><br/></li><li style="text-align:left;"><span style="color:inherit;">DHT11&nbsp;</span></li><li style="text-align:left;"><span style="color:inherit;">Resistor 10KΩ&nbsp;</span></li><li style="text-align:left;"><span style="color:inherit;">Display LCD (128x32)&nbsp;</span></li><li style="text-align:left;"><span style="color:inherit;">Jumpers ou fios</span></li></ul></div>
</div><div data-element-id="elm__HE_rWv6XIjnBHeXqjRhBQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm__HE_rWv6XIjnBHeXqjRhBQ"].zpelem-heading { border-radius:1px; margin-block-start:-12px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:25px;">Esquemático:</span><br/></h2></div>
<div data-element-id="elm_ftBLfSAJv1niKiRCSlEwnA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_ftBLfSAJv1niKiRCSlEwnA"] .zpimage-container figure img { width: 500px ; height: 419.24px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_ftBLfSAJv1niKiRCSlEwnA"] .zpimage-container figure img { width:500px ; height:419.24px ; } } @media (max-width: 767px) { [data-element-id="elm_ftBLfSAJv1niKiRCSlEwnA"] .zpimage-container figure img { width:500px ; height:419.24px ; } } [data-element-id="elm_ftBLfSAJv1niKiRCSlEwnA"].zpelem-image { border-radius:1px; margin-block-start:-1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/2023-09-18-09-38-26-Captura%20de%20tela%20de%202023-09-18%2009-38-13.png" width="500" height="419.24" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_vkdEc_YdyCI3gCGa-d2zXw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_vkdEc_YdyCI3gCGa-d2zXw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Bibliotecas Arduíno utilizadas:&nbsp;</span></p><ul><li><span style="color:inherit;">DHT sensor library by Adafruit&nbsp;</span></li><li><span style="color:inherit;">SSD1306 by Adafruit&nbsp;</span></li></ul><p><span style="color:inherit;">E dependências das respectivas bibliotecas acima.</span><br/></p></div>
</div><div data-element-id="elm_enhE8dUXjWXcIetgvs8Z3Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_enhE8dUXjWXcIetgvs8Z3Q"].zpelem-heading { border-radius:1px; margin-block-start:-5px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:25px;">Seleção da placa na Arduíno IDE:</span><br/></h2></div>
<div data-element-id="elm_MFh5rzyJuD73aEwf1IWA3A" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_MFh5rzyJuD73aEwf1IWA3A"] .zpimage-container figure img { width: 277px !important ; height: 51px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_MFh5rzyJuD73aEwf1IWA3A"] .zpimage-container figure img { width:277px ; height:51px ; } } @media (max-width: 767px) { [data-element-id="elm_MFh5rzyJuD73aEwf1IWA3A"] .zpimage-container figure img { width:277px ; height:51px ; } } [data-element-id="elm_MFh5rzyJuD73aEwf1IWA3A"].zpelem-image { border-radius:1px; margin-block-start:0px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/2023-09-18-14-53-23-Captura%20de%20tela%20de%202023-09-18%2014-53-18.png" width="277" height="51" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_PXM08dWVXJqsMqmTKRrRfg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_PXM08dWVXJqsMqmTKRrRfg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">Selecionamos o modulo ESP32C3 .</span><br/></p></div>
</div><div data-element-id="elm_dm46TyqmQiZMdJyTcICj0A" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_dm46TyqmQiZMdJyTcICj0A"].zpelem-heading { border-radius:1px; margin-block-start:-5px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:25px;">Código:</span><br/></h2></div>
<div data-element-id="elm_uLH-VmYqWQ-bosKOdp4KRQ" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_uLH-VmYqWQ-bosKOdp4KRQ"].zpelem-divider{ border-radius:1px; margin-block-start:-14px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_DOCdqpQGQlqW2CojP-8wiw" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><pre><code class="fenced-code-block language-arduino"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">"DHT.h"</span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">"Adafruit_SSD1306.h"</span></span>

<span class="token comment">// Define o tamanho do display OLED</span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">SCREEN_WIDTH</span> <span class="token expression"><span class="token number">128</span></span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">SCREEN_HEIGHT</span> <span class="token expression"><span class="token number">32</span></span></span>

<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">DHTPIN</span> <span class="token expression"><span class="token number">1</span>  </span><span class="token comment">//Pino onde esta conectado o sensor DHT</span></span>

<span class="token comment">// Define o modelo de sensor DHT que estamos usando</span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">DHTTYPE</span> <span class="token expression">DHT11  </span><span class="token comment">// DHT 11</span></span>
<span class="token comment">//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321</span>
<span class="token comment">//#define DHTTYPE DHT21   // DHT 21 (AM2301)</span>

<span class="token comment">// Inidicaliza o sensor e o display</span>
DHT <span class="token function">dht</span><span class="token punctuation">(</span>DHTPIN<span class="token punctuation">,</span> DHTTYPE<span class="token punctuation">)</span><span class="token punctuation">;</span>
Adafruit_SSD1306 <span class="token function">display</span><span class="token punctuation">(</span>SCREEN_WIDTH<span class="token punctuation">,</span> SCREEN_HEIGHT<span class="token punctuation">,</span> <span class="token operator">&amp;</span><span class="token builtin">Wire</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

<span class="token keyword">void</span> <span class="token keyword">setup</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token comment">//Velocidade do monitor serial</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token number">115200</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"DHTxx test!"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  dht<span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token comment">// Pinos do barramento I2C</span>
  <span class="token builtin">Wire</span><span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">// Verifica estado de inicialização do display, acusa falha em caso de erro</span>
  <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span>SSD1306_SWITCHCAPVCC<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"Falha ao inicializar o SSD1306"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token punctuation">;</span><span class="token punctuation">;</span><span class="token punctuation">)</span>
      <span class="token punctuation">;</span>
  <span class="token punctuation">}</span>

  <span class="token comment">// Limpe o buffer do display</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">clearDisplay</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">// Configuração do texto</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">setTextSize</span><span class="token punctuation">(</span><span class="token number">1.5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>             <span class="token comment">// Tamanho do texto (1 = 6x8 pixels)</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">setTextColor</span><span class="token punctuation">(</span>SSD1306_WHITE<span class="token punctuation">)</span><span class="token punctuation">;</span>  <span class="token comment">// Cor do texto</span>
<span class="token punctuation">}</span>

<span class="token keyword">void</span> <span class="token keyword">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token comment">// Tempo entre cada medida</span>
  <span class="token function">delay</span><span class="token punctuation">(</span><span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  float h <span class="token operator">=</span> dht<span class="token punctuation">.</span><span class="token function">readHumidity</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  float t <span class="token operator">=</span> dht<span class="token punctuation">.</span><span class="token function">readTemperature</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  float f <span class="token operator">=</span> dht<span class="token punctuation">.</span><span class="token function">readTemperature</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">// Verifica se as leituras são validas</span>
  <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isnan</span><span class="token punctuation">(</span>h<span class="token punctuation">)</span> <span class="token operator">||</span> <span class="token function">isnan</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span> <span class="token operator">||</span> <span class="token function">isnan</span><span class="token punctuation">(</span>f<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"Falha ao ler do sensor"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">return</span><span class="token punctuation">;</span>
  <span class="token punctuation">}</span>

  <span class="token comment">// Calcula o índice de calor em Fahrenheit</span>
  float hif <span class="token operator">=</span> dht<span class="token punctuation">.</span><span class="token function">computeHeatIndex</span><span class="token punctuation">(</span>f<span class="token punctuation">,</span> h<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token comment">// Calcula o índice de calor em Celsius</span>
  float hic <span class="token operator">=</span> dht<span class="token punctuation">.</span><span class="token function">computeHeatIndex</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> h<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"Umidade: "</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span>h<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"%  Temperatura: "</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"°C "</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span>f<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"°F  Indice de calor: "</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span>hic<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"°C "</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span>hif<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">Serial</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">F</span><span class="token punctuation">(</span><span class="token string">"°F"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">// Formata o dados para exibir no display</span>
  char tempString<span class="token punctuation">[</span><span class="token number">25</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
  <span class="token function">sprintf</span><span class="token punctuation">(</span>tempString<span class="token punctuation">,</span> <span class="token string">"Temperatura: %.2f%cC"</span><span class="token punctuation">,</span> t<span class="token punctuation">,</span> <span class="token punctuation">(</span>char<span class="token punctuation">)</span><span class="token number">247</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  char humString<span class="token punctuation">[</span><span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
  <span class="token function">sprintf</span><span class="token punctuation">(</span>humString<span class="token punctuation">,</span> <span class="token string">"Umidade: %.2f%%"</span><span class="token punctuation">,</span> h<span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">// Limpa o buffer do display</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">clearDisplay</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token comment">// Posição inicial do cursor no display</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">setCursor</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">//Envia novos dados ao buffer do display</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>tempString<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>humString<span class="token punctuation">)</span><span class="token punctuation">;</span>

  <span class="token comment">// Atualiza o display para mostrar os dados no buffer</span>
  <span class="token builtin">display</span><span class="token punctuation">.</span><span class="token function">display</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre></div>
</div><div data-element-id="elm_64ofmlcbNGPYxiDW03ncOg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_64ofmlcbNGPYxiDW03ncOg"].zpelem-heading { border-radius:1px; margin-block-start:-5px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:25px;">Resultado:</span><br/></h2></div>
<div data-element-id="elm_6WeHUbylZ5_aaVyT2lwZEQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_6WeHUbylZ5_aaVyT2lwZEQ"] .zpimage-container figure img { width: 1110px ; height: 624.38px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_6WeHUbylZ5_aaVyT2lwZEQ"] .zpimage-container figure img { width:723px ; height:406.69px ; } } @media (max-width: 767px) { [data-element-id="elm_6WeHUbylZ5_aaVyT2lwZEQ"] .zpimage-container figure img { width:415px ; height:233.44px ; } } [data-element-id="elm_6WeHUbylZ5_aaVyT2lwZEQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/2023-09-18-15-41-07-a2fcd7ba-d8b7-4e27-a588-d01c2b414a76.jpeg" width="415" height="233.44" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 18 Sep 2023 16:35:01 -0300</pubDate></item><item><title><![CDATA[O Universo das Placas de Desenvolvimento]]></title><link>https://www.uktech.com.br/bloguk/post/o-universo-das-placas-de-desenvolvimento</link><description><![CDATA[<img align="left" hspace="5" src="https://www.uktech.com.br/nicolas-thomas-CBydtQDjaJc-unsplash.jpg"/>Essas pequenas maravilhas eletrônicas são verdadeiros canivetes suíços da engenharia, permitindo que projetistas, engenheiros e entusiastas transformem suas ideias em realidade de maneira rápida e eficaz.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_DuYp8OgnTr-CPb_7kW8p3w" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_yKQQx5lwRW6EGvnm8-FVlQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_pFlDf5dDSL-EEp9Dy7M4sw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_pFlDf5dDSL-EEp9Dy7M4sw"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_pUi5QeRlK66eq1InjxnVCQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_pUi5QeRlK66eq1InjxnVCQ"] .zpimage-container figure img { width: 1080px ; height: 810.00px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_pUi5QeRlK66eq1InjxnVCQ"] .zpimage-container figure img { width:723px ; height:542.25px ; } } @media (max-width: 767px) { [data-element-id="elm_pUi5QeRlK66eq1InjxnVCQ"] .zpimage-container figure img { width:415px ; height:311.25px ; } } [data-element-id="elm_pUi5QeRlK66eq1InjxnVCQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/nicolas-thomas-CBydtQDjaJc-unsplash.jpg" width="415" height="311.25" loading="lazy" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_u7mqJTvTH8UflPV-XI-GPQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_u7mqJTvTH8UflPV-XI-GPQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p>Essas pequenas maravilhas eletrônicas são verdadeiros canivetes suíços da engenharia, permitindo que projetistas, engenheiros e entusiastas transformem suas ideias em realidade de maneira rápida e eficaz.</p><p><br></p><p><strong>O Que São Placas de Desenvolvimento?</strong></p><p>Em essência, as placas de desenvolvimento são circuito impresso que incorporam um micro controlador ou microprocessador, com uma série de periféricos e portas de entrada/saída. Fornecendo uma plataforma de hardware completa para o desenvolvimento de projetos eletrônicos, tornando o processo de prototipagem e experimentação muito mais acessível.</p><p><br></p><p><strong>Versatilidade sem Limites</strong></p><p>Uma das maiores vantagens das placas de desenvolvimento é sua versatilidade. Elas estão disponíveis para atender a uma ampla gama de aplicações, desde IoT (Internet das Coisas) até robótica, automação residencial, eletrônica embarcada e muito mais. Com uma variedade de opções disponíveis, é possível escolher a placa que melhor atenda às necessidades de seu projeto .</p><p><br></p><p><strong>Ecossistemas de Software Aberto</strong></p><p>Além do hardware, muitas placas de desenvolvimento são suportadas por ecossistemas de software aberto, o que significa que você pode aproveitar uma vasta comunidade de desenvolvedores e recursos online. Isso facilita o desenvolvimento de firmware, a programação e a solução de problemas.</p><p><br></p><p><strong>Redução de Custos e Tempo de Desenvolvimento</strong></p><p>As placas de desenvolvimento ajudam a reduzir significativamente os custos e o tempo de criação de projetos eletrônicos. Permitindo testar novas aplicações rapidamente, isso é especialmente valioso em um mundo onde a velocidade para levar produtos ao mercado é crucial.</p><p><br></p><p><strong>Exemplos de Placas de Desenvolvimento Populares</strong></p></div></div>
</div><div data-element-id="elm_GveuqQU3LBAc1KHbALI1xw" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_GveuqQU3LBAc1KHbALI1xw"] .zpimagetext-container figure img { width: 293.82px !important ; height: 165px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_GveuqQU3LBAc1KHbALI1xw"] .zpimagetext-container figure img { width:293.82px ; height:165px ; } } @media (max-width: 767px) { [data-element-id="elm_GveuqQU3LBAc1KHbALI1xw"] .zpimagetext-container figure img { width:293.82px ; height:165px ; } } [data-element-id="elm_GveuqQU3LBAc1KHbALI1xw"].zpelem-imagetext{ border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-custom zpimage-tablet-fallback-custom zpimage-mobile-fallback-custom hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/harrison-broadbent-fZB51omnY_Y-unsplash.jpg" width="293.82" height="165" loading="lazy" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p style="line-height:2;"><span style="color:inherit;font-size:16px;"><strong>Arduíno:&nbsp;</strong>Uma das placas mais populares, ideal para projetos de eletrônica de consumo e educação. Esta plataforma de código aberto inclui uma variedade de placas de desenvolvimento. Elas são conhecidas por sua facilidade de uso e são ideais para iniciantes em eletrônica e programação.</span><br></p></div>
</div></div><div data-element-id="elm_CRXvWHE1oMEE0fldczrvAQ" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_CRXvWHE1oMEE0fldczrvAQ"] .zpimagetext-container figure img { width: 304.2px ; height: 171px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_CRXvWHE1oMEE0fldczrvAQ"] .zpimagetext-container figure img { width:304.2px ; height:171px ; } } @media (max-width: 767px) { [data-element-id="elm_CRXvWHE1oMEE0fldczrvAQ"] .zpimagetext-container figure img { width:304.2px ; height:171px ; } } [data-element-id="elm_CRXvWHE1oMEE0fldczrvAQ"].zpelem-imagetext{ border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="right" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-right zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/harrison-broadbent-RNqs_Ve8qAo-unsplash.jpg" width="304.2" height="171" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p style="text-align:left;line-height:2;"><span style="color:inherit;font-size:16px;"><strong>Raspberry Pi:</strong>&nbsp;Conhecido por sua versatilidade e capacidade de atuar como um computador de baixo custo, ou seja, possui uma placa única provendo a versatilidade e preço acessível. As aplicações são amplas, desde servidores web até sistemas de entretenimento doméstico e projetos de IoT. O Raspberry Pi roda um sistema operacional completo e suporta várias linguagens de programação, tornando-o uma escolha flexível para muitos projetos.</span><br></p></div>
</div></div><div data-element-id="elm_Fjgu-NWN5kHxrSGKQ2LLXg" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_Fjgu-NWN5kHxrSGKQ2LLXg"] .zpimagetext-container figure img { width: 256px !important ; height: 256px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_Fjgu-NWN5kHxrSGKQ2LLXg"] .zpimagetext-container figure img { width:256px ; height:256px ; } } @media (max-width: 767px) { [data-element-id="elm_Fjgu-NWN5kHxrSGKQ2LLXg"] .zpimagetext-container figure img { width:256px ; height:256px ; } } [data-element-id="elm_Fjgu-NWN5kHxrSGKQ2LLXg"].zpelem-imagetext{ border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-custom zpimage-tablet-fallback-custom zpimage-mobile-fallback-custom hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Placa%201.png" width="256" height="256" loading="lazy" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><div style="color:inherit;"><div><div><div><div><strong style="color:inherit;"><span style="font-size:16px;"><br></span></strong></div><div><div><strong style="color:inherit;"><span style="font-size:16px;">ESP8266/ESP32:</span></strong><span style="color:inherit;font-size:16px;">&nbsp;Essas são famílias de micro controladores, portanto poderão ser usadas em projetos de Internet das Coisas (IoT). Estas placas são conhecidas por sua conectividade Wi-Fi embutida, o que os torna ideais para dispositivos conectados à internet. O ESP8266 é mais básico, enquanto o ESP32 oferece mais recursos, como Bluetooth e maior capacidade de processamento.</span><br></div></div></div></div></div></div></div>
</div></div><div data-element-id="elm_5J3lVsP00TBjs54rjrQh4g" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_5J3lVsP00TBjs54rjrQh4g"] .zpimagetext-container figure img { width: 193px !important ; height: 197.7px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_5J3lVsP00TBjs54rjrQh4g"] .zpimagetext-container figure img { width:193px ; height:197.7px ; } } @media (max-width: 767px) { [data-element-id="elm_5J3lVsP00TBjs54rjrQh4g"] .zpimagetext-container figure img { width:193px ; height:197.7px ; } } [data-element-id="elm_5J3lVsP00TBjs54rjrQh4g"].zpelem-imagetext{ border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="right" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-right zpimage-size-custom zpimage-tablet-fallback-custom zpimage-mobile-fallback-custom hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/1200px-Beagle_Board_big.jpg" width="193" height="197.7" loading="lazy" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><strong><span style="font-size:16px;">BeagleBord:</span></strong><span style="font-size:16px;">&nbsp;Uma placa robusta indicado para aplicações mais avançadas e em projetos que necessitam de mais recursos, com um processador mais vigoroso e um desempenho superior aos sistemas operacionais completos, como o Linux. Isso o torna adequado para planos que exigem maior poder de processamento e funcionalidade.</span></p><div><br></div></div></div></div>
</div></div><div data-element-id="elm_8iaJYttIYbxkYkZ5KfmB_g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_8iaJYttIYbxkYkZ5KfmB_g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p>As aplicações podem ser amplamente utilizadas em produtos e projetos para prototipagem, testes e desenvolvimento de hardware e software. Aqui estão alguns exemplos de produtos distintos que fazem uso dessas placas:</p><p><br></p><p><em>🔹Smartphones e Tablets:</em>&nbsp;Muitos fabricantes de dispositivos móveis usam placas de desenvolvimento para criar protótipos de novos modelos, testar sistemas operacionais e desenvolver aplicativos.</p><p><br></p><p><em>🔹Dispositivos de IoT (Internet das Coisas):</em>&nbsp;Produtos como termostatos inteligentes, fechaduras de porta inteligentes, câmeras de segurança e lâmpadas inteligentes frequentemente são desenvolvidos com o uso de placas de desenvolvimento para prototipagem rápida e desenvolvimento de firmware.</p><p><br></p><p>🔹Robótica: Robôs educacionais, robôs industriais e robôs de limpeza usam placas de desenvolvimento para controlar motores, sensores e outros componentes.</p><p><br></p><p><em>🔹Máquinas de Jogos (Consoles):</em>&nbsp;As placas de desenvolvimento são usadas na criação de jogos e no desenvolvimento de hardware para consoles de videogame, como o PlayStation e o Xbox.</p><p><br></p><p><em>🔹Automóveis Inteligentes:</em>&nbsp;A indústria automobilística usa placas de desenvolvimento para criar sistemas de entretenimento, sistemas de navegação, controle de motor e segurança.</p><p><br></p><p><em>🔹Dispositivos Médicos:</em>&nbsp;Equipamentos médicos, como monitores de saúde, dispositivos de diagnóstico e dispositivos de reabilitação, são projetados e desenvolvidos com a ajuda de placas de desenvolvimento.</p><p><br></p><p><em>🔹Equipamentos de Áudio e Vídeo:&nbsp;</em>Placas de desenvolvimento são usadas na criação de sistemas de som, processadores de áudio, amplificadores e dispositivos de vídeo.</p><p><br></p><p><em>🔹Aeronaves não Tripuladas (Drones):</em>&nbsp;Drones de consumo quanto drones usados em aplicações comerciais usam placas de desenvolvimento para controlar sua eletrônica e software de voo.</p><p><br></p><p><em>🔹Instrumentação Científica:&nbsp;</em>Equipamentos de laboratório, espectrômetros, microscópios avançados e outros dispositivos científicos frequentemente incorporam placas de desenvolvimento em seu design.</p><p><br></p><p><em>🔹Produtos Wearables:</em>&nbsp;Dispositivos como smartwatches, rastreadores de fitness e óculos inteligentes fazem uso de placas de desenvolvimento para prototipagem de hardware e desenvolvimento de software.</p><p><br></p><p>Em resumo, as placas de desenvolvimento são ferramentas incrivelmente poderosas para qualquer pessoa interessada em explorar e inovar no mundo da eletrônica e da tecnologia. Elas capacitam mentes criativas a transformar conceitos em protótipos funcionais e produtos reais.</p><p>Cada umas dessas placas de desenvolvimentos atenderão necessidades específicas, portanto, o uso delas será variável conforme o projeto a ser realizado.</p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 06 Sep 2023 14:01:50 -0300</pubDate></item></channel></rss>