esp eye - gfd-dennou-club/mrubyc-esp32 GitHub Wiki
ESP-EYE
-
ボードにはESP32チップ、2メガピクセルカメラ、マイク、8 MバイトのPSRAM、4Mバイトのフラッシュが搭載されている.
- 現時点では,カメラで撮影した映像を Linux サーバへ送信できるようにしている.マイクは未対応.
-
顔検出・認識プラットフォーム ESP-WHO に対応しているようだが,個人的には必要性を感じていないので ESP-WHO を試す予定は今のところ無い.
- 物体認識などの AI 的な操作は,送信先の Linux サーバで頑張る方が筋が良い気がしている.
利用の手順
menuconfig で ESP-EYE を使うために,PSRAM を有効にする. さらに,IRAM が不足するので,Wi-Fi の IRAM 利用を無効化する.
$ make menuconfig
+ mrubyc-esp32 Configuration
+ [*] USE ESP-EYE CAMERA (idf.py add-dependency "espressif/esp32-camera")
+ Component config
+ ESP PSRAM
+ [*] Support for external, SPI-connected RAM
+ Component config
+ Wi‑Fi
+ [ ] WiFi IRAM speed optimization <-- チェックを外す
+ [ ] WiFi RX IRAM speed optimization <-- チェックを外す
esp32-camera を有効にする
$ idf.py add-dependency "espressif/esp32-camera"
いったん clean してから make して ESP-EYE に書き込む
$ make clean
$ make flash spiffs monitor
利用
ESP-EYE は記録媒体を持たないため,mrubyc-esp32 では HTTP.capture_and_post メソッドを用意し, 写真撮影とサーバへのデータ送信を一度に行えるようにしている.以下の例では 1 分おきに写真をサーバに送っている.
wlan = WLAN.new()
wlan.connect("SSID", "PASS")
puts "ifconfig: #{wlan.ifconfig}"
puts "mac: #{wlan.mac}"
puts "ip: #{wlan.ip}"
url = "https://xxxxxx/~sugiyama/camera.php" #送信先サーバ
loop do
response = HTTP.capture_and_post(url) #撮影と送信を一度に行う
puts "Server responded: #{response}"
sleep 60
end
注:最初の 1 枚目は露光不足になりがちだが,2 枚目からは問題なくなる.
参考:Linux サーバでのファイル受け取り
以下は受け取ったデータを camera ディレクトリに保存するための PHP スクリプトの例である.
<?php
$upload_dir = "./camera/";
$file_name = "pic_" . date("Ymd_His") . ".jpg";
$file_path = $upload_dir . $file_name;
$jpg_data = file_get_contents('php://input');
if ($jpg_data) {
file_put_contents($file_path, $jpg_data);
echo "Success: Image received.";
} else {
header("HTTP/1.1 400 Bad Request");
echo "Error: No data received.";
}
?>