
Open log е устройство, което записва върху microSD карта, данните които получава серийно. MicroSD картата може да е с размер от 64MB до 16GB и трябва да е форматирана с FAT16 или FAT32. Потребителите на Linux среда трябва да създадат DOS файлова система след форматиране на картата.
Устройството се захранва с напрежение от 3.3 до 12V на пин VCC. Входното напрежение на RXI пин-а не трябва да надвишава 6V, а изходното напрежение на пин TXО няма да надвиши 3.3V. По подразбине, скоростта на серийната комуникация е 9600bps (8-N-1), но може да се промени на 2400, 4800, 9600, 19200, 57600 и 115200.
След включване устройството работи в един от следните режими:
Ако е в един от първите два режима, устройството ще запише всичко, което получи серийно на пин RXI, 2 секунди след като се влкючи към захранване. Получени данни, logger-а запазва в буфер с размер 512 символа. При напълване на буфера или ако устройството не е заето за 5 секунди или повече, съдържанието на буфера се записва върху microSD картата.
В режим за получаване на команди се преминава по подразбиране чрез изпращане на три символа ASCII 26 (CTRL+Z). Някой от команди са следните:
Списък с всички команди и повече информация ще намерите тук
Конфигуриране

Скоростта на серийната комуникация, начина за преминаване в команден режим и режима на работа при включване могат да се редактират на компютър от файла CONFIG.TXT.

9600 е скоростта на комуникацията,а 26 и 3 определят 3 символа ASCII 26 за преминаване в команден режим. 0 е за режим New File Logging при стартиране. За Append File Logging е 1, а за Command Prompt 2. При въвеждане на невалидни данни, например скорост различна от разрешените, устройството използва стойностите си по подразбиране (9600,26,3,0).
Пример
Програмата създава файл "test.log" на microSD карата и го изтрива преди това, ако е имало такъв на нея. Във файла се записва "This is a test !" и после се прочита от микроконтролера на Arduino. В Serial Monitor се извежда информация за хода на програмата.

В дадения по-долу пример е използвана библиотека за софтуерна серийна комуникация. Библиотеката може да изтеглите от тук. Разархивира се в libraries от "arduino-00xx" директорията.

Устройството се свързва към Arduino по следния начин:
VCC -> 5V GND -> GND RXI -> pin9 TXO -> pin8

Кодът, който трябва да се зареди на Arduino е следният:
/*
Описание:
* Създава файл на microSD картата в Open Log устройството
и го изтрива преди това, ако е имало такъв
* Записва текст във файла, прочита го и го извежда в Serial Monitor
* Сигнализира края на програмата със светодиод
Свързване:
* VCC -> 5V
* GND -> GND
* RXI -> pin9
* TXO -> pin8
* Tihomir Trifonov (11-2011)
* email:tisho@inbox.com
* с подкрепата на Robotev.com
*/
#include <NewSoftSerial.h> // библиотека за софтуерна серийна комуникация
#define RXPIN 8 // RXI е на пин 8
#define TXPIN 9 // TXO е на пин 9
NewSoftSerial logger(RXPIN,TXPIN);// създава обект за комуникация
int wait = 200;// 200ms закъснение
void setFile(char fname[40])
{
Serial.print("Creating file: ");
Serial.println(fname);
// влиза в команден режим
logger.print(26, BYTE);
logger.print(26, BYTE);
logger.print(26, BYTE);
delay(wait);// изчаква 200ms
// създава нов файл
logger.print("new ");// команда за нов файл
logger.print(fname);// име на файла
logger.print(13, BYTE);// enter
delay(wait);// изчаква 200ms
// добавя данните към него
logger.print("append ");//команда за избор на файл
logger.print(fname);// име на файла
logger.print(13, BYTE);// enter
delay(wait);// изчаква 200ms
}
void delFile(char fname[40])
{
Serial.print("Deleting file: ");
Serial.println(fname);
// влиза в команден режим
logger.print(26, BYTE);
logger.print(26, BYTE);
logger.print(26, BYTE);
delay(wait);// изчаква 200ms
// изтрива задения файл
logger.print("rm ");// команда за изтриване на файл
logger.print(fname);// име на файла
logger.print(13, BYTE);// enter
delay(wait);// изчаква 200ms
}
void readFile(char fname[40], int start, int length)
{
// влиза в команден режим
logger.print(26, BYTE);
logger.print(26, BYTE);
logger.print(26, BYTE);
delay(wait);// изчаква 200ms
// изпраща команда за четене на файл
logger.print("read ");// команда
logger.print(fname); // име на файла
logger.print(" ");// итервал
logger.print(start);// позиция от която започва да чете
logger.print(" "); // интервал
logger.print(length); // брой на символите за четене
logger.flush(); // изчиства вдхония буфер
logger.print(13, BYTE);//enter
delay(wait);// изчаква 200ms
}
void setup()
{
pinMode(RXPIN, INPUT);// RXI е входен пин
pinMode(TXPIN, OUTPUT);// TXO е изходен пин
pinMode(13, OUTPUT); //пин 13 е изходeн
Serial.begin(9600);// серийна коминикация с PC
logger.begin(9600);// комуникация с усройството на пинове 8 и 9
delay(3000);// изчаква 3 сек
delFile("test.log"); // изтрива файла
setFile("test.log"); // създава файл
logger.print("This is a test !"); //пише във файла
readFile("test.log",0,16);// чете 16 символа от началотo
char str[50];// масив от символи
char i = 0; // брояч
while(logger.available()>0)// проверява има ли данни за получаване
{
str[i] = logger.read(); // прочита първия символ
i++;// увеличава брояча
}
str[i]=0;// слага край на мисива
Serial.print("Read file:");
Serial.print(str);// извежда съдържанието в Serial Monitor
}
void loop()// безкраeн цикъл
{
digitalWrite(13, HIGH);// светва светодиод на пин 13
delay(1000); // изчаква 1 сек
digitalWrite(13, LOW); // загася светодиода
delay(1000);
}
|
След изпълнението на програмата, светодиодът, свързан на пин 13, започва на мига през 1 секунда.