Зоркий глаз. Собираем и программируем на Python устройство для видеонаблюдения - «Новости» » Самоучитель CSS
Меню
Наши новости
Учебник CSS

Невозможно отучить людей изучать самые ненужные предметы.

Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3

Надо знать обо всем понемножку, но все о немногом.

Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы

Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)

Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода

Самоучитель CSS

Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5

Новости

Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости

Справочник CSS

Справочник от А до Я
HTML, CSS, JavaScript

Афоризмы

Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы

Видео Уроки


Наш опрос



Наши новости

       
9-05-2023, 07:37
Зоркий глаз. Собираем и программируем на Python устройство для видеонаблюдения - «Новости»
Рейтинг:
Категория: Новости

Cython, бра­узер­ный Brython, поз­воля­ющий работать с Java Jython и мно­жес­тво биб­лиотек на все слу­чаи жиз­ни.

Но до срав­нитель­но недав­него вре­мени, если Python-прог­раммист хотел сде­лать девайс для умно­го дома или машин­ку на ради­оуп­равле­нии, он был вынуж­ден либо исполь­зовать Arduino и волей‑неволей учить C++, либо доволь­ство­вать­ся мик­рокомпь­юте­ром вро­де Raspberry Pi и искать (а порой и писать свои) биб­лиоте­ки для управле­ния теми или ины­ми китай­ски­ми модуля­ми. Иног­да вооб­ще при­ходи­лось соз­давать хто­ничес­ких чудовищ, под­клю­чая про­водом Arduino к Raspberry и опра­шивая дат­чики через serial port, но все рав­но при этом нуж­но было писать про­шив­ку для Arduino или дру­гого кон­трол­лера на C++.



Читайте также - Соль — незаменимое минеральное вещество для крупно-рогатого скота. Рацион животных, потребляющих растительный корм, содержит недостаточное количество натрия и хлора. Лизунцы по доступным ценам.

Но уже при­мер­но пять лет, если судить по дате моей статьи про MicroPython, мож­но занимать­ся DIY-про­екта­ми, не перек­люча­ясь с одно­го язы­ка прог­рамми­рова­ния на дру­гой. За это вре­мя мно­гое в мире MicroPython поменя­лось, выш­ли новые сбор­ки, появи­лись одни биб­лиоте­ки и пол­ностью перес­тали под­держи­вать­ся дру­гие, а Arduino офи­циаль­но при­няла MicroPython в свою эко­сис­тему.


С каж­дым годом чис­ло под­держи­вающих MicroPython плат рас­тет, но зна­читель­ный их про­цент все еще базиру­ется на ESP32. И дей­стви­тель­но, у это­го кон­трол­лера мас­са дос­тоинств, таких как встро­енные Wi-Fi и BLE, а еще, если говорить чес­тно, отсутс­твие кон­курен­тов в том же ценовом диапа­зоне. Но вот что каса­ется плат, базиру­ющих­ся на этом кон­трол­лере, — тут гла­за раз­бега­ются. Это и базовые вер­сии от WeMos, целые наборы и модули от M5Stack и LILYGO. Не отста­ют, кста­ти, и рос­сий­ские инже­неры: магазин iArduino не так дав­но выпус­тил свою отла­доч­ную пла­ту Piranha.


К тому же нель­зя забывать про Великий Китай­ский Ноунейм, которым завален «Али­экс­пресс». Кста­ти, в нашем про­екте мы будем исполь­зовать одну из таких плат — ESP32 Cam (я так и не смог разоб­рать­ся, кто же ее офи­циаль­ный про­изво­дитель). Как нес­ложно догадать­ся по наз­ванию, это модуль на осно­ве ESP32 с под­клю­чен­ной камерой, чаще все­го это OV2640, но если ты хочешь добить­ся луч­шего качес­тва, то мож­но под­клю­чить и дру­гие.


Зоркий глаз. Собираем и программируем на Python устройство для видеонаблюдения - «Новости»
Pinout Map

