Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

田畑を守る【メカ☆イノシシ】を作る!!

※日を跨いでしまいましたが、何とか書きました
※書き足りないので、随時加筆修正するかと思います
※害獣被害については、まだまだ勉強不足で、もし誤り等あればご指摘くださいmm

目的 (やりたいこと)

実家の畑を、害獣たちから守りたい!

背景・動機

コツコツと手間ひまかけて育てた農作物を、収穫直前にことごとく食い散らかすイノシシたち。
image.png
大切に育てたサツマイモもとうもろこしも、ほぼ全滅。
image.png
小規模とはいえ、「家族のために」と愛情込めて作った農作物を荒らされるのは、さすがにツラすぎます。

そこで、ない知識を振り絞りながら、私はIoTによる害獣対策の研究を開始しました。

作ったもの

9月にはじめた私の研究は、

  1. 監視カメラ設置 (広角・赤外線ナイトビジョン)
  2. 動体検知でLINE通知および録画
  3. 録画されたビデオ一覧をWebから整理可能
  4. SORACOM Airでどこでも持ち運び可能

と着実に進み、
研究からおよそ2ヶ月で
ある程度かたちになってきたので、ここらで軽くお披露目することにしました。

イノシシなどの害獣から、畑を守るための研究

その研究の中から生み出されたマシーン

それが・・・

image.png
害獣対策用の最終決戦兵器『メカ☆イノシシ!』!!!

image.png
最終とかいってますが、始まったばかりですし、兵器ですらないです。
また、メカ・イノシシというよりは、どうみても某アニメの伊之助ですが、一旦よしとします!

こいつで、まずは害獣たちを追い払う事にします。
IoT_RC-CAR_ino44_proto_02.jpg
うしろ姿がとってもキュート☆

で、どの辺が「メカ」かというと、タイヤが今流行り?の「メカナムホイール」なところでしょうか…
image.png
メカナムにしたことによって、シャーシはステアリング機構のない板1枚のシンプル構造になり、ラズパイ等のモジュールを設置しやすくなっています。
IoT_RC-CAR_ino44_proto_01.jpg
また、メカナムなので「向きを変えずに、前後左右斜めへ移動」でき、「その場でくるくる回転」もできます。
How a Mecanum Drive Works
image.png

で、「どうやってイノシシたち害獣を検知し、追い払うか」ですが、

まずより広範囲の索敵を可能にするため、カメラはメカイノシシ自体ではなく、別途設ける方式に一旦しました。
image.png
赤外線ナイトビジョン+広角カメラを高台に設置し、動きを検知すると、害獣を追い払うようにgRPCでメカイノシシへ指令(メッセージ)を送ります。
※気持ちてきには、獣の呼吸-漆ノ型『空間識覚』

メッセージを受け取ったメカイノシシは、害獣たちを威嚇します。
image.png

また、畑などは自宅から離れた場所にあったりするため、自宅のWiFi接続は期待できません
そこで、監視システムはSORACOM Airでネット接続するものとし、メカ・イノシシ側は監視システムをWiFiアクセスポイントにしてネットに接続します。

以上が、「メカ☆イノシシ」の概要です。
では、さっそく庭先に一晩設置して検証してみます。

↓こちらは検証前日の映像で、
2頭のイノシシが土を掘り返してミミズを食べている様子が映っています。
image.png
そして翌日、
庭先にメカ☆イノシシを設置し、イノシシたちが現れるを待ちます。
image.png
・・・が、

いつもなら毎晩のように来ていた害獣たちが、その晩に限っては、現れませんでした。

出来れば「メカ☆イノシシを見てビックリして、山へと逃げ帰る」ところを激写しかったところではありますが、残念ながらその映像を抑えることは出来ませんでした。

以上が、現時点での戦果です。

ぶっちゃけ何の成果も出せていませんが、まだまだ勝負はこれからです。

本当の決戦は、次の実りのタイミング「来年の秋」

これからも検証とバージョンアップを繰り返して、農作物家族の笑顔を守っていきたい所存です。

作り方

前振りが長くなりましたが、以下、作り方です。

作るデバイスは2種類。「監視システム」と「メカ☆イノシシ」です。
2台とも、RaspberryPi 4 を用いて作ります。

ハードウェアの準備

試行錯誤しているうちにメモが混沌と化してしまった為、過不足あるかと思われますが、概ね以下のハードを取り揃えました。

