Hello world для Cubieboard2

2014-04-01 15.46.26

Рассмотрим как быстро и просто задействовать GPIO на Cubie. Рассмотрим для начала ручное мигание светодиодиком, а потом уже и собственно напишем программу.
И так.
Хочу заметить, что мы так и остаемся на прошитом Android.

Описывать как подключить к монитору и воткнуть в USB мышку я рассказывать не буду.
Первым делом Вам надо будет скачать из Google Play или с любого другого ресурса Terminal Emulator
Для этой программы, есть Wiki, на случай вопросов. Вообще команды в андройде как и в линуксе. Так что знакомым будет просто. А для таких же как и я буду все рассматривать подробно.
Запускаем эту программу и пишем в ней первым делом

su

Это необходимо для переключения пользователя SwitchUser. После этого у вас место знака $ появится # перед курсором. Это значит что вы имеете права root пользователя.

По умолчанию прошивка собрана с этими правами, так что должно все работать, но если у вас нет root прав, то придется менять прошивку.

Далее пишем

# echo 214 > /sys/class/gpio/export
# ls /sys/class/gpio/
export 
gpio214
...
unexport

Первая команда задействует порт под номером 214, это порт PI13 находится он в левом верхнем углу (самый крайний порт). Следующей командой мы проверяем его наличие.

Названия портов Cubieboard2

Через 2 порта вниз GND. Собственно эти 2 порта нам и понадобятся сейчас.

Ваша задача подключить длинную ножку светодиода к порту PI13, а короткую через резистор номиналом около 330 Ом к порту GND.

Теперь рассмотрим саму суть этого и любого другого порта. Каждый порт может быть настроен как вход или как выход. По умолчанию все порты являются входами (такая настройка предотвращает случайное сжигание порта). Чтобы изменить направление порта на выход нужно написать команду

# echo out > /sys/class/gpio/gpio214/direction

соответственно, чтобы сделать порт входом надо заменить OUT на IN. Далее мы можем узнать состояние порта

# cat /sys/class/gpio/gpio214/value 
0

и изменить состояние порта

# echo 1 > /sys/class/gpio/gpio214/value 
1

Теперь записывая в порт 0 или 1 вы можете переключать светодиод подключенный на этот порт. При value == 0 через светодиод не течет ток, а при value == 1 через светодиод течет ток. Этот ток пропорционален  сопротивлению стоящему последовательно со светодиодом. Так что будьте внимательны! Если поставить слишком маленькое сопротивление, то можно сжечь порт, а если слишком большое то светодиоду может не хватить для эмиссии.

Далее некоторые полезные ссылки

Cubian wiki GPIO-Introduction Оригинал на английском.

habrahabr.ru Общая информация о плате

habrahabr.ru Сервер на такой плате

we.easyelectronics.ru еще один обзор с подключением через putty

likeaferrari.wordpress.com похожая статья на английском

How to access GPIO pins on a Cubieboard 2 инструкция от разработчиков платы

Space Surfers [RU]

icon

 

Описание

ПРОЛЕТИ так долго, как только сможешь!
УВОРАЧИВАЙСЯ от астероидов, космического мусора и космических станций!
ВЫПОЛНЯЙ квесты каждый день и получай монетки!
ПОКУПАЙ улучшения и новые корабли!

Помоги Починить спутники и выполняй задания.
★ Летай по безграничному космосу на различных кораблях
★ Красочная графика!
★ Полеты в подпространстве!
★ Мощный бластер, работает на энергии варпа!
★ Набор кораблей с индивидальными характеристиками!
★ Управление кораблем с помощью жестов!
★ Бросай вызов своим друзьям и помогай им!

Универсальное приложение, схожее с Subway Surfers , Temple Run .

Links

 Direct Download

Android app on Google Play gamedev

http://vk.com/space.surfers

https://www.facebook.com/groups/space.surfers/

http://devgamm.com/moscow2014/games/

 

 

Space Surfers

RU FR DE ES

icon

Description

SURVIVE as long as you can!
DODGE against asteroids, space debris and space stations!
COMPLETE the quests every day and earn the coins!
BUY new space ships and upgrades!

Help with repearing Sputniks and complete the quests.

★ Surf the limitless space on the different space ships
★ Colorful graphics!
★ Warp treveling!
★ Powerfull blaster, use the warp enegy to destroy asteroids!
★ Collection of space ships with different characteristics!
★ Controll the space ship by gestures!
★ Chalange your friends and help them!

Links

 Direct Download

Android app on Google Play
gamedev

http://vk.com/space.surfers

https://www.facebook.com/groups/space.surfers/

http://devgamm.com/moscow2014/games/

 

 

Bluetooth Чат на Android

Решил разобраться с работой блютуса и всеми его возможностями. Для этого надо найти расширение для as3 и пока что написать простенькое приложение. В общем, задача тривиальная, сделать чат через блютус.

