Страницы

Поиск по вопросам

Показаны сообщения с ярлыком raspberry-pi. Показать все сообщения
Показаны сообщения с ярлыком raspberry-pi. Показать все сообщения

среда, 29 января 2020 г.

Какой Linux дистрибутив лучше выбрать для “smart” техники? [закрыт]

#linux #raspberry_pi #дистрибутив


        
             
                
                    
                        
                            Закрыт. На этот вопрос невозможно дать объективный ответ.
Ответы на него в данный момент не принимаются.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Переформулируйте вопрос,
чтобы на него можно было дать ответ, основанный на фактах и цитатах, отредактировав его.
                        
                        Закрыт 2 года назад.
                                                                                
           
                
        
Здравствуйте, скажите пожалуйста, какой лучше дистрибутив выбрать для портативной
техники, в которой всё работает в фоне без GUI, с чистой заточкой под требуемые операции,
без всякого ненужного барохла, которое будет грузить систему при загрузке и в процессе
работы. 

Кто уже запутался, на каких linux'ах работает Smart бытовуха : холодильники, роботы-пылесосы,
роутеры, кофеварки, чайники и т.д.?




По любому кто-то должен спросить, "а что у вас будет работать и на каком мини-компьютере",
отвечаю : 



  Будет работать java программа, которая будет использовать wifi модуль,
  соответственно будет активно работать с интернетом (tcp server/client) и локальной
сетью
  (ну локальная сеть нужна, только для web интерфейса, чтобы удалённо
  можно запускать и выключать), желательно ещё хотелось чтобы можно
  сделать вывод звука. И самое главное, мини-компьютером будет служить Raspberry
Pi 3 Model B



    


Ответы

Ответ 1



На разных бытовых приборах работает своя ОС. Даже не так: на приборах редко работают ОС. Обычно, простые контроллеры. Какой на каждом устройстве — нужно смотреть отдельно. Там же Вам напишут как взаимодействовать с сетью (если можно) через этот контроллер. На Raspberry Pi лучше всего ставить Raspbian, так как эта система "родная", соответственно Вы получите минимум проблем совместимости. Linux система сама по себе умеет очень много (работа с сетью, любой Web интерфейс и и.д.), да и имеет полную JDK.

Ответ 2



Огромный выбор здесь: https://habrahabr.ru/sandbox/66194/ Из них можно выделить: Raspbian Server Edition - облегченный стандартный дистрибутив Raspbian Minimal - полностью минимализированный дистрибутив Еще есть Prota OS, но это уже по сути готовое решение для умных устройств.

Ответ 3



Рассмотрите установку Ubuntu Core ссылка на офф.сайт. Очень много документации, заточен под IoT

пятница, 24 января 2020 г.

Смогу ли я сделать распознавание номеров на Raspberry PI первой модели и OpenCV?

#nodejs #opencv #raspberry_pi


Решил попробовать реализовать компьютерное зрение на Raspberry PI первой модели,
но не знаю, хватит ли мне железа для получения желаемого результата. Подскажите, на
что хватит железки? Смогу ли я сделать распознавание номеров, например или упрусь в
какой-то примитивный функционал?
    


Ответы

Ответ 1



RasPI содержит прекрасный интерфейс MIPI CSI для камеры, штатные камеры (приобретаются отдельно) позволяют получать видеопоток FullHD/30, HD/60 VGA/90. А вот процессора RasPI может не хватить. FullHD он точно не потянет, и вам точно FullHD не нужен. берите дополнительный длиннофокусный объектив для RasPI camera (на амазоне их куча), настройте фокус на определенную дальность - где номера проезжающих машин лучше всего видны снимайте видеопоток VGA для распознавания можно использовать OpenALPR, на RasPI будет конечно подтормаживать поскольку использует Tesseract. Но говорят терпимо. Можно взять платку получше чем малина - но обязательно с MIPI CSI и чтобы камеры под плату были готовые к подключению. Хорошее видео - https://www.youtube.com/watch?v=oBAOdj8HABc https://www.youtube.com/watch?v=ZcMPemzifbQ

понедельник, 6 января 2020 г.

Python, Flask и PiCamera

#python #raspberry_pi