ハードウェア 数量 参考URL
RaspberryPi 4 2 https://www.amazon.co.jp/dp/B07WR5W2D6
ラズパイ4用電源アダプタ 1 https://www.amazon.co.jp/dp/B07DN5V3VN
microSDカード 2 https://www.amazon.co.jp/dp/B06XSV23T1
メカナムラジコン 1 https://ja.aliexpress.com/item/4000201150331.html
※ArduinoやHAT、PSコントローラーは使わない
モータードライバ 1 https://www.amazon.co.jp/gp/product/B0792WJS5H
SORACOMキット 1 https://www.amazon.co.jp/gp/product/B01G1GSYHW
イノシシの装甲 1 https://www.amazon.co.jp/gp/product/B07ZT2PZHD
モバイルバッテリー 1 https://www.amazon.co.jp/gp/product/B084WTJK62
電池ボックス(12V) 1 https://www.amazon.co.jp/dp/B01FSDL9VC
https://www.amazon.co.jp/dp/B019XL7XAG
https://www.amazon.co.jp/dp/B00NTCH52W
Raspi用広角赤外線カメラ 1 https://www.amazon.co.jp/gp/product/B074DY544H
赤外線ライト 1 https://www.amazon.co.jp/gp/product/B072J8JR6W
赤外線ライト用電源 1 https://www.amazon.co.jp/dp/B00AJDAPM6
ポータブルバッテリー 1 https://www.amazon.co.jp/gp/bestsellers/diy/6766139051/
※ラズパイ(5V-3A)と赤外線ライト(12V-2A)の電源が取れれば、ここまでゴツくなくても良いです

以下は必要に応じて。※ケーブル類は必須ですが、特に指定はないです

電子工作関連 参考URL
ラズパイ4ケース https://www.amazon.co.jp/gp/product/B07W5TVZXT
ジャンパケーブル https://www.amazon.co.jp/dp/B06Y48V9DL
15pinフラットケーブル https://www.amazon.co.jp/gp/product/B07PXJ7BGW
PHコネクタキット
※モーター用(他のメカナム買うなら不要かも)
https://www.amazon.co.jp/gp/product/B07DPT2R3F
シリコーンワイヤー(赤黒)
※18AWGの方が良いかも
https://www.amazon.co.jp/dp/B077XBWX8V
はんだスリーブ+ホットガン
※わりと便利
https://www.amazon.co.jp/gp/product/B083FJNWHH
https://www.amazon.co.jp/gp/product/B07VNG6YCS
ペンドライバー
※個人的2020年買って良かった大賞
https://www.amazon.co.jp/gp/product/B07KSBSK4Z

監視システム (親機)

image.png

メカ☆イノシシ (子機)

image.png

ソフトウェア関連

OS入りのSDカード作成方法は、割愛します。
デバイス2台の、それぞれのセットアップ内容は、概ね以下の通りです。

  • 監視システム (親機)
    • インターネットへの接続 (SORACOM)
    • WiFiアクセスポイント化 (hostapd, dnsmasq)
    • メカ・イノシシへの指令 (Python, gRPC)
    • カメラ映像リアルタイム配信、動体検知からのアクション (motion)
  • メカ☆イノシシ (子機)
    • アクセスポイント(監視システム)へのWiFi接続
    • 指令の待ち受け (Python, gRPC)
    • 指令を受け取った際のアクション (Python, GPIO)

以下、コードサンプルをそのまま記していきます。 (2020/12/14時点)

監視システム (親機)

▼まず、インストールすべきものを入れておく。

bash
$ sudo -i
# apt update
# apt install motion hostapd dnsmasq usb-modeswitch wvdial -y
# pip3 install grpcio-tools

▼SORACOM経由でのネット接続

事前に https://console.soracom.io/ で、アカウント登録及びSIMの登録を行っておく。
SORACOM-SIMの入ったUSBドングルがRaspiに刺さっていることを確認して、以下。

bash
# curl -O http://soracom-files.s3.amazonaws.com/connect_air.sh
# chmod 755 connect_air.sh
# mv connect_air.sh /usr/local/sbin/
# connect_air.sh
# curl -s https://gist.githubusercontent.com/ie4/b6257bcee81ea9f0c99fb61cef44dd63/raw/setup_raspi_soracom_ak020.sh | bash
# reboot

https://console.soracom.io/ へアクセスし、該当のSIMが使用中(オンライン)になっている事を確認。
該当のSIMのチェックを入れ、該当のSIMを右クリックして「オンデマンドリモートアクセス」を選択し、以降、そこで発行されたエンドポイント経由でSSH接続する。※ユーザー名は適宜変更する(デフォルトのままなら pi )
SORACOM経由にすると、当然費用が発生します月額数千円にいくような事態にはなっていませんが、ミドルウェアのインストールやライブ動画の視聴などには、一応ご注意ください

