Gestion des adresses MAC
publication: 30 mai 2024 / mis à jour 4 juin 2024
Les adresses MAC
Une adresse MAC, ou adresse de contrôle d'accès au média (Media Access Control en anglais), est un identifiant unique attribué à un périphérique réseau. Elle est codée sur 6 octets, soit 48 bits, et se compose de caractères alphanumériques. On peut la considérer comme la plaque d'immatriculation de l'appareil sur le réseau.
Fonctionnement:
- l'adresse MAC est stockée dans la carte réseau ou une interface réseau similaire du périphérique;
- elle est utilisée pour identifier de manière unique un appareil sur un réseau local (LAN);
- elle permet aux périphériques de communiquer entre eux et de partager des ressources;
- elle est également utilisée par les routeurs et les commutateurs pour contrôler le trafic réseau.
Propriétés:
- unique: Chaque adresse MAC est censée être unique au monde. Cela signifie qu'aucun autre périphérique ne devrait avoir la même adresse MAC.
- physique: L'adresse MAC est liée au matériel du périphérique et ne change pas, même si vous réinstallez le système d'exploitation ou que vous changez de fournisseur d'accès à Internet (FAI).
- fixe: L'adresse MAC ne peut généralement pas être modifiée. Cependant, il existe des méthodes pour la falsifier, mais cela est généralement déconseillé pour des raisons de sécurité.
Utilisations:
- contrôle d'accès: l'adresse MAC peut être utilisée pour contrôler l'accès à un réseau. Par exemple, un administrateur réseau peut configurer un routeur pour autoriser uniquement les périphériques avec des adresses MAC spécifiques à se connecter au réseau.
- résolution de conflits: En cas de conflit IP sur un réseau, les adresses MAC peuvent être utilisées pour identifier le périphérique à l'origine du conflit.
- suivi des périphériques: L'adresse MAC peut être utilisée pour suivre le déplacement des périphériques sur un réseau.
Pour exploiter ESP-NOW, il faut connaître l'adresse MAC de chaque carte ESP32 intégrée au réseau.
Comment trouver l'adresse MAC d'une carte ESP32
La première étape consiste à activer le port WiFi en mode station. Dans ce mode on ne définit que le SSID du mode station:
z" ESP-MASTER-AP" constant mySSID z" " constant myPASSWORD
Ici, on définit ESP-MASTER-AP comme SSID de notre carte ESP32. Pour ESP-NOW, ce SSID ne sera pas utile. Il est cependant recommandé d'avoir un SSID par carte ESP32.
Voyons comment initialiser le port WiFi de notre carte ESP32:
\ Initialize WiFi wifi \ Configure WiFi in station mode : wifi-init ( -- ) WIFI_MODE_STA Wifi.mode \ mySSID myPASSWORD WiFi.softAP \ 0= if \ abort" Soft AP creation failed" \ then ;
WIFI_MODE_STA
est un paramètre de mode Wi-Fi couramment utilisé dans les systèmes embarqués et les microcontrôleurs,
en particulier ceux basés sur la famille ESP32. Cela signifie Station Mode, ce qui signifie que
l'appareil fonctionne comme un client Wi-Fi et a l'intention de se connecter à un réseau Wi-Fi existant
fourni par un point d'accès (AP).
Dans WIFI_MODE_STA
, l'appareil recherche activement les réseaux Wi-Fi disponibles, sélectionne le réseau souhaité.
un basé sur son SSID (Service Set Identifier) et son mot de passe, et établit une connexion avec l'AP.
Une fois connecté, l'appareil peut communiquer avec d'autres appareils sur le réseau et accéder à Internet.
Une adresse MAC est définie sur 6 octets. On va récupérer l'adresse MAC de notre carte ESP32 en réservant
6 octets dans le mot myMAC
:
create myMAC 6 allot
Maintenant, on récupère l'adresse MAC de notre carte ESP32 avec WiFi.macAddress
:
wifi-init WiFi myMAC WiFi.macAddress
Dans un premier temps, pour visualiser notre adresse MAC, un simple dump
suffit:
hex myMAC 6 dump decimal
Ce qui affiche:
3FFEE1C0 EC 62 60 9C 76 30
Afficher une adresse MAC
Une adresse MAC est généralement notée sous forme de six groupes de deux caractères hexadécimaux, séparés par des deux-points. Par exemple:
00:11:22:33:44:55
C'est cette forme qui nous intéresse. Voici comment est défini le mot .mac
permettant d'afficher
une adresse MAC:
\ display MAC address in hex format
: .mac { mac-addr -- }
base @ hex
6 0 do
mac-addr i + c@ <# # # #> type
i 5 < if
[char] : emit
then
loop
base !
;
Visualisation du contenu de myMAC
avec .mac
:
myMAC .mac
\ display: EC:62:60:9C:76:30
Définition de nouvelles adresses MAC
Vous l'avez compris, pour communiquer entre deux cartes ESP32, il faut que la carte qui transmet un message connaisse l'adresse MAC de la carte cible. S'il y a plusieurs cartes cible, il faut mémoriser l'adresse de chaque carte cible.
Voici comment définir une adresse MAC pour une carte ESP32 cible:
internals also : define-mac-address: ( comp:create base @ >r hex \ save current base 5 for [char] : parse \ search : delimiter S>NUMBER? \ try convert in integer if c, \ compile integer in mac-address else abort" MAC address scan error" then next r> base ! \ restore current base does> ; only forth -- | exec: -- addr )
Voici comment mémoriser l'adresse MAC d'une carte cible dont on aura récupéré l'adresse MAC:
define-mac-address: ESP-TARGET-01 5F:2C:33:17:1A:7C
Ici, on définit ESP-TARGET-01
. L'exécution de ce mot dépose sur la pile de données
la zone mémoire contenant l'adresse MAC de la carte ESP32 cible. On vérifie que cette adresse MAC
a été correctement compilée:
ESP-TARGET-01 .mac \ display: 5F:2C:33:17:1A:7C
La structure esp_now_peer_info_t
esp_now_peer_info_t
est une structure contenant les informations sur le périphérique jumeau à ajouter.
Cette structure doit inclure les champs suivants:
- peer_address: L'adresse MAC du périphérique jumeau
- channel: canal Wi-Fi sur lequel communiquer avec le périphérique jumeau. La valeur de channel peut être comprise entre 1 et 14. Cependant, il est important de noter que la disponibilité des canaux Wi-Fi peut varier en fonction de la région dans laquelle vous vous trouvez. Il est donc recommandé de consulter la réglementation locale avant de choisir un canal Wi-Fi;
- is_static: indicateur indiquant si le périphérique jumeau est statique ou dynamique. Un périphérique statique a
une adresse MAC fixe, tandis qu'un périphérique dynamique peut avoir une adresse MAC variable:
- 0: représente un périphérique jumeau dynamique. Cela signifie que l'adresse MAC du périphérique jumeau peut changer et que l'appareil ESP devra le rechercher avant de lui envoyer des données;
- 1: représente un périphérique jumeau statique. Cela signifie que l'adresse MAC du périphérique jumeau est fixe et que l'appareil ESP peut toujours le trouver en utilisant son adresse MAC;
- LRF: facteur de taux de liaison à utiliser pour la communication avec le périphérique jumeau;
- PHY: Le mode PHY à utiliser pour la communication avec le périphérique jumeau.
Voici comment définir la structure esp_now_peer_info_t
:
structures definitions 6 6 typer iMAC forth definitions structures struct esp_now_peer_info_t iMAC field ->peer_address i8 field ->channel i8 field ->is_static i8 field ->LRF i8 field ->PHY forth
Legal: site web personnel sans commerce / personal site without seling