А уж как применить возможности блютуса далее – это ваше дело. Как минимум 2 интересующих меня направления:

  • Связь P2P для чатов, пвп, и т.д.
  • Связь App – MC
    • RC control
    • Использование как периферийное устройство для телефона
    • Использование как  управляющий процессор

И так что нам понадобится

  1. Любая среда разработки Flash (Я люблю Flash Prof.)
  2. AIR 3.2 +
  3. Расширение для as3 (качаем здесь)

В ссылке по п.3, есть пример как связать Arduino и Ваш телефон, но мы решаем немного другую задачу.

Приложение

будет выглядеть вот примерно так,

Без имени-1

и на главную сцену добавим скрипт который я выложу в конце.

Сначала рассмотрим принцип соединения 2х блютус устройств на примере моей программы:

  1. Включаем блютус (в проге нет, подразумевается, что включили вручную, и кстати сделали видимым)
  2. Создаем блютус устройство ( var bluetooth:Bluetooth = Bluetooth.currentAdapter(); )
  3. Проверяем наличие на борту блютуса ( Bluetooth.isSupported() )
  4. Разрешаем подключение к нашему устройству ( bluetooth.serverMode = true; )
  5. Ищем все устройства поблизости ( bluetooth.scanForVisibleDevices(); )
  6. Ждем появления отклика устройств и записываем их в лист ( BluetoothScanEvent.BLUETOOTH_DEVICE_FOUND )
  7. Как только поиск закончен, даем пользователю выбрать устройство с которым хотим соединится
  8. Записываем выбранное устройство ( bDevice = event.target.n; )
  9. Подключаемся к выбранному устройству ( bDevice.connect();  )

Далее как только подключение осуществится (для этого на другой стороне пользователь должен проделать взаимную операцию) мы можем отправить сообщение.

Подводные камни

Самое главное, все над чем я так долго сидел.

1. Разрешение и extensionID в -app.xml

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

Очень важная хрень:

<extensions><extensionID>com.as3breeze.air.ane</extensionID>
</extensions>

2.Правильно подключить библиотеку. Надо не забыть подключить библиотеку в AS3 settings в закладке Library path, но и проверить ее наличие в Настройках публикации в списке Included files

Без имени-1

 

3. У меня лично программа не запускалась на компе, так что отладку приходилось делать чисто на планшете и телефоне

 

Приложение:

  • Проект для FP bluetooth
  • APK можно сразу потестить на телефоне app (не забудте поменять расширение на .apk)

Как раздел More games влияет на посещаемость игры

Чтобы понять какое влияние оказывает одна игра на другую (через часто встраиваемое окошко More Games в игру), надо Я отслеживал количество загрузок в день у довольно таки давно запущенной игры в момент запуска новой игры в которой есть окошко со ссылкой More Games.

Привожу график ежедневных загрузок основной игры

Снимок

 

Если принять что среднее значение было 50±19, то можно почитать насколько увеличился этот показатель за с момента запуска второй игры (последние 3 дня). Конечно, этот рост на уровне погрешности, но все же.

Дальше приведу несколько строк чисел:

  • Загрузок в день основной игры    
  • Загрузок в день новой игры  
  • Прирост загрузок 
  • Погрешность (%)
  • Соотношение загрузок новой к приросту старой (%)
Дальше приведу несколько строк чисел
day _
1 54 218 4 275 1.83
2 58 289 8 237 2.76
3 72 410 22 86 5.36
4 86 495 36 52 7.27
5 58
6 75
7 62
8 55
9 62
10 80
11 85
12 99
13 90
14 70
15 103
16 111
17 96
18 128
19 130
20 103
21 103
22 137
23 129
24 153
25 235
26 235
27 201
28 220
29 242 3835 192 5
30 192 3366 142 4.21

И того можно предположить что этот коэффициент будет в районе 5.2±5.21%, то есть на каждые 100 пользователей в одной игре через More Games приходит 3 пользователя в другую игру. Далее буду уточнять данные, до репрезентативной погрешности.

Начало. Стабилизированная платформа (из MultiWii 328P + HXT-900)

Привет, решил что пора использовать уже платку которая досталась мне случайно, да и повод есть.

2013-09-26 19.28.34

И так что такое MultiWii и что мы будем делать?

MultiWii 328P представляет собой контроллер мультикоптера с базовой инерциально-навигационной системой, который может быть запрограммирован соответственно вашим требованиям. Эта версия MultiWii контроллера имеет поддержку сателитных приемников DSM2*. С расширенными возможностями и возможностью полного программирования, это устройство может контролировать любой тип самолета. Это идеальный контроллер полета для ваших многороторных авиамоделей.

Вот, так пишут продавцы.

К плате написан прекрасный софт для настройки отладки и проверки всех его возможностей, взглнем на него.

Без имени-1

