1 of 93

NMKCAM

EasyCam套件解說

1

2 of 93

直播教學錄影

2

3 of 93

3

4 of 93

課程規劃(4~6hr)

主題一:基本介紹及範例

  1. EasyCam擴充版
  2. 基礎串流
  3. 搭配SG90,臉部辨識門禁

主題二:TFT顯示及記憶卡

  • 搭配TFT顯示及即時拍照
  • 搭配LINE
  • MQTT顯示搭配Android APP
  • 搭配Colab 做影像辨識

主題三:WebSocket及Nodered

主題四:戰鬥吧甲蟲

4

5 of 93

傳統ESP32CAM

  • ESP32-CAM
    • ESP32/雙核/4M
    • 4M PSRAM
    • WIFI, BLE
    • OV2640(200W)
    • TF card(32G以下)
  • 缺少USB要在添購USB-TTL
  • 缺少類比感測(WIFI使用時)

5

6 of 93

安信可ESP32CAM腳位圖

6

7 of 93

關於Flash閃光燈

IO4

如果希望關閉,請使用digitalWrite(4,0);

7

8 of 93

小霸王NMKCAM

NMKCAM為小霸王改進(高仿)ESP32CAM的產品,主要不同點

-台灣品牌台灣設計

-安信可ESP32CAM同規格(尺寸、雙核心、4M flash 、4M PSRAM)

-RST按鈕改正面

-內建3D天線且自動跳外接天線

-移除IO4惱人閃光燈,改一般LED燈IO 33

-右上IO16改IO33(可在使用WiFi時作類比讀取)

8

9 of 93

NMKCAM腳位圖

9

10 of 93

EasyCam擴充版

  1. 帶USB Ch340可自動一鍵上傳,燒錄不再手忙腳亂
  2. 腳位全引出,可搭配其他IO
  3. 帶TFT螢幕(正反),顯示畫面
  4. 使用拍照按鈕(IO3),可拍照存放TF卡
  5. 電池管理,可直接充放電(選購)
  6. 外殼設計中...

10

11 of 93

11

12 of 93

12

13 of 93

正反皆可

13

14 of 93

檢查裝置管理員

win7 本機/右鍵/管理/裝置管理員

左下windows/右鍵/裝置管理員

把編號記起來

如果沒有,需要安裝ch340驅動程式

https://twgo.io/ch340

14

15 of 93

下載arduino 2.X版主程式

網址:https://www.arduino.cc/en/software

依照需要選擇版本,windows建議選擇MSI installer安裝

15

16 of 93

點選左側開發版圖示,輸入關鍵字:ESP32

請選擇1.0.4,然後安裝

因為最新版的臉部辨識錯誤的

16

17 of 93

安裝完畢後選擇開發版

1. 選擇上方開發版選擇器

2. 左側開發版輸入關鍵字� wrover

3. 右側選擇帶USB的裝置

4. 確定後即可

17

18 of 93

Hello World

void setup() {

// put your setup code here, to run once:

Serial.begin(115200);

}

void loop() {

// put your main code here, to run repeatedly:

Serial.println("我是大帥哥");

delay(1000);

}

18

19 of 93

LED燈測試

int ledpin=33; //NMKCAM=33, AIThinker=4

void setup() {

// put your setup code here, to run once:

pinMode(ledpin,OUTPUT);

}

void loop() {

// put your main code here, to run repeatedly:

digitalWrite(ledpin,HIGH);

delay(100);

digitalWrite(ledpin,LOW);

delay(100);

}

19

20 of 93

手動上傳

RST=>重開機,flash=>模式切換

1. FLASH按著不放+RST按一下放開

2. 放開FLASH => 燒錄模式

3. Arduino按燒錄

4. 看到100%

5. 再按RST開始執行

20

21 of 93

基礎串流

21

22 of 93

影像伺服器

  • 只限區域網路
  • 開啟檔案/範例

ESP32/Camera/CamerawebServer

  • 修改10及14行�將10加上註解,14刪除註解
  • 18、19行修改自己的WIFI設定
  • 修改記憶體的配置
    • 功能表的工具(Tools)將partition 改為Huge APP

22

23 of 93

修改記憶體配置

否則會出現記憶體空間不足

23

24 of 93

觀察IP訊息

上傳完畢,點右上角的放大鏡就是序列監控,就可以看到IP資訊

1. 如果是亂碼,就是鮑率要改115200

2. 如果沒有任何訊息,就代表訊息已經輸出,按RST重新開機重新輸出IP資訊

24

25 of 93

如果出現brown out的問題

代表供電不足,建議使用優質USB線,使用USB3.0孔

我們可以修改設定,強迫ESP忽略電流不足的問題

https://www.nmking.io/index.php/2022/12/15/esp32_ch1-27/

最上面加上

#include "soc/soc.h"

