вторник, 7 июня 2016 г.

Ардуино подключаем ЧРВ и SD карту


Постепенно приближаемся к реализации нашего нового проекта. Но пока приходиться все делать по шагам. Сегодня мы сделаем еще один шаг вперед: научимся подключать к ардуино часы реального времени и SD карту. И более того будем записывать данные на карту памяти. А начнем с подключения отдельных блоков.

Первый блок это ЧРВ (часы реального времени). На этот раз мы подключим пины следующим образом:  GND-GND, VCC-+5V, RST-5, CLK-7, DAT-6. При этом указанные пины (5,6,7) в скетче можно всегда заменить на другие.  Итак, модуль ЧРВ мы подключили…

Теперь давайте подключим SD карту. Для этого проще всего воспользоваться схемой, и тогда точно не запутаетесь в куче проводов идущего от модуля SDкарты. На всякий случай на схеме отобразим подключения обоих модулей.  Итак схему собрали, но перед тем как переходить к скетчу давайте установим библиотеки:   <SPI.h>, <SD.h>, и  <RTC.h>. Все эти библиотеки можно загрузить с Яндекс диска (по отдельности) или сразу общимархивом.

Теперь что будет собственно делать скетч. В нашем проекте мы будем вести несколько логов (общий и отдельные логии для записи времени и случайных чисел) на карте памяти. Кстати не забудьте сразу же на компьютере отформатировать карту в FAT32 (FAT16). По сути дела мы будем (в следующем проекте подключать датчики) записывать на карту памяти время, и случайные числа (пока еще не подключили датчик атмосферного давления). Скетч можно так же загрузить с Яндекс диска жми сюда....

#include <SPI.h>
#include <SD.h>
#include <RTC.h>
RTC    time;
//Set by default for the SD card library
//MOSI = Pin 11
//MISO = Pin 12
//SCLK = PIN 13
//We always need to set the CS Pin
const int CS_PIN  =10;
long datet;
//We set this high to provide power
const int POW_PIN =8;

void setup()
{
   time.begin(RTC_DS1302,5,7,6);
  Serial.begin(9600);
  Serial.println("Initializing Card");
  //CS pin is an output
  pinMode(CS_PIN, OUTPUT);

  //Card will draw power from pin 8, so set it high
  pinMode(POW_PIN, OUTPUT);
  digitalWrite(POW_PIN, HIGH);

  if (!SD.begin(CS_PIN))
  {
    Serial.println("Card Failure");
    return;
  }
  Serial.println("Card Ready");
}

void loop()
{
    int dataString = random (1000);
    // datet
  // time.gettime("d-m-Y, H:i:s, D");
    //Open a file and write to it.
  File dataFile = SD.open("log.csv", FILE_WRITE);
  if (dataFile)
  {
    dataFile.print(time.gettime("H:i"));
    dataFile.print(",");
    dataFile.println(dataString);
    dataFile.close();
  }
       
 // отделный лог для случ чисел

 dataFile = SD.open("ran.csv", FILE_WRITE);
  if (dataFile)
  {
        dataFile.println(dataString);
    
   dataFile.close();
 
  }

 // отдельный лог для времени
 dataFile =SD.open("tame.csv", FILE_WRITE);
  if (dataFile)
  {
        dataFile.println(time.gettime("H:i"));
    
   // dataFile.flush();
    
  }
       dataFile.close();
  delay(5000);
}


2 комментария:

  1. библиотеки которые вы предлагаете SD-master, SPI-master, RTClib-master. то есть с окончанием мастер это не проблема?
    в скетче инициолизация библиотек SD, SPI, RTC. а в папке libraries папки библиотек SD-master, SPI-master,

    ОтветитьУдалить
  2. не подскажешь как добавить матричную клавиатуру вместо датчика

    ОтветитьУдалить