Эта статья содержит описание, как создать устройство на основе Intel Edison, которое проверяет Twitter и меняет цвет шара Orbotix Sphero, если появляется новый твит с хэштегом #intelmaker. Дополнительно будет рассмотрен небольшой пример, который использует встроенный светодиод на плате при отсутствии шара Sphero.
![image](https://habrastorage.org/getpro/habr/post_images/79b/5b0/760/79b5b07606d431ae895c4b3f895d722a.jpg)
Несколько слов об Orbotix Sphero. Это роботизированный шар, внутри которого находится двигатель и подсветка. Им можно управлять через Bluetooth. Есть различные приложения и игры для телефонов, которые с ним работают.
В этой статье будет использована способность шара менять цвет. Итак, нам потребуется:
Эта часть содержит шаги для создания нового проекта в Intel XDK IoT Edition с кодом для обновления состояния шара Sphero.
1. В приложении Intel XDK IoT Edition выберите вкладку «Projects». Нажмите «Start a New Project».
![](//habrastorage.org/files/f55/d34/1da/f55d341da9f1440caefb16ea2d1c0a0f.png)
2. В секции «Internet of Things Embedded Application» нажмите «Templates»:
![](//habrastorage.org/files/b44/813/f2a/b44813f2a43c4266b4d9e21c5ef07dff.png)
3. Выберите любое приложение и нажмите «Continue».
![](//habrastorage.org/files/939/513/9ed/9395139ed6cb4709b583157d2f933c50.png)
4. В поле «Name your Project» введите имя вашего проекта и нажмите «Create».
![](//habrastorage.org/files/12d/d22/d66/12dd22d66a8e4285aa21d82de087b89e.png)
5. Откроется ваш новый проект. Будет показан файл main.js. Удалите все его содержимое и замените следующим кодом:
6. На левой панели выберите файл package.json. В секции «dependencies» добавьте все модули, которые потребуются в программе:
![](//habrastorage.org/files/939/724/087/939724087ac048c6b409089f4816ae52.png)
Эта часть описывает шаги по созданию нового Twitter-приложения и получения ключей, которые позволят вашему приложению взаимодействовать с Твиттером.
1. Зайдите на страницу приложений Твиттера «Twitter Apps», используя ваш твиттер-аккаунт.
2. Нажмите «Create New App». Откроется страница задания параметров нового приложения.
![](//habrastorage.org/files/67f/4ad/cb7/67f4adcb72b94370a11703eb8eeb361a.png)
3. На этой странице сделайте следующее:
a. В поле «Name» введите имя вашего приложения.
b. В поле «Description» введите описание.
c. Введите URL вашего сайта в поле «Website».
![](//habrastorage.org/files/b24/718/c16/b24718c160a54599bfb7bb4578c7fbd1.png)
4. Прочитайте условия использования, и если согласны, отметьте «Yes, I agree». Нажмите «Create your Twitter Application».
![](//habrastorage.org/files/559/d39/16e/559d3916e1524fbe86206fc916bb46e1.png)
5. Нажмите на вкладку «Keys and Access Tokens».
![](//habrastorage.org/files/6ce/00d/cd8/6ce00dcd8b0b4aafb2d81202744d9352.png)
6. В разделе настроек «Application Settings», скопируйте пользовательский ключ из поля Consumer Key (API Key) и секретный ключ из поля Consumer Secret (API Secret) и вставьте их в вашу программу редактирования текстов, например, Блокнот.
![](//habrastorage.org/files/ab2/594/c79/ab2594c79aa6422fb511b12dd35475a4.png)
7. В секции «Your Access Token» нажмите «Create my access token».
![](//habrastorage.org/files/0da/2a6/94d/0da2a694d8bb4e209aed68cacc2979cd.png)
8. Скопируйте токен из поля «Access Token» и секретный токен из поля «Access Token Secret» и вставьте в вашу программу редактирования текстов.
![](//habrastorage.org/files/3e6/524/2f7/3e65242f735b4b6ebae0797f05cca55e.png)
9. В приложении Intel XDK IoT Edition в файле main.js перейдите к строке, которая начинается с consumer_key. Вставьте настоящие ключи, которые вы ранее скопировали, в значение переменных consumer_key, consumer_secret, access_token_key и access_token_secret.
![](//habrastorage.org/files/e09/7cf/b40/e097cfb401d3454dbca481a7368ed2c1.png)
Подключаем плату Edison к Sphero, используя Bluetooth:
1. Подключитесь к вашей плате через окно терминала.
2. Чтобы активировать Bluetooth и просканировать доступные устройства, введите следующие команды:
3. MAC-адрес вашего Sphero должен быть на нижней части коробки в формате XX-XX-XX-XX-XX-XX. Если вы не можете найти MAC-адрес, сделайте следующее:
a. Введите команду:
b. Найдите ваш Sphero в списке и скопируйте MAC-адрес.
c. Введите команду:
4. Соедините вашу плату и Sphero, введя следующие команды:
MAC-адрес должен быть в формате XX:XX:XX:XX:XX:XX. Это создаст подключение к Sphero.
Теперь можно построить наше приложение и выгрузить его на плату. После выполнения следующих шагов цвет вашего шара Sphero будет изменяться при поступлении нового твита. В приложении Intel XDK IoT Edition нажмите иконку «Install/Build»
. Если будет задан вопрос выгрузить или построить проект «upload or build» выбирайте построить «Build».
Когда проект будет построен, появится сообщение об этом. Нажмите иконку «Upload»
, чтобы выгрузить проект на плату.
Нажмите иконку «Run»
, чтобы запустить ваш проект. Теперь ваш Sphero будет проверять Twitter раз в секунду и зажигаться на секунду синим, если кто-то сделает твит с хэштегом #intelmaker.
Дополнение от переводчика: если нет шара Sphero, можно сделать мигание встроенного светодиода на плате, который подключен к 13-му цифровому выводу. И чтобы чаще наблюдать это событие, можно сделать поиск какого-нибудь распространенного хэштега из Top’а, например #gameinsight.
В файле package.json достаточно добавить следующие зависимости:
![image](https://habrastorage.org/getpro/habr/post_images/79b/5b0/760/79b5b07606d431ae895c4b3f895d722a.jpg)
Несколько слов об Orbotix Sphero. Это роботизированный шар, внутри которого находится двигатель и подсветка. Им можно управлять через Bluetooth. Есть различные приложения и игры для телефонов, которые с ним работают.
В этой статье будет использована способность шара менять цвет. Итак, нам потребуется:
- Шар Sphero.
- Аккаут на Твитере.
- Настроенная и подключенная плата Intel® Edison. Для этого шага можно посмотреть следующие ссылки:
- Установленный и подсоединенный к вашей плате Intel® XDK IoT Edition. Getting Started with Intel® XDK IoT Edition on Intel® IoT Platforms.
Создание приложения
Эта часть содержит шаги для создания нового проекта в Intel XDK IoT Edition с кодом для обновления состояния шара Sphero.
1. В приложении Intel XDK IoT Edition выберите вкладку «Projects». Нажмите «Start a New Project».
![](http://habrastorage.org/files/f55/d34/1da/f55d341da9f1440caefb16ea2d1c0a0f.png)
2. В секции «Internet of Things Embedded Application» нажмите «Templates»:
![](http://habrastorage.org/files/b44/813/f2a/b44813f2a43c4266b4d9e21c5ef07dff.png)
3. Выберите любое приложение и нажмите «Continue».
![](http://habrastorage.org/files/939/513/9ed/9395139ed6cb4709b583157d2f933c50.png)
4. В поле «Name your Project» введите имя вашего проекта и нажмите «Create».
![](http://habrastorage.org/files/12d/d22/d66/12dd22d66a8e4285aa21d82de087b89e.png)
5. Откроется ваш новый проект. Будет показан файл main.js. Удалите все его содержимое и замените следующим кодом:
main.js
var twitter = require('mtwitter');
var colors = require('colors');
var moment = require('moment');
var spheron = require('spheron');
var sphero = spheron.sphero();
var spheroPort = '/dev/rfcomm0';
var COLORS = spheron.toolbelt.COLORS;
var newMessage = false;
var lastTweet = '21:35:5';
var twit = new twitter({
consumer_key : 'xxxxxxxxxxxxxxxxxxxxx',
consumer_secret : 'xxxxxxxxxxxxxxxxxxxxx',
access_token_key : 'xxxxxxxxxxxxxxxxxxxxx',
access_token_secret : 'xxxxxxxxxxxxxxxxxxxxx'
});
console.log('Starting'.cyan);
setInterval(function() {
twit.get('search/tweets', {q: '#intelmaker'}, function(err, item) {
console.log(item.statuses[0].created_at.substring(11, 18).cyan)
console.log(lastTweet);
console.log("From isNew(): ", newMessage);
if(item.statuses[0].created_at.substring(11, 18) === lastTweet) {
console.log("we here");
newMessage = false;
}
else{
newMessage = true
updateSphero(true);
lastTweet = item.statuses[0].created_at.substring(11, 18);
}
});
}, 1000);
function updateSphero(flag)
{
console.log('updating sphero');
sphero.on('open', function() {
sphero.setRGB(COLORS.RED, false);
setTimeout(function(){sphero.setRGB(COLORS.BLUE, false);}, 2000);
});
sphero.open(spheroPort);
}
6. На левой панели выберите файл package.json. В секции «dependencies» добавьте все модули, которые потребуются в программе:
"dependencies": {
"mtwitter":"latest",
"colors":"latest",
"moment":"latest",
"spheron":"latest"
}
![](http://habrastorage.org/files/939/724/087/939724087ac048c6b409089f4816ae52.png)
Twitter-приложение
Эта часть описывает шаги по созданию нового Twitter-приложения и получения ключей, которые позволят вашему приложению взаимодействовать с Твиттером.
1. Зайдите на страницу приложений Твиттера «Twitter Apps», используя ваш твиттер-аккаунт.
2. Нажмите «Create New App». Откроется страница задания параметров нового приложения.
![](http://habrastorage.org/files/67f/4ad/cb7/67f4adcb72b94370a11703eb8eeb361a.png)
3. На этой странице сделайте следующее:
a. В поле «Name» введите имя вашего приложения.
b. В поле «Description» введите описание.
c. Введите URL вашего сайта в поле «Website».
![](http://habrastorage.org/files/b24/718/c16/b24718c160a54599bfb7bb4578c7fbd1.png)
4. Прочитайте условия использования, и если согласны, отметьте «Yes, I agree». Нажмите «Create your Twitter Application».
![](http://habrastorage.org/files/559/d39/16e/559d3916e1524fbe86206fc916bb46e1.png)
5. Нажмите на вкладку «Keys and Access Tokens».
![](http://habrastorage.org/files/6ce/00d/cd8/6ce00dcd8b0b4aafb2d81202744d9352.png)
6. В разделе настроек «Application Settings», скопируйте пользовательский ключ из поля Consumer Key (API Key) и секретный ключ из поля Consumer Secret (API Secret) и вставьте их в вашу программу редактирования текстов, например, Блокнот.
![](http://habrastorage.org/files/ab2/594/c79/ab2594c79aa6422fb511b12dd35475a4.png)
7. В секции «Your Access Token» нажмите «Create my access token».
![](http://habrastorage.org/files/0da/2a6/94d/0da2a694d8bb4e209aed68cacc2979cd.png)
8. Скопируйте токен из поля «Access Token» и секретный токен из поля «Access Token Secret» и вставьте в вашу программу редактирования текстов.
![](http://habrastorage.org/files/3e6/524/2f7/3e65242f735b4b6ebae0797f05cca55e.png)
9. В приложении Intel XDK IoT Edition в файле main.js перейдите к строке, которая начинается с consumer_key. Вставьте настоящие ключи, которые вы ранее скопировали, в значение переменных consumer_key, consumer_secret, access_token_key и access_token_secret.
![](http://habrastorage.org/files/e09/7cf/b40/e097cfb401d3454dbca481a7368ed2c1.png)
Соединение
Подключаем плату Edison к Sphero, используя Bluetooth:
1. Подключитесь к вашей плате через окно терминала.
2. Чтобы активировать Bluetooth и просканировать доступные устройства, введите следующие команды:
rfkill unblock bluetooth
bluetoothctl
3. MAC-адрес вашего Sphero должен быть на нижней части коробки в формате XX-XX-XX-XX-XX-XX. Если вы не можете найти MAC-адрес, сделайте следующее:
a. Введите команду:
scan on
b. Найдите ваш Sphero в списке и скопируйте MAC-адрес.
c. Введите команду:
scan off
4. Соедините вашу плату и Sphero, введя следующие команды:
pair SpheroMacAddress
exit
rfcomm bind 0 SpheroMacAddress 1
MAC-адрес должен быть в формате XX:XX:XX:XX:XX:XX. Это создаст подключение к Sphero.
Выгрузка кода на плату
Теперь можно построить наше приложение и выгрузить его на плату. После выполнения следующих шагов цвет вашего шара Sphero будет изменяться при поступлении нового твита. В приложении Intel XDK IoT Edition нажмите иконку «Install/Build»
![](http://habrastorage.org/files/835/7cc/019/8357cc019d5049629d220f814ef4bbed.png)
Когда проект будет построен, появится сообщение об этом. Нажмите иконку «Upload»
![](http://habrastorage.org/files/1e2/fbf/71b/1e2fbf71ba304699aef3d7bf033b7082.png)
Нажмите иконку «Run»
![](http://habrastorage.org/files/4f9/aa0/67d/4f9aa067d7a54a2b867d727a8f94fe78.png)
Если нет шара Sphero
Дополнение от переводчика: если нет шара Sphero, можно сделать мигание встроенного светодиода на плате, который подключен к 13-му цифровому выводу. И чтобы чаще наблюдать это событие, можно сделать поиск какого-нибудь распространенного хэштега из Top’а, например #gameinsight.
main.js
var twitter = require('mtwitter');
var mraa = require('mraa');
var lastTweet = 'XX:XX:XX';
var myOnboardLed = new mraa.Gpio(13);
myOnboardLed.dir(mraa.DIR_OUT);
var twit = new twitter({
consumer_key : 'XXXXXXXXXXXXXXXXXXXXXXXXX',
consumer_secret : 'XXXXXXXXXXXXXXXXXXXXXXXXX',
access_token_key : 'XXXXXXXXXXXXXXXXXXXXXXXXX',
access_token_secret : 'XXXXXXXXXXXXXXXXXXXXXXXXX'
});
console.log('Starting');
setInterval(function() {
console.log('--------------');
twit.get('search/tweets', {q: '#gameinsight'}, function(err, item) {
if( item !== null )
{
currTweetTime = item.statuses[0].created_at.substring(11, 18);
if( currTweetTime !== lastTweet)
{
console.log( 'Have new message: ' + item.statuses[0].text);
lastTweet = currTweetTime;
updateLed();
}
}
});
}, 1000);
function updateLed()
{
myOnboardLed.write(1);
setTimeout(function(){myOnboardLed.write(0);}, 500);
}
В файле package.json достаточно добавить следующие зависимости:
"dependencies": {
"mtwitter":"latest"
}