忍者ブログ

設備のマニアどっとこむ

設備、電子工作、DIYのブログ!

02/17

Sun

2019

ラズパイカメラからAWS S3への写真のアップロード

データセンター業界では最近AWSって大手クラウドとしてよく聞くけど、実際サービスってどんな感じかな~ って思ってました。 1年間は無料なので今回ラズパイとの連携をやってみることにしました。
まずはAWSのアカウントを取得してください。いきなりカード番号を聞かれますが大丈夫です笑
はじめにS3というストレージサービスでバゲットを作ります。
(ここに画像データを送ります)
 
あとは右上のタブからセキュリテイ認証を選択して
アクセスキー (アクセスキー ID とシークレットアクセスキー)を取得します。
(ここでコピーしておいて下さい)
あとでラズパイ上で使います。
今度はユーザーと紐づけていきます。
AWS S3FullAccessのポリシーをアタッチしてください。
あとはラズパイの準備!
必要なパッケージをインストールしていきます。
pip install boto3
pip install awscli
あとはアクセスキー ID とシークレットアクセスキーを設定していくのですが、
ここでエラーが出ることがあります。
aws configure
AWS Access Key ID [None]: ***********
AWS Secret Access Key [None]: ***********
Default region name [None]: ***********
Default output format [None]: json
configureのコマンドが見つからないといった症状がでればこちらでインストールしてください。
pip install awscli --upgrade
画像をアップロードするコードです。
BUCKET_NAME = '*******'はS3で作成したバケット名をいれて下さい
import sys
import threading
import boto3
# boto3 (.aws/config)
BUCKET_NAME = '*******'
class ProgressCheck(object):
    def __init__(self, filename):
        self._filename = filename
        self._size = int(os.path.getsize(filename))
        self._seen_so_far = 0
        self._lock = threading.Lock()
    def __call__(self, bytes_amount):
        with self._lock:
            self._seen_so_far += bytes_amount
            percentage = (self._seen_so_far / self._size) * 100
            sys.stdout.write(
                    "\r%s / %s (%.2f%%)" % (
                        self._seen_so_far, self._size,
                        percentage))
            sys.stdout.flush()
def UploadToS3():
    # S3Connection
    s3 = boto3.resource('s3')
    s3.Object(BUCKET_NAME, 'test.jpg').upload_file('test.jpg')
UploadToS3()  
これでtest.jpgをアップロードできます。S3で確認できました。


もしエラーになることがあればこちらのコマンドでアクセスキー ID とシークレットアクセスキーを設定してみてください(自分はここでハマりました・・)
aws configure set aws_access_key_id AKIA****************
aws configure set aws_secret_access_key ***************
自動でアップロードをするなら
raspistill -w 480 -h 360 -n -o test.jpg
などと絡めてシェルスクリプトをcrontabに登録しておけば定期投稿できます。

ちなみにAWSはアプリもあるので携帯でも見れます!!
(S3などのサービスに限定されますが)


ラズパイでIotをやるならAWSは要チェックですね…
IoT coreとかも手を出していこうかと・・。
 










拍手[0回]

PR

02/09

Sat

2019

ラズパイで庭の野良猫退治

最近家の庭の野良猫がひどい。 ベビーカーに放尿するわ、コケ庭は荒らすわで困っていた。
以前の記事「庭に来る猫対策」で、OpenCVで猫の顔を特定するというのをやったんだけど、猫の顔をカメラで認識するだけで特にその後はアクションしていなかった。

今回はもう一歩すすんで猫対策をしてみようと思う。猫を認識したら水をかけてみることにした。

そもそも猫に水なんてかけていいのかな? 虐待にならないか心配なので区のホームページを見てみた。

http://www.city.ota.tokyo.jp/seikatsu/hoken/pet_dog_cat/aigo/hun.html

虐待にならない範囲であれば水はかけてもいいらしい。

ラズパイでは5Vか3.3Vしか使えないのでUSB出力からポンプで水を出すことにした。




ラズパイでUSBをON、OFするのには以下のコマンドでできる。

sudo hub-ctrl -b 1 -d 2 -P 2 -p 0

最後のpのあとの数字を0にするとOFF、1にするとONになる。

sudo hub-ctrl -b 1 -d 2 -P 2 -p 1

あとでpythonで使用するためとりあえずシェルスクリプトにしておきます。

