リレーとソレノイドを試す
3V小型リレー 接点容量:1A Y14H-1C-3DS を試します。
目標 ソレノイド 5V ZHO-0420S-05A4.5 プッシュ型
を動かします。
ソレノイド
5V ZHO-0420S-05A4.5 プッシュ型
◆主な仕様 ・定格電圧:DC5V ・定格電流:1.1A(@DC5V、20℃) ・定格電力:5.5W ・使用電圧範囲:DC5V±5% ・直流抵抗:4.5±5%Ω(周囲温度20℃) ・ストローク:3mm ・プッシュ力:80g(最少)@DC5V ・寿命:30万回(サイクル条件:1秒通電、3秒休止) ・ケーブル長:50mm ・コネクタ:2P 2mmピッチ ・取り付け穴:1.5mm×2(タップなし) ・重量:13g
ということです。
試しに、単3電池*2を直列に繋いで、約 3.0v を通電させた所、カチッ と、動きました。
1.1A で動かくということですが、安定化電源で、5v で電流を変化させた所、 0.4A 程度で動きだしました。
1A 流せば、なかなか力強い感じです。
リレー
接点容量:1A Y14H-1C-3DS
・コイル電圧:3V 約50mA ・接点:1C ・接点容量:1A 24VDC/0.5A 125VAC
コイルに流す電流(操作)は、3V で、
切換接点(Cタイプ)が1回路 有り、
接点は 24Vなら、1A までいけます、、、という意味でしょうか?
回路図だけみても、わからなくなるので、注釈を書き入れてみた。
最初に、リレー自体には極性が無いようなので、コイルも、動作電源も + と - は、適宜入れ替えて使える。
動作電源+ の甲と乙は、別にどちらに繋いでもいい。
動作電源- の N.O と N.C は、Normally Open と Normally Close のつもり。
操作電流が流れていない場合(平常時)に、On になる側と、 Off になる側。
操作電流が流れていない時は、 N.O がつながっていて、操作電流が流れると、N.C がつながる。
配線
ブレッドボードにリレーをどう刺すか悩みました。
中央をまたいで刺せると楽だったんですが、むりなので、端っこに出っ張らせて、クリップコードではさみました。
プログラム
#!/usr/bin/python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO import signal import sys import time GPIO_ID = 26 GPIO.setmode(GPIO.BCM) GPIO.setup(GPIO_ID, GPIO.OUT) def exit_handler(signal, frame): # Ctrl+Cが押されたときにデバイスを初期状態に戻して終了する。 print("\nExit") GPIO.cleanup() sys.exit(0) # 終了処理用のシグナルハンドラを準備 signal.signal(signal.SIGINT, exit_handler) while True: GPIO.output(GPIO_ID, True) time.sleep(0.5) GPIO.output(GPIO_ID, False) time.sleep(0.5)
実行すると、カチカチ動くのですが、ディスプレイがおかしい。
ノイズが出ていると思われます。
ノイズ対策
正確な知識が問われるところですが、、、調べた所、幾つかの方法が有り、コンデンサーを入れる方法でも効果が出ることがあるようだ。
とりあえず、DCモーター用に購入してあった 0.01µF を入れてみたところ、改善されました。
Raspberry pi Zero を試す
Raspberry pi Zero を試す
人気すぎて、一人一つしか売ってくれない。
重量が軽すぎて安定しないという意見を沢山見たので、最初からアクリルのケースに入れました。
Zero の特徴
なので、microUSB > USB > USBHUB だとか、
USBイーサネット > USBHUB だとかする。
OS
Raspbian Jessie Lite を入れてみました。
microSD を、SDFormatter
ダウンロードしてきたISO を、Win32DiskImager で焼く
Boot
GPIO
# apt-get install wiringpi # gpio readall +-----+-----+---------+------+---+-Pi Zero--+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+-Pi Zero--+---+------+---------+-----+-----+
UART について
UART について
Raspberry pi 2 と 3 では /dev/ttyAMA0 の使用方法が異なるらしい。
Rpi2 シリアル通信
Rpi3 Bluetooth
Rpi3でUART を使用するには、幾つかの方法が有るようだ。
プルアップ/ダウン抵抗 について
プルアップ/ダウン抵抗がどうなっているのか。
と
https://www.raspberrypi.org/wp-content/uploads/2012/10/Raspberry-Pi-R2.0-Schematics-Issue2.2_027.pdf
を眺める。
PIN | GPIO | コメント |
---|---|---|
3 | 2 | SDA (i2c Data) is one of the i2c pins on the Pi, learn more about i2c. SDA includes a fixed, 1.8 kohms pull-up to 3.3v, which means this pin is not suitable for use as a general purpose IO where no pullup resistor is desired. |
5 | 3 | SCL (i2c Clock) is one of the i2c pins on the Pi, learn more about i2c. SCL includes a fixed, 1.8 kohms pull-up to 3.3v, which means this pin is not suitable for use as a general purpose IO where no pullup resistor is desired. |
GPIO2,3 は 1.8kΩ固定、その他は、制御可能な 50KΩ らしい。
GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_UP); GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN);
など。
初期状態・・・も、調べよう。
二酸化炭素センサー MH-Z19
二酸化炭素センサー MH-Z19 を試す。
Applications
It is widely used in the HVAC refrigeration and indoor air quality monitoring.
Note: Please let us know the measuring range you need in the Remarks.
If no remarks, we will ship 0~5000ppm by default.
データシート
http://eleparts.co.kr/data/design/product_file/SENSOR/gas/MH-Z19_CO2%20Manual%20V2.pdf
Technical Parameters and Structure
Product Model MH-Z19
Target Gas CO2
Working voltage 3.6 ~ 5.5 V DC
Average current < 18 mA
Interface level 3.3 V
Measuring range 0 ~ 0.5% VOL optional
Output signal
UART
PWM
Preheat time 3 min
Reponse Time T90 < 60 s
Working
temperature
0 ~ 50 ℃
Working humidity
0 ~ 95% RH
(No condensation)
Dimension
33 mm×20 mm×9 mm
(L×W×H)
Weight 21 g
Lifespan > 5 years
PWM用の配線
PWMだけなら 右側3つしか使わない。
PWM : GPIO21
AOT : (開けたまま)
GND : GND
Vin : 5v
に接続した。
PWM 制御の情報
- Output Data Reading
7.1 PWM output (taking PWM output from 2000ppm as example)
CO2 output range: 0ppm-2000ppm
Cycle: 1004ms ± 5%
High level output for beginning: 2ms ± 5%
Middle of cycle: 1000ms ± 5%
Low level output for ending: 2ms ± 5%
とある。
High(1), Low(0), High と繰り返すわけですが、その周期は 約 1000ms で、High の始まりと Low の終わりに 2ms つくと。
データシートの例は Range が 2000ppm の場合だから、5000ppmで納品されているはずだから、全部 High なら 5000ppm ということか。
Python コード
PWMの読み取りをする。
High の時間(Span)とLowの時間(Span) で、結果を読み取る。
Cycle が狂っていなければ、片方だけでも答えに繋がるけど、風を当てたりして計測テストすると、 Cycle が異常に成ったりするので、Cycle自体も見たい所。
頭が混乱するポイント
HighのSpanとLowのSpanの計算がわからなくなる。
最後に High だった時刻(Lowに成った瞬間) と 最後に Low だった時刻(Highに成った瞬間)と考える。
#!/usr/bin/env python # -*- coding: utf-8 -*- import time import RPi.GPIO as GPIO PIN_PWM = 21 def getPwm(): GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(PIN_PWM,GPIO.IN) time.sleep(0.2) while GPIO.input(PIN_PWM) == 1: last_high = time.time() while GPIO.input(PIN_PWM) == 0: last_low = time.time() while GPIO.input(PIN_PWM) == 1: last_high = time.time() span_high = (last_high - last_low) * 1000 print("span_high : " + str(span_high)) while GPIO.input(PIN_PWM) == 0: last_low = time.time() while GPIO.input(PIN_PWM) == 1: last_high = time.time() while GPIO.input(PIN_PWM) == 0: last_low = time.time() span_low = (last_low - last_high) * 1000 print("span_low : " + str(span_low)) print("Cycle : " + str(span_high + span_low)) co2 = 5000 * ( span_high - 2 ) / ( span_high + span_low - 4 ) GPIO.cleanup() return co2 print getPwm()
実行結果
$ ./pwm.py span_high : 167.595148087 span_low : 836.373090744 Cycle : 1003.96823883 828.002038746
室内で 828 ppm というのはどうなんだろうか。
窓を開けてしばらくしたら、 600 ppm 程度までは下がり、 ベランダでは、 450 ppm 程度までは下がった。
外気で400ppm でキャリブレーションが必要だろうか?
volumio + i2S を試す
volumio OS + I2S を試す。
ハードウェアはこれ。
インストールまで
ISO のダウンロード
https://volumio.org/get-started/
から。
SDカードの準備
SDformatter で フォーマット
Win32DiskImager で ISO を焼く
起動と初期設定
マイクロSDカードを刺して起動。
初期ユーザーは、 root / volumio のみだった。
ネットワークの設定ファイルは
# cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 #iface eth0 inet dhcp iface eth0 inet static address 192.168.100.90 netmask 255.255.255.0 gateway 192.168.100.1 dns-nameserver 192.168.100.1
初期設定
vim を入れる
# apt-get update # apt-get insatll vim
vi へのエイリアスは自動ではられていた。
キーボードの設定
Volumio 設定
Playback options
Output Device Hifiberry DAC Plus DAC Model Hifiberry DAC Plus
で動かす。
動画や音声周りの情報まとめ
ビデオ再生
デバイスについて
4極アナログジャック 4極の順番は、根本から、
Video Ground Right Left
です。
omxplayer
man
omxplayer -- Raspberry Pi command line OMX playerOMXPlayer is a commandline OMX player for the Raspberry Pi. It was developed as a testbed for the XBMC Raspberry PI implementation and is quite handy to use standalone.
非常に高速で、綺麗に表示される。
オーディオの指定は、 hdmi と local(アナログ) のみ。
USBオーディオなどは指定できない。
--loop で再すると、プロセスとして omxplayer.bin と omxplayer の2つが動く。
修了する場合は、両方を kill する。
mplayer
man
mplayer2 - movie player
オーディオの指定は、色々できる(雑)
webmの再生が可能です。
VLC
これから調査
オーディオ再生
デバイスについて
Raspberry pi 2 modebl 2 と 3 で、可能なオーディオ再生方法。
デバイスの情報の取得
$ aplay -l **** ハードウェアデバイス PLAYBACK のリスト **** カード 0: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA] サブデバイス: 8/8 サブデバイス #0: subdevice #0 サブデバイス #1: subdevice #1 サブデバイス #2: subdevice #2 サブデバイス #3: subdevice #3 サブデバイス #4: subdevice #4 サブデバイス #5: subdevice #5 サブデバイス #6: subdevice #6 サブデバイス #7: subdevice #7 カード 0: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 1: MicroII [Audio Advantage MicroII], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0
など。
aplay
aplay -q -D plughw:0,1 bou.wav
などします。
mpg123
# USBでの再生 $ mpg123 -o alsa -a hw:1 -vC jazz_01.mp3 # アナログ or HDMI での再生 $ mpg123 -o alsa -a hw:0 -vC jazz_01.mp3
など
の場合だと、
0 : アナログかHDMIの優先設定されている方
1 : USB
になります。
優先設定は
$ amixer cset numid=3 1 # 1:アナログ, 2:HDMI
などして変えます。