IoT開発、設備・DIYのブログ!
ラズパイのGPIOを使うとき、実はいろいろな制限があります。
ピンの出力電圧は3,3V、流せる電流はピンごとでは8mA、トータルで50mA程度が最大だそうです。
例えばこんなパトランプを制御しようとすると…
ダメですね。0.14Aも流れているのでまったく動かせません。というよりそもそもUSB出力なので5V仕様です。
USB出力を動かすやり方は2つあります。
①ラズパイのUSB出力を制御する。
②トランジスタを使って増幅させる。
①はラズパイのUSB出力をシェルスクリプトでON、OFFさせる方法です。
USB OFF のスクリプト
sudo hub-ctrl -b 1 -d 2 -P 2 -p 0
USB ON のスクリプト
sudo hub-ctrl -b 1 -d 2 -P 2 -p 1
ラズパイ3B+でしか試していませんが、USB出力すべてが動作してしまうため、あまり使い勝手がよくありません。USBのWEBカメラなども接続している場合は停止してしまいます。
続いて②です。arduinoのように5VでGPIO出力できなくてもピンとしては5V電源は取れるので
下記のように接続し、GPIOの信号で負荷に5V印加できるようにします。
※8/10図を修正しました。指摘の多かった電流制限抵抗とフライホイールダイオードを入れています。
USBのメス側とトランジスタ(2C1815)が必要です。
パトランプは負荷のところへ挟み込み、片方はラズパイの5V出力につなぎます。3.3VのGPIO出力はベースとしてトランジスタへ接続します。コレクタに流せる最大電流は150mAなので問題ありません。
あとはGPIOを制御するプログラムを作るだけです。このやり方はラズパイだけではなく、ESP32
あたりのモジュールでも使うのですが、今回「あれ?どうやってやるんだっけ?」ってなったので備忘でまとめました。直流モーターを制御するときに必要です。
…こんなめんどくさいことしなくていいようにラズパイに5Vの入出力端子デフォルトで作ってほしいですけどね。
続いてpython-smbusをインストール
sudo apt-get install i2c-tools python-smbus
通信ができているかは下記コマンドで確認できます。
sudo i2cdetect -y 1
通信ができていれば下記のようになります。
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
インターホンがなりLED点灯を検知したらslackにつぶやく様に
設定しておきます。 →やり方はこちら
取得したIncoming Webhook URLをpythonコードに埋め込んでいきます。
mport requests
import json
import smbus
import time
import os
SLACK_URL = "https://hooks.slack.com/services/**********"
while True :
bus = smbus.SMBus(1)
addr = 0x23
lux = bus.read_i2c_block_data(addr, 0x10)
lux2 = (lux[0]*256+lux[1])/1.2
print(lux2)
time.sleep(1)
if lux2 > 20 :
#content = temp2
payload = {
"text": "ピンポーン",
"icon_emoji": ':snake:',
}
data = json.dumps(payload)
requests.post(SLACK_URL, data)
time.sleep(15)
これでインターホンがなるとスマホへ通知するようにできました。
ルーフバルコニーにいても気づくことができます。
一応外出しているときもスマホに通知が来てしまうのですが、その時はあきらめるしかないですね…。
covid 19 virusの影響で在宅勤務されている方も多くなり、急にZoom等のビデオ会議をする機会が増えたと思います。
全員テレワークだと個人同士でテレビ会議をすると接続に時間がかかったり、待ちが出てきてしまいます。
やはり拠点があったほうが使いやすいと思ったので今回Raspberry pi4でやってみることにしました。
まずはRaspbianにZoomをインストールしようと思ったのですが、残念ながらできませんでした。
https://www.raspberrypi.org/forums/viewtopic.php?t=254367
↑ラズパイコミュニティのあいだでもやってみようとした人はいるみたいですがやはりブラウザで固まってしまってうまく動作しません。(一応Linux用のZoomはあるみたいですが…)
とりあえず下記の手順でOSをRaspbianではなくubuntuにしてみました。
①microSDカードをフォーマット
新品のmicroSDカードならいいのですが、Raspbianで使用していたものとなるとパーテーションが区切られてしまい、うまくフォーマットできない場合があります。
→SD Card Formatterでフォーマットしました。
https://www.sdcard.org/jp/downloads/formatter/
②ubuntu LTEをダウンロードしてmicrSDへ書き込み
https://ubuntu.com/download/raspberry-pi
↑ここからダウンロードします。
ここで気をつけなければいけない事があるのですが、そのままファイルをコピーしてもubuntuがbootしません。 ダウンロードしたファイルがubuntu-mate-18.04.2-beta1-desktop-arm64+raspi3-ext4.img.xzであれば7-Zip File Manager等で解凍しbalenaEtcherで書き込みます。
↑解凍すると.imgに拡張子が変わっているのでそれを選択しmicroSDカードへ書き込んでください。(microSDは32ギガはないとつらいかも…)
③raspbery pi4で立ち上げ
無線が使用できないので有線LANをつなぎ、
Raspberry piで立ち上げると…
おおっ 動いた。
ログインもパスワードもubuntuなのですが、新しいパスワードを聞いてくるので設定してください。
ここまでだとCUIしか使えないのでGUIのubuntuをインストールします。
sudo apt install ubuntu-mate-desktop
もう少し!
…と思いきや、ubuntu版のZoomもインストールできませんでした。
ほかにもskype等もダメだったのですがgoogleのhangoutだけは動きました。
chromeもインストールできなかったので(なんでや)Chrominiamをインストールしました。
sudo apt install -y chromium-browser
sudo apt install -y pepperflashplugin-nonfree
sudo update-pepperflashplugin-nonfree --install
④hangoutでビデオ会議
あとはgoogle hangoutのページでログインすればビデオ会議ができます。
立ち上げっぱなしにすれば拠点として使用できます!!
※ubuntu初期設定ではHDMIから音がでないので
「/boot/firmware/usercfg.txt」設定ファイルにdtparam=audio=on を1行加えてください。
https://raspida.com/ubuntumate-on-rpi4b
↑今回参考にしたページです。カメラはロジクールのHD 720Pを使ってます。
まだubuntuでいろいろ試せてないですがRaspbianよりサクサク動く印象です。しかしながら、かなり勝手もちがって悪銭苦闘しています。ラズパイらしい使い方ができればまた紹介したいと思います。
→'21/05/05 ラズパイからzoomつかえました!!