Вот спи­сок необ­ходимо­го ПО:



  • твоя любимая IDE для раз­работ­ки — я исполь­зую PyCharm;

  • ESP32 MPY-Jama — кросс‑плат­формен­ная IDE для MicroPython;

  • Telegram.


Итак, что же мы будем делать? Как ты уже, навер­ное, догадал­ся, судя по тому, что я выб­рал пла­ту с камерой, — сис­тему виде­онаб­людения. Но не прос­тую, с пос­тоян­ной тран­сля­цией, а с воз­можностью мгно­вен­но получить фотог­рафию. Управлять ею мы будем через Telegram-бота, а что­бы не приш­лось покупать ста­тичес­кий IP-адрес, для обще­ния бота и девай­са исполь­зуем про­токол MQTT.



info


MQTT (Message Queuing Telemetry Transport) — это лег­ковес­ный про­токол переда­чи сооб­щений, который исполь­зует­ся для обме­на дан­ными меж­ду устрой­ства­ми в интерне­те вещей (IoT). Он приз­ван обес­печивать надеж­ную связь меж­ду мно­жес­твом устрой­ств, которые работа­ют с огра­ничен­ными ресур­сами и могут быть под­клю­чены к интерне­ту толь­ко вре­мен­но или с пери­оди­чес­кими задер­жка­ми.


MQTT работа­ет по прин­ципу «изда­тель — под­писчик», где одни устрой­ства могут пуб­ликовать сооб­щения в топики (topics), а дру­гие под­писывать­ся на них, что­бы получать сооб­щения, которые им нуж­ны. Про­токол пре­дос­тавля­ет гиб­кий и прос­той спо­соб переда­чи сооб­щений, что дела­ет его иде­аль­ным для исполь­зования в сис­темах IoT, где устрой­ства могут иметь раз­ные фун­кци­ональ­ные воз­можнос­ти и огра­ниче­ния.



 

Настройка инфраструктуры


Пе­ред тем как непос­редс­твен­но перей­ти к прог­рамми­рова­нию, необ­ходимо нас­тро­ить так называ­емый MQTT-бро­кер. Это сер­вер, на котором рас­полага­ются топики и к которо­му под­клю­чают­ся под­писчи­ки и изда­тели.


Ра­зуме­ется, мож­но нас­тро­ить его самос­тоятель­но, нап­ример исполь­зуя Mosquitto. Но сто­ит толь­ко подумать, что, кро­ме самого бро­кера, при­дет­ся нас­тра­ивать сер­вер, бес­поко­ить­ся о его безопас­ности и так далее, как желание занимать­ся про­ектом куда‑то про­пада­ет.


Так что в качес­тве бро­кера мы будем исполь­зовать сер­вис shiftr.io. Его бес­плат­ного тарифа нам хва­тит с головой. Сре­ди дос­тоинств это­го сер­виса — инту­итив­но понят­ный интерфейс, под­робная докумен­тация и визу­али­зация всей сис­темы. На глав­ной стра­нице тво­его про­екта мож­но уви­деть, какие топики соз­даны и какое в них было пос­леднее сооб­щение, какие устрой­ства под­клю­чены, а ког­да нач­нутся рас­сылки пакетов — их тоже будет вид­но!


При­мер, как может все отоб­ражать­ся

Что­бы наши устрой­ства — телег­рам‑бот и ESP32 Cam — мог­ли вза­имо­дей­ство­вать с нашим MQTT-бро­кером, необ­ходимо выпус­тить токен. Это мож­но сде­лать в нас­трой­ках тво­его прос­транс­тва.


Пос­ле это­го в спис­ке токенов появит­ся такой эле­мент: mqtt://xakep:utBmi6LTWS7b4l5@xakep.cloud.shiftr.io, где xakep — это логин, а utBmi6LTWS7b4l5 — пароль. Запом­ни их, они нам еще при­годят­ся. Инфраструк­тура нас­тро­ена, мож­но прис­тупать к прог­рамми­рова­нию.


 

