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 секунда.