Страница 3 из 4

ESP32 + SD card

Добавлено: 25 дек 2020, 08:11
rw6cm
yuriich писал(а): 25 дек 2020, 05:34 в гугле все используют именно D5
В esp32 три spi. Два прописаны, и к ним по умолчанию идет sc (для VSPI - d5, для HSPI - d15)
Но их при необходимости можно менять на другие.
Почему у вас не работает не понятно. Сейчас проверил в версии 7.2.2 все работает.
Библиотеки встроенные в комплекте флпрог, между 6.3.1 и 7.2.2 разницы для есп32 нет.
Попробуйте флешки другой фирмы.
starmos писал(а): 25 дек 2020, 07:22 ЧТО втыкать в разъем флешки и ЧЕМ переключать линии (реле я думал, но не хочу).
я бы для начала сделал на реле (это самый простой вариант), если что то получалось, тогда искал бы альтернативу.
думаю есть для переключения шины spi какие то "мультики" . надо просто поискать.

Отправлено спустя 11 минут 48 секунд:
К стати можно посмотреть на чем сделаны свитчеры (для клавы мыши моников)
которые переключают(на ходу) один комплект на разные компы.

ESP32 + SD card

Добавлено: 25 дек 2020, 19:44
yuriich
кррттибиидарчьрлмомпрдьлиьмб

ESP32 + SD card

Добавлено: 25 дек 2020, 22:01
rw6cm
yuriich писал(а): 25 дек 2020, 19:44 Можно вопрос! Стандартный блок SD для есп32 у вас работает?
Не работает, и не работал на есп32.
yuriich писал(а): 25 дек 2020, 19:44 Придется на nodemcu возвращаться
Если Вы подключили именно так
rw6cm писал(а): 20 фев 2020, 13:38 Ввиду того что на модуле СД свой стабилизатор на 3,3в,
питание на VCC подавал с (Vin) esp32, (на котором 5в при питании от USB)
То возможно есть модули чем то отличающиеся.
hrach тоже с такой проблемой столкнулся

ESP32 + SD card

Добавлено: 25 дек 2020, 22:26
yuriich
написано)

Отправлено спустя 3 минуты 14 секунд:
.

ESP32 + SD card

Добавлено: 27 дек 2020, 08:42
rw6cm
[ref]yuriich[/ref],
Можно фото модулей есп и сд.
Что бы знать с какими что не так.

ESP32 + SD card

Добавлено: 28 дек 2020, 17:42
yuriich
rw6cm писал(а): 27 дек 2020, 08:42 [ref]yuriich[/ref],
Можно фото модулей есп и сд.
Что бы знать с какими что не так.
OK! Как будет возможность скину!

ESP32 + SD card

Добавлено: 01 янв 2021, 03:19
shura2
мне надо читать файлы из определенной директории в переменную. на базе примера https://github.com/espressif/arduino-es ... D_Test.ino
написал свою:

[spoiler]
const char directoryToCut[] ="/ToCut";
const char* fileListToCut[20];


void listToCutDir(fs::FS &fs, const char * dirname, uint8_t levels){
Serial.printf("Listing directory: %s\n", dirname);

File root = fs.open(dirname);
int i=0;
File file = root.openNextFile();
while(file){
if(file.isDirectory()){
Serial.print(" DIR : ");
Serial.println(file.name());


} else {
fileListToCut=file.name();
Serial.print(" FILE: ");
Serial.print(file.name());
Serial.print(" SIZE: ");
Serial.println(file.size());

Serial.print(" I: ");
Serial.print(i);
Serial.print(" FILELIST: ");
Serial.println(fileListToCut);
i++;

}
file = root.openNextFile();
}
Serial.println(fileListToCut[0]);
Serial.println(fileListToCut[1]);
Serial.println(fileListToCut[2]);
}[/spoiler]

Почему то переменная в цикле нормально принимает значения, а потом показывает какую-то хрень:
[spoiler]Listing directory: /ToCut
FILE: /ToCut/Cut1.txt SIZE: 72
I: 0 FILELIST: /ToCut/Cut1.txt
FILE: /ToCut/Cut2.txt SIZE: 72
I: 1 FILELIST: /ToCut/Cut2.txt
FILE: /ToCut/Cut3.txt SIZE: 72
I: 2 FILELIST: /ToCut/Cut3.txt
DIR : /ToCut/New folder
DIR : /ToCut/New folder (2)
��?���?ut1.txt