usbon.shがON
usb.shがOFF  

これを呼び出してUSBをON、OFFしていきます。 ここで気を付けなければいけないのですが、OpenCVでUSBカメラを使用すれば当然USBをOFFしたときにフリーズしてしまうのです。
(個別にUSBポートをOFFするのは断念してしまった・・。)

そこで今回、夜間使用することもあってか赤外線カメラを使用することにした。
USBではなく、ラズパイカメラ用のケーブルを使うのでUSBを気にせず使えます。


ラズパイとモバイルバッテリーをくっつけるとこんな感じです。


ラズパイカメラを使うにはpicameraのインストールが必要です。

pip install picamera

↓夜の庭でも画像はばっちり。


続いてコードです。


猫の学習モデルはこちらの記事を参考にしてください。
この行でフルパス指定してください →  '/home/pi/opencv-3.1.0/data/haarcascades/cascade.xml'


import numpy as np
import sys
from picamera.array import PiRGBArray
from picamera import PiCamera
import cv2
import time
import os
FRAME_W = 800
FRAME_H = 800
os.system('sudo sh usb.sh')
cascPath = '/home/pi/opencv-3.1.0/data/haarcascades/cascade.xml'
faceCascade = cv2.CascadeClassifier(cascPath)
camera = PiCamera()
camera.resolution = (FRAME_W, FRAME_H)
camera.framerate = 32
rawCapture = PiRGBArray(camera, size=(FRAME_W, FRAME_H))
time.sleep(0.1)
for image in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
    frame = image.array
    
    
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    gray = cv2.equalizeHist( gray )
    
    faces = faceCascade.detectMultiScale(gray, 1.1, 3, 0, (10, 10))
    
    
    for (x, y, w, h) in faces:
        
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
        os.system('sudo sh usbon.sh')
        time.sleep(3)
        os.system('sudo sh usb.sh')
        cv2.imwrite('cat2.jpg', frame)
        
    frame = cv2.resize(frame, (800,800))
   
    cv2.imshow('Video', frame)
    key = cv2.waitKey(1) & 0xFF
    rawCapture.truncate(0)
    if key == ord("q"):
        break
cv2.destroyAllWindows()

猫のフレームを検知した場合、あらかじめ作ったシェルスクリプトでポンプをON、OFFしています。 ついでにcv2.imwrite('cat.jpg', frame)でcat.jpgという画像を保存することができます。


これで猫がきたら・・・。



チョロチョロチョロ・・・。







拍手[0回]

01/27

Sun

2019

ラズパイでQRコードリーダーの作成

QRコードって、携帯アプリとか空港とかで使うイメージなのですが、カメラさえあれば割とあっさりラズパイでできました。

今回OpenCVとpyzbarを使っています。

このサイトを参考にしました。OpenCVのインストールについてはこちら参考にしてください。

OpenCVさえインストールできればさほど難しくないと思います。

QRコードを認識するpyzberのインストールをします。

 sudo pip install pyzbar

以下サンプルのソースコードです。
import cv2
from pyzbar.pyzbar import decode


cap = cv2.VideoCapture(0)

cap.set(cv2.CAP_PROP_FPS, 30)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)

while True:
ret, frame = cap.read()

gray = cv2.cvtColor(frame, cv2.COLOR_RGBA2GRAY)
data = decode(gray)
for symbol in data:
if symbol.type == "QRCODE":
print(data[0][0].decode("utf-8", "ignore"))

if cv2.waitKey(1) == 27:
break

cap.release()
cv2.destroyAllWindows()

python3で動かない場合はターミナルからsudo python ***.pyといった具合にpython2で動作させてください。


うまくいくとこんなコードをカメラが認識します。



このブログのURLがでてきました!!
・・・うまく使えば、QRコードで動作する電子錠とかつくれるかな??

QRコード自体はこちらのぺージで作成できます。

https://qr.quel.jp/?fbclid=IwAR2LqvnugdQ2gKPl2QSiCNJtj4B1KZ_XwD-qfODJGqZ2G79hBmOWPG2qqY4




ラズパイとWEBカメラ…  あとはオープンソースなのでQRリーダーはこんなに安くできるんですね。




拍手[0回]

01/13

Sun

2019

3Dプリンタで子供のおもちゃ作り

