Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] ESP8266 - fastled i webserver do WS2812

05 May 2019 22:39 1047 9
  • Level 6  
    Buduję lampkę LED z wykorzystaniem 16 sztuk WS2812 i modułu ESP8266, dokładnie takiego zestawu jak z poniższego linku:
    Quote:
    aliexpress.com/item/ESP8266-ESP01-ESP-01-RGB-LED-Controller-Adpater-WIFI-Module-for-Arduino-IDE-WS2812-WS2812B-5050/32955220849.html

    Sprawdziłem już cały układ przy pomocy poniższego kodu i wszystko działa jak należy.
    Code: c
    Log in, to see the code
    Teraz chciałbym aby mój interfejs sieciowy wyglądał tak jak na poniższym filmie:
    Quote:
    youtube.com/watch?v=8BcGnMfq9zc

    Opis pod filmem odsyła do GitHuba:
    Quote:
    github.com/jasoncoon/esp8266-fastled-webserver

    Gdzie opisana jest procedura "instalacji":
    Quote:
    Installing
    The app is installed via the Arduino IDE which can be downloaded here. The ESP8266 boards will need to be added to the Arduino IDE which is achieved as follows. Click File > Preferences and copy and paste the URL "http://arduino.esp8266.com/stable/package_esp8266com_index.json" into the Additional Boards Manager URLs field. Click OK. Click Tools > Boards: ... > Boards Manager. Find and click on ESP8266 (using the Search function may expedite this). Click on Install. After installation, click on Close and then select your ESP8266 board from the Tools > Board: ... menu.

    The app depends on the following libraries. They must either be downloaded from GitHub and placed in the Arduino 'libraries' folder, or installed as described here by using the Arduino library manager.

    FastLED
    IRremoteESP8266
    Arduino WebSockets

    Download the app code from GitHub using the green Clone or Download button from the GitHub project main page and click Download ZIP. Decompress the ZIP file in your Arduino sketch folder.

    The web app needs to be uploaded to the ESP8266's SPIFFS. You can do this within the Arduino IDE after installing the Arduino ESP8266FS tool.

    With ESP8266FS installed upload the web app using ESP8266 Sketch Data Upload command in the Arduino Tools menu.

    Then enter your wi-fi network SSID and password in the WiFi.h file, and upload the sketch using the Upload button.

    W międzyczasie muszę jeszcze ogarnąć ESP8266FS:
    Quote:
    Uploading files to file system
    ESP8266FS is a tool which integrates into the Arduino IDE. It adds a menu item to Tools menu for uploading the contents of sketch data directory into ESP8266 flash file system.

    Download the tool: github.com/esp8266/arduino-esp8266fs-plugin/releases/download/0.2.0/ESP8266FS-0.2.0.zip.
    In your Arduino sketchbook directory, create tools directory if it doesn't exist yet
    Unpack the tool into tools directory (the path will look like <home_dir>/Arduino/tools/ESP8266FS/tool/esp8266fs.jar)
    Restart Arduino IDE
    Open a sketch (or create a new one and save it)
    Go to sketch directory (choose Sketch > Show Sketch Folder)
    Create a directory named data and any files you want in the file system there
    Make sure you have selected a board, port, and closed Serial Monitor
    Select Tools > ESP8266 Sketch Data Upload. This should start uploading the files into ESP8266 flash file system. When done, IDE status bar will display SPIFFS Image Uploaded message.

    Mój problem zaczyna się mniej-więcej przy:
    Quote:
    Decompress the ZIP file in your Arduino sketch folder.

    Ponieważ nie wiem gdzie jest ten kod interfejsu sieciowego, nie ma jakiegoś konkretnego pliku *.ino w tym archiwum, jeśli mam przy użyciu ESP8266FS stworzyć folder "Data" to co mam tam wrzucić? Co z plikami css/html, one tam własnie mają trafić? Czy się je przesyła inaczej, czy to jest automatyczne leci przez IDE Arduino? Ktoś może się już z tym zetknął i ma jakiś film instruktażowy może?
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Helpful post
    Level 33  
    Na githubie masz cały projekt który należy wgrać do katalogu z Twoimi projektami Arduino. Przy kompilacji wybierasz odpowiednią pojemność dysku flash (spiffs) by zmieściło się wszystko z katalogu data (to tu jest kod strony WWW, wszystkie te pliki zostaną wgrane na spiffs) i normalnie wgrywasz szkic. Jak masz zainstalowaną opcję używania spiffs (to jakaś wtyczka) to w menu powyżej miejsca gdzie wybierasz parametry płytki ESP8266 pojawi się odpowiednia opcja. Wtyczki są osobne dla ESP8266 i ESP32.
  • Level 6  
    Przy części plików dostaje błąd: error(-10010), w internecie znalazłem informację, że jest to związane z za długimi ścieżkami do plików, do się coś z tym zrobić?

    Code:
    [SPIFFS] data   : D:\Download\sketch_may05b\data
    
    [SPIFFS] size   : 256
    [SPIFFS] page   : 256
    [SPIFFS] block  : 4096
    /.travis.yml

    /examples/avr/WebSocketClientAVR/WebSocketClientAVR.ino

    /examples/esp32/WebSocketClient/WebSocketClient.ino

    /examples/esp32/WebSocketClientSSL/WebSocketClientSSL.ino

    /examples/esp32/WebSocketServer/WebSocketServer.ino

    /examples/esp8266/WebSocketClient/WebSocketClient.ino

    /examples/esp8266/WebSocketClientSocketIO/WebSocketClientSocketIO.ino

    /examples/esp8266/WebSocketClientSSL/WebSocketClientSSL.ino

    /examples/esp8266/WebSocketClientStomp/WebSocketClientStomp.ino

    /examples/esp8266/WebSocketClientStompOverSockJs/WebSocketClientStompOverSockJs.ino

    /examples/esp8266/WebSocketServer/WebSocketServer.ino

    /examples/esp8266/WebSocketServerAllFunctionsDemo/WebSocketServerAllFunctionsDemo.ino

    /examples/esp8266/WebSocketServerFragmentation/WebSocketServerFragmentation.ino

    /examples/esp8266/WebSocketServerHttpHeaderValidation/WebSocketServerHttpHeaderValidation.ino

    /examples/esp8266/WebSocketServer_LEDcontrol/WebSocketServer_LEDcontrol.ino

    /examples/Nginx/esp8266.ssl.reverse.proxy.conf

    /examples/particle/ParticleWebSocketClient/application.cpp

    /library.json

    /library.properties

    /src/libb64/AUTHORS

    /src/libb64/cdecode.c

    /src/libb64/cdecode_inc.h

    /src/libb64/cencode.c

    /src/libb64/cencode_inc.h

    /src/libb64/LICENSE

    /src/libsha1/libsha1.c

    /src/libsha1/libsha1.h

    /src/WebSockets.cpp

    /src/WebSockets.h

    /src/WebSocketsClient.cpp

    /src/WebSocketsClient.h

    /src/WebSocketsServer.cpp

    /src/WebSocketsServer.h

    /tests/webSocket.html

    /tests/webSocketServer/index.js

    /tests/webSocketServer/package.json

    /travis/common.sh

    skipping .gitignore

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketClientAVR!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketClient!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketClientSSL!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketServer!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketClient!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketClientSocketIO!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketClientSSL!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketClientStomp!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketClientStompOverSockJs!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketServer!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketServerAllFunctionsDemo!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketServerFragmentation!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketServerHttpHeaderValidation!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from WebSocketServer_LEDcontrol!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from Nginx!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from ParticleWebSocketClient!

    SPIFFS_write error(-10010): unknown

    error adding file!

    Error for adding content from webSocketServer!

    [SPIFFS] upload : C:\Users\Admin\AppData\Local\Temp\buildeba3675622c6c2c6e2699dcb8ece8aba.spiffs/sketch_may05b.spiffs.bin
    [SPIFFS] address: 0xBB000
    [SPIFFS] reset  : ck
    [SPIFFS] port   : COM7
    [SPIFFS] speed  : 115200

    Uploading 262144 bytes from C:\Users\Admin\AppData\Local\Temp\buildeba3675622c6c2c6e2699dcb8ece8aba.spiffs/sketch_may05b.spiffs.bin to flash at 0x000BB000

    ................................................................................ [ 31% ]

    ................................................................................ [ 62% ]

    ................................................................................ [ 93% ]

    ................                                                                 [ 100% ]
  • Level 33  
    W przykładach do ESP masz takie ze spiffs, użyj przykładu i wgraj. W bibliotece ESP Async Webserver też jest przykład z katalogiem data do wgrania przez plugin spiffs. Nie wiem o jakie ścieżki chodzi, te w strukturze spiffs czy o układ plików na dysku. Dla pewności możesz wrzucić projekt bezpośrednio na C, ja w tym wypadku mam bardzo długą ścieżkę, wszystkie pliki mam tradycyjnie w "Moje Dokumenty" po czym kilka poziomów w głąb, no i oczywiście kilka w górę.
    Może jest problem z flash, miałem parę ESP-01 z flash 1MB, zachowują się czasami dziwnie i spiffs się wywala, był jakiś myk polegający na zmianie pliku w core. Na początek lepiej użyć chipów z 4MB flash, tu nie miałem nigdy problemów - Wemos MINI, NodeMCU, itp z chipem ESP-12E lub F.
    Na pewno ustawiłeś odpowiedniej wielkości spiffs? Bo jak masz ten ESP-01 to pewnie w ogóle się to nie mieści, data ma tu ponad 600kB. W tym wypadku, tylko dla testu wgrywania, możesz część usunąć, przenieść, bo oczywiście prawidłowo działać nie będzie.
    Ściągnąłem ten projekt, po uzupełnieniu bibliotek, dodaniu secrets.h i małej modyfikacji (D5 na 5) skompilowałem to dla płytki NodeMCU i wgrałem do płytki Witty. Spiffs ustawiony na 1MB, wszystko działa OK, led nie podłączałem, ale strona oczywiście się załadowała. Także może po prostu wgraj do standardowego katalogu z projektami Arduino.
    No i wszystko niestety musisz mieć tak samo jak autor tego projektu, np. wiele rzeczy nie działa mi z nowszym core dla ESP8266, ciągle z tego powodu trzymam wersję 2.4.2.
  • Level 6  
    Chip pamięci to PN25F08 w obudowie SOP-8, czyli według poniższego datasheet powinien mieć 8 Mbit = 1 MB? Jeśli tak, to jednak projekt odpada z powodu braku potrzebnego miejsca.
    Quote:
    xtxtech.com/upfile/2016082517095182.pdf


    Trochę to dla mnie za bardzo skomplikowane. Czy da się to zrobić bez spiffs? Tak aby pod adresem 192.168.0.100 pojawiał się interfejs, który posiada:
    1. Przycisk "ON / OFF".
    2. Suwak "Jasność".
    3. Koło kolorów do wyboru koloru, coś takiego:
    ESP8266 - fastled i webserver do WS2812
    4. Pole z aktualnie ustawionym kolorem.
    5. Przycisk "Ustaw nowy kolor".
    Mniej-więcej coś takiego. Najlepiej chyba jak kod strony będzie wewnątrz szkicu projektu *.ino (<body style="background: #3f4d5a; text-align: center; font: 12pt/14pt Verdana, sans-serif;"> ect.) tak aby nie były potrzebne żadne dodatkowe pliki *.css. Czy ma to senes?
  • Helpful post
    Level 33  
    Stronę można całą nawet odpalić na PC czy serwerze w sieci, dysk sieciowy, czy pobierać kawałki z zewnątrz jak napisał @oskar777 . Tylko wtedy musisz mieć wszystko w tej samej sieci lub dostęp do Internetu (serwery są już od 3$ za rok). No i trzeba przerobić pliki, tak by program webowy wiedział gdzie tego szukać i gdzie jest jego urządzenie websocket (ESP), z którym "gada".
    Jak chcesz wykorzystać gotowca to prostszy jest zakup dokładnie tego co użyte w projekcie autora.
  • Level 6  
    Nie chcę używać zewnętrznych komponentów, ponieważ ESP8266-01 ma pamięć na kod. Rozwiązałem to z poziomu kody w taki oto sposób:
    Code: c
    Log in, to see the code

    GUI wygląda tak:
    ESP8266 - fastled i webserver do WS2812

    3 poziomy jasności, wyłącznik, 12 kolorów z poniższego koła kolorów + biały.
    ESP8266 - fastled i webserver do WS2812
  • Helpful post
    Level 39  
    Te wszystkie stringi do tworzenia strony to chyba lepiej jest umieścić w statycznej tablicy, a później tylko w pętli wyświetlić jednym println() kolejne wiersze tej tablicy. Łatwiej będzie Ci wykonywać ewentualne modyfikacje strony.
  • Level 6  
    Dobry pomysł, wykorzystam w kolejnej wersji.

    Dodano po 14 [godziny] 42 [minuty]:

    Rozwiązano za pomocą kodu z poniższego postu.
    Quote:
    elektroda.pl/rtvforum/viewtopic.php?p=17949454#17949454