Категории раздела |
|
Автомобильные гаджеты, ремонт...
[143]
|
Безопасность IT
[404]
|
Блоки питания, Power Banks, зарядки...
[508]
|
Видеорегистраторы
[186]
|
Гаджеты для спорта и здоровья...
[190]
|
Гаджеты, аксессуары...
[627]
|
Измерительная техника, инструменты
[437]
|
Накопители данных
[232]
|
Нетбуки, Ноутбуки, Ультрабуки
[689]
|
Мультиварки, блендеры и не только...
[162]
|
Планшеты
[764]
|
Радар-детекторы
[26]
|
Роботы-пылесосы
[37]
|
Своими руками
[360]
|
Сети, сетевые технологии, оборудование...
[273]
|
Смартфоны
[4959]
|
Фотокамеры, объективы, искусство фотографии..
[541]
|
Умный дом
[50]
|
Электронные книги
[101]
|
CB, LPD, PMR- связь...
[170]
|
DECT, IP-телефоны
[18]
|
Drones, boats, cars...
[108]
|
electric cars
[35]
|
GPS-навигаторы, трекеры...
[51]
|
Linux и не только
[3981]
|
mini computers и не только...
[409]
|
News IT, Это интересно, ликбез...
[1120]
|
Smart TV, UltraHD, приставки, проекторы...
[415]
|
Smart Watch
[268]
|
Sound: наушники, плееры, усилители...
[618]
|
Windows 10...
[301]
|
Windows 11
[37]
|
| |
|
|
| | |
| Главная » 2014 » Январь » 18 » Raspberry PI и JAVA: пристальный взгляд
08:08 Raspberry PI и JAVA: пристальный взгляд |
Raspberry PI и JAVA: пристальный взгляд
Недавно на хабрахабре вышла статья о java на raspberry pi, увидев название которой было много ожиданий, а под катом оказался банальный Hello World!
Дело в том, что ко мне как раз ехала моя малинка и хотелось получить ответы на следующие вопросы:
1. Сравнима ли скорость работы java на малинке и настольном компьютере?
2. Насколько удобно работать с java на raspberry?
3. Есть ли адекватные библиотеки для работы с GPIO?
Вот на эти вопросы я и попробую дать ответы в этой статье.
Кому интересно: добро пожаловать под кат (графики и фотографий обнаженной малинки там не будет)
Настройка доступа к Raspberry PI по ssh без пароля
Я очень люблю свой родной ноутбук и предпочитаю работать на других линукс-машинах через ssh.
Поэтому, в первую очередь, ради удобства настраиваем доступ к малинке по ключу.
Для этого на компьютере, с которого будет осуществляться подключение генерируем пару ключей при помощи команды ssh-keygen.
Затем копируем открытый ключ на малинку
$ scp /home/user1/.ssh/id_rsa.pub pi@raspberry_server:~/
$ ssh pi@raspberry_server
$ mkdir .ssh
$ cat ~/id_rsa.pub >> ~/. ssh /authorized_keys
Нажимаем Ctrl-D для выхода из сеанса. Пытаемся снова подключиться — профит. Подключение происходит без запроса пароля.
Заглядываем под капот
Прежде всего меня интересует, что же за оборудование мне досталось.
Можно, конечно, посмотреть в документацию, но всей правды она не всегда
скажет.
Поэтому, подключаемся и вводим команду
$ cat /proc/cpuinfo
Заинтересовала следующая строка:
Features: swp half thumb fastmult vfp edsp java tls
Что-ж уже интересно. Можно надеяться, что малинка меня порадует.
Установка JAVA SE Embedded
В предыдущей статье был описан способ установки openJDK. Кому интересно — посмотрит.
Но мне было интересно установить java от оракла (все равно java-код я
люблю компилировать на любимом ноутбуке в любимой IDE), что и я сделал:
Итак, идем на сайт оракла, скачиваем пакет java se embedded (ARMv6/7
Linux — Headless — Client Compiler EABI, VFP, HardFP ABI, Little Endian)
и заливаем его в папку /home/pi.
Заходим в консоль малинки и
1. Распаковываем архив в папку /opt
- ---------.. -
2. Далее добавляем путь к файлу java в переменную PATH и устанавливаем переменную JAVA_HOME
$ sudo chmod a+w /etc/profile
$ echo 'export PATH=/opt/ejre1.7.0_45/bin:$PATH' >> /etc/profile
$ echo 'export JAVA_HOME=/opt/ejre1.7.0_45' >> /etc/profile
$ sudo chmod a-w /etc/profile
Перезаходим по ssh и командой
-
убеждаемся, что виртуальная машина установлена.
Тестируем скорость работы
Теперь настало время выяснить насколько медленна/быстра java на малинке.
Тест не претендует на какую-либо всеобъемлющую объективность, а лишь
призван показать приблизительный порядок разницы скорости работы
виртуальной машины на малинке и настольном компьютере.
Для теста был выбран мой нетбук с процессором AMD E-300 APU с тактовой
частотой 1,3 Гц (т. е. Почти в два раза большей, чем у малинки).
Для теста используем программу поиска простых чисел при помощи решета Эратосфена.
Кому интересно, может посмотреть исходный код:
Итого:
Нетбук показал результат 89 секунд, а raspberry — 444 секунды.
Итого: на малинке почти в пять раз медленнее. Что-ж вполне ожидаемо учитывая разницу в тактовой частоте и архитектуре.
Неожиданность нас постигнет, если мы изменим тип чисел с long на int.
При этом нетбук показал результат 38 секунд, а raspberry — 65 секунд.
Я был приятно удивлен.
Вывод: скорость работы виртуальной машины на raspberry pi сравнима с таковой на настольных компьютерах.
Работа с GPIO
В одном из докладов на конференции Joker докладчики программировали GPIO на Java Embedded ME (micro edition).
Standart Edition, к сожалению, не имеет соответствующих классов, поэтому
я обратился к гуглу и нашел проект Pi4J (www.pi4j.com). Стабильная
версия сейчас 0.0.5, но проект развивается и версия 1 разрабатывается в
данный момент.
Тем не менее я рекомендую пользоваться стабильной версией, ибо на версии 1 у меня не все заработало.
Следует также отметить, что номера портов несколько отличаются от
стандартных, поэтому рекомендую ознакомиться с документацией на сайте
Pi4J.
Цепляю на первый порт светодиод, на второй кнопку, пишу следующий код:
public class Test1 {
public static void main(String[] args) throws InterruptedException {
GpioController gpioController = GpioFactory.getInstance();
GpioPinDigitalOutput gpioPinDigitalOutput = gpioController.provisionDigitalOutputPin(RaspiPin.GPIO_01, "MyLED", PinState.HIGH);
GpioPinDigitalInput gpioPinDigitalInput = gpioController.provisionDigitalInputPin(RaspiPin.GPIO_02,PinPullResistance.PULL_DOWN);
gpioPinDigitalInput.addListener(new GpioPinListenerDigital() {
@Override
public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent gpioPinDigitalStateChangeEvent) {
System.out.println("GPIO Pin changed" + gpioPinDigitalStateChangeEvent.getPin() + gpioPinDigitalStateChangeEvent.getState());
System.out.println("Sleeping 5s");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Unsleep");
}
});
while (true) {
gpioPinDigitalOutput.toggle();
Thread.sleep(500);
}
}
}
Собираю пакет, копирую jar файл и библиотеки на raspberry pi, запускаю и… Не работает.
Оказывается, для управления портами ввода/вывода необходимы права администратора.
Но для того, чтобы сработала команда
$ sudo java
в каталоге /bin должна быть символическая ссылка на исполняемый файл java-машины. Создаем ее:
ln -s /opt/ejre1.7.0_45/bin/java /bin/java
Снова запускаем — работает. Лампочка мигает, при нажатии на кнопку и
засыпании потока обработки лампочка мигать продолжает, т.е. обработка
события от кнопки запускается асинхронно.
Выводы:
1. Raspberry pi — это не игрушка, а компьютер с производительностью и возможностями, подходящими для решения многих задач.
2. Производительности виртуальной машины java сравнима с производительностью в настольных системах, хотя и несколько ниже.
3. Управление внешним оборудованием при помощи java и raspberry pi —
реальная и вполне легко решаемая задача (чем я и собираюсь заняться в
дальнейшем).
Спасибо за внимание)
http://habrahabr.ru/post/209470/
|
Категория: mini computers и не только... |
Просмотров: 847 |
Добавил: laptop
| Рейтинг: 0.0/0 |
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
| |
| | |
|
Волк слабее льва и тигра, но в цирке волк не выступает!
Волк - единственный из зверей, который может пойти в бой на более сильного противника.
Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...
Внимание! |
|
Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
| |
|
|