quinta-feira, 27 de dezembro de 2018

Capturando Endereço IP Externo Público via API


Mas e se vc tiver que saber seu Endereço IP Externo via código pelo Arduino ou ESP8266 ? 

Hummmmmm....

Existem 3 maneiras para capturar o Endereço IP externo que sua Operadora fornece quando vc se conecta a Internet. 

A primeira é manual e é através do seu router. Como minha operadora é VIVO, tenho um router Arcadyan (aquele com 2 antenas). É só vc ir até o STATUS e depois MAIS. Vc vai ver o seu endereço IP externo. Como vc é cliente residencial, seu endereço IP não é FIXO. Endereço fixo isso custa muito $$$. Então seu ip vai mudar todas as vezes que vc se conectar a rede da sua operadora (por isso usamos o NoIP.com para que não precise o tempo todo mapear esse endereço externo). 

Blz...

A segunda é manual através de sites que existem aos montes na Internet...

IN
http://www.meuip.com.br/
http://e-meuip.com/
https://meuip.co/
https://www.localizaip.com.br/

OUT
https://whatismyipaddress.com/
https://www.iplocation.net/find-ip-address
https://www.whatismyip.com/ip-address-lookup/
https://www.expressvpn.com/what-is-my-ip

Mas antes de continuar, é preciso esclarecer algumas "coisinhas" básicas sobre Endereço IP que muitos ainda confundem muito.

Endereço IP da sua Rede Local está restrito a uma faixa de rede que NÃO PASSA PELO SEU ROTEADOR e são chamados de ENDEREÇOS PRIVADOS (RFC 1918). Ou seja, seu roteador NÃO ROTEIA esses pacotes com esses endereços para o mundo exterior... para fora... para a Internet. O máximo que ele faz é usar esse endereço ip da sua rede local com outro endereço ip quando ele tem que fazer NAT no router de borda da sua rede e rastrear cada conexão que vc faz com um socket que seu navegador cria (abra o prompt com CMD e digite netstat -a, vc vai fazer todos os sockets criados pelo seu navegador). É assim que ele identifica cada uma das suas abas do seu navegador.

Então sua Rede Local terá endereços ip como esses...

Endereços Privados (RFC 1918)
(endereços IPs que não são roteados pelo router)

classe A => 10.0.0.0       - 10.255.255.255             1 rede           /8
classe B => 172.16.0.0   - 172.31.255.255             16 redes      /12
classe C => 192.168.0.0 - 192.168.255.255           255 redes    /16

Endereços PÚBLICOS passam pelo seu roteador e são gerados por ele. Não é bemmmm gerados por ele. Mas o endereçamento ip é distribuído pelos gestores de Internet (no Brasil é o NIC.br que faz esse trabalho)para uma operadora quando ela é criada. Ela compra uma faixa de endereços ips públicos e é ela que administra esse endereçamento ip enquanto ela existir.

São esses os Endereços Públicos que vc vai ver nos sites como meuip.com.br....

classe A =>1.0.0.0   - 126.0.0.0
classe B =>128.1.0.0 - 191.254.0.0
classe C =>192.0.1.0 - 223.255.254.0

O endereço ip externo que a Vivo deu para minha conexão foi 187.114.174.237. Esse endereço ip está dentro da faixa de endereço ip público. No caso a 2a. faixa. 

Pronto....bora lá !

A terceira é através de código. Vamos usar o método via API e criar uma conexão com a api api.ipify.org

Usei um NodeMCU ESP-12E.

==========================================================

#include <ESP8266WiFi.h>
#include <WiFiClient.h>

const char* ssid = "suaredewifi";

const char* password = "suasenha";

//--------------FUNCAO CAPTURA ENDEREÇO IP EXTERNO

String IPExterno()
{
  Serial.println("");
  Serial.println("---------------------------------");
  WiFiClient client;
  if (client.connect("api.ipify.org", 80))
  {
    Serial.println("Conectado ao servidor externo...");
    client.println("GET / HTTP/1.0");
    client.println("Host: api.ipify.org");
    client.println();
  } else {
    Serial.println("Conexão falhou para ipify.org :(");
    return String();
  }
  delay(5000);
  String line;
  while (client.available())
  {
    line = client.readStringUntil('\n');
    // comente esta linha se vc NÃO quiser ver a resposta q o 
    // servidor da api envia para a sua requisição
    //Serial.println(line); 
  }
  return line;
}
//-------------------------------------
void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.println();
  Serial.print("Conectando a rede wifi...");
  Serial.println(ssid);

  WiFi.begin(ssid, password);


  while (WiFi.status() != WL_CONNECTED) {

    delay(500);
    Serial.print(".");
  }

  Serial.println("");

  Serial.println("WiFi conectado.");
  Serial.print("Endereco IP Rede Local: ");
  Serial.println(WiFi.localIP());
  
}
//-------------------------------------
void loop() {
  String ip = IPExterno();
  Serial.print("Endereço IP Externo: " + ip );

}