ESP32 Cam


Для прог­рамми­рова­ния ESP32 на MicroPython сущес­тву­ет нес­коль­ко IDE. Я оста­новил свой выбор на ESP32 MPY-Jama — опен­сор­сном решении со мно­жес­твом удоб­ных фун­кций.


Од­на из них — гра­фичес­кий интерфейс для ути­литы esptool. Которую, впро­чем, все рав­но нуж­но уста­новить через pip: pip install esptool.


Так выг­лядит заг­рузчик

Мы будем исполь­зовать спе­циаль­ную про­шив­ку для ESP32 Cam, она дос­тупна в этом GitHub-репози­тории. Ска­чива­ем файл про­шив­ки и, исполь­зуя IDE, про­шива­ем, не забыв перед этим отформа­тиро­вать Flash-память.


Те­перь мы можем под­клю­чить­ся и заг­рузить необ­ходимые фай­лы на нашу пла­ту. Для работы, кро­ме встро­енных биб­лиотек, нам понадо­бят­ся биб­лиоте­ки micropython-umqtt.robust и micropython-umqtt.simple. Их мож­но уста­новить с помощью встро­енно­го менед­жера пакетов upip. Для это­го под­клю­чись к интерне­ту через Wi-Fi, а затем выпол­ни сле­дующие коман­ды:


import network
import upip

Не забудь вставить имя своей Wi-Fi-сети и пароль от нее
def wifi_setup():
 global sta_if
 sta_if.active(True)
 sta_if.scan()
 sta_if.connect('SSID', 'PASSWORD')
 print("Waiting for Wifi connection")
 while not sta_if.isconnected(): time.sleep(1)
 print("Connected to WiFi")

wifi_setup()
upip.install("micropython-umqtt.robust")
upip.install("micropython-umqtt.simple")

Те­перь у нас все готово для работы. Что­бы облегчить задачу, я написал неболь­шую биб­лиотеч­ку — со все­ми необ­ходимы­ми фун­кци­ями. Давай пос­мотрим, что в нее вхо­дит.


Вна­чале импорти­руем необ­ходимые биб­лиоте­ки:




  • network — для под­клю­чения к интерне­ту;


  • umqtt.robust — для вза­имо­дей­ствия с MQTT-бро­кером;


  • camera - в этой биб­лиоте­ке находят­ся фун­кции для работы с камерой;


  • time — похож на одно­имен­ную биб­лиоте­ку из обыч­ного Python;


  • machine — это базовый модуль MicroPython, поз­воля­ющий управлять пинами.


Импорт библиотек
import network
from umqtt.robust import MQTTClient
import camera
import time
import machine

Инициализация глобальных переменных
sta_if = network.WLAN(network.STA_IF); Wi-Fi-модуль
camera.init(0, format=camera.JPEG, fb_location=camera.PSRAM) Непосредственно камера
mqtt_client = None Заготовка для MQTT-клиента
led = machine.Pin(4, machine.Pin.OUT) Встроенный светодиод

С одной из фун­кций биб­лиоте­ки мы поз­накоми­лись рань­ше, ког­да под­клю­чались к Wi-Fi, теперь рас­смот­рим осталь­ные.