▼WiFiアクセスポイント化

SORACOM経由で作業。WiFiは不要になっているので、↓wlan0をAPとして使えるようにwpa_supplicant.confは退避してる。

bash
$ sudo -i
# mv /etc/wpa_supplicant/wpa_supplicant.conf{,.bkup}
# curl -s https://gist.githubusercontent.com/ie4/70000335c8c5d45e9e80c200d92430ef/raw/setup_raspi_ap.sh | bash
# vi /etc/hostapd/hostapd.conf
    # 最終行のWiFiパスワード部分: <PASSWORD> を適宜変更
# vi /etc/default/hostapd
    # DAEMON_CONF="/etc/hostapd/hostapd.conf"
# vi /etc/sysctl.conf
    # net.ipv4.ip_forward=1 # ←コメントアウトを外す
# vi /etc/dhcpcd.conf
    # 192.168.2.1/24 部分を既存のWiFiネットワークと被らないように調整(使ってなければそのままでOK)
# vi /etc/dnsmasq.conf
    # dhcpcd.conf の変更に合わせて dhcp-range=192.168.2.2,192.168.2.100 を変更
# 
# systemctl status hostapd
# systemctl unmask hostapd
# systemctl enable hostapd
# systemctl start hostapd
# systemctl status hostapd
# 
# vi /etc/rc.local
    # iptables-restore < /etc/iptables.ipv4.nat # ←を exit 0 の1行前に追記
# reboot

▼Motionの設定

# mv /etc/motion/motion.conf{,.bkup}
# curl https://gist.githubusercontent.com/ie4/22c6cdde7e15cc8b02d03b44a59e4beb/raw/motion.conf -o /etc/motion/motion.conf
# vi /etc/rc.local
    # motion & # ←を exit 0 の1行前に追記
# reboot

▼以下は、メカ☆イノシシが監視システムにWiFi接続できてから実行

bash
$ cat /var/lib/misc/dnsmasq.leases
    # メカ☆イノシシのIPアドレスが表示されるのでメモ
$ git clone https://github.com/ie4/ino44-grpc-sample.git /home/pi/grpc
$ cd /home/pi/grpc
$ python3 codegen.py
$ vi client.py
    # localhost 部分をメカ☆イノシシの正しいIPアドレスに書き換える

メカ☆イノシシ (子機)

bash
$ sudo -i
# apt update
# pip3 install grpcio-tools
# git clone https://github.com/ie4/ino44-grpc-sample.git /root/grpc
# cd /root/grpc
# python3 codegen.py
# iwlist wlan0 scan | grep SSID
    # 監視システムのSSID'ino44kanshi'があるのを確認する
# mv /etc/wpa_supplicant/wpa_supplicant.conf{,.bkup}
# curl https://gist.githubusercontent.com/ie4/bc1d97274d1f4f53d64197f26119832f/raw/wpa_supplicant.conf -o /etc/wpa_supplicant/wpa_supplicant.conf
# vi /etc/wpa_supplicant/wpa_supplicant.conf
    # <PASSWORD> を上記で設定したWiFiパスワードに変更
# vi /etc/rc.local
    # /usr/bin/python3 /root/grpc/server.py & # ←を exit 0 の1行前に追記
# reboot

余談

課題と今後

  • メカナムホイール、実はメカ・イノシシに向いてない問題
    • 実は、庭先などの芝生が生い茂っているような場所では、メカナムはタイヤが空回りする事が多く、期待しているような走行をしてくれません・・・(それを今言うのかよ、という感じですが…)
    • 当面は、踏み固められた砂利道か、舗装路での利用(パトロール)を進めようと考えています
    • また、キャタピラや多脚系のロボットも検討中です
  • なんと言ってもやっぱAIを使った物体認識を取り入れたい
    • motionの動体検知は、何気にチューニングが難しいところがある (仕方ないけど、害獣以外の検知が多い)
    • 害獣のみを検知し、アクションを実行できるようにしたい
  • メカ☆イノシシがまだまだLv.1状態
    • かの有名な「スーパーモンスターウルフ」くらい圧倒的なインパクトを獲得したい
    • メカ☆イノシシにもっと盛りだくさんなパワーアップアイテムを装備させて、光らせたり、叫んだり、害獣を追いかけまわしたりさせたい
    • 複数台のメカ☆イノシシを連なって走行させてみたい

害獣について

参考URL

ie4
IoTっぽい記事多めです。
https://ie4.me
iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com
https://iotlt.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away