Если MSP430 LaunchPad лежит без дела. Термометр и кнопка. Часть 1: "сервер"
В качестве скромного начала на тему IT я решил рассказать о том, как я программировал микроконтроллер серии MSP430.
Многие помнят, что одно время совсем недорого, рублей эдак за 300 можно было купить замечательный набор Texas Instruments MSP430G2 LaunchPad.
В комплекте, например, v1.4 можно было видеть такую пару микросхем: MSP430G2211 и MSP430G2231.
Предполагаю, что найдутся те, кто "наигрались" и отложили устройство в сторону. Возможности этих вариантов микроконтроллеров скромные и ассемблер не так уж прост.
Не претендуя на звание гуру в программировании микроконтроллеров, хочу предложить им и всем заинтересовавшимся вариант использования MSP430G2 в качестве... комнатного термометра, подключаемого к компьютеру через USB, а также сигнализатор замыкания контактов кнопки.
В данной публикации показываю серверную часть. Для MSP430G2231, у которого объём flash-памяти программ всего 2048 байт, пришлось придумать компактный код, который:
- инициализирует устройство (setup): приветливо мигает светодиодами и настраивает последовательный порт на работу с нужной скоростью.
- обрабатывает вызовы функции-цикла (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 необходимую информацию и передаёт её пользователю или в Интернет.
Это работает! |
За считанные дни на мою страницу в Google+ подписалось более четверти тысячи человек! Значит The Viral Exchange работает! |
По любым вопросам: https://www.wowapp.com/w/zjorge/join
Ещё: http://vk.com/jorge
Больше вариантов: http://1spb.org
Правовая информация и политика блога golos.io/@jorge