Data Logger. MSP430G2553 and TinyCore Linux.

Измеряем напряжение и сохраняем значения на компьютере.

TinyCore and MSP430G2553
  Noritake Itron VFD Vacuum Fluorescent Display, LCD Compatible Design (HD44780), parallel interface, 20x2.

        Мы уже сделали следующее:

      1. Соединили LaunchPad (MSP430G2553) с индикатором и это начало работать сразу (ссылка);

      2. Сделали одноканальный вольтметр, который выводит данные на экран компьютера (ссылка);


 На данный момент в микроконтроллере MSP430G2553 уже "живет" программа, которая каждую секунду выдает информацию в последовательный порт. Проблема в том, что с ней делать. Хотелось бы записывать все во внутреннюю память и просматривать по необходимости. Но это сложно и объем внутренней памяти у MSP430G2553, мягко говоря, очень маленький.

 Можно ли записывать в SD Card или USB Flash Drive? Конечно можно, но за 10 минут этого не сделаешь. Да и не хочется.

 Есть значительно более простое решение. Linux позволяет легко получать дату через последовательный порт и записывать ее в файл. Это, как бы, часть операционной системы и ничего кроме самого Linux не понадобится.

 Потребуется: любой компьютер имеющий два/три USB входа и USB Flash Drive (>16Mb), с предустановленным TinyCore Linux.




 Каким образом Вы запустите TinyCore Linux (Live USB, Live CD или с харддрайва) - не имеет значения. На первом экране появится все, что нам необходимо. В данном случае нас интересует только "Terminal".




 Прежде всего нам необходимо определить на какой последовательный порт присядет наш MSP430, когда мы подключим его к компьютеру. Это не сложно. Инфо обо всем, что подключается и отключается от компьютера, прописывается в текстовый файл. Его можно посмотреть командой dmesg  без параметров. Результат команды dmesg  до и после подключения LaunchPad c MSP430G2553 к USB порту компьютера на картинке ниже.



 Отлично.
LaunchPad повисла на ttyACM0, а если быть более точным, то на /dev/ttyACM0

 ttyACM0  это файл в дирректории /dev. А раз так, то его можно прочитать командой cat




 cat читает файл и выводит его на экран. Если быть более точным, то он перенаправляет вывод на экран. То есть мониторит все, что приходит на последовательный порт ttyACM0

 Напомню, что в Windows под PuTTY это выглядело так.




ttyACM0  перенаправляется в файл так же просто. К команде которая уже работает

     cat /dev/ttyACM0
  необходимо добавить перенаправление в файл 
>> data.txt

 где
data.txt  имя файла в котором будут складываться данные. Имя и расширение значения не имеют. Знак >>  перенаправляет вывод в файл, и если такого файла не существовало, то создается новый. Если такой файл уже был, то он дописывается в конце.

 Результат
cat /dev/ttyACM0  >>  data.txt



     pwd - смотрим, где находимся;
     ls - какие файлы в дирректории - никаких;
     cat /dev/ttyACM0  >>  data.txt - перенаправляем вывод в файл;
     Ctrl ^ C - останавливаем;
     ls - проверяем файлы. Таки да, data.txt  появился;
     more data.txt - читаем содержимое файла;
     ll (ls -la) - смотрим размер файла (228 байт).

 В таком простом варианте даталоггера у Вас будет одно ограничение. Вы можете отправлять значения либо на экран, либо в файл. Если в файл, то во втором экране Terminal команда

     tail -f  data.txt

 будет мониторить файл data.txt и выводить на экран строки, которые в него дописываются.



 Что делать дальше каждый решает сам для себя. Я копирую файл на USB Flash Drive

     cp data.txt  /dev/sdc1

и переношу на компьютер, где есть MS Excel или OpenOffice. Обрабатываю уже там. Если в файле меньше 32000 строк, то проблем не возникает.

 Для примера, на картинке ниже, содержание файла записанного аналогичным образом.



 Это лог устройства, которое общитывает термоэлектрическую батарею. Комментарии в первой строке (это перавая строка, которую посылает msp430g2553 через последовательный интерфейс) - очень полезное дело, тк через месяц уже сам чёрт не разберет к чему отностятся эти цифры.



 Хочется сказать о одном негативном моменте. Последовательный интерфейс, на плате LaunchPad, не совсем стандартный. Не хочется искать "сало в колбасе", но это так.

 Что бы  LaunchPad передавал данные в Linux based computer через "штатный USB интерфейс" необходимо:
     1.Нажать и удерживать кнопку Reset на плате LaunchPad;
     2.Подключить запрограммированную LaunchPad через USB к Linux компьютеру;
     3.Через 10 секунд, когда компьютер определит наличие ttyACM0 , запустить cat     
/dev/ttyACM0
  или cat /dev/ttyACM0  >>  data.txt  
     4. И на 15-й секунде отпустить кнопку Reset на плате LaunchPad.
     (5)*. Каждый раз когда Вы запускаете cat  /dev/ttyACM0  или cat /dev/ttyACM0  >>  data.txt  процедуру 1-4 необходимо делать снова.

 Это связано с реализацией USB to Serial интерфейса на плате LaunchPad. К примеру, для Arduino такой проблемы не возникает.



 Дальше:  как сделать так, что бы с этим можно было работать.


 ***TinyCore Linux выбран потому, что он одинаково хорошо работает как на Pentium Core i7 с 96Gb, так и на Celeron 300 Mhz c 128Mb RAM.



12.27.2015  SKootS

_

Make a Free Website with Yola.