Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

- ESP8266 Wczytywanie danych z EEPROM

BuildEver 31 Gru 2016 06:26 2067 10
  • #1 31 Gru 2016 06:26
    BuildEver
    Poziom 7  

    Witam wszystkich,
    mam następujący problem.

    Mam płytkę ESP8266MOD - lolin nodemcu v3. Staram się zaimplementować jej następującą funkcjonalnosć: zapis i odczyt SSID oras Hasła danej sieci Wi-Fi z EEPROM, automatyczne łaczenie z zapisana siecią Wi-Fi. Chcę aby można było wczytywać te dane z pamięci EEPROM bo końcowy urztkownik nie zna się na programowaniu i nie będzie wchodzić w Arduinoskie IDE by połączyć się ze swoją siecią...

    W każdym razie zrobiłem odczyt i zapis, lecz gdy chcę połaczyć się z Wi-Fi nic nie dizła :/ Nie wiem w sumie czemu. Ręczne wprowadzenie wartości działa. Ale jak mówiłem wcześniej, tak nie możne być!

    Wszystko porgramowane jest w IDE od Arduino:
    Oto sutawienia:

    Module: ESP8622MOD - lolin nodemcu v3
    Flash Size: 4MB
    CPU Frequency: 80Mhz
    Upload Using: SERIAL
    Reset Method: nodemcu

    Napisałem mały debugger, oto jego wyniki:

    Starting check
    Value of byte at adress 1 =10

    Connecting to Wi-Fi
    Value of byte at adress 2 =7
    Readed ssid =MY SSID
    Value of byte at adress 3 =11
    Readed password =MY PASSWORD
    Connecting
    ............................... Could not connect

    Starting Access Point
    Value of byte at adress 4 =8
    Readed name =MRJW-ESP

    AP IP address: 192.168.4.1
    Port: 23
    Max users: 1
    New client connected - ID: 0
    Sending: Host: You are connected!

    Tutaj cały program:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 10
  • #4 31 Gru 2016 14:24
    piotrva
    Moderator na urlopie...

    Robisz to gdzieś w kodzie, a nie zaraz przed instrukcją połączenia.

    Dodano po 1 [minuty]:

    Chodzi o ssid

    Dodano po 2 [minuty]:

    Poza tym ogólnie kod strasznie zagmatwany. Po co stringi? Po co te zmienne globalne typu eRead.
    Myślę że przyczyną problemu jest to że korzystasz ze wskaźników jako ssid i password.

    0
  • #5 01 Sty 2017 20:36
    krzbor
    Poziom 16  

    Zapoznaj się z WiFiManager. Ta biblioteka ma kilka wersji (odgałęzień). Jest bardzo prosta w użyciu. Idea jest następująca: z urządzenia robi się AP z własną stroną www i stałym adresem, SIDD i hasłem. Użytkownik łączy się z tą stroną przy użyciu smartfona i wprowadza dane swojej sieci WiFi. Po restarcie już wszystko działa normalnie.

    0
  • #8 06 Sty 2017 11:54
    BuildEver
    Poziom 7  

    Ogólnie to miałem na początku zrobione wszystko w metodach, wystarczyło podać adres i długość a dostawało się char*. Jednak ogólnie ESP pod Arduino ma spore problemy z ogarnięciem takich rzeczy.

    Po dłuższym szukaniu w sieci znalazłem podobny projekt. Zauważyłem że podczas wczytywania znaków z EEPROM osoba ta użyła:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zamiast (czyli jak ja miałem):

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I to wszystko naprawiło. Jestem prawie pewien że do pamięci zapisywał się znak powrotu wózka (\r). I komenda (char)EEPROM.read(adress); nie potrafiła sobie z tym poradzić.

    0
  • #9 06 Sty 2017 12:06
    tronics
    Poziom 36  

    \t to tabulacja, CR to \r, a \n to new line albo line feed LF. String kończy się prawdopodobnie znakiem końca stringa czyli \0

    0