/ToCut/Cut3.txt
[/spoiler]

что я неправильно делаю?

ESP32 + SD card

Добавлено: 01 янв 2021, 14:22
rw6cm
[ref]shura2[/ref],
[spoiler]

Код: Выделить всё

#include "FS.h"
#include "SD.h"
#include "SPI.h"
String directoryToCut ={"/ToCut"};
String fileListToCut={""};

void listToCutDir(fs::FS &fs, const String& dirname){
Serial.printf("Listing directory: %s\n", dirname);
int i=0;
File root = fs.open(dirname);
File file = root.openNextFile();
while(file){
if(file.isDirectory()){
Serial.print(" DIR : ");
Serial.println(file.name());
} else {
fileListToCut = file.name();
Serial.print(" I: ");
Serial.print(i);
Serial.print(" FILE: ");
Serial.print(file.name());
Serial.print(" SIZE: ");
Serial.println(file.size());
i++;

}
file = root.openNextFile();
}
file.close();
}

void setup(){
    Serial.begin(115200);
    SD.begin();
listToCutDir(SD, directoryToCut);
}

void loop(){

}
2021_01_01_14_18_50_COM6.png
[/spoiler]

ESP32 + SD card

Добавлено: 01 янв 2021, 21:35
shura2
[ref=#ff8000]rw6cm[/ref], я наверное не так выразился, мне надо прочитать список файлов из определенной директории в массив типа const char* fileListToCut[20];

fileListToCut[ i ] =file.name();
Serial.print(" FILE: ");
Serial.print(file.name());
Serial.print(" SIZE: ");
Serial.println(file.size());

Serial.print(" I: ");
Serial.print(i);
Serial.print(" FILELIST: ");
Serial.println(fileListToCut[ i ] );
i++;
в цикле запись в массив и последующая проверка работает нормально. Но как только выхожу из цикла и проверяю содержимое:
Serial.println(fileListToCut[0]);
Serial.println(fileListToCut[1]);
Serial.println(fileListToCut[2]);

Там оказывается какой то бред

п.с. при копировании на форум, почему в переменных пропадает знак [ ]

ESP32 + SD card

Добавлено: 02 янв 2021, 08:18
rw6cm
shura2 писал(а): 01 янв 2021, 21:35 Там оказывается какой то бред

[spoiler]
Там это и есть :D
Передача в терминал (UART) идет последовательно по одному символу.
Терминал запоминает и отображает каждый принятый символ.
По этому в конце передачи мы видим общую картину из этих символов.
Здесь главное понять, при этом виде передачи реально существует только один символ, остальное
это история, организованная программой (терминал) на компьютере.
Теперь что Вы делаете:
"От фонаря" объявляете массив из 20 символов (char -ов)
fileListToCut[20];
Перебирая в цикле, эти 20 символов переписываете (энное количество раз) символами из имен файлов
fileListToCut[ i ] =file.name();
При этом в терминале последовательно(на тот момент), отображаете каждый передаваемый символ идущий в массив
Serial.println(fileListToCut[ i ] );
После всего этого хотите в массиве месиве из 20-ти символов посмотреть 1-й, 2, и 3 символ.
Serial.println(fileListToCut[0]);
Serial.println(fileListToCut[1]);
Serial.println(fileListToCut[2]);
:)
[/spoiler]
shura2 писал(а): 01 янв 2021, 21:35 п.с. при копировании на форум, почему в переменных пропадает знак [ ]
Для этого в редакторе есть опция - вставить в виде кода ( в верхнем ряду 5-я позиция)

ESP32 + SD card

Добавлено: 02 янв 2021, 14:54
shura2
rw6cm писал(а): 02 янв 2021, 08:18 После всего этого хотите в массиве месиве из 20-ти символов посмотреть 1-й, 2, и 3 символ.
не сходится. во первых в цикле while у меня i больше 3 не показывало, но при этом Serial.println(fileListToCut[ i ] ) и Serial.println(file.name() ) в этом же цикле совпадали. И потом, после выхода из цикла
Serial.println(fileListToCut[0]);
Serial.println(fileListToCut[1]);
Serial.println(fileListToCut[2]);
показывали не по одному символу, а частично правильные строки.
Я почему определил переменную, потому что в одном примере для работы с библиотекой LVGL была переменная

Код: Выделить всё