#include "soc/rtc_cntl_reg.h"

在setup內的第一行補上

WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector

25

26 of 93

傳輸效能

320x240 -> 25-30

640x480 -> 15-20

1024x765 -> 5-10

1280x1024 -> 3-5

若與上表有嚴重差異,請檢查網路或天線

26

27 of 93

內建臉部辨識

27

28 of 93

啟動臉部辨識功能

不過要使用這項功能必須將解析度降到QVGA

(320x240)

28

29 of 93

臉部偵測

29

30 of 93

臉部辨識

30

31 of 93

臉部註冊功能

31

32 of 93

臉部辨識的主要程式區

32

33 of 93

分辨白名單與入侵者

33

34 of 93

SG90模擬開門

將橘色訊號線接到IO2

伺服馬達測試

34

35 of 93

開門的程式碼

ledcSetup(7, 50, 8);//設定類比輸出頻道7,50Hz,256(2^8)的解析度

ledcAttachPin(2, 7);//將上述的類比輸出頻道7附加在GPIO2上

Serial.println("發現白名單,開門");

ledcWrite(7, 18.56);//轉到角度90

delay(5000);//開門五秒鐘就直接關門

Serial.println("關門");

ledcWrite(7, 6.4);//轉到角度0

35

36 of 93

加入SG90開門程式

這些數值的計算過程,可以參考:https://www.nmking.io/index.php/2022/12/17/761/

36

37 of 93

TFT顯示及拍照

37

38 of 93

安裝TFT螢幕程式庫:TFT eSPI及TJPG Lib

  1. 先安裝本公司客製化TFT_eSPI�- TFT_eSPI:https://twgo.io/glwbk�此Lib經過陳老師調校,可同時支援TFT及拍照,若已有安裝,須先刪除�
  2. TJpg_Decoder:https://twgo.io/jxyjz

38

39 of 93

下載範例程式

範例程式:https://twgo.io/axluo

拍照按鈕為IO3

程式模組化

可能遇到的問題

  1. 螢幕轉向(pRotation變數)
  2. 拍照太暗(增加等候時間)
  3. 記憶卡最高32G
  4. 記憶卡格式化為FAT32
  5. 使用太差的記憶卡,可能存檔錯誤或不完全

39

40 of 93

結合串流及TFT拍照

40

41 of 93

直接下載範例程式

結合串流及easycam TFT、拍照記憶卡存檔

範例程式:twgo.io/oxnjx

41

42 of 93

Line 通知

42

43 of 93

Line通知

由於SD卡較不方便,我們改用Line來接收

1. 先建立Line通知服務取得Token密碼

2. 燒錄PIR或超音波測試程式

3. 結合PIR拍照程式

43

44 of 93

串接LINE機器人

  • Line是台灣最流行的聊天軟體,因此如果IoT的一些裝置能透過LINE傳送就很棒了,簡單的來說,例如說當倉庫的溫度濕度或濕度超過某一溫度時,就傳訊到管理員手機LINE中進行提醒來查看,或者,家中窗戶被打開時,就拍照並傳訊到使用者LINE中。
  • LINE的自動化傳訊工具目前來說分成兩種,BOT跟Notify
  • LINE Notify 製作過程
    • 一、申請LINE Notify服務
    • 二、取得使用者Token
    • 三、自動化訊息

44

7

45 of 93

45

46 of 93

46

47 of 93

複製權杖

  • 請將權杖(密碼)複製後,存放在特定的記事本內,因為這個只會出現一次,無法從任何地方再查詢到
  • 不過真的不見了也沒關係,可以重新申請即可。

47

48 of 93

連接超音波

利用超音波測試距離

echoPin接在GPIO14

trigPin接在GPIO15

超音波測試程式

https://twgo.io/kjlqg

48

49 of 93

連接人體感測器

利用人體感測器SR501

out腳接在GPIO2

SR501測試程式

逆時針轉到底

twgo.io/qxvnj

49

50 of 93

人體感測器的幾個特點

  1. 有人時為1,沒人時為0
  2. 感測"變化",所以站著不動也是0
  3. 高電位後,需要一段約5秒的回覆時間,在這5秒內,只能輸出0

50

51 of 93

超音波,人體感測Line通知範例程式

超音波傳LINE範例程式:https://twgo.io/gxgmd

紅外線SR501傳LINE範例:https://twgo.io/fbteg

請注意,Line接收規定一小時內50張,且最大�800x600

記得改網路設定,並填入Line代號

51

52 of 93

問題1:傳送超過50張

LINE限制50張/小時

52

53 of 93

問題2:群組未邀請

進入群組後邀請LINE加入

53

54 of 93

MQTT串流

54

55 of 93

代理器、主題、推播、訂閱的關聯性

55

56 of 93

代理人Broker:郵局

主題Topic:租用郵政信箱名稱(可自訂)

