Купил я однажды arduino. Сначала думал как это круто, могу собрать любое устройство. В итоге через пару дней я бросил эту игрушку. Были попытки собрать хоть что то не из списка примеров, но криворукость излечить не так уж и просто. Со временем пришло понимание, что устройство, собранное не из модулей с гостью проводков, а на печатной плате надежнее. Потом я узнал про launchpad. Параллельно я заказывал все что только можно. Все это барахло долго лежало в коробке, пока не была поставлена цель хоть как то оправдать затраты.
Устройство служит для мониторинга числа подписчиков в группах контакта и facebook. Результаты отображаются на экране 16*2. Думаю ничего сложного нет.

Есть два варианта развития событий:

  • Микроконтроллер отправляет запрос к API социальных сетей. Нужен доступ к сети, который на данный момент я предоставить не могу.
  • Микроконтроллер отображает информацию, которую ему отправляет другое устройство.

Я выбрал второй. Данные запрашивает всем знакомый MR3020 с OpenWRT на борту через микросхему Prolific PL-2303.

Сначала настроим роутер.

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

opkg install kmod-usb-serial-pl2303


Перезагружаем и находим устройство в /dev/. Радуемся успеху.

Я не люблю использовать vi, так что ставлю ещё и nano.

Использовать что то привычное не получится, так что bash нам с помощь. Применим все свои навыки 2 курса универитета.

wget -O json 'http://api.vk.com/method/groups.getById?gid=ID&fields=members_count'
json=`grep -o '"members_count":.*",' json | cut -d ',' -f1`
vk=${json:16}

wget -O json 'http://graph.facebook.com/ID'
json=`grep -o '"likes":.*",' json | cut -d ',' -f1`
fb=${json:8}

rm json
if [ ${#vk} = 3 ]
then
vk_out="0${vk}"
else
vk_out="$vk"
fi
if [ ${#fb} = 3 ]
then
fb_out="0${fb}"
else
fb_out="$fb"
fi
echo "${vk_out}${fb_out}" >> /dev/ttyUSB0


Несмотря на ужасный вид это работает. Правда вывод в микроконтроллер необычный.

Теперь напишем программу для микроконтроллера. Использовать я буду msp430g2553.

#include <LiquidCrystal.h>
LiquidCrystal lcd(P2_1, P2_0, P1_5, P1_4, P1_3, P1_0);

void setup(){
  delay(500);
  lcd.begin(16, 2);
  Serial.begin(9600);
}

void loop()
{
  int vk [4], fb [4];
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.write(" the user count ");
  lcd.setCursor(0, 1);
  lcd.write("FB ____  VK ____");
  while(true){
    if (Serial.available()>=8) {
      vk[0] = Serial.read()-'0';      
      vk[1] = Serial.read()-'0';      
      vk[2] = Serial.read()-'0';      
      vk[3] = Serial.read()-'0';
      fb[0] = Serial.read()-'0';
      fb[1] = Serial.read()-'0';
      fb[2] = Serial.read()-'0';
      fb[3] = Serial.read()-'0';      
      lcd.setCursor(0, 1);
      lcd.print("VK ");
      lcd.print(vk[0], DEC);
      lcd.print(vk[1], DEC);
      lcd.print(vk[2], DEC);
      lcd.print(vk[3], DEC);
      lcd.print("  FB ");
      lcd.print(fb[0], DEC);
      lcd.print(fb[1], DEC);
      lcd.print(fb[2], DEC);
      lcd.print(fb[3], DEC);
      while(Serial.available()){
        Serial.read();
      }
    }
    delay(500);
  }
}


И соберем на макетке.



Уже хоть какой то прогресс.

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



Осталось только проверить.



И отправить данные.



Далее думаю все понятно. Ставим задание в планировщик, разрабатываем план по выпрямлению рук и рисуем печатную плату, надеясь на успех.

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