Имеется PiCamera с RPi. Пытаюсь написать Python код для управления камерой с помощью
веб. В данный момент мой код выглядит вот так

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Test version
'''

from flask import Flask
from datetime import datetime
import io
import time
import picamera
import logging
import sys
import os

app = Flask(__name__)

logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s %(levelname)-8s '
                    + '[%(filename)s:%(lineno)s:%(funcName)s()] %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')

@app.route("/start", methods=['POST'])
def start_capture():
    with picamera.PiCamera() as camera:
        camera.resolution = (1920, 1080)
        camera.start_preview()
        time.sleep(300)


@app.route("/stop", method=['POST'])
def stop_capture():
    with picamera.PiCamera() as camera:
        camera.stop_preview()


@app.route("/screenshot", methods=['POST'])
def screenshot():
    with picamera.PiCamera() as camera:
        camera.capture('foo.jpg', use_video_port=True)


if __name__ == "__main__":
    app.run(host='192.168.0.198', port='8080')


Первое что не работает правильно - если я отправляю POST запрос к примеру на 192.168.192:8080/start,
запрос отправляется бесконечно. 
Далее есть после старта, отправить запрос на стоп, ничего не происходит. Где я что,
сделал не правильно? Есть ли способ, каким-то образом записать все в одну функцию,
но при это вызывать разным запросом определенные части функции?
    


Ответы

Ответ 1



Попробую угадать ответ по документации picamera. Согласно ей, при входе в with-блок камера включается, а при выходе выключается, то есть получается: @app.route("/start", methods=['POST']) def start_capture(): with picamera.PiCamera() as camera: # Включили камеру camera.resolution = (1920, 1080) camera.start_preview() # with закончился — выключили камеру Отсюда вывод: надо как-то держать камеру постоянно включенной независимо от http-запросов. Простейший способ — вынести camera в глобальную переменную, где она и будет лежать включенная независимо от http-запросов: from threading import Lock import picamera camera = None # Сразу после запуска камера выключена camlock = Lock() # Блокировка нужна, чтобы нельзя было # лезть в камеру из нескольких запросов одновременно # ... app = Flask(__name__) logging всё такое скопировать сюда из вопроса # @app.route("/start", methods=['POST']) def start_capture(): global camera with camlock: if camera: return 'already started' camera = picamera.PiCamera() camera.resolution = (1920, 1080) return 'ok' @app.route("/stop", methods=['POST']) def stop_capture(): global camera with camlock: if not camera: return 'already stopped' camera.close() camera = None return 'ok' @app.route("/screenshot", methods=['POST']) def screenshot(): # Переменную не меняем — global необязателен with camlock: if not camera: return 'camera is not started' camera.capture('foo.jpg', use_video_port=True) return 'saved to foo.jpg' if __name__ == "__main__": try: app.run(host='192.168.0.198', port='8080') finally: # При завершении работы http-сервера камеру стоит выключить with camlock: if camera: camera.close() Raspberry Pi не имею и проверить работоспособность кода не могу, но вроде не должен был накосячить. (Замечание 1: глобальные переменные — довольно опасная штука, и при увеличении сложности проекта от них можно начать получать множество проблем, когда они начнут меняться непредсказуемо и всё такое.) (Замечание 2: возможно, более хорошим решением будет запуск второго потока, который и будет обслуживать камеру (без глобальной переменной) и принимать сообщения-команды от http-сервера из первого потока вместо непосредственного доступа к камере, но это увеличивает сложность и не факт что целесообразно в данном случае.)

пятница, 29 марта 2019 г.

Какой Linux дистрибутив лучше выбрать для “smart” техники? [закрыт]

Здравствуйте, скажите пожалуйста, какой лучше дистрибутив выбрать для портативной техники, в которой всё работает в фоне без GUI, с чистой заточкой под требуемые операции, без всякого ненужного барохла, которое будет грузить систему при загрузке и в процессе работы.
Кто уже запутался, на каких linux'ах работает Smart бытовуха : холодильники, роботы-пылесосы, роутеры, кофеварки, чайники и т.д.?

По любому кто-то должен спросить, "а что у вас будет работать и на каком мини-компьютере", отвечаю :
Будет работать java программа, которая будет использовать wifi модуль, соответственно будет активно работать с интернетом (tcp server/client) и локальной сетью (ну локальная сеть нужна, только для web интерфейса, чтобы удалённо можно запускать и выключать), желательно ещё хотелось чтобы можно сделать вывод звука. И самое главное, мини-компьютером будет служить Raspberry Pi 3 Model B


Ответ

На разных бытовых приборах работает своя ОС. Даже не так: на приборах редко работают ОС. Обычно, простые контроллеры. Какой на каждом устройстве — нужно смотреть отдельно. Там же Вам напишут как взаимодействовать с сетью (если можно) через этот контроллер.
На Raspberry Pi лучше всего ставить Raspbian, так как эта система "родная", соответственно Вы получите минимум проблем совместимости. Linux система сама по себе умеет очень много (работа с сетью, любой Web интерфейс и и.д.), да и имеет полную JDK.

вторник, 19 марта 2019 г.

Смогу ли я сделать распознавание номеров на Raspberry PI первой модели и OpenCV?

Решил попробовать реализовать компьютерное зрение на Raspberry PI первой модели, но не знаю, хватит ли мне железа для получения желаемого результата. Подскажите, на что хватит железки? Смогу ли я сделать распознавание номеров, например или упрусь в какой-то примитивный функционал?


Ответ

RasPI содержит прекрасный интерфейс MIPI CSI для камеры, штатные камеры (приобретаются отдельно) позволяют получать видеопоток FullHD/30, HD/60 VGA/90. А вот процессора RasPI может не хватить. FullHD он точно не потянет, и вам точно FullHD не нужен.
берите дополнительный длиннофокусный объектив для RasPI camera (на амазоне их куча), настройте фокус на определенную дальность - где номера проезжающих машин лучше всего видны снимайте видеопоток VGA для распознавания можно использовать OpenALPR, на RasPI будет конечно подтормаживать поскольку использует Tesseract. Но говорят терпимо.
Можно взять платку получше чем малина - но обязательно с MIPI CSI и чтобы камеры под плату были готовые к подключению.
Хорошее видео - https://www.youtube.com/watch?v=oBAOdj8HABc https://www.youtube.com/watch?v=ZcMPemzifbQ

четверг, 14 февраля 2019 г.

Python, Flask и PiCamera

Имеется PiCamera с RPi. Пытаюсь написать Python код для управления камерой с помощью веб. В данный момент мой код выглядит вот так
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Test version '''
from flask import Flask from datetime import datetime import io import time import picamera import logging import sys import os
app = Flask(__name__)
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)-8s ' + '[%(filename)s:%(lineno)s:%(funcName)s()] %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
@app.route("/start", methods=['POST']) def start_capture(): with picamera.PiCamera() as camera: camera.resolution = (1920, 1080) camera.start_preview() time.sleep(300)
@app.route("/stop", method=['POST']) def stop_capture(): with picamera.PiCamera() as camera: camera.stop_preview()
@app.route("/screenshot", methods=['POST']) def screenshot(): with picamera.PiCamera() as camera: camera.capture('foo.jpg', use_video_port=True)
if __name__ == "__main__": app.run(host='192.168.0.198', port='8080')
Первое что не работает правильно - если я отправляю POST запрос к примеру на 192.168.192:8080/start, запрос отправляется бесконечно. Далее есть после старта, отправить запрос на стоп, ничего не происходит. Где я что, сделал не правильно? Есть ли способ, каким-то образом записать все в одну функцию, но при это вызывать разным запросом определенные части функции?


