Простой регистратор данных на Arduino с модулем SD-карты

Одним из вариантов применения платы Arduino может быть сбор и обработка данных от различных датчиков. Для такого приложения внутренней памяти (как flash, так и энергонезависимой памяти EEPROM) микроконтроллера ATmega, используемого в Arduino, будет явно недостаточно. Тем более в некоторых случаях эти зарегистрированные данные необходимо прочитать и проанализировать на другом устройстве, например, на компьютере.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/417-prostoy-registrator-dannyh-na-arduino-s-modulem-sd-karty/images/prostoy-registrator-dannyh-na-arduino-s-modulem-sd-karty-1.jpg

Тогда остается только запись информации на какой-либо внешний съемный накопитель, и самым удобным и дешевым вариантом является использование SD-карты. В этом материале будет показано, как своими руками сделать простейший регистратор данных с помощью платы Arduino Uno и модуля для работы с SD-картами.

Передача информации между Arduino и модулем для SD-карт осуществляется по протоколу SPI. Подключение этих двух устройств довольно простое:

5 V - 5 V (VCC) GND - GND D13 - SCK D12 - MISO D11 - MOSI D10 - CS

Теперь в Arduino IDE нужно подключить библиотеку SdFat-master. Разархивируйте содержимое zip-файла библиотеки в папку Libraries, находящуюся в каталоге Arduino IDE. Перед использованием SD-карты обязательно отформатируйте ее, например, в формате FAT16 или FAT32. После этого можете вставить ее в слот модуля.

Для того, чтобы проверить работоспособность модуля и SD-карты, в примерах выберете SdInfo. Соедините Arduino с компьютером посредством кабеля USB и загрузите скетч.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/417-prostoy-registrator-dannyh-na-arduino-s-modulem-sd-karty/images/prostoy-registrator-dannyh-na-arduino-s-modulem-sd-karty-2.jpg

Затем откройте монитор последовательного порта, введите любой символ и нажмите Enter. После этого будет выведена информация по подключенной SD-карты.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/417-prostoy-registrator-dannyh-na-arduino-s-modulem-sd-karty/images/prostoy-registrator-dannyh-na-arduino-s-modulem-sd-karty-3.jpg

Теперь можно приступить к записи данных непосредственно на SD-карту. Для начала откройте скетч Datalogger (File - Examples - SD - Datalogger) и загрузите его в Arduino. Этот скетч считывает информацию с трех аналоговых входов и записывает ее на карту памяти в текстовый файл datalog.txt, который можно открыть на компьютере. Запись данных можно наблюдать в мониторе последовательного порта.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/417-prostoy-registrator-dannyh-na-arduino-s-modulem-sd-karty/images/prostoy-registrator-dannyh-na-arduino-s-modulem-sd-karty-4.jpg

Теперь можно создать свой логгер данных, подключив датчик температуры LM35. Схема подключения показана ниже.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/417-prostoy-registrator-dannyh-na-arduino-s-modulem-sd-karty/images/prostoy-registrator-dannyh-na-arduino-s-modulem-sd-karty-5.jpg

Далее представлен код, который будет считывать значения температуры с датчика и записывать их на SD-карту в файл log.txt.

#include <SPI.h>
#include <SD.h>
File myFile;
int x = 0;
int tempValue;
void setup()
{
   pinMode(10, OUTPUT);
   SD.begin(10);
}
void loop()
{
   tempValue = analogRead(A0);
   myFile = SD.open("log.txt", FILE_WRITE);
   if (myFile) {
      myFile.print("Temperature ");
      myFile.print(x);
      myFile.print(":");
      myFile.println((long)tempValue*0.48875);
   }
   myFile.close();
   x++;
   delay(1000);
}