A tecnologia de inteligência artificial está avançando rapidamente e estamos vendo um crescimento exponencial na sua capacidade de processamento. Você já deve ter ouvido falar sobre IA que são capazes de criar imagens incríveis e produzir obras de arte nunca antes vistas. No entanto, existe um novo desenvolvimento na área de IA, o ChatGPT. Ele é capaz de responder a uma ampla variedade de perguntas com precisão e eficiência.
Neste blog, vamos explorar como utilizar essa ferramenta incrível para auxiliar no desenvolvimento de software. Vamos mostrar como aplicá-la para desenvolver um código para ESP32. Com o ChatGPT, podemos automatizar e otimizar o processo de desenvolvimento, tornando-o mais rápido e eficiente.
Sumário
1. ChatGPT o que é e como utilizar?
ChatGPT é um modelo de linguagem desenvolvido pela OpenAI, treinado usando uma grande quantidade de dados de texto disponíveis na internet. Ele é capaz de gerar respostas precisas e fluídas em vários idiomas e estilos, e pode ser utilizado em aplicações como geração automatizada de texto, resposta a perguntas, entre outros. Simplificando, ele é uma junção do Google com uma das maiores e mais avançadas redes neurais de linguagem já treinadas.
Como acessar o chatGPT
Para acessar o chatGPT clique aqui. Clique em "Sign up" para criar sua conta, como mostrado na figura.
Você pode criar uma nova conta ou usar sua conta do Google para acessar, como mostrado na figura abaixo:
O site vai pedir seu nome, sobrenome e número de celular.
A janela inicial do chatGPT pode ser vista na figura a seguir, no canto inferior esquerdo temos algumas opções, entre elas o dark mode.
Para utilizar o chatGPT basta digitar na caixa de texto, na parte de baixo da página. Na figura a seguir temos um exemplo de pergunta feita para o chat, utilizando ele em dark mode.
O que o chatGPT pode fazer
A seguir vamos ver o que o chatGPT pode fazer, com alguns exemplos de aplicação. Podemos fazer perguntas, perguntamos a ele “O que é ESP32”, a reposta foi:
ESP32 é uma série de microcontroladores de baixo custo desenvolvidos e fabricados pela Espressif Systems. É baseado no microcontrolador ESP32 da Tensilica e possui características como conectividade Wi-Fi e Bluetooth, memória flash de até 4 MB e SRAM de até 520 KB, além de diversos periféricos, como sensores, dispositivos de entrada/saída e interfaces de comunicação. O ESP32 é muito versátil e pode ser usado em uma variedade de aplicações, como IoT, robótica, automação residencial, dispositivos vestíveis e projetos de ciência de dados. Ele também suporta diversas linguagens de programação, como C, C++, Python e MicroPython.
Pode ser usado também para criar descrições de produtos, para testar passamos a seguinte descrição da nossa placa CPB32.
Crie uma descrição para vender o produto "CPB32" ela utiliza ESP32 e possui essas ferramentas:
● 3 relés
● 8 optoacopladores
● RS232* ou RS485
● Slots para shields
O resultado foi o seguinte:
A CPB32 é a escolha perfeita para seus projetos de automação industrial. Com o poderoso chip ESP32, ela oferece conectividade Wi-Fi e Bluetooth, além de uma variedade de interfaces para sensores e atuadores.
Com 3 relés integrados, a CPB32 permite controlar até 3 dispositivos elétricos diferentes, permitindo automatizar seus processos industriais de forma fácil e eficiente. Além disso, os 8 optoacopladores fornecem uma conexão segura e isolada para seus sensores e dispositivos de entrada.
A CPB32 também oferece a opção de utilizar RS232 ou RS485 para comunicação serial, dando-lhe a flexibilidade de escolher a melhor opção para seu projeto. E com os slots para shields, você pode expandir as capacidades da CPB32 para atender às suas necessidades específicas.
Não importa se você está construindo um dispositivo IoT, automatizando sua fábrica ou criando um projeto de automação residencial, a CPB32 é a escolha ideal. Com seu design compacto, recursos avançados e suporte para shields, ela é a solução perfeita para qualquer projeto de automação industrial. Compre agora e experimente a potência da CPB32!
Também permite melhorar e corrigir textos. Colocamos o seguinte texto "meus amigos me chama de louco pq eu gosto de escrever mal. eu acho que é engraçado e diferente. as vezes eu escrevo coisas sem nexo pq é divertido. eu gosto de brincar com as palavras". E o resultado foi o seguinte:
Meus amigos às vezes me chamam de louco porque eu gosto de brincar com a escrita e testar novos estilos. Embora possa parecer estranho para alguns, eu acho isso divertido e criativo. Às vezes eu escrevo coisas sem sentido propositalmente, pois é uma forma de explorar novas possibilidades e desafiar as regras da escrita convencional. Eu gosto de brincar com as palavras e experimentar novos modos de expressão.
Além de outras aplicações. Porém, devemos sempre conferir se o resultado obtido é coerente com a mensagem que desejamos transmitir, especialmente quando o objetivo é melhorar um texto.
2. Gerando programas com ChatGPT
Entretanto, o objetivo principal deste artigo não é esse. Em vez disso, vamos nos concentrar em outra capacidade do ChatGPT: a geração de códigos. Como exemplo, solicitamos que ela “faça um programa para piscar um led utilizando uma esp32”. O resultado foi o seguinte:
Aqui está um exemplo de código em C para fazer um LED piscar usando uma ESP32:
#define LED 2 // Define o pino do LED como 2
void setup() {
pinMode(LED, OUTPUT); // Configura o pino do LED como saída
}
void loop() {
digitalWrite(LED, HIGH); // Liga o LED
delay(1000); // Aguarda 1 segundo
digitalWrite(LED, LOW); // Desliga o LED
delay(1000); // Aguarda 1 segundo
}
Esse código define o pino do LED como 2, configura-o como saída e então usa o comando digitalWrite para alternar entre ligado e desligado. Ele usa o comando delay para esperar 1 segundo entre cada mudança de estado.
Obs: Você deve conectar o LED no pino 2 da sua ESP32. O anodo do LED deve ser conectado no pino 2 e o catodo no GND.
Como podemos observar, o código gerado inclui comentários que descrevem o funcionamento e instruções para conectar o circuito. No entanto, é importante analisar os resultados com atenção, pois notamos que ele não menciona a utilização de um resistor em série com o LED.
Esta funcionalidade do ChatGPT pode ser muito útil quando procuramos por exemplos de programas ou tentamos usar um dispositivo desconhecido. Como exemplo, vamos perguntar agora "como utilizar o sensor ZMPT101 B com esp32". Veja o resultado abaixo:
O sensor ZMPT101B é um sensor de tensão AC que pode ser usado para medir tensões AC de baixa potência. Ele pode ser usado com a ESP32 usando a biblioteca Wire do Arduino para comunicar com o sensor através do protocolo I2C. Aqui está um exemplo de código que mostra como ler a tensão AC do sensor ZMPT101B com a ESP32:
#include <Wire.h>
const byte ZMPT101B_ADDRESS = 0x42; // Endereço I2C do ZMPT101B
void setup() {
// Inicializar comunicação serial
Serial.begin(115200);
// Inicializar comunicação I2C
Wire.begin();
}
float readVoltage() {
byte highByte, lowByte;
Wire.beginTransmission(ZMPT101B_ADDRESS);
Wire.write(0x00);
Wire.endTransmission();
Wire.requestFrom(ZMPT101B_ADDRESS, 2);
highByte = Wire.read();
lowByte = Wire.read();
int rawVoltage = (highByte << 8) | lowByte;
return (float)rawVoltage * 0.001221;
}
void loop() {
// Lê a tensão AC do sensor
float voltage = readVoltage();
// Envia o valor para o monitor serial
Serial.println(voltage);
// Aguarda 1 segundo antes de ler novamente
delay(1000);
}
Este código inclui o arquivo de cabeçalho "Wire.h" para acessar a biblioteca I2C e define a constante "ZMPT101B_ADDRESS" como o endereço I2C do sensor. A função "readVoltage()" é chamada para ler a tensão AC do sensor. A função começa uma transmissão I2C para o endereço do sensor, envia um byte de dados (0x00) e pede 2 bytes de dados de volta. Esses dois bytes são então concatenados para formar um valor inteiro, que é multiplicado por um fator de escala para obter o valor de tensão. O valor de tensão é então enviado para o monitor serial e o loop espera 1 segundo antes de ler novamente.
Tenha em mente que esse exemplo de código é apenas um ponto de partida e pode precisar ser ajustado.
Com a ajuda do ChatGPT, podemos aumentar a eficiência no desenvolvimento de softwares mais complexos, eliminando algumas etapas de teste. Além disso, ele pode ser utilizado para obter uma melhor compreensão do funcionamento de um determinado trecho de código, para isso solicitamos o seguinte:
“me explique com detalhes esse programa”
float readVoltage() {
byte highByte, lowByte;
Wire.beginTransmission(ZMPT101B_ADDRESS);
Wire.write(0x00);
Wire.endTransmission();
Wire.requestFrom(ZMPT101B_ADDRESS, 2);
highByte = Wire.read();
lowByte = Wire.read();
int rawVoltage = (highByte << 8) | lowByte;
return (float)rawVoltage * 0.001221;
}
A resposta foi a seguinte:
Esse código é uma função chamada "readVoltage()", que é usada para ler a tensão de um sensor de temperatura ZMPT101B conectado à ESP32 via interface I2C.
A função começa declarando duas variáveis do tipo "byte", chamadas "highByte" e "lowByte". Em seguida, o código inicia uma transmissão I2C para o endereço do sensor ZMPT101B (ZMPT101B_ADDRESS) usando a função "Wire.beginTransmission(ZMPT101B_ADDRESS)". Depois envia o comando 0x00 ao sensor para ler os dados. Em seguida, o código encerra a transmissão I2C usando "Wire.endTransmission()".
O código então solicita 2 bytes de dados do sensor ZMPT101B usando "Wire.requestFrom(ZMPT101B_ADDRESS, 2)". Esses 2 bytes de dados representam a tensão lida pelo sensor. O código armazena esses bytes nas variáveis "highByte" e "lowByte" usando "highByte = Wire.read();" e "lowByte = Wire.read();
Para testar o funcionamento de um código gerado pelo ChatGPT, vamos pedir para que ele faça um programa para uma ESP32 pegar o horário online e enviar pela serial. A seguir podemos ver o código que foi gerado:
#include <WiFi.h>
#include <NTPClient.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP);
void setup() {
// Inicializar comunicação serial
Serial.begin(115200);
// Conectar à rede Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando à rede Wi-Fi...");
}
// Inicializar o NTPClient
timeClient.begin();
}
void loop() {
// Atualizar o horário
timeClient.update();
// Enviar horário pela serial
Serial.print("Horário atual: ");
Serial.println(timeClient.getFormattedTime());
// Esperar 1 minuto antes de atualizar novamente
delay(60000);
}
3. Resultado
Para carregar o código na ESP32 foi necessário instalar a biblioteca NTPClient. Como estamos no ritmo de utilizar o chatGPT, vamos perguntar à ele como fazer isso, veja o resultado:
Para instalar a biblioteca NTPClient.h na IDE do Arduino, siga esses passos:
Abra a IDE do Arduino.
Vá em "Sketch" e clique em "Incluir Biblioteca".
Clique em "Gerenciar Bibliotecas..."
Na caixa de pesquisa, digite "NTPClient" e pressione Enter.
Selecione a biblioteca "NTPClient" da lista e clique em "Instalar".
Após a instalação, você pode incluir a biblioteca em seu código usando o comando "#include <NTPClient.h>".
Se você prefere fazer a instalação manualmente, você pode baixar a biblioteca de https://github.com/arduino-libraries/NTPClient, extrair o arquivo .zip e copiar a pasta dentro dela para a pasta "libraries" na pasta do Arduino.
Após carregar o código o resultado pode ser visto na figura a seguir:
Em resumo, o ChatGPT é uma ferramenta incrível com muitas possibilidades. Se você nunca testou, vale a pena dar uma olhada e, se já conhece, não deixe de compartilhar essa descoberta com seus colegas.
Avalie-nos no google para que possamos alcançar e auxiliar cada vez mais pessoas a fazerem seus projetos e produtos! Contamos com você!
Autor: Thales Ferreira