Olá, queridos alunos.
Neste vídeo eu trago alguns assuntos que nunca trouxe aqui no blog, como ESP32-C6 com Wi-Fi 6, Zigbee e Thread protocolos de baixo consumo. Wi-Fi 6E e Wi-Fi 7. Ainda tem o Wi-Fi HaLow o atravessador de paredes subgiga que tem alcance de mais de 1Km contra 100m de wi-Fi comum.
A Espressif tem um concorrente agora que se chama Bouffalo Labs https://en.bouffalolab.com/ com características muito parecidas ao ESP32-C6 e o Sipeed M1S com 480 mhz com câmera Full HD display cartão SD e que roda Linux por um preço muito baixo pelo pacote.
Intenção dessa aula
Compilar um exemplo com ESP32-C6
Materiais Utilizados
- 1x ESP32-C6-DevKitC-1 v1.2
- 1x ESP32-C6-A-N4 WeAct Studio
- 1x Voltímetro / Amperímetro USB
ESP32-C6-DevKitC-1
Arduino Core Alpha 3 versão v3.0.0 baseado em ESP-IDF v5
Program Wifi
* ##################################################################################################### PROGRAMA COMPILADO PARA ESP32-C6 COM ARDUINO CORE 3.0 Esse exemplo não usa Target wake time (TWT), o objetivo é testar o Wifi da lib core 3.0 FERNANDO K TECNOLOGIA ##################################################################################################### */ #include#define SSID "HUAWEI6" //nome do wifi que vai conectar #define SSID2 "nome-da-rede" //nome do wifi que o esp cria (se fosse um AP) #define PASSWD "senha-da-rede" //senha do wifi que vai conectar #define uS_TO_S_FACTOR 1000000ULL /* Conversion factor for micro seconds to seconds */ #define TIME_TO_SLEEP 10 /* Time ESP32 will go to sleep (in seconds) */ const uint16_t port = 8090; //porta do servidor que vai conectar const char * host = "172.168.30.50"; //ip do servidor que vai conectar WiFiClient servidor; //Objeto de conexao com o servidor void print_wakeup_reason() { esp_sleep_wakeup_cause_t wakeup_reason; /* DEFINE VARIÁVEL QUE GUARDA MOTIVO DO WAKEUP */ wakeup_reason = esp_sleep_get_wakeup_cause(); /* */ } switch(wakeup_reason) { case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break; case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break; case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break; case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break; case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break; default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break; } } void setup(){ Serial.begin(115200); //Inicia Serial WiFi.begin(SSID,PASSWD); //Conecta na rede wifi // Define os tipos de 'sleep' do wifi /* Aqui a paravra MODEM quer dizer circuito de Radio do ESP */ WiFi.setSleep(WIFI_PS_MAX_MODEM); /* para ativar o modo de economia máxima de energia do modem-suspensão*/ //WiFi.setSleep(WIFI_PS_MIN_MODEM); /* ativar o modo de economia mínima de energia do modem-sleep; */ //WiFi.setSleep(WIFI_PS_NONE); /* WIFI_PS_NONE, não há latência no seu WiFi e aumenta a taxa de transferência de pacotes. */ /* desabilita totalmente a suspensão do modem */ //Aguarda ate que esteja conectado no servidor while (WiFi.status() != WL_CONNECTED){Serial.print(".");delay(100);} //Mostra o IP local Serial.print("IP: "); Serial.println(WiFi.localIP()); } void loop(){ LerSerial();//Verifica se tem comando na serial if(servidor.connected()){ // Verifica se está conectado no servidor, enbtão vai ficar lendo o que chega no soquete LerServidor(); //Faz a leitura do soquete servidor.println("Teste");//Envia para o servdor a string 'Teste' a cada 10milis delay(10); } } //Função para ler e interpretar comando do soquete void LerServidor(){ String cmd = "";//Variaável para armazenar o que chegou char ultimoCaracter = '\0';//Ultimo caracter para saber se mensagem chegou completa (pode ser removido se quiser e usar o ultimo character da variavel 'cmd') // Enquanto houver byte para ser lido while(servidor.available()){ ultimoCaracter = (char)servidor.read();//Faz a leitura e guarda na variável cmd += ultimoCaracter;//Concatena no 'cmd' delay(1);//Aguarda um pouco para ter certeza que chegou tudo (como são comandos pequenos, esse dalay nao interfere nesse exemplo, já que esse código não tem o quesito 'tempo' requerido) } //Se não chegou nada, sai da função if(cmd == ""){ return; } // Mostra na serial o comando que chegou Serial.print("Comando: "); Serial.println(cmd); // Se o ultimo caracter foi um 'enter' ent~soa vai interpretar o que chegou if(ultimoCaracter == '\n'){ Interpretar(cmd); } }
O que é Wi-Fi 6?
Wi-Fi 6E x Wi-Fi 6 A faixa de frequência de 6 GHz fornece blocos de espectro contíguos que são globalmente unificados, operando na faixa de 5.925 MHz a 7.125 MHz. Com este espectro de 1200 MHz disponível para uso, os dispositivos Wi-Fi 6E poderão funcionar em 7 canais adicionais de 160 MHz, 14 canais adicionais de 80 MHz, 29 canais adicionais de 40 MHz ou 59 canais adicionais de 20 MHz.
Exemplo de WI-FI 6E
Testando o ESP32 C6
Canais mais amplos
O que é Thread?
Thread foi projetado com um objetivo em mente: criar a melhor maneirade conectar e controlar produtos em residências e edifícios. O ID é representado por um número IPv6
O que é Zigbee?
Wi-Fi CERTIFIED HaLow™, a designação para produtos certificados que incorporam a tecnologia IEEE 802.11ah, amplia o Wi-Fi operando em espectro abaixo de 1 gigahertz (GHz) para oferecer maior alcance e conectividade de menor consumo de energia. O Wi-Fi HaLow™ atende aos requisitos exclusivos da Internet das Coisas (IoT) para permitir uma variedade de casos de uso em ambientes industriais, agrícolas, de edifícios inteligentes e de cidades inteligentes
0 Comentários