去年、3Dプリンタを買ったもののしばらくもてあましていました。夫婦で買ったものとはいえ、10数万もしたのでできれば活用したく、3歳の娘にちょうどいいおもちゃを作ってみました。

 
↑以前作ったジャックランタン、これをふまえて…


↑〇ッキー!

けっこう好評だったので「次は何がいい?」と聞いてみたところ…

「うんち」 とのこと



↑うんちです。他は?と聞くと



「トイレ!」といっていたので作ってみました。
接地面が小さく難しかったです。何回かプラットフォームから落ちてしまいました。
(土台をいれて3回目でようやく完成)




3Dプリンタはダヴィンチプロ1.0でXYZmakerでやりました。キャラ物は寸法の比に注意します。ミ〇ーちゃんも作ってみました。割とうまくできたかな。

つくったあとはガチャガチャに入れたりしてあそんでます!!


でも正直普通のガチャガチャより高くつく…  かも。
まあ娘がよろこんでるから、いいか。




拍手[0回]

01/06

Sun

2019

ビルメンで活躍したいあなたへ

ビルメンってよく2chとかで耳にすると思うのですが、どういうイメージですか??

「楽な仕事」「うんこ掴む仕事」「給料やすい」……

底辺だと言う人もいますが、資格を必要とする立派な仕事です。

今はかなり人手不足なのでビルメンになるのはハードルはそこまで高くありません。
しかしながらビルメンで活躍するにはそこそこコツが必要だと思っています。

今回いくつか必要な心がけを紹介したいと思います。


①謙虚であること

ビルメンは設備のプロといっても人によってかなりの差があります。実は社歴の長い人でも業務をこなせていてもまったく中身を理解していなかったりしています。

ここで必要なのが謙虚な心です。たとえ知識不足の先輩がいても

(メガーの使い方もわからないのかよ…)

みたいに思ってはいけません。たとえ知っていても「ちょっと貸してください、僕がやります!」といった態度は慎んでください。意外にビルメンは共同作業が多く、味方が少ないと苦労します。

特に夜勤などのローテーションでは細心の注意が必要です。自分が出勤していないときに生意気だといったうわさが立つと非常に仕事がやりづらくなります。

②周りの人に腹を立てない

これは①とすこしかぶっている話なのですが、ビルメンではかなり仕事をしない&できない人が多いです。決してこれに腹を立ててはいけません。かつてはアルティメットも注意したりしていたこともあったのですが、新入社員でもない限り無意味です。

逆にこれは非常にラッキーなことにライバルが少ないといえるのです。

ビルメンでは出世願望のある人はほとんどいないのでほんの少しだけ仕事をすることにより上司からの評価はかなり高くなります。別に給料は上がらないかもしれませんが、認められているという環境で働くのは精神的にもプラスになります。どうせ給料がやすいのならば気持ちよく働いたほうが断然得、ということです。

ただし、上司から評価が良すぎるとやっかみをうけるのでここは①の謙虚な姿勢を忘れないでください。

③休みの日は資格の勉強をすること

つらい現場、つらい人間関係といった全然楽じゃない環境になってしまう場合もあります。
しかし資格を持っていれば「いつでもやめてやる!」と余裕ができます。資格を持っていれば当然転職しても問題ありません。がっつり勉強してください。

資格は転職に有利というのもありますが、休日に勉強しているとかなりお金がたまります。
ビルメンは結婚できないみたいに言っている人がいますが、貯金がかなりあれば話は別なのでは??と思いますし、経済観念があると女性から高く評価される場合もあります。


 アルティメットはプラント、データセンターなどの設備管理を転々としていましたが、やはり知識より人間関係が重要だと感じました。ビルメンで活躍するには、ほんの少しの努力と長く続けていく健康管理が大事です。

ビルメンはおもしろい人が多い職場です。通常では起こりえないハプニングがしょっちゅう起こります。ビルメンライフは最後は楽しんだ人が勝ちなのではないでしょうか??




拍手[0回]

翻訳(Translate)

AD

シェアしてね

プロフィール

HN:
アルティメット雅史
性別:
男性
自己紹介:
製油所、データセンター、化学工場を渡り歩いた設備のマニア
最近はarduino,Raspberry pi等の電子工作にハマる。
取得資格は電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトほか

カウンター

お問い合わせ

忍者アクセスランキング

Copyright © 設備のマニアどっとこむ : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]