sd модуль работа с файлами esp8266

sd модуль работа с файлами esp8266

Как подключить модуль sd карты к плате esp8266 и как создавать и удалять файлы с sd карты. Автоматически разбивать большой объём данных и записывать в разные файлы. Рассмотрим примеры из библиотеки sd wifi. Подключение MicroSD к плате NodeMCU по SPI. Сравнение подключения модуля sd карты Ардуино и ESP8266 с применением адаптера. Запись данных на sd.

Сегодня я расскажу как подключить модуль SD CARD к плате ESP, а точнее к плате NodeMCU. Это ничуть не сложнее чем подключение к Ардуино. Всё те же 4 провода, плюс питание. Если честно, то для подключения к ESP вам не нужен модуль, а вы можете подключать SD карту напрямую, так как для работы с картой нам нужно напряжение 3,3 вольта, а это именно то напряжение на котором работают все ESP. Но без модуля вам придётся взять в руки паяльник, поэтому я покажу на модуле.
И пока вы ещё не ушли я хочу показать, что должно получиться на выходе.

Мы напишем скетч который будет автоматически создавать файлы и каждые 10 секунд и записывать в них данные. В моём примере это случайные числа от 0 до 10000. Но это могут быть значения датчиков или лог файла с привязкой ко времени. Файлы могут тоже называться как даты или время. В общем смотрите дальше и всё поймёте.
Хочу извинится, за то что некоторое время отсутствовал, я вообще хотел прекратить записывать видео. 

Как видно на картинке модуль сделан для применения в 5 вольтовой аппаратуре. Здесь есть два преобразователя. 1 для изменения напряжения питания с 5 вольт на 3,3 вольта для питания SD карты, а второй для преобразования уровней к 3,3 вольтам.

Есть 2 вида адаптеров для  Ардуино. Адаптер для SD карт и для MicroSD карт. Мы будем рассматривать последний.

В прошлом видео, ссылка на него здесь, я рассказал как подключить  адаптер MicroSD карт к Ардуино. Объяснил принцип работы интерфейса SPI, и кто такие MASTER и SLAVE. Показал как записывать данные на SD карту памяти, а затем читать их. Подключил датчик температуры и влажности DHT11 и часы DS3231. Построил из получившихся данных график в Эксель, а затем вывел данные о температуре в Эксель в реальном времени. Это было интересное видео, советую посмотреть.
Схема подключения.
Подключать будем по шине SPI это 4 контакта плюс 2 питания.

Сегодня нам не нужно будет устанавливать дополнительные библиотеки, так как в Ардуино IDE уже всё есть в комплекте.
Теперь зайдём в папку примеры. Мы можем использовать почти все примеры для Ардуино, так и примеры для ESP. Для ESP есть очень хорошая библиотека называемая SDFAT. Можете посмотреть сколько там примеров. Я сегодня про неё рассказывать не буду, а расскажу про SD для ESP8266. 
Сначала посмотрим, что у нас на SD карте. Для этого загрузим пример LISTFILES.

В первых строчках кода идут комментарии. Здесь показано куда надо подключать выводы SD карты. Но это распиновка для Ардуино, а нам надо подключить к NodeMCU.  Вот расположение выводов.
Нам надо подключить модуль к разъёмам интерфейса SPI. Поэтому найдём их на плате. Четвёртый выход CS  можно подключить к любому свободному выводу. Я подключил к D8 или GPIO15. 
Для питания лучше использовать 5 вольт, но модуль работает и от 3,3 вольта. Так что подключаем к одному из многих выводов. Дальше подключаем землю.

Дальше идут библиотеки SPI для работы с интерфейсом и SD для работы с картой.
В примере используется скорость 115200 бод, так что не забудьте изменить её в мониторе порта.
Указываем куда подключили чипселект. Я подключил к D8. Здесь указываем что будем смотреть в корне папки. Прошиваем скетч и смотрим какие файлы есть на карте.

