Работа с памятью (microSD) ========================== Цель — записать строку на microSD-карту и прочитать её обратно. Если этот тест прошёл, значит SPI-шина и SD-модуль исправны и можно переходить к более сложным сценариям (логирование GPS, телеметрия). Распиновка — см. :doc:`coding-setup`. Ключевое: - ``CS`` SD-карты: ``D4``; - общая SPI-шина: ``MOSI=D11``, ``MISO=D12``, ``SCK=D13``; - ``CSN`` nRF24L01+ (``D10``) сидит на той же SPI-шине, но в этом тесте мы его не трогаем — модуль остаётся в idle и линию не держит. Тестовый скетч -------------- .. literalinclude:: ../../../examples/sd_card_test/sd_card_test.ino :language: cpp :caption: examples/sd_card_test/sd_card_test.ino Скетч инициализирует карту, создаёт файл ``TEST.CSV``, пишет в него заголовок и одну строку, потом читает файл обратно и печатает в Serial. Весь тест выполняется один раз в ``setup()``, ``loop()`` пуст. Подготовка карты ---------------- - Карта должна быть отформатирована в **FAT32** (не exFAT, не NTFS). - Размер до 32 ГБ работает гарантированно. 64+ ГБ карты могут не опознаться библиотекой ``SD`` — встроенная Arduino-библиотека старая. - На карте не должно быть файла ``TEST.CSV`` от предыдущих тестов — иначе скетч просто допишет ещё одну строку (это тоже нормально). Как запустить ------------- 1. Вставьте карту в модуль. 2. Залейте скетч. 3. Откройте Serial Monitor на скорости **115200**. Что должно быть видно --------------------- :: microSD test start SPI: D11(MOSI), D12(MISO), D13(SCK), CS=D4 SD init OK Write OK --- File content start --- ms,temp_c,hum_%,co2_ppm 12345,24.7,38.5,420 --- File content end --- microSD test done После этого можно: - Извлечь карту, вставить в ноутбук — ``TEST.CSV`` должен открыться в любом редакторе или Excel. - Залить полную миссию (``main_full``) — она будет писать свой лог ``TBOY.CSV`` рядом с ``TEST.CSV``. Если ``SD init failed`` ----------------------- - Карта вставлена не до щелчка. - Карта не FAT32 — переформатируйте через штатные средства ОС или ``SD Memory Card Formatter`` от sdcard.org. - Карта > 32 ГБ — попробуйте меньшую. - Контакт SPI: пошевелите провода ``D11``/``D12``/``D13``, особенно у разъёма Nano. - Карта живая, но не отвечает — попробуйте другую карту (механически изношенные SD это частая причина).