Работая над проектом вездехода с трансляцией картинки пришлось задуматься, а правильно ли выбран основной язык разработки — Java. В последнее время Python приобрёл большую популярность и широко используется в приложениях машинного обучения и работы с видео на OpenCV. Это было решено проверить на простом получении картинки, т.к. данная часть является наиболее важной в моём проекте.

Читать далее…
Продолжая работать над своей задумкой, настало время получить доступ на Raspberry Pi к Bluetooth, используя Java. Bluetooth API для Java описан в спецификации JSR-82. Поиски в Internet выдали, что сейчас широко распространена библиотека BlueCove, которая реализует JSR-82. Её настройке и будет посвящена эта статья.

Читать далее…
Я уже описывал, как удалось запустить java веб-приложение с Websockets на Heroku. Этот подход основывается на запуске war файла со legacy кодом для tomcat 7. Для современных приложение такое решение не подходит. Хочется, чтоб код использовал JSR 365.

Читать далее…
Для реализации одной идеи возникла потребность разместить в интернете где-нибудь приложение с поддержкой Websockets, которое будет доступно из любого места. Главное условие — бесплатно. Ранее я уже делал вещание с камеры на websocket и java. Этот пример с небольшими изменениями я планировал попробовать разместить в глобальной сети. В качестве целевой площадки выбор пал на Heroku.com.

Читать далее…
В прошлой статье был описан способ вещания с веб-камеры через websocket. Сейчас пришла пора попробовать организовать вещание с микрофона. Архитектура примера будет такой же, как и прошлого:

Сигнал с микрофона поступает прямо на сервер, где он считывается и отправляется через websocket клиенту. В качестве сервера для обработки запросов WebSocket будет использоваться Jetty, поэтому вещание звука хорошо дополняет вещание картинки. Будет достаточно доработать прошлый пример.
Читать далее…
Есть много задач, в которых может понадобиться передать звук в виде массива байтов через сеть. Java сильно отстала в этом вопросе и давно не развивала свой API для работы со звуком. Это вызывает трудности при решение простых на первый взгляд вопросов.

На сайте уже есть пример про запись звука с помощью Java. Пример простой и пишет звук только в файл.
AudioSystem.write(m_audioInputStream, m_targetType, m_outputFile);
Читать далее…
После эксперимента с получением картинки с помощью Java и OpenCV пришла идея организовать вещание видео на сайте своей локальной сети. Но как это проще сделать?
Сейчас Javascript достиг того уровня, когда можно не ограничиваться простой перезагрузкой картинки на странице, а воспользоваться другими более удобными методами. Мой выбор пал на относительно молодую технологию WebSockets. Она позволяет организовать duplex соединение клиент-сервер, что уменьшает потери времени на установление подключения.
Последние версии Application и Web серверов для java приложений уже поддерживают спецификацию JSR356, которая определяет стандартный интерфейс для WebSocket. Поэтому в данном примере будут очень уместно этим воспользоваться на примере Jetty
Архитектура примера будет следующей:

Камера будет подключена к локальному серверу, который с помощью OpenCV будет забирать картинки и через WebSocket передавать в браузер.
Читать далее…
В одной из своих статей я приводил пример, как работать с камерой OV760. Для облегчения понимая, клиентская программа была реализована на Java, который проще в использовании, чем C++. Но это вызвало трудности у новичков. Ниже будет описано, как правильно запускать программку FrameGrabber из примера.

Читать далее…
После небольших экспериментов с детектором движения на java пришла пора детектировать звук. Для этой задачи можно воспользоваться Java SDK, пакет «javax.sound.sampled». Работа будет основана на примере записи звука в javа. Для этого придётся разобраться, какая информация приходит в AudioInputStream.

Читать далее…
После попыток получить картинку с помощью Arduino, возник вопрос, а как сделать то же самое, но на обычном компьютере. Пришлось перебрать несколько вариантов и остановиться на библиотеке OpenCV, которая в отличие от java media framework, активно развивается.

Библиотека оказалась полностью написана на c++, имеет реализации для разных платформ и предоставляет обертку для работы из Java через native интерфес.
Если у вас нет опыта работы с этом библеотекой, я бы советовал начать с добавления opencv в вашу IDE. Этот шаг приводиться не будет, т.к. он достаточно хорошо описан в документации. Далее можно попробовать получить картинку с камеры. После этого можно приступать к дальнейшему чтению статьи.
Читать далее…
В прошлой статье «Arduino Uno и камера ov7670 — пример использования» был описан способ, как получить картинку с OV7670 на компьютере через USB порт. Это хороший первый шаг, но пришло время попробовать что-то более практичное. Теперь картинка будет передана через bluetooth на Android телефон.

Читать далее…
В настоящий момент камера ov7670 является самым доступным модулем получения изображения для любителей Arduino. Когда-то она стоила около 12$, сейчас же её цена упала до менее 5$.
ov7670 (datasheet) имеет хорошие возможности для своей цены:
- различные разрешение VGA (640 х 480); — QVGA (320 х 240); — CIF (352 х 240); — QCIF (176 × 144);
- скорость передачи до 30 fps,
- несколько способов кодирование изображения RAW RGB, RGB 565/555, YUV/YCbCr 4:2:2
- интерфейс взаимодействия I2C.
Она была бы идеальна если бы не одна проблема — подключение и получение хотя бы тестового изображения, как и в любой мало-мальски сложной железке. В интернете много обсуждений, статей, рекомендаций, но четких шагов найти не получается: кто-то ленится их писать, кто-то выкладывает только схему или код, кто-то вообще ничего не выкладывает, а рапортует только об успешном подключении. Особо хочется отметить ComputerNerd, который выложил прекрасный пример с небольшим описанием, но для начинающего этого мало.
Данная статья призвана показать, как подключить, настроить и получить тестовое изображение с помощью небольшой программки на java, что станет превосходной отправной точкой для дальнейших экспериментов.
Читать далее…