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