ESP32を使用してAIカメラを作ってみる！しかも解析した結果をLPWA(LoRa)で送信してみる！

今回はあるお客様より「現場に設置されているデジタル表示器の値を事務所の机の上でも表示させたい！」とご要望を頂きました。

始めは監視カメラをつけようとしたのですが、色んな事情からそうするわけにもいかず、
AIカメラを設置して、事務所までLoRa通信でデジタル表示の値を送信することに！！

しかしいい感じのAIカメラが見つからず、あったとしても結構高い・・・
**よし！**
**それならESP32で作れば安くですむやん！！**

つーことでESP32でAIカメラを作成することにしました！！

## 開発環境
・Windows10
・Python 3.11.1
・ArduinoIDE　1.8.13

## ハードウェア
・PC
・Freenove ESP32-WROVER CAMボード
　https://www.amazon.co.jp/dp/B09BC5CNHM
・LoRaモジュール


## 環境構築
1、まずはPythonをインストールする。（ArduinoIDEは、既にインストールされているものとする）
https://pythonlinks.python.jp/ja/index.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1339052/f7040f55-0d67-8493-3fe8-f9bed4610ffc.png)

2、あとはダウンロードしたpython-3.11.1-amd64.exeを実行しインストールする。
　　※インストールの際に「Add Python 3.** to PATH」のチェックボックスがあるので、必ずチェックすること。

3、インストール完了後、コマンドプロンプトより「python --version」のコマンドを打って、
　　バージョンが正常に表示されればOK！

4、PowerShellでスクリプトの実行を許可する。スタートメニューから「Windows PowerShell」を
　　管理者権限で起動。起動後「Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force」を
　　実行する。

5、コマンドプロンプトを起動して「pip install djang」でDjangをインストール。

6、インストール後「python -m django --version」のコマンドを打って、
　　バージョンが正常に表示されればOK！

7、Cドライブ直下に「Django」のフォルダを作成し、ここを作業環境にする。

8、コマンドプロンプトを起動して、「Django」フォルダに移動。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1339052/c564434d-96a3-e820-c6c2-9560489087c2.png)

9、「python –m venv Django」コマンドで仮想環境を作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1339052/263344a5-2051-e965-1867-26bb13c0cab8.png)

10、「.\Django\Scripts\activate」仮想環境を起動。成功すると以下の画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1339052/581b3a04-84ee-7c28-c128-bbdc4474ce54.png)

11、「pip install django」コマンドを入力し、Djangoをインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1339052/476e6c70-c969-efa0-24a6-bafdb337fdb0.png)

12、「django-admin startproject cameraai」コマンドを入力し、「cameraai」のプロジェクトを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1339052/d092aa8e-cf5a-1f4b-2678-f7e8505b86f5.png)

13、作成した「cameraai」に移動して、コマンド「python manage.py runserver」を実行し、開発サーバを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1339052/f4b2c4cf-5fb9-c59f-6672-418563311957.png)

14、ブラウザのURLに「 http://127.0.0.1:8000/ 」を入力し、以下の画面が表示されれば成功です！
※Ctrl+cでWebサーバは停止します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1339052/cf1831d8-87e3-74b1-c06e-b9bbffe57efb.png)

15、Webアプリケーションを作成します。コマンド「python manage.py startapp cameapp」で
　　cameappフォルダが作成されます。

16、cameraaiフォルダのsettings.pyにcameappがあることを追記します。
```python settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #追加
    'cameapp',
]
```

17、cameraaiフォルダのurls.pyにドメイン名で接続したときは、cameapp/urls.pyで選択するように記載。
```python urls.py
from django.contrib import admin
from django.urls import path,include #includeを追加

urlpatterns = [
    path('admin/', admin.site.urls),
    #追加
    path('', include('cameapp.urls')),
]
```

18、cameappにurls.pyを新規作成し、以下のコードを書く。
```python urls.py
from django.urls import path

from . import views

urlpatterns = [
    path('camera', views.index),
]
```

続きは後半で