56

推播

訂閱

訂閱

推播

三重郵局005號

三重郵局062號

57 of 93

也可由MQTTGO網頁觀看

網址:https://MQTTGO.io

也可以將目前檢視存檔htm

57

58 of 93

MQTT串流

範例程式(定時每0.5秒):https://twgo.io/ieswk

無TFT螢幕範例:http://twgo.io/lmzzw

安裝程式庫:PubsubClient (Nick)

Android 手機安裝

MQTT APP:twgo.io/ufhzo

APK備份:

58

59 of 93

使用HiveMQTT

範例程式:https://twgo.io/mtkvt

修改以下設定

59

60 of 93

利用Colab來接收並存檔jpg

60

61 of 93

BASE64格式MQTT影像傳輸

61

62 of 93

MQTT雙向互動

1. 遠距監看+遠距開燈:

2. 遠距監看+遠距開門關門SG90模擬:

62

63 of 93

WebSocket

(本章節已過期待更新)

63

64 of 93

WS串流

WS串流速度可以比MQTT更快,fps可以10以上,不過ESP32會變得很燙,不建議長期使用,或者降頻使用。

WS需要一個公開ip的Nodered網站,MQTT則不用,因為MQTT透過Broker轉接。

WS範例程式碼:https://twgo.io/ckjqq

64

65 of 93

Nodered設定

WS接收 轉換Base64 顯示dashboard

計算FPS 將FPS回傳當作確認訊息

JSON:https://twgo.io/bjqwx

65

66 of 93

甲蟲戰隊

66

67 of 93

益成老師

著名機器操控師~

設計雷切的甲蟲,結合32CAM的影像

可V7RC進行影像直播及操控

商品化中~

67

68 of 93

68

69 of 93

Teachable Machine

由Google 推出的AI辨識工具,協助無AI基礎使用者快速建立影像辨識的模型,並提供範例程式。

優點:快速體驗 缺點:只有分類器

69

70 of 93

平台:

網址:https://teachablemachine.withgoogle.com/

服務提供者:Goolge

特點:匯出成Tensorflow檔案,提供邊緣運算(樹莓派、Jetson Nano、Android、ESP32(Arduino)等)裝置使用

https://www.tensorflow.org/lite/microcontrollers?hl=zh-tw

70

71 of 93

新增一個計畫

71

72 of 93

選擇Image Project

72

73 of 93

模型訓練三個步驟

1.準備資料 2.訓練模型 3.查看結果

73

74 of 93

新增類別

預設只有兩類,如果要新增第三第四,點選下方的add a class

74

75 of 93

加入訓練資料:1.使用usb Webcam拍照(推薦)

75

76 of 93

加入訓練資料:2.插入現有圖片

76

77 of 93

開始訓練

會一直跳出不要切換頁面的按鈕,因為訓練是使用你電腦的資源,所以頁面必須開著,且必須在最上層(要你盯著它訓練)

77

78 of 93

訓練選項

世代:50

批次量:16

學習率:0.001

78

79 of 93

AI的迷思

學習率小(0.001)是因為不想讓AI太快背熟所有題目,讓AI慢慢學習。

因為AI只是一個很會背答案的乖學生,背的太熟,會導致她沒辦法回答不一樣的題目。

  • 學得快-->背答案-->考試成績好-->職場表現差

  • 學得慢-->愛思考-->考試成績差-->職場表現佳

79

80 of 93

查看訓練過程與結果

點選hood,開啟訓練結果 混淆矩陣 訓練過程

80

81 of 93

測試看看

81

82 of 93

匯出AI模型

js:網頁環境

ts:加速裝置

lite:邊緣裝置

82

83 of 93

請選擇tensorflow

如要在Python環境中使用,請選擇Tensorflow,並選擇keras架構後,點選Download my model即可下載。

下方有python範例指導您如何使用

83

84 of 93

搭配JS匯出模型(ESP32CAM用)

複製網址到記事本

84

85 of 93

下載的檔案內容

檔案為壓縮檔,一個為labels.txt,內容為分類器的tag

一個為keras的h5模型檔案,這個檔案未來我們會在python中呼叫

85

86 of 93

儲存專案

點選左上角功能鍵[三]

點選Save Project to drive

輸入檔名即可存在你的

Google硬碟中

副檔名:tm

86

87 of 93

使用Colab進行Teachable machine辨識

先用Webcam版本測試:https://twgo.io/saqrj

87

88 of 93

使用ESP32CAM來做TM

程式網址:https://twgo.io/lwlfa

88

89 of 93

雙軸雲台

89

90 of 93

MQTT立體雲台

90

91 of 93

雲台組裝(下)

底座安裝 底座組合SG90

91

92 of 93

雲台組裝(上)

上座安裝 結合底座

92

93 of 93

結合Colab做YOLO影像辨識

93