ESP8266 zmiana adresu MAC
Moduł ESP 8266 w swojej potędze wielkości ma też wadę, którą odkryłem ostatnio, mianowicie, co w przypadku kiedy próbuję skomunikować ze sobą dwa moduły podłączone do tej samej sieci WIFI, a okazuje się, że oba maja taki sam adres IP?
Dyskwalifikuje to próby wymiany danych między nimi, gdyż jeden adres przypisany jest do dwóch osobnych urządzeń. Wynika to z tego, że oba moduły mają przypisany przez fabrykę ten sam adres fizyczny MAC. Może tak się zdarzyć, mi tak się zdarzyło niedługo po tym jak kupiłem nowe moduły ze sklepu. Niby świeżuteńkie i nowiutkie ale nie działają poprawnie….
Rozwiązanie jest proste. Trzeba zmienić adres MAC na nowy, unikalny w ramach jednej sieci, aby przypisać mu nowy, unikalny adres IP. Oto przykład jak zmienić adres MAC za pomocą komendy AT podłączając ESP do Arduino
#define TIMEOUT 5000
#include <SoftwareSerial.h>
void setup() {
Serial.begin(9600);
Serial1.begin(115200);
Serial1.setTimeout(TIMEOUT);
if (wyslij("AT+RST", "OK", 200)) {
Serial.println("Reset esp8266");
}
delay(1000);
while (!wyslij("AT", "OK", 200)) {
Serial.println("error on esp8266");
}
changeMac();
//getIp();
}
void loop() {
// put your main code here, to run repeatedly:
}
void changeMac() {
Serial1.println("AT+CIPSTAMAC=\"18:aa:35:97:d4:e1\"");
delay(1000);
Serial.println(Serial1.readString());
}
void getIp() {
Serial1.println("AT+CIFSR");
delay(1000);
Serial.println(Serial1.readString());
}
boolean wyslij(String Komenda_AT, char *Odpowiedz_AT, int czas_czekania) {
Serial1.println(Komenda_AT);
delay(czas_czekania);
while (Serial1.available() > 0) {
if (Serial1.find(Odpowiedz_AT)) {
return 1;
}
}
return 0;
}
W kodzie jest zawarta również metoda do sprawdzenia aktualnego adresu „getIp”, którą trzeba odkomentować i wgrać ponownie po zmianie adresu.
Opublikowano: 19 lutego, 2019 przez Pan z Pogodna
