Telegram камера на базі ESP32-CAM WiFi Module with OV2640 Camera

 З постійним вимкненням світла і роботою від автономних джерер живлення, в моєму випадку це Jackery Explorer 2000 PRO (яка, нажаль, немає ніяких інтерфейсів моніторингу, на відміну від новішої версії Plus). Мав гостру необхіднісь моніторити стан заряду, щоб за потреби вчасно вимкнути обладнання і не допустити аварійного завершення роботи. І на очі потрапив цей цікавий модуль, а саме ESP32-CAM WiFi Module with OV2640 Camera.

З цікавого в ньому те, що все для реалізації візуального моніторингу стану заряду акумуляторів (який відображається на дисплеї зарядної станції) в цьому модулі вже все є, що необхідно для реалізації цієї ідеї:

  • Двоядерний 32-розрядний процесор з низьким енергоспоживанням для прикладних процесорів
  • Основна частота до 240 МГц, обчислювальна потужність до 600 DMIPS
  • Вбудована SRAM 520 KB, зовнішня 2M PSRAM
  • Підтримка таких інтерфейсів, як UART/SPI/I2C/PWM/АЦП/ЦАП
  • Підтримка камер OV2640 і OV7670, вбудований спалах
  • Підтримка завантаження зображень WiFi
  • Підтримка TF-карти
  • Підтримка декількох режимів сну
  • Вбудований Lwip та FreeRTOS
  • Підтримка режиму роботи STA/AP/STA+AP
  • Підтримка мережі розповсюдження Smart Config/AirKiss в один клік


То ж взявши до озброєння ChatGPT, поставив за мету реалізувати можливість робити з певним інтервалом фото дисплея зарядної станції та відправляти мені через ТелеграмБот (який був створений перед цим і саму процедуру створення через BotFather описувати не буду). Також хотілося реалізувати використання режиму глибокого сну між фото, щоб на довше вистачило автономного живлення для модуля, та вимірювати стан того ж автономного живлення модуля і сповіщенням про це в Телеграм. ChatGPT швиденько накидав мені перший варіант коду, підтягнули перші бібліотеки, і на якомусь моменті (виправивши всі помилки в коді) вдалося отримати перше фото! Але потім фото не надходили, інколи проскакувало знову фото, переписувався код, ChatGPT все додавав нові методи логування щоб зрозуміти чому не працює, але результату ніякого. 
Оддин із багатьох подібних коментарів ChatGPT у спробі вирішити проблему.

Я вже почав думати що то апаратна проблема і вже майже закикув цю ідею. Але на якомусь моменті наткнувся на статтю https://randomnerdtutorials.com/telegram-esp32-cam-photo-arduino/ і вирішив дати ще один шанс ідеї, реалізувавши функціонал отримання фото по запиту в Телеграм.


Для повноцінної роботи важливо встановити всі необхідні бібліотеки та підтримку ESP32 в ARDUINO IDE, чи іншому середовищі де проходить написання коду. Файл з кодом доступний за посиланням.

Також цей код надав ChatGPT, на що він зробив наступні висновки:
Цей код добре структурований і має більше діагностичних повідомлень та управління з’єднанням. Це може бути причиною його стабільної роботи. Ви можете використовувати цей підхід для покращення вашого проекту, додаючи подібні функції та логування.
1. Ініціалізація камери:
• У цьому коді використовується конфігурація камери аналогічна тій, яку ми використовували, з тією ж частотою XCLK і параметрами.
2. Wi-Fi підключення:
• Код підключається до Wi-Fi з очікуванням підключення в циклі, як і в нашому випадку.
3. Відправка фото:
• Основна різниця полягає в реалізації функції sendPhotoTelegram(). В цьому коді:
• Створюється HTTP-запит з ручним управлінням заголовками і тілами.
• Відправка даних блокується в циклі, поки всі дані не будуть відправлені.
• Додається затримка після відправки для очікування відповіді від сервера.
• Логування кожного кроку з’єднання і відправки даних.
• Використовується коренева сертифікація для безпечного з’єднання.
4. Затримки:
• У цьому коді є затримка після кожного запиту, щоб уникнути перевантаження бота.
5. Діагностика:
• Код має вбудоване детальне логування, яке допомагає у діагностиці проблем на кожному етапі.
Ну і саме головне, що це робочий код, в якому потрібно лише прописати параметри вашої WiFi мережі, секретний ключ Телеграм та віш IDномер в телеграмі, щоб бот приймав від вас запити та відповідно виконував їх. І як результат відправляв фото з необхідними матеріалами, як у моєму випадку - фото дисплея з інформацією про стан заряду акумулятора.

В подальшому робочий код можна модифікувати під будь-які потреби та реалізувати бажаний функціонал, а для мене наразі головне, що необхідну функцію моніторингу модуль ESP32-CAM WiFi Module with OV2640 Camera виконує. 

Немає коментарів:

Дописати коментар