Os dispositivos Opta (todas as variantes) contam com um transceptor de camada física (PHY) Ethernet 10BASE-T/100BASE-TX de baixo consumo de energia integrado. O transceptor atende aos padrões IEEE 802.3 e 802.3u e suporta comunicação com um MAC Ethernet por meio de uma interface RMII padrão. O transceptor Ethernet é acessível através do conector RJ45 integrado.
O Arduino Mbed OS Opta Boards núcleo possui uma biblioteca integrada que permite usar o transceptor Ethernet PHY integrado imediatamente: a Ethernet biblioteca . Vamos usar um código de exemplo que demonstra alguns dos recursos do transceptor.
O esboço abaixo permite que um dispositivo Opta se conecte à internet por meio de uma conexão Ethernet. Uma vez conectado, ele realiza uma GET solicitação ao ip-api.com serviço para obter detalhes sobre o endereço IP do dispositivo. Em seguida, ele analisa o objeto JSON recebido usando a Arduino_JSON biblioteca para extrair os principais detalhes do IP: endereço IP, cidade, região e país. Esses dados são então impressos no Monitor Serial do Arduino IDE.
O Arduino Mbed OS Opta Boards núcleo possui uma biblioteca integrada que permite usar o transceptor Ethernet PHY integrado imediatamente: a Ethernet biblioteca . Vamos usar um código de exemplo que demonstra alguns dos recursos do transceptor.
O esboço abaixo permite que um dispositivo Opta se conecte à internet por meio de uma conexão Ethernet. Uma vez conectado, ele realiza uma GET solicitação ao ip-api.com serviço para obter detalhes sobre o endereço IP do dispositivo. Em seguida, ele analisa o objeto JSON recebido usando a Arduino_JSON biblioteca para extrair os principais detalhes do IP: endereço IP, cidade, região e país. Esses dados são então impressos no Monitor Serial do Arduino IDE.
/** Web Client (Ethernet version) Name: opta_ethernet_web_client.ino Purpose: This sketch connects an Opta device to ip-api.com via Ethernet and fetches IP details for the device. @author: Prof. Sinésio Gomes @version 2.0 10/10/25 */ // Include the necessary libraries. #include <Ethernet.h> #include <Arduino_JSON.h> // Server address for ip-api.com. const char* server = "ip-api.com"; // API endpoint path to get IP details in JSON format. String path = "/json/"; // Static IP configuration for the Opta device. IPAddress ip(10, 130, 22, 84); // Ethernet client instance for the communication. EthernetClient client; // JSON variable to store and process the fetched data. JSONVar doc; // Variable to ensure we fetch data only once. bool dataFetched = false; void setup() { // Begin serial communication at a baud rate of 115200. Serial.begin(115200); // Wait for the serial port to connect, // This is necessary for boards that have native USB. while (!Serial); // Attempt to start Ethernet connection via DHCP, // If DHCP failed, print a diagnostic message. if (Ethernet.begin() == 0) { Serial.println("- Failed to configure Ethernet using DHCP!"); // Try to configure Ethernet with the predefined static IP address. Ethernet.begin(ip); } delay(2000); } void loop() { // Ensure we haven't fetched data already, // ensure the Ethernet link is active, // establish a connection to the server, // compose and send the HTTP GET request. if (!dataFetched) { if (Ethernet.linkStatus() == LinkON) { if (client.connect(server, 80)) { client.print("GET "); client.print(path); client.println(" HTTP/1.1"); client.print("Host: "); client.println(server); client.println("Connection: close"); client.println(); // Wait and skip the HTTP headers to get to the JSON data. char endOfHeaders[] = "\r\n\r\n"; client.find(endOfHeaders); // Read and parse the JSON response. String payload = client.readString(); doc = JSON.parse(payload); // Check if the parsing was successful. if (JSON.typeof(doc) == "undefined") { Serial.println("- Parsing failed!"); return; } // Extract and print the IP details. Serial.println("*** IP Details:"); Serial.print("- IP Address: "); Serial.println((const char*)doc["query"]); Serial.print("- City: "); Serial.println((const char*)doc["city"]); Serial.print("- Region: "); Serial.println((const char*)doc["regionName"]); Serial.print("- Country: "); Serial.println((const char*)doc["country"]); Serial.println(""); // Mark data as fetched. dataFetched = true; } // Close the client connection once done. client.stop(); } else { Serial.println("- Ethernet link disconnected!"); } } }
O esboço inclui as bibliotecas Ethernet e Arduino_JSON, essenciais para a funcionalidade de manipulação de Ethernet e JSON. Na setup() função, a comunicação serial é iniciada para depuração e saída. Em vez de DHCP, a conexão Ethernet usa um endereço IP estático pre definido.
Após a conexão Ethernet ser estabelecida, o esboço se conecta ao ip-api.com serviço, utilizando o protocolo HTTP. Especificamente, uma solicitação é criada para recuperar detalhes sobre o endereço IP do dispositivo, incluindo sua cidade, região e país. Se a conexão com o servidor falhar, o esboço emitirá uma mensagem de erro para o Monitor Serial do Arduino IDE para solução de problemas. HTTP GET
Dentro da loop()função, uma solicitação é enviada ao serviço uma vez. O esboço então aguarda e ignora os cabeçalhos HTTP da resposta, analisando o seguinte payload JSON. HTTP GETip-api.com
Detalhes importantes do IP, como endereço IP, cidade, região e país, são extraídos e exibidos no Monitor Serial do IDE usando os dados analisados. Se o link Ethernet for desconectado, uma mensagem correspondente será exibida no Monitor Serial. Caso a análise do JSON falhe, uma mensagem de erro será exibida no Monitor Serial do IDE, solicitando que o sketch saia da iteração atual da loop() função imediatamente.
Você deverá ver a seguinte saída no Monitor Serial do Arduino IDE.
Após a conexão Ethernet ser estabelecida, o esboço se conecta ao ip-api.com serviço, utilizando o protocolo HTTP. Especificamente, uma solicitação é criada para recuperar detalhes sobre o endereço IP do dispositivo, incluindo sua cidade, região e país. Se a conexão com o servidor falhar, o esboço emitirá uma mensagem de erro para o Monitor Serial do Arduino IDE para solução de problemas. HTTP GET
Dentro da loop()função, uma solicitação é enviada ao serviço uma vez. O esboço então aguarda e ignora os cabeçalhos HTTP da resposta, analisando o seguinte payload JSON. HTTP GETip-api.com
Detalhes importantes do IP, como endereço IP, cidade, região e país, são extraídos e exibidos no Monitor Serial do IDE usando os dados analisados. Se o link Ethernet for desconectado, uma mensagem correspondente será exibida no Monitor Serial. Caso a análise do JSON falhe, uma mensagem de erro será exibida no Monitor Serial do IDE, solicitando que o sketch saia da iteração atual da loop() função imediatamente.
Você deverá ver a seguinte saída no Monitor Serial do Arduino IDE.
Nome: Opta_ethernet_web_client.ino .
Objetivo: Este esboço conecta um dispositivo Opta a ip-api.com via Ethernet e busca os detalhes de IP do dispositivo.
© Direitos de autor. 2025: Gomes; Sinésio Raimundo. Última atualização: 10/10/2025
Nenhum comentário:
Postar um comentário