raspberry piでブザーを鳴らす

参考:
http://feijoa.jp/laboratory/raspberrypi/speaker/


pi@raspberrypi:~ $ cat buzz2.py
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep
import wiringpi2 as wiringpi


outpin = 25

GPIO.setmode(GPIO.BCM)
GPIO.setup(outpin, GPIO.OUT)

wiringpi.wiringPiSetupGpio() # GPIO名で番号を指定する

wiringpi.softToneCreate(outpin)


len=1
delay = 0.1

A1 = 110
A2 = 220
A3 = 440


def Playnote(note,len,delay):
        wiringpi.softToneWrite(outpin, note)
        sleep(len)
        wiringpi.softToneWrite(outpin, 0)
        sleep(delay)

Playnote(A1,len,delay)
Playnote(A2,len,delay)
Playnote(A3,len,delay)

GPIO.cleanup()




今どきspam対策



spamが来るようになった。

1日に10数件程度。

さくらのVPSで自分で設定したアカウントだ。

試験的なアカウントでほとんどやり取りはなかったのだが、

あるときから、覚えのないメールマガジンのようなものが届くようになった。

何かのアプリかサービスを登録して配信されるようになったのかなと、

unsubscribe手続きしたら、SPAMが届きだした。



内容は明らかなスパムで、別にウィルス感染したわけではないから放置してもいいのだが、

ムカつくし、勉強もかねてspam対策をすることにした。


対策するのはpostfixである。


今どき、特定のドメイン名やIPアドレス、国などで限定することはほとんど意味がない。

調べると、spamhausとspamassassinというのが有名なようなので、

設定してみた。


あと、postfixで名前解決できない送信元を拒否するとか、

調べて適当に対策してみた。


/var/log/maillogを見ると、ポツポツrejectされているのがわかる。


これはthunderbirdの受信メール



件名の最初の[SPAM]はspamassassinがつけたものだ。

これができればメーラーのルールで振り分けができる。


spamassassinに振り分けさせることもできる。

削除はできないのか?

あとでやってみる。


とりあえずほとんどのSPAMは検知できているようだ。

raspberry pi で条件に応じて2色のLEDの一方を点灯する




------------
pi@raspberrypi:~ $ cat leddouble.py
import RPi.GPIO as GPIO
import time

import sys

pin1=25
pin2=21

GPIO.setmode(GPIO.BCM)

x = int(sys.argv[1])

if ( x % 2 > 0):
        print 'odd'
        GPIO.setup(pin1, GPIO.OUT)
        GPIO.output(pin1, 0)
        time.sleep(3)
else:
        print 'even'
        GPIO.setup(pin2, GPIO.OUT)
        GPIO.output(pin2, 0)
        time.sleep(3)

GPIO.cleanup()
-----------


pi@raspberrypi:~ $ sudo python leddouble.py 5
odd
pi@raspberrypi:~ $ sudo python leddouble.py 5
odd
pi@raspberrypi:~ $ sudo python leddouble.py 8
even
pi@raspberrypi:~ $


引数が奇数なら青、偶数なら赤(ピンク)が点灯




rasbperry pi でLEDを点灯させる




まず部品を用意。

ジャンパピンはコンソールケーブルを作るときに買ったものがあった。

ブレッドボードを買う。

どういうものかしらなかったが、横がつながっていて縦はつながっていないそうだ。


あとLED。

LEDとはなんぞやということは中学生のときの「技術」の授業で習った。

ハンダゴテを使ってラジオを使った。


あれは義務教育だよね?


まずaitendoに行ったら、100個くらい入ったものが売っていた。

が、

規格というものがどこにも書いていない。

LEDにも規格はあるよね?


LEDは電気が流れると光ること、さらに流れる方向が決まっていることは覚えている。


豆電球に乾電池をつなぐと光るのとはちょっとわけが違うことも。



調べると、raspberry piでLEDを光らせるにはGPIOという、ピンがたくさんならんでいるものから、

電源となるピンともう一つ選び、

それをon/offすればよいらしかった。


そして、LEDに電流を流すときは抵抗を通さなければならないということだった。

では、いくつの抵抗が必要なのか?


それは規格によるだろうと思った。

piの流す電流(電圧?)と、LEDの規格によって決まるのだろうと。


しかし、LEDの規格というのがあまり情報がない。


いろいろ探した結果、型番がはっきりしている下記のものを買った。

http://www.marutsu.co.jp/pc/i/69514/


3.2V・20mA・250mcd(max)

とある。


そして抵抗は330Ωのもの。


これは必要な抵抗を計算したのではなく、WEBでそれを使っている人が何人かいたから

マネしただけだ。


下記のページで計算してみたのだが、

http://diy.tommy-bright.com/


raspberry piの電源 3.3v

LEDの電圧 3.2v

流したい電流 20mA

とすると必要な抵抗は 5Ω となる。


抵抗が330Ωの場合、流れる電流は0.3mAとなるのではないか?




という計算はあとでやったのだが、

とりあえずつないで点灯させてみた。



Pin#1(GND)と、Pin#22(GPIO25)を使う。


Pin#1を抵抗側、Pin#22をLED側につなぐ。


GND --- 抵抗 --- LED --- GPIO25



下記のpythonスクリプトを書いて、実行する。

--------------------------
import RPi.GPIO as GPIO
import time

pin=25

GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)



#GPIO.output(pin, GPIO.HIGH)
GPIO.output(pin, 0)

time.sleep(3)

GPIO.cleanup()

--------------------------



pi@raspberrypi:~ $ sudo python led.py


LEDが点灯し、3秒たつと消える。


GPIO.output(pin,0)

のことろは、参考にしたスクリプトでは0でなくGPIO.HIGHにすると点灯し、GPIO.LOWにすると消灯するのだが、

私がやってみると、HIGH/LOWが逆になる。

つまり、GPIO.LOWにすると点灯する。


なぜだろう?