==========================================================

A Saída Serial...



Observe que na saída o meu endereço ip da minha rede local 192.168.15.18 está na faixa do endereçamento ip PRIVADO classe C.

Já o endereço IP Público Externo 187.114.174.237 está classe B.

É isso. :)





quinta-feira, 20 de dezembro de 2018

Circuit Wizard - Simulador para Projetos de Eletrônica



Circuit Wizard é um simulador de circuitos eletrônicos que combina projeto do circuito, design da PCB e simulação. Chega de blá-blá-blá e vamos ao que interessa... 

Instalação !


1. Botão direito em cima do arquivo Setup.exe e escolha EXECUTAR COMO ADMINISTRADOR

2. Se vc tiver um Firewall, ele vai reclamar q a instalação quer acesso a interface COM... libere todas.

3. Quando chegar nessa tela coloque seu nome ou o que vc quiser. E insira o serial que está dentro do Serial.txt que vc baixou junto com a instalação do CW .rar.


4. Ele pergunta se o registro está correto.. YES !!!



5. Ele te dá a oportunidade de alterar o caminho. Vc é que sabe, contanto que depois se encontre.



6. Agora tenha atenção aqui ! 

Marque SINGLE (STAND-ALONE)INSTALLATION



7. Daqui pra frente é só dar NEXT e FINISH. Pronto terminou !


NÃO ABRA O CIRCUIT WIZARD AGORA !!





A instalação criou um atalho no seu desktop. Botão direito do mouse em cima do atalho e escolha Propriedades e ABRIR LOCAL DO ARQUIVO.

A pasta aonde ele foi instalado vai abrir. Agora vc vai...

8. Renomear o arquivo DE  CktWiz.exe PARA  CktWiz_ORIGINAL.exe

Eu coloquei _original  mas poderia ser qq coisa... o nome do seu papagaio !

9. Copie o arquivo CktWiz.exe que está na pasta crack que veio com a instalação e cole nessa pasta. Vai ficar assim...




10. Agora abra o Circuit Wizard...  


Abaixo você vê um dos exemplos que se encontra na barra de ferramentas do lado direito. É um projeto com o CI 555 ASTÁVEL com o circuito eletrônico na vida REAL e no papel, o layout da PCB dos 2 lados.



Aqui um circuito simples que eu fiz para aprender a correlação entre Tensão, Corrente e Resistência ou LEI DE OHM (quem V RI !)




É isso, meninos. 

Ah ! Tudo em Inglês hein. É bom "jair" vai se costumando ! (kkkk)

Thanks !
Márcia


LINK PARA BAIXAR O Circuit Wizard


quarta-feira, 19 de dezembro de 2018

Adicionar componente ao Fritzing.


Fiz um projeto e quero montar ele organizado no Fritzing. Só que não tenho um ou mais componentes. O que eu faço ? 

A maneira mais fácil de você inserir um componente que não vem por default no Fritzing é... baixando um projeto onde o componente já exista. E ai só vc incorporar o componente ao Fritzing. 

Entre no site do Fritzing e crie uma conta se quiser. Procure por projetos que usem esse componente. Como exemplo vou usar o sensor PIR.


Vc também pode somente abrir o Google e digitar...

PIR Sensor + site:http://fritzing.org 


Copie e cole no Google.

Ele vai te trazer vários projetos com o PIR. Faça o downdoad e abra o projeto no Fritzing. 





Beleza. Até aqui tudo normal.

Abra o projeto que vc baixou no Fritzing.


Olhe para o lado direito, vc vai ver uma barra de ferramentas aonde tem um monte de componentes. Quando vc abre o projeto,  todos os componentes que não existem dentro do Fritzing, vão aparecer dentro My Parts.
Só o fato de vc abrir o projeto não quer dizer que o componente foi adicionado ao Fritzing. Nana.. nina não ! E  vc não vai ficar abrindo um projeto para que esse componente seja usado em outro projeto seu, né ! O que vc vai fazer para que ele seja incorporado em definitivo ao Fritzing é...
... clicar com o botão direito do mouse em cima do componente, no meu caso aqui é o sensor PIR e escolher Adicionar ao pacote... My Parts.




Pronto ? Acabou ? Só isso ? Não ! kkkkk...

Feche o projetinho que vc baixou. Pronto agora atenção...

Ele vai pedir para que vc salve o componente em My Parts.




Clique em Salvar senão o componente não será adicionado ao Fritzing.

Blzzzzzzzz !

Abra um novo projeto vazio no Fritzing e clique na LUPA na barra de ferramentas à direita e digite no nome do componente, no meu caso... PIR.


E quando vc quiser achar ele, vc vai até essa opção ou senão vc digita lá em cima PIR... 




Bônus ...

