Простой регистратор данных на Arduino с модулем SD-карты
Одним из вариантов применения платы Arduino может быть сбор и обработка данных от различных датчиков. Для такого приложения внутренней памяти (как flash, так и энергонезависимой памяти EEPROM) микроконтроллера ATmega, используемого в Arduino, будет явно недостаточно. Тем более в некоторых случаях эти зарегистрированные данные необходимо прочитать и проанализировать на другом устройстве, например, на компьютере.
Тогда остается только запись информации на какой-либо внешний съемный накопитель, и самым удобным и дешевым вариантом является использование 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 и загрузите скетч.
Затем откройте монитор последовательного порта, введите любой символ и нажмите Enter. После этого будет выведена информация по подключенной SD-карты.
Теперь можно приступить к записи данных непосредственно на SD-карту. Для начала откройте скетч Datalogger (File - Examples - SD - Datalogger) и загрузите его в Arduino. Этот скетч считывает информацию с трех аналоговых входов и записывает ее на карту памяти в текстовый файл datalog.txt, который можно открыть на компьютере. Запись данных можно наблюдать в мониторе последовательного порта.
Теперь можно создать свой логгер данных, подключив датчик температуры LM35. Схема подключения показана ниже.
Далее представлен код, который будет считывать значения температуры с датчика и записывать их на 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);
}