Если MSP430 LaunchPad лежит без дела. Термометр и кнопка. Часть 1: "сервер"

11 месяцев назад

В качестве скромного начала на тему IT я решил рассказать о том, как я программировал микроконтроллер серии MSP430.

Многие помнят, что одно время совсем недорого, рублей эдак за 300 можно было купить замечательный набор Texas Instruments MSP430G2 LaunchPad.

В комплекте, например, v1.4 можно было видеть такую пару микросхем: MSP430G2211 и MSP430G2231.
Предполагаю, что найдутся те, кто "наигрались" и отложили устройство в сторону. Возможности этих вариантов микроконтроллеров скромные и ассемблер не так уж прост.
Не претендуя на звание гуру в программировании микроконтроллеров, хочу предложить им и всем заинтересовавшимся вариант использования MSP430G2 в качестве... комнатного термометра, подключаемого к компьютеру через USB, а также сигнализатор замыкания контактов кнопки.

В данной публикации показываю серверную часть. Для MSP430G2231, у которого объём flash-памяти программ всего 2048 байт, пришлось придумать компактный код, который:

  1. инициализирует устройство (setup): приветливо мигает светодиодами и настраивает последовательный порт на работу с нужной скоростью.
  2. обрабатывает вызовы функции-цикла (loop): считывает состояние кнопки; мигает светодиодом, чтобы показать, что устройство работает; если зафиксировано изменение состояния кнопки, записывает байты для этого случая в порт, в противном случае в порт пишется вместе с контрольными суммами измеренное показание встроенного в микроконтроллер датчика температуры.
/*
  Thermometer. 

  Compile and program using http://energia.nu/
  Release 0101E0016 

  Copyright (c) 2015 Georgii A. Kupriianov
  See http://1spb.org for details
  
  Hardware Required:
  * MSP-EXP430G2 LaunchPad with MSP430G2231 
  * or same with thermometer and 2K memory or more
*/

int z = 0, yo = 0;
#define SERIAL_BUFFER_SIZE 4

void setup()  
{ 
 pinMode(GREEN_LED, OUTPUT);
 pinMode(RED_LED, OUTPUT);
 b2b(); b2b(); b2b(); b2b();
 delay(500);
 Serial.begin(4800);
} 

void bla(int w, int a){ digitalWrite(w, a);  delay(100); }
void blu(){ bla(GREEN_LED, HIGH); bla(GREEN_LED, LOW); }
void bru(){ bla(RED_LED, HIGH); bla(RED_LED, LOW); }
void b2b() { blu(); bru(); }
void wr(uint8_t h, uint8_t l)
{   
 Serial.write(l);      // lower byte           
 Serial.write(h);      // higher byte           
 Serial.write(h ^ l);  // checkxor           
 Serial.write(h & l);  // checkmask
}

void loop()  
{  
 int y =  digitalRead(PUSH2);
 if(z > 7) z = 0;
 if(z++ == 0) blu();  
 if(y == 0)
 {
   wr(0xFF, 0xFF);                 
   b2b(); 
   delay(200);
   yo = y;
   return;
 } 
 else if(yo == 0)
 {   
   wr(0xFE, 0xFF);  
   yo = y;
   return;
 } 
 uint16_t t = (uint16_t)analogRead(A10);
 uint8_t h = t >> 8, l = t & 0xFF;     
 wr(h, l);
 delay(777);  
}

А чтобы осуществить "быстрый старт" с этим кодом, надо всего лишь скачать и установить Energia версии 0101E0016.

Справка о разработке на MSP430G2 для этой среды разработки находится здесь

Припоминаю, что после установки драйверов виртуальный COM-порт определяется автоматически при подключении LaunchPad к компьютеру через USB, с которым он получает и электропитание.

Если понравилось, то в следующей части будет рассказано о программе-клиенте, которая получает от LaunchPad необходимую информацию и передаёт её пользователю или в Интернет.


Это работает!
The Viral Exchange
За считанные дни на мою страницу в Google+ подписалось более четверти тысячи человек! Значит The Viral Exchange работает!

По любым вопросам: https://www.wowapp.com/w/zjorge/join
Ещё: http://vk.com/jorge
Больше вариантов: http://1spb.org

Правовая информация и политика блога golos.io/@jorge


Авторы получают вознаграждение, когда пользователи голосуют за их посты.
Голосующие читатели также получают вознаграждение за свой голос.
Порядок сортировки:  Популярное
·

Скромный, потому и лежал долго без дела. Но при этом низкое энергопотребление, работает на частоте 16 MHz, что не так уж и мало.

·
·

Забавная вещица. У самого лежит пока Odroid C2. Совсем другие габариты и возможности ))

Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
jorge, vika-teplo
Поэтому я тоже проголосовал за него!
Если Вы проголосуете за этот комментарий, то поможете сделать "Доброго Кита" сильнее!

Какой-то underrated материал. Крупные рыбы, вы где?