Подключив плату через USB надо не забыть поставить дрова на FTDI, хотя скорее они поставятся сами. Все что есть в проге делится на несколько разделов, кароче не паримся и жмакаем коннект (прога сама определит на каком COM порте сидит устройство). Самое веселое это закладка Realtime Data, после подключения в этой закладке отображаются значения всех датчиков которые стоят на плате и значения сервомашинок.

Вращая платку видно что показания меняются, это двольно таки весело, уже придумал много способов применения (вплоть до 3D очков с эффектом присутствия)

Конечно хотелось бы поюзать все его возможности, но начинать надо с малого.

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

Что нам нужно для этого?

  • 2 сервопривода (чем дорожже тем точнее будет держать, вообще то надо бы для съемки использовать качественные, но я беру какая есть) – от 60 рублей/шт
  • 1 плата multiwii 328p – от 800 рублей/шт
  • для конечной конструкции еще надо будет всяких уголков как из детского конструктора

Софт

  • все написано под ардуино так что качаем его
  • готовый проект на ардуино от производителя платы
  • GUI для платы

Что делать?

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

Открываем arduino, запускаем скачанный проект (MultiWii_2_1.ino), в открывшемся проекте открываем закладку config.h и в ней меняем несколько строк,надо снять коменты:

//#define CRIUS_SE // Crius MultiWii SE

самое главное, это выбрать устройство которое вы юзаете (это новая прошивка не та что была уже залита, так что вот)

/**************************    The type of multicopter    ****************************/
    #define GIMBAL
/************************************************************************************/

вот с такой строки – это разрешение использовать порты под дополнительные сервомашинки.

***********************          Cam Stabilisation             ***********************/
    /* The following lines apply only for a pitch/roll tilt stabilization system. Uncomment the first or second line to activate it */
    //#define SERVO_MIX_TILT
    #define SERVO_TILT
    #define TILT_PITCH_MIN    1020    //servo travel min, don't set it below 1020
    #define TILT_PITCH_MAX    2000    //servo travel max, max value=2000
    #define TILT_PITCH_MIDDLE 1500    //servo neutral value
    #define TILT_PITCH_PROP   14     //servo proportional (tied to angle)           
    #define TILT_ROLL_MIN     1020
    #define TILT_ROLL_MAX     2000
    #define TILT_ROLL_MIDDLE  1500
    #define TILT_ROLL_PROP    14

со строки #define SERVO_TILT и значения  TILT_PITCH_PROP, TILT_ROLL_PROP пригодятся для подстройки под каши серваки.

В закладке Output:

#ifdef GIMBAL
    servo[0] = constrain(TILT_PITCH_MIDDLE + TILT_PITCH_PROP * angle[PITCH] /6 + rcCommand[PITCH], TILT_PITCH_MIN, TILT_PITCH_MAX);
    servo[1] = constrain(TILT_ROLL_MIDDLE + TILT_ROLL_PROP   * angle[ROLL]  /6 + rcCommand[ROLL], TILT_ROLL_MIN, TILT_ROLL_MAX);

тут есть число 16 меняем на примерно 6, можно будет с ним поиграть потом тоже.

Еще в разделе Servo Refreshrates, можно задать частоту обновления сервоприводов, для аналоговых она 50 Гц, а вот цифровые могут и почаще.

Итак, все с конфигом, теперь надо сохранить проект, и залить его на контроллер, делается это так:

  1. Сервис -> Последовательный порт -> COM8 (у меня)
  2. Сервис -> Плата -> Arduino Nano /w ATmega 328

Далее жмем кнопку  загрузить, он компилирует проект и заливает его на плату. Теперь остается подключить к плате сервопривод на ногу A0 и A1 и отстроить значения для конкретной сервомашинки. (Не забывайте что Земля-Коричневый провод)

Еще полезные ссылки:

http://www.ixbt.com/digimage/gyro2.shtml - Применение для машины

http://www.rcgroups.com/forums/showthread.php?t=1710318 - Исходник

PS: Нашел интересный вариант GUI - https://play.google.com/store/apps/details?id=com.ezio.multiwii

 

PokemonQuiz (Угадай Покемона)

1024x500

Описание

Играйте и развивайтесь!
Это игра, где нужно угадывать названия покемонов по их изображениям. Если Вы любите покемонов то проверьте себя и узнайте как хорошо вы их знаете. На протяжении всей игры вам будет представлено множество различных уровней, каждый из которых содержит покемонов.

В игре 241 покемон первого поколения!
Для каждого покемона вы можете использовать подсказку .

ОСОБЕННОСТИ
- Угадывайте на русском языке
- 8 уровней!
- более чем ~ 240 покемонов
- для каждого покемона в викторине, есть подсказки, которые помогут вам помочь
- если не знаете что это за покемон, спросите у своих друзей

Ссылки

Direct DOWNLOAD

http://4pda.ru/forum/index.php?showtopic=502749

Android app on Google Play