const char * dummy_file_list[] = { "Contract 12.pdf", "Scanned_05_21.pdf", "Photo_132210.jpg", "Photo_232141.jpg",
                 "Photo_091640.jpg", "Photo_124019.jpg", "Photo_232032.jpg", "Photo_232033.jpg", "Photo_232034.jpg",
                 "Monday schedule.pdf", "Email from John.txt", "New file.txt", "Untitled.txt", "Untitled (1).txt", "Gallery_40.jpg",
                 "Gallery_41.jpg", "Gallery_42.jpg", "Gallery_43.jpg", "Gallery_44.jpg" };
по этому образцу пытался делать, т.е. объявить не массив символов, а массив строк

ESP32 + SD card

Добавлено: 02 янв 2021, 20:23
rw6cm
shura2 писал(а): 01 янв 2021, 21:35 надо прочитать список файлов из определенной директории
Каталог SDcard ESP32.flp

ESP32 + SD card

Добавлено: 03 янв 2021, 12:30
rw6cm
добавил в блок нумерацию каталога, удобней парсить строку.
В примере парсинг строки каталога файлов в директории, с раскладом в массив.
Каталог SDcard+массив ESP32.flp

ESP32 + SD card

Добавлено: 06 янв 2021, 01:46
shura2
c массивом символов так и не разобрался. сделал массив строки.

Код: Выделить всё

void dir_Listing(fs::FS &fs, const char * dirname, uint8_t levels){
    Serial.printf("Listing directory: %s\n", dirname);

    int i =0;

    File root = fs.open(dirname); 
    File file = root.openNextFile();
    String tmpFileList; 
    
    while(file){
        if(file.isDirectory()){
            Serial.print("  DIR : ");
            Serial.println(file.name());
            
            
        } else {
             

             if (strstr(file.name(), ".nc") != NULL  || strstr(file.name(), ".gc") != NULL || strstr(file.name(), ".gcode") != NULL  ){ 

                tmpFileList = file.name();
                fileListToCut[i]=file.name();     // присваиваем массиву имя файла из выбранной папки
                i++;
                filesInDir = i;

                if (i > fileSelectLimit) break;

            }

        }

        file = root.openNextFile();

    }
    file.close();
    
}

потом правда обратно преобразовывать приходится, на да ладно

Код: Выделить всё

lv_obj_t * fileList_btn = lv_list_add_btn(list, LV_SYMBOL_FILE, fileListToCut[i].c_str());
У меня другой затык - не могу открыть файл:

Код: Выделить всё


void read_send_file_toCut(fs::FS &fs, const char* fileName){

    Serial.println(fileName);
    File file = fs.open(fileName);

    if(!file){
        Serial.println("Failed to open file for reading");
    }
    file.close();

}
В результате почему-то приписывается директория /sd/ к пути:

Код: Выделить всё

/ToCut/test2 - Copy.gc
[E][vfs_api.cpp:64] open(): /sd/ToCut/test2 - Copy.gc does not exist
Failed to open file for reading
не сталкивались с таким?

ESP32 + SD card

Добавлено: 06 янв 2021, 07:43
KulibinOrsk
[ref=#ff8000]rw6cm[/ref], спрошу у вас тут, по существу, чтобы не плодить темы: в версии 7.3 ESP-32 полностью поддерживается или косяки еще лезут ? (по типу как с SD-картами)

ESP32 + SD card

Добавлено: 06 янв 2021, 09:52
rw6cm
[ref]shura2[/ref],
Все забываю спросить, Вам это надо только для обмена данными с сериал портом?
И выкладывайте полный скетч, чтобы не гадать что и откуда берете.
KulibinOrsk писал(а): 06 янв 2021, 07:43 ESP-32 полностью поддерживается или косяки еще лезут ?
Не могу сказать.
Использую в своем узком направлении. В основном пишу кодом в ПБ.
Время не хватает что бы все проверить.

ESP32 + SD card

Добавлено: 08 янв 2021, 00:02
shura2
rw6cm писал(а): 06 янв 2021, 09:52 Все забываю спросить, Вам это надо только для обмена данными с сериал портом?
И выкладывайте полный скетч, чтобы не гадать что и откуда берете.
Как такого скетча нет, я на данном этапе разбираюсь как все работает по частям, разобрался с тфт с тачскрином, разобрался с графической библиотекой LVGL (рекомендую HMI очень удобно программировать https://docs.lvgl.io ),казалось что разобрался как читать sd сарты. теперь с этим затык.
Как выяснил идет конфликт с библиотекой tft-espi.

[spoiler]

Код: Выделить всё

void setup(){
    Serial.begin(115200);
    Serial.println("115200");

    SD.begin(5);
    dir_Listing(SD, directoryToCut, 0);

    lv_init();


        
/* TFT init */
    	tft.begin();
    	tft.setRotation(3);
        uint16_t calData[5] = {264, 3650, 268, 3572, 1};
        tft.setTouch(calData);
        
    dir_Listing(SD, directoryToCut, 0);
[/spoiler]

[spoiler]

Код: Выделить всё

void dir_Listing(fs::FS &fs, const char * dirname, uint8_t levels){
    Serial.printf("Listing directory: %s\n", dirname);

    int i =0;

    File root = fs.open(dirname); 
    File file = root.openNextFile();
    String tmpFileList; 
    
    while(file){
        if(file.isDirectory()){
            Serial.print("  DIR : ");
            Serial.println(file.name());
            
            
        } else {
             

             if (strstr(file.name(), ".nc") != NULL  || strstr(file.name(), ".gc") != NULL || strstr(file.name(), ".gcode") != NULL  ){ 

                tmpFileList = file.name();
                fileListToCut[i]=file.name();     // присваиваем массиву имя файла из выбранной папки

                Serial.print("  FILE: ");
                Serial.print(file.name());
                Serial.print("  SIZE: ");
                Serial.println(file.size());
            
            
                Serial.print("  I: ");
                Serial.print(i);
                Serial.print("  FILELIST: ");
                Serial.println(fileListToCut[i]);

                
                i++;
                filesInDir = i;

                if (i > fileSelectLimit) break;

            }

        }

        file = root.openNextFile();

    }
    file.close();
}
[/spoiler]
При первом вызове листинг происходит, во втором нет. пишет всю ту же ошибку [E][vfs_api.cpp:64] open(): /sd/ToCut does not exist

А если SD. begin(); поставить позже, чем tft.begin();то не работает тачскрин, хотя листинг проходит успешно

а вообще делаю экран для управления чпу станком с GRBL. чтение файлов, отправка в уарт + настройки + макросы + вайфай.

ESP32 + SD card

Добавлено: 08 янв 2021, 11:24
rw6cm
shura2 писал(а): 08 янв 2021, 00:02 Как выяснил идет конфликт с библиотекой tft-espi.
Не исключено. Надо мучить библиотеки )
вот только из кода выше не пойму, Вы их подключили на одну шину SPI с одним CS?
или для TFT где то указан другой пин?

ESP32 + SD card

Добавлено: 12 янв 2021, 21:53
shura2
rw6cm писал(а): 08 янв 2021, 11:24 вот только из кода выше не пойму, Вы их подключили на одну шину SPI с одним CS?
И так и так подключал. в разделе void setup все работает, дальше из функций нет.
тут https://www.dropbox.com/s/u9mxc9xnpeeep ... 1.zip?dl=0 архив с проектом. в платформио, со всеми библиотеками

как пример, раскидал по функциям вызов dir_Listing(SD, "/ToCut", 0); он тоже вначале работает без проблем, дальше нет.

конфиг
[spoiler] -DUSER_SETUP_LOADED=0
-DILI9488_DRIVER=1
-DTFT_WIDTH=320
-DTFT_HEIGHT=480
-DTFT_MISO=19
-DTFT_MOSI=23
-DTFT_SCLK=18
-DTFT_CS=13
-DTFT_DC=14
-DTFT_RST=12
-DTOUCH_CS=33
-DTOUCH_CLK=18
-DTOUCH_DIN=23
-DTOUCH_DO=19
-DTOUCH_IRQ=X
-DLOAD_FONT2=1
-DLOAD_FONT4=1
-DLOAD_FONT6=1
-DLOAD_FONT7=1
-DLOAD_FONT8=1
-DLOAD_FONT8N=1
-DLOAD_GFXFF=1
-DSMOOTH_FONT=1
-DSPI_FREQUENCY=27000000
-DSPI_READ_FREQUENCY=20000000
-DSPI_TOUCH_FREQUENCY=2500000[/spoiler]

посмотрите, может я где то туплю

ESP32 + SD card

Добавлено: 13 янв 2021, 10:45
rw6cm
shura2 писал(а): 12 янв 2021, 21:53 архив с проектом. в платформио
в platformio не работаю.
flp или скетч