Olá queridos alunos!
Hoje eu tenho imenso prazer de falar
sobre dois assuntos muito importantes. O primeiro é o Arduino 2.0, que a cada
dia tem melhorado mais, no momento está numa versão Beta, mas está avançando
bem e na minha opinião deu uma melhorada boa na interface. O outro assunto
importantíssimo é o ESP 32 Risc–V.
Mas Fernando, o que é o Risk-V?
O RISC-V é um conjunto de instruções (ISA) baseado nos
princípios RISC. Ao contrário da maioria dos outros designs do ISA, ele é
fornecido sob uma licença de código aberto que não exige taxas de uso. O mercado
tem se voltado muito para essa arquitetura!
O projeto começou em 2010 na Universidade da Califórnia,
Berkeley, através de colaboradores voluntários não afiliados à universidade.
Para dar estabilidade ao projeto e torná-lo atraente para usuários comerciais,
uma Fundação RISC-V formal foi incorporada para possuir, manter e publicar a
definição RISC-V.
Um dos intuitos desse post é mostrar que você que programa em Arduino IDE, não sentirá nenhuma diferença entre programar um ESP32 com núcleo Risc-V ou Tensilica.
Intenções dessa aula
- Apresentar
o ESP32-C3
- Configurar
o Arduino IDE 2.0
- Instalar
o Core Arduino 2.0 da Espressif
- Medir
o consumo de corrente
- Comparar performance ESP32-C3 com ESP32 2 núcleos Tensilica LX6
Primeiramente vamos instalar o Arduino 2.0. Recomendo instalar
direto do GitHub nesse endereço acima. Essa versão apontada abaixo pela seta
vermelha é um portable, não afeta nenhuma outra versão que tenha instalada em
sua máquina, então você pode inclusive ter mais de uma instalação na mesma
máquina.
Após baixar o arquivo, basta abri-lo e você verá a tela abaixo, com os arquivos que estão compactados. Eu recomendo que você utilize o WinRar, ele é bem mais rápido que os demais programas de compactação.
Após abrir, extraia os arquivos para alguma pasta, no caso
eu criei uma pasta temp2.0 e extraí os arquivos para dentro dela, mas você pode
colocar o nome que achar melhor.
Feito isso, basta clicar no arquivo Arduino IDE.exe, e você
verá a tela inicial do programa, conforme imagem abaixo:
Logo após, clique no ícone do chip, mostrado na figura abaixo, para abrir o Boards Manager, e coloque na busca: “esp32”, caso seja encontrado algo, aperte o botão “Uninstall”, isso é por que não podemos instalar o core do Arduino 2.0 em cima de uma biblioteca antiga.
Instalando o Core da Espressif 2.0 alpha
https://github.com/espressif/arduino-esp32
No link acima, você pode baixar o Core do Arduino 2.0, que
está na versão Alpha, mas eu tenho compilado vários projetos com esse core, e
tem funcionado muito bem.
Para instalar, copie o json abaixo:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
Em seguida, no Arduino IDE, vá em File > Preferences em
seguida clique no botão abaixo:
Agora, após apertar Ok, vá novamente no Boards Manager,
digite novamente “esp32”, e dessa vez ele irá encontrar, clique em 2.0.0-alpha1
e depois clique em INSTALL.
Aguarde a instalação.
Após a instalação, precisamos escolher a placa, então vá até
o dropdown mostrado na imagem abaixo e clique em “Select Other Board & Port”.
Em seguida, na janela que abrir, faça a busca pelo nome da
placa, como no exemplo abaixo:
Selecione também a porta, no meu caso eu selecionei a COM10 após confirmar que ela está sendo utilizada, através do programa USBDeview.
Agora é só compilar!
Após compilar, tive a impressão de que o Arduino 2.0 compila
mais rápido.
Após a compilação, só ir em Tools > Serial Monitor, e
como vocês podem observar abaixo, já está executando:
Observe que é totalmente transparente para você, você
programa em C, e não precisa saber se é Risc-V ou Tensilica.
Diagrama do ESP32-C3
O ESP32-C3 tem Wifi e
tem Bluetooth 5.0, é muito interessante. No diagrama abaixo você pode ver em
detalhes todas as especificações:
Em termos de periféricos,
ele é muito bom! Tem tudo o que é importante.
E como esse chip
gasta menos energia? Tirando um core! Criaram um produto para gastar menos
energia.
É um single core que
roda a 160MHz. 384 KB de ROM e 400 KB de SRAM, está muito bom.
E você pode observar na imagem que ele tem tudo o que você
precisa pra desenvolver um produto legal com ele.
Para quem está se perguntando se o 8266 vai acabar. Não, eu
não acredito que ele vá acabar.
Observe na imagem abaixo, o comparativo entre as versões:
Mas por que usar Risc-V, Fernando?
Por que é open! Nunca me esqueço, quando eu quis usar um
barramento da Texas, quando fui ver o valor da propriedade intelectual para
começar a usar o barramento, eu assustei, tem que pagar royalties.
Comparando ESP32 Wroom com ESP32-C3
Observe na imagem acima, à direita temos o C3, módulo da
Espressif, e o da esquerda é um Wrover. Observe que o C3 é um módulo bem
compacto.
Vou deixar abaixo um link para que vocês possam comprar o
Wroom no AliExpress, mas compensa comprar de quantidade grande, pois o frete é
o mesmo para pequenas ou grandes quantidades.
https://s.click.aliexpress.com/e/_9QIRfG
Abaixo também o link para comprar o módulo C3:
https://s.click.aliexpress.com/e/_AX3MOq
Teste de Consumo de corrente
#include "WiFi.h"void setup(){Serial.begin(115200);// Set WiFi to station mode and disconnect from an AP if it was previously connectedWiFi.mode(WIFI_STA);WiFi.disconnect();delay(100);Serial.println("Setup done");}
Teste de consumo de performance
void loop() { Serial.println("scan start"); // WiFi.scanNetworks will return the number of networks found int n = WiFi.scanNetworks(); Serial.println("scan done"); if (n == 0) { Serial.println("no networks found"); } else { Serial.print(n); Serial.println(" networks found"); for (int i = 0; i < n; ++i) { // Print SSID and RSSI for each network found Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(")"); Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*"); delay(10); } } Serial.println(""); // Wait a bit before scanning again delay(5000); }
#define ITERACOES 1000000 // numero de iterações que serão realizadas #define FLASH 100000 // iteração que o led começará a piscar a cada iteração #define LED_BUILTIN 2 void setup() { //LED_BUILTIN é uma constante nativa que indica o pino que controla o LED interno pinMode(LED_BUILTIN, OUTPUT); //configura o pino que controla o LED interno como saida Serial.begin(9600); }
void loop() { //variaveis que serão utilizadas para o calculo do tempo de execução unsigned long inicio, tempoTotal; unsigned long contador = ITERACOES; long int LEDcounter = 0; //contador de piscadas do LED boolean alternador = false; //controlador para alternar a ativação do LED digitalWrite(LED_BUILTIN, LOW); //desliga o LED long int i; inicio = millis();//guarda o tempo de inicio da execução do algoritmo //iterações for ( i = 0; i < contador; i++) { //verifica se o LED ja deve começar a piscar if (i+1 > FLASH) { LEDcounter++; if (alternador) { digitalWrite(LED_BUILTIN, HIGH); alternador = false; } else { digitalWrite(LED_BUILTIN, LOW); alternador = true; } } } tempoTotal = millis() - inicio; //calcula o tempo gasto na execução do algortimo (resultado em ms) digitalWrite(LED_BUILTIN, LOW); //apaga o LED após a execução Serial.print("# numero de iterações = "); Serial.println(contador); Serial.print("Led piscou [ "); Serial.print(LEDcounter); Serial.println(" ] vezes"); Serial.print("Tempo total: "); Serial.print(tempoTotal); Serial.println(" ms"); Serial.println();Serial.println(); delay(3000); }
Teste de performance
Observe abaixo o resultado do teste de performance:
Bom, por hoje é isso queridos alunos.
Um forte abraço, do Fernando K!
1 Comentários
CASINO IN MN - JTHHub
ResponderExcluirCASINO IN MN 성남 출장마사지 · 여주 출장안마 The casino has a restaurant located in 삼척 출장안마 downtown MN · Make yourself at home in a room and enjoy your 삼척 출장안마 room in 수원 출장마사지 this 4-star