У меня на карте записано 55 файлов. От 0 до 54. Так будут выглядеть файлы после того как мы напишем скетч который будет создавать пронумерованные файлы. Названия могут быть любыми. В одном из своих проектов я создавал папки с именами название месяцев в которых находились папки с названиями дней и в которых лежали файлы с названиями времени.

Перед тем как мы напишем свой скетч давайте посмотрим как всё же работать с файлами. Как их можно создавать и удалять. Для этого загрузим ПРИМЕР FILES. 
Не забудем изменить контакт к которому подключен чипселект. Это d8.

Функция exists()
Проверяет, существует ли на SD карте файл или каталог. В скобках указывается имя файла или каталога который надо проверить
Возвращаемое значение true, если файл или каталог существует; false, если нет.
Для примера переименуем название файла на ТЕСТ. 
Для создания файла надо всего лишь открыть этот файл. Если такого файла нет, то он будет создан автоматически. Будем работать с тем же файлом Тест.
Снова проверяем файл и выводим про него информацию в мониторе. 

Теперь давайте удалим файл.
Функция  remove()
Удаляет файл с SD карты. В скобках указывается имя файла который надо удалить.
Возвращаемое значение true, если файл удален успешно; false, если нет.

Теперь прошьём скетч в NodeMCU и посмотрим в мониторе порта что у нас получилось.

Сначала нам пишут что файл ТЕСТ.ТХТ не существует. Затем создаётся файл ТЕСТ. Я не во всех строчках кода поменял example на ТЕСТ поэтому так и вывелось. И в конце этот файл удаляется.
Этот файл выполнил ряд задач, но у нас на карте как не было файла, так и нет. И мы не можем проверить как он отработал. Поэтому я закомментирую удаление файла.

Ещё я закомментирую ненужный вывод в монитор, чтобы было поменьше лишней информации. Оставлю только создание файла и информацию об этом. И снова прошью код.

Мы видим что скетч нам пишет что файл ТЕСТ создан и он существует. Давайте проверим это. Для этого я вытащу карту и вставлю её в картридер и подключу к компьютеру. И как мы видим, на карте появился файл тест. Нас не обманули.

Теперь давайте проверим функцию удаления. Для этого раскомментируем  Функцию  remove(). Убирать функцию создания файлы не будем, так как если файл уже создан, то он не будет создан снова. Прошиваем и смотрим.

Видим что на карте есть файл ТЕСТ. И удаляем его. Давайте посмотрим. Видим, что карта у нас снова пустая. Теперь настал время к чему мы так долго шли. Автоматическое создание  файлов с присваиванием им номера. Для этого напишем вот такой скетч. Вы же можете скачать его с моего сайта, по ссылке в описании.


Рассмотрим скетч.
Мне нужно было в одном из проектов подсчитать максимальное  количество значений которое можно записать на карту в определённых заказчиком условиях. 
Для этого я создавал случайное значение переменной и сохранял на sd карте. Файлы должны были  создаваться каждые 10 секунд. Значения записанные на карту должны отправляться в базу данных.
Вот часть этого кода я выложил.

Прошиваем скетч и видим как в мониторе порта побежали случайные числа. Но главное что мне нужно было, так это то чтобы они все имели порядковый номер. 

Теперь достанем карту и посмотрим на компьютере сколько записалось файлов и сколько в них данных.
У меня создалось 3 файла. Это значит скетч работал около 30 секунд. Около – это потому, что я отключил его раньше чем 30 секунд, поэтому последний файл не полный.
В первом файле у меня 456 значений, во втором 437, а в третьем 212, так как он не полный. 
У меня получилось 17 записей на карту в 1 секунду. Можно было бы немного увеличить это число убрав delay в конце файла и заменой на более быструю SD карту. Можете поэкспериментировать и написать свои значения.
Цель этого видео научиться создавать файлы и разбивать большой объём данных на несколько файлов.

На этом я заканчиваю это видео, а их на канале уже около 130. Я пока не знаю буду ли я продолжать снимать дальше или нет. Всё зависит от вас и вашей активности. Если вам интересно, то почему так мало комментариев. В общем решать вам, нужен ли вам такой канал.
 

Скетчи