Vc ainda pode editar o componente. Clique com o botão direito no componente dentro da barra de ferramentas e escolha Editar Componente Editor de novos Componentes..
E por que vc iria editar um componente ? Simples. Vc pode mudar a cara dele, pinagem.. etc... um monte de coisas.
Aqui eu editei o componente somente para inserir mais algumas palavras ou Marcadores (Em English seria Tags... se ligou? Tags e marcadores tudo a ver... YouTube usa isso o tempo todo.)



Ele estava somente como o Marcado PIR e acrescentei a especificação do sensor HC-SR501.

Chega, né ? Tá bom !






Instalando o Fritzing


Pra quem não sabe o que é o Fritzing.

Segundo o próprio site...

"Fritzing é uma iniciativa de hardware de código aberto que torna a eletrônica acessível como material criativo para qualquer pessoa. Oferecemos uma ferramenta de software, um site comunitário e serviços no espírito de Processing e Arduino, promovendo um ecossistema criativo que permite aos usuários documentar seus protótipos, compartilhá-los com os outros, ensinar eletrônica em uma sala de aula e criar layouts e PCs profissionais."


Bem, primeiro faça o download o app em....


Execute o app e .... erro ! 


Procure pela DLL api-ms-crt-runtime-l1-1-0.dll no Google. Como estou no Windows 7 64bits preciso da DLL 64bits.



Instalando o pacote 64bits para resolver o problema...



Resolvido o problema.

Instalado o Fritzing !


Obs.: Nas distros Linux isso não acontece. Windows né...




terça-feira, 11 de dezembro de 2018

IDE do ARDUINO muito lenta ...


O PROBLEMA : IDE do  ARDUINO muito lenta.

Bom, começando do começo...redundância válida porque o processo é longo.

Percebi que a IDE do Arduino estava muitíssimo LENTA. Lenta e quase parando. Quase 30 segundos para abrir. Monitorei com o cronômetro do celular. :(

Antes de vir para cá, apelei para o velho e bom oráculo : Google. Li alguns foruns... etc. E percebi que o diretório onde a IDE do Arduino guarda as preferências dele era uma das chaves pra resolver o problema. Disse uma.


AS SOLUÇÕES....



A PRIMEIRA...

ARQUIVO PREFERENCES.TXT....

Fui até ele...

C:\Users\Ananda\AppData\Local\Arduino15

...abri o arquivo preferences.txt.

Esse é o cara q a IDE tem q ler todas as vezes q ela abre. E importante : todas as versões da IDE que vc tiver na sua máquina vão abrir esse arquivo porque não tem como mudar isso. Então o que vc mudou em uma versão, vai refletir em todas. Como disse, não tem como vc alterar o caminho desse arquivo em FILE > PREFERENCES. É fixo. E se tiver alguém ai que saiba como fazer isso, por favor diga como. Vai ser útil pra mim, porque tenho várias versões aqui instaladas, e é interessante que algumas estejam diferenciadas de outras. Mas como o app lê um único arquivo, então... espero que algum filho de Deus pareça com a solução. Voltando.

Conforme...

(https://forum.arduino.cc/index.php?topic=82527.60)

Bundy76 orienta a abrir o preferences.txt e procurar pela opção "recent.sketches" (sem as aspas... hein galera !).

No meu caso, essa linha estava cheia... literalmente entupida. Por quê? Porque eu tenho meus arquivos em 2 máquinas... bemmmm... digamos 3 máquinas. Explico. Meu hd de 1TB deu "bye bye" mas antes disso fiz backup nessas 3 máquinas, então e eu uso via rede esses HD´s. E Bundy76 diz: APAGUE ESSA LINHA !

Apaguei ? Não ! Fiz uma cópia do arquivo. E ai... editei ele. Melhorou. Não melhorouuuuuu... mas melhorou. Mas precisava fazer outra "coisinha". ;)



A SEGUNDA....

LOCALIZAÇÃO DAS PASTAS...


No meu caso, instalei somente uma versão no "C:\Program Files (x86)\Arduino" e todas as outras como não-admin. Resultado ? Ficou dentro de uma pasta... e em outra pasta e em outra...

Transferi todas as versões para a raiz do hd e testei. Houve melhora, mas muito pouca. Mas em todo caso ficou mais organizado. Coisa de mulher. OR-GA-NI-ZA-ÇÃO. :))

Continuei a ler.



A TERCEIRA....

FIREWALL E ANTIVIRUS....


Abri o Comodo e saí configurando as regras e liberando acesso para todas as versões e configurando e colocando a prioridade como ALTA.

IDE Instalada na máquina...

C:\Program Files (x86)\Arduino depende da IDE
C:\Users\yourname\AppData\Local\Arduino15      depende da IDE
C:\Users\yourname\AppData\Roaming\Arduino15    depende da IDE

Se vc usa a IDE on-line do Arduino..

C:\Users\yourname\AppData\Roaming\ArduinoCreateAgent
C:\Users\yourname\AppData\.arduino-create

OK !

Resultado ?  Saí de 35 segundos para 3 a 4 segundos. 😊


Sugestões e críticas são aceitas e necessárias. E são bem-vindas.