Cython, бра­узер­ный Brython, поз­воля­ющий работать с Java Jython и мно­жес­тво биб­лиотек на все слу­чаи жиз­ни. Но до срав­нитель­но недав­него вре­мени, если Python-прог­раммист хотел сде­лать девайс для умно­го дома или машин­ку на ради­оуп­равле­нии, он был вынуж­ден либо исполь­зовать Arduino и волей‑неволей учить C , либо доволь­ство­вать­ся мик­рокомпь­юте­ром вро­де Raspberry Pi и искать (а порой и писать свои) биб­лиоте­ки для управле­ния теми или ины­ми китай­ски­ми модуля­ми. Иног­да вооб­ще при­ходи­лось соз­давать хто­ничес­ких чудовищ, под­клю­чая про­водом Arduino к Raspberry и опра­шивая дат­чики через serial port, но все рав­но при этом нуж­но было писать про­шив­ку для Arduino или дру­гого кон­трол­лера на C . Читайте также - Соль — незаменимое минеральное вещество для крупно-рогатого скота. Рацион животных, потребляющих растительный корм, содержит недостаточное количество натрия и хлора. Лизунцы по доступным ценам. Но уже при­мер­но пять лет, если судить по дате моей статьи про MicroPython, мож­но занимать­ся DIY-про­екта­ми, не перек­люча­ясь с одно­го язы­ка прог­рамми­рова­ния на дру­гой. За это вре­мя мно­гое в мире MicroPython поменя­лось, выш­ли новые сбор­ки, появи­лись одни биб­лиоте­ки и пол­ностью перес­тали под­держи­вать­ся дру­гие, а Arduino офи­циаль­но при­няла MicroPython в свою эко­сис­тему. С каж­дым годом чис­ло под­держи­вающих MicroPython плат рас­тет, но зна­читель­ный их про­цент все еще базиру­ется на ESP32. И дей­стви­тель­но, у это­го кон­трол­лера мас­са дос­тоинств, таких как встро­енные Wi-Fi и BLE, а еще, если говорить чес­тно, отсутс­твие кон­курен­тов в том же ценовом диапа­зоне. Но вот что каса­ется плат, базиру­ющих­ся на этом кон­трол­лере, — тут гла­за раз­бега­ются. Это и базовые вер­сии от WeMos, целые наборы и модули от M5Stack и LILYGO. Не отста­ют, кста­ти, и рос­сий­ские инже­неры: магазин iArduino не так дав­но выпус­тил свою отла­доч­ную пла­ту Piranha. К тому же нель­зя забывать про Великий Китай­ский Ноунейм, которым завален «Али­экс­пресс». Кста­ти, в нашем про­екте мы будем исполь­зовать одну из таких плат — ESP32 Cam (я так и не смог разоб­рать­ся, кто же ее офи­циаль­ный про­изво­дитель). Как нес­ложно догадать­ся по наз­ванию, это модуль на осно­ве ESP32 с под­клю­чен­ной камерой, чаще все­го это OV2640, но если ты хочешь добить­ся луч­шего качес­тва, то мож­но под­клю­чить и дру­гие. Pinout MapВот спи­сок необ­ходимо­го ПО: твоя любимая IDE для раз­работ­ки — я исполь­зую PyCharm; ESP32 MPY-Jama — кросс‑плат­формен­ная IDE для MicroPython; Telegram. Итак, что же мы будем делать? Как ты уже, навер­ное, догадал­ся, судя по тому, что я выб­рал пла­ту с камерой, — сис­тему виде­онаб­людения. Но не прос­тую, с пос­тоян­ной тран­сля­цией, а с воз­можностью мгно­вен­но получить фотог­рафию. Управлять ею мы будем через Telegram-бота, а что­бы не приш­лось покупать ста­тичес­кий IP-адрес, для обще­ния бота и девай­са исполь­зуем про­токол MQTT. info MQTT (Message Queuing Telemetry Transport) — это лег­ковес­ный про­токол переда­чи сооб­щений, который исполь­зует­ся для обме­на дан­ными меж­ду устрой­ства­ми в интерне­те вещей (IoT). Он приз­ван обес­печивать надеж­ную связь меж­ду мно­жес­твом устрой­ств, которые работа­ют с огра­ничен­ными ресур­сами и могут быть под­клю­чены к интерне­ту толь­ко вре­мен­но или с пери­оди­чес­кими задер­жка­ми. MQTT работа­ет по прин­ципу «изда­тель — под­писчик», где одни устрой­ства могут пуб­ликовать сооб­щения в топики (topics), а дру­гие под­писывать­ся на них, что­бы получать сооб­щения, которые им нуж­ны. Про­токол пре­дос­тавля­ет гиб­кий и прос­той спо­соб переда­чи сооб­щений, что дела­ет его иде­аль­ным для исполь­зования в сис­темах IoT, где устрой­ства могут иметь раз­ные фун­кци­ональ­ные воз­можнос­ти и огра­ниче­ния. Настройка инфраструктуры Пе­ред тем как непос­редс­твен­но перей­ти к прог­рамми­рова­нию, необ­ходимо нас­тро­ить так называ­емый MQTT-бро­кер. Это сер­вер, на котором рас­полага­ются топики и к которо­му под­клю­чают­ся под­писчи­ки и изда­тели. Ра­зуме­ется, мож­но нас­тро­ить его самос­тоятель­но, нап­ример исполь­зуя Mosquitto. Но сто­ит толь­ко подумать, что, кро­ме самого бро­кера, при­дет­ся нас­тра­ивать сер­вер, бес­поко­ить­ся о его безопас­ности и так далее, как желание занимать­ся про­ектом куда‑то про­пада­ет. Так что в качес­тве бро­кера мы будем исполь­зовать сер­вис shiftr.io. Его бес­плат­ного тарифа нам хва­тит с головой. Сре­ди дос­тоинств это­го сер­виса — инту­итив­но понят­ный интерфейс, под­робная докумен­тация и визу­али­зация всей сис­темы. На глав­ной стра­нице тво­его про­екта мож­но уви­деть, какие топики соз­даны и какое в них было пос­леднее сооб­щение, какие устрой­ства под­клю­чены, а ког­да нач­нутся рас­сылки пакетов — их тоже будет вид­но! При­мер, как может все отоб­ражать­сяЧто­бы наши устрой­ства — телег­рам‑бот и ESP32 Cam — мог­ли вза­имо­дей­ство­вать с нашим MQTT-бро­кером, необ­ходимо выпус­тить токен. Это мож­но сде­лать в нас­трой­ках тво­его прос­транс­тва. Пос­ле это­го в спис­ке токенов появит­ся такой эле­мент: mqtt://xakep:utBmi6LTWS7b4l5@xakep.cloud.shiftr.io, где xakep — это логин, а utBmi6LTWS7b4l5 — пароль. Запом­ни их, они нам еще при­годят­ся. Инфраструк­тура нас­тро­ена, мож­но прис­тупать к прог­рамми­рова­нию. ESP32 Cam Для прог­рамми­рова­ния ESP32 на MicroPython сущес­тву­ет нес­коль­ко IDE. Я оста­новил свой выбор на ESP32 MPY-Jama — опен­сор­сном решении со мно­жес­твом удоб­ных фун­кций. Од­на из них — гра­фичес­кий интерфейс для ути­литы esptool. Которую, впро­чем, все рав­но нуж­но уста­новить через pip: pip install esptool. Так выг­лядит заг­рузчикМы будем исполь­зовать спе­циаль­ную про­шив­ку для ESP32 Cam, она дос­тупна в этом GitHub-репози­тории. Ска­чива­ем файл про­шив­ки и, исполь­зуя IDE, про­шива­ем, не забыв перед этим отформа­тиро­вать Flash-память. Те­перь мы можем под­клю­чить­ся и заг­рузить необ­ходимые фай­лы на нашу пла­ту. Для работы, кро­ме встро­енных биб­лиотек, нам понадо­бят­ся биб­лиоте­ки micropython-umqtt.robust и micropython-umqtt.simple. Их мож­но уста­новить с помощью встро­енно­го менед­жера пакетов upip. Для это­го под­клю­чись к интерне­ту через Wi-Fi, а затем выпол­ни сле­дующие коман­ды: import network import upip

Теги: CSS

Просмотров: 480
Комментариев: 0:   9-05-2023, 07:37
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

 
Еще новости по теме:



Другие новости по теме: