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

ESP32 + SD card

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

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

ESP32 + SD card

Добавлено: 25.12.2020{, 19:09}
yuriich
кррттибиидарчьрлмомпрдьлиьмб

ESP32 + SD card

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

ESP32 + SD card

Добавлено: 25.12.2020{, 22:22}
yuriich
написано)

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

ESP32 + SD card

Добавлено: 27.12.2020{, 08:42}
rw6cm
yuriich,
Можно фото модулей есп и сд.
Что бы знать с какими что не так.

ESP32 + SD card

Добавлено: 28.12.2020{, 17:42}
yuriich
rw6cm писал(а):
27.12.2020{, 08:42}
yuriich,
Можно фото модулей есп и сд.
Что бы знать с какими что не так.
OK! Как будет возможность скину!

ESP32 + SD card

Добавлено: 01.01.2021{, 03:19}
shura2
мне надо читать файлы из определенной директории в переменную. на базе примера https://github.com/espressif/arduino-es ... D_Test.ino
написал свою:
СпойлерПоказать
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]);
}


Почему то переменная в цикле нормально принимает значения, а потом показывает какую-то хрень:
СпойлерПоказать
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


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

ESP32 + SD card

Добавлено: 01.01.2021{, 14:22}
rw6cm
shura2,
СпойлерПоказать

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

#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

ESP32 + SD card

Добавлено: 01.01.2021{, 21:35}
shura2
rw6cm, я наверное не так выразился, мне надо прочитать список файлов из определенной директории в массив типа 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.01.2021{, 08:18}
rw6cm
shura2 писал(а):
01.01.2021{, 21:35}
Там оказывается какой то бред
СпойлерПоказать
Там это и есть :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]);
:)
shura2 писал(а):
01.01.2021{, 21:35}
п.с. при копировании на форум, почему в переменных пропадает знак [ ]
Для этого в редакторе есть опция - вставить в виде кода ( в верхнем ряду 5-я позиция)

ESP32 + SD card

Добавлено: 02.01.2021{, 14:54}
shura2
rw6cm писал(а):
02.01.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.01.2021{, 20:23}
rw6cm
shura2 писал(а):
01.01.2021{, 21:35}
надо прочитать список файлов из определенной директории
Каталог SDcard ESP32.flp
(134.16 КБ) 89 скачиваний

ESP32 + SD card

Добавлено: 03.01.2021{, 12:30}
rw6cm
добавил в блок нумерацию каталога, удобней парсить строку.
В примере парсинг строки каталога файлов в директории, с раскладом в массив.
Каталог SDcard+массив ESP32.flp
(307.87 КБ) 102 скачивания

ESP32 + SD card

Добавлено: 06.01.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.01.2021{, 07:43}
KulibinOrsk
rw6cm, спрошу у вас тут, по существу, чтобы не плодить темы: в версии 7.3 ESP-32 полностью поддерживается или косяки еще лезут ? (по типу как с SD-картами)

ESP32 + SD card

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

ESP32 + SD card

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

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

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);
СпойлерПоказать

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

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();
}
При первом вызове листинг происходит, во втором нет. пишет всю ту же ошибку [E][vfs_api.cpp:64] open(): /sd/ToCut does not exist

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

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

ESP32 + SD card

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

ESP32 + SD card

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

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

конфиг
СпойлерПоказать
-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
посмотрите, может я где то туплю

ESP32 + SD card

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