Ответ

Попробую угадать ответ по документации picamera. Согласно ей, при входе в with-блок камера включается, а при выходе выключается, то есть получается:
@app.route("/start", methods=['POST']) def start_capture(): with picamera.PiCamera() as camera: # Включили камеру camera.resolution = (1920, 1080) camera.start_preview() # with закончился — выключили камеру
Отсюда вывод: надо как-то держать камеру постоянно включенной независимо от http-запросов. Простейший способ — вынести camera в глобальную переменную, где она и будет лежать включенная независимо от http-запросов:
from threading import Lock import picamera
camera = None # Сразу после запуска камера выключена
camlock = Lock() # Блокировка нужна, чтобы нельзя было # лезть в камеру из нескольких запросов одновременно
# ... app = Flask(__name__) logging всё такое скопировать сюда из вопроса #
@app.route("/start", methods=['POST']) def start_capture(): global camera with camlock: if camera: return 'already started' camera = picamera.PiCamera() camera.resolution = (1920, 1080) return 'ok'
@app.route("/stop", methods=['POST']) def stop_capture(): global camera with camlock: if not camera: return 'already stopped' camera.close() camera = None return 'ok'
@app.route("/screenshot", methods=['POST']) def screenshot(): # Переменную не меняем — global необязателен with camlock: if not camera: return 'camera is not started' camera.capture('foo.jpg', use_video_port=True) return 'saved to foo.jpg'
if __name__ == "__main__": try: app.run(host='192.168.0.198', port='8080') finally: # При завершении работы http-сервера камеру стоит выключить with camlock: if camera: camera.close()
Raspberry Pi не имею и проверить работоспособность кода не могу, но вроде не должен был накосячить.
(Замечание 1: глобальные переменные — довольно опасная штука, и при увеличении сложности проекта от них можно начать получать множество проблем, когда они начнут меняться непредсказуемо и всё такое.)
(Замечание 2: возможно, более хорошим решением будет запуск второго потока, который и будет обслуживать камеру (без глобальной переменной) и принимать сообщения-команды от http-сервера из первого потока вместо непосредственного доступа к камере, но это увеличивает сложность и не факт что целесообразно в данном случае.)