唇を軽く閉じ、ブーと息を下唇に当てると、唇が共振を起こす
教育用と謳ってる理由が分かった、細かな所に手間が掛かる、良いセンサー/デバイスは高価、結線は不確かで面倒(パーツが壊れている場合も)、スマホ+周辺機器で作る方が楽に作れそう
■Raspberry Pi財団公式サイト
https://www.raspberrypi.org/
■ラズパイ入手
http://akizukidenshi.com/catalog/c/craspi/
https://www.switch-science.com/
Raspberry Pi 3B+(ネッがト実用になっている)元々$35だが日本では6000円弱位でしか買えない
Raspberry Pi Zero WH(ピンヘッダー有、有線LAN無)
Raspberry Pi 4B(3B+がもう手に入らない、1G/2G/4Gメモリの種類有り)
3B+と3Bとの違いはネットワーク系が早い/PoE
3B+では2.5A以上が必須、4Bは3A以上、通常スマホの充電器は1A/タブレットは2Aのモノがほとんど
ファン欲しい CPU60℃位にはなる様、ヒートシンクは-2℃位の寄与
4Bのメモリは1Gでも十分だがモニタを使うとメモリ喰う、VNCだが。2000円位高いが1台目は4Gだと潰しが利く
miniHDMI、USB-C電源に変わった
ACアダプタ 3A 1000円
microSD(相性あり、8-32GB、Class10、PanaのフォーマッタでFAT32) transcend32G 800円
ヒートシンク銅製 PCCOOLER RHS-03-BRK 13x13を2個で250円
ケース(4と3B+の互換はない)、ファン
キットで買うと安い
GPIOケーブル、T型GPIO拡張ボード
ブレッドボード
ジャンパーワイヤー
ワニ口クリップ
モジュールセンサー
ブザー、簡易ディスプレイ
パイソンのサンプルコード、チュートリアル付きキットがいい
RABホルダーも欲しい、ブレッドボード複数持ちで機能毎に保存すると良い
別で買う必要がありそう
赤外線カメラ、人感、振動、ジャイロ、加速度、距離、GNSS(GPS)、ドップラー
■先人の足跡を調べよう(センサー/モジュール次第か)
ドライブレコーダ、車防犯カメラ(録画8hrs)、自動録画/消去
360度録画、画像を解析しエラー検出
進入警報(ログ、写真、メール)
WifiやBTで遠隔ラジコン
温度制御(一定の温度で扇風機をOn等)
赤外線でリモコンをハック
IOを音声で
生体ハック(眠気防止等)
サーバ型:テキスト解析気分解析、メディアサーバ
■セットアップ
https://www.fabshop.jp/raspberrypi/pisettings-2/
https://raspida.com/rpi-setupwizard2019
https://pcmanabu.com/raspberry-pi-debut/
↓
SDメモリカードフォーマッター (Windows/Mac用)でフォーマット、FAT32
https://www.sdcard.org/jp/downloads/formatter/index.html
Raspbian Buster with desktop and recommended software をDL
https://www.raspberrypi.org/downloads/raspbian/
Etcherはでラズパイで使うOSのイメージをSDカードに焼く、ポータブル版でOK
https://www.balena.io/etcher/
起動はUSB-C電源をぶち込むだけ、モニタ側はHDMI1に切り替え(miniHDMI変換が硬いが奥まで挿す)
USBキーボード/マウス/LANケーブルも初期設定には必要、セットアップが済めば電源USB-Cのみ
PW/ロケール設定、Wifiを聞いてくる(PiのMacアドレスを言ってもらいたいが、、
ターミナルで ifconfig →Piに右上メニュでWifi pw(share key)、ルータにPi Macアドレス を設定
日本語にしてアップデートを掛けるとメニュー等が日本語になる
ラズパイ設定でSSHとVNCを有効にする(SSHのセキュリティ設定が面倒な場合はSSHは使わない)
IPアドレス(右上のVNCアイコンをクリックで分かる)、あるいは raspberrypi.local
SSHコマンド ssh pi@IPアドレス あるいは ssh pi@raspberrypi.local
VNCはReal VNCのスタンドアローン64ビューワーでいいのでは https://www.realvnc.com/en/connect/download/viewer/
HDMIを繋げているとリモートできるが繋がないとできない?
電源投入後LEDの点滅が消えたあたりでデスクトップは起動しているが
解像度が設定されていない為、モニタが検出されておらずGUIが起動していない為
sudo raspi-config で設定をする その1
3 Boot Options Configure options for start-up を選択
B1 Desktop /CLI Choose whether to boot into a desktop enviroment or the command line を選択
B3 Desktop Autologin Desktop GUI, requiring user to login を選択
sudo raspi-config で設定をする その2
7 Advanced Operations を選択
A5 Resolution を選択
DMT Mode 51 1600x1200 60Mhz 4:3 を選択
■セキュリティ設定
https://qrunch.net/@nokonoko1203/entries/DIek2g0AhGRDkGDZ
https://qiita.com/mochifuture/items/00ca8cdf74c170e3e6c6
https://makezine.jp/blog/2017/09/secure-your-raspberry-pi-against-attackers.html
↓
平時繋ぐLANは一般の人は入れないが、それ以外のLANに繋げた時に危険?
VNCのウィンドウではだれが何人ログインしているか分かる、見とく
運用時はSSHとVNCを無効にすればいい?
host名を変えた方がいい?
ラズパイ設定で raspberrydekapi 等に変更
ラズパイを最新版
$ sudo rpi-update
root pwを設定、初期なしf
$ sudo passwd root
piユーザの代わりのユーザを追加(f1/b)
sudo adduser xxx
groups pi でグループの確認
-> pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio
sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,netdev,input,spi,i2c,gpio xxx
groupが追加されたことを確認
groups xxx
piユーザー内のファイルを、新規ユーザーにコピー(空フォルダとmagi pdfだけだが)
sudo cp -r /home/pi/* /home/xxx
piユーザーのオートログインを無効化
sudo nano /etc/lightdm/lightdm.conf`
autologin-user=pi をコメントアウトし
#autologin-user=pi にする
新しいユーザー名を指定
sudo nano /etc/systemd/system/autologin@.service
ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM の下に
ExecStart=-/sbin/agetty --autologin xxx --noclear %I $TERM を追記
新規ユーザーがパスワードなしでsudo可に
sudo visudo
上記コマンドで/etc/sudoersファイルをエディタで開き#includedir /etc/sudoers.dの項目を編集
pi ALL=(ALL) NOPASSWD: ALL を削除
xxx ALL=(ALL) NOPASSWD: ALL を追記
オートログインの確認 piユーザーがいなければok
who
デフォルトのpiユーザーをsudoersから除外
sudo gpasswd -d pi sudo
新ユーザxxxでSSH/VNCできるか、ログインできるか、sudoできるか確認
piユーザーを削除する(piのユーザー名を変更する、pi ユーザをロックする、という方法も)
sudo userdel -r pi
削除できたか確認
id -a pi
次のようにでればOK id: pi: no such user
SSH証明書設定:面倒だとSSHを有効にしないこと
SSHのポート番号を変更する 49152〜65535
sudo nano /etc/ssh/sshd_config
#Port 22 を
Port 65535 に変更
rootユーザーで直接SSHログイン出来なくする
sudo nano /etc/ssh/sshd_config
#PermitRootLogin prohibit-password を
PermitRootLogin no に変更
■エディタ操作
^Oはctl+O
■開発環境
Python interpreter/GPIOライブラリのインスコ
sudo apt-get install python-dev
sudo apt-get install python-pip
sudo pip install rpi.gpio
Git/WiringPIのインスコ(GPIO操作を行うC言語ライブラリ)
sudo apt-get install git-core
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v 実行してバージョン情報が表示されれば完了
I2C通信ライブラリのインスコ
複数のI2Cデバイスを同時に制御できる、温度を測りモータを動かす等
sudo apt-get install libi2c-dev
(参考)
Apache+PHPのインスコ
https://bit.ly/355p4LX
WiringPi-PHPでWiringPiをPHPで使う
http://www.feijoa.jp/laboratory/programming/gpioWithPhp/
■PG
ログ取る系なので一定期間でバックアップを取る
リモコンでLEDを光らせる>リモコンでPGスタート>リモコンでカメラやログ
ボタンを押すとブザーを鳴らしてカウントしその回数をディスプレイ
ドライブレコーダ/車防犯カメラ(録画8hrs)、自動録画/消去
進入警報(ログ、写真、360度録画、メール)
バイクセッティング記録系ツール(気温、GPS、加速度、サスやキャプ設定メモ)
LED 抵抗 ボタン button
パッシブブザー Passive Buzzer
リモコン IRremote
ディスプレイ LCD1602
///プログラム解説
使用するチャンネルはモードを設定する必要がある
GPIO.setup([チャンネル], [GPIO.IN または GPIO.OUT])
例:
channel_list = [11,19]
GPIO.setup(channel_list, GPIO.OUT)
デジタル出力では電圧をHIGH(3.3V)、またはLOW(0V)に設定できる
GPIO.output([チャンネル], [GPIO.LOW または GPIO.HIGH])
例:
GPIO.output(14, GPIO.HIGH)
GPIOからの入力をポーリングで読み取る場合の例
戻り値にはGPIO.HIGH(または1、True)かGPIO.LOW(または0、False)が返る
if GPIO.input(27):
# ピン27がHIGHの場合
else:
# ピン27がLOWの場合
GPIO.input/setup()に pull_up_down パラメータで、プルアップ抵抗(GPIO.PUD_UP)またはプルダウン抵抗(GPIO.PUD_DOWN)を有効にでき、その場合回路がつながっていない状態でもGPIO.HIGHまたはGPIO.LOWが読み出される
例:
GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)
不定状態だとGPIOの入力インピーダンスが高く高周波ノイズを拾い誤作動が考えられる/サージ
GND側に引っ張ってLowに安定させるプルダウン抵抗だが、慣例的にHighにするプルアップの方が使用頻度が高い
プルアップ回路: タクトスイッチONでLow、タクトスイッチOFFでHigh(平常時ON)
プルダウン回路: タクトスイッチONでHigh、タクトスイッチOFFでLow(平常時OFF)
ラズベリーパイでは内部プルアップ(ダウン)が使え、外付けプルアップ(ダウン)抵抗を省略できる
http://raspi-studio.hatenablog.com/entry/2016/06/06/204053
https://qiita.com/nishiwakki/items/e921d44a00a37c72979c
プルアップ抵抗とマイコンの入力抵抗ではマイコン入力抵抗の方が遥かに大きいく電圧は全てマイコン側に加わる
プルダウン抵抗は無くてもと思えるがスイッチを押した時には5Vが抵抗なしでGNDに直接流されショートする
https://voltechno.com/blog/pullup-pulldown/
イベント(エッジ)の検出
GPIO.add_event_detect([チャンネル], GPIO.FALLING, callback=func)
GPIO.FALLING → 立ち下がりエッジ:(High→Low)
GPIO.RISING → 立ち上エッジ:(Low→High)
GPIO.BOTH → 両エッジ
//// プログラムの起動と停止
パイソンを実行するcmd(ファイルの位置までcdで移動しtest.pyを実行)
python test.py
Ctrl+Cでプログラムを止める
//// コツ
GPIOの状態を見るcmd
gpio readall
ブレッドボードが悪いのか、結線が悪いのか、パーツが壊れているのか、プログラムが悪いのか、何が悪いか分からん
テスターが要る
■電子回路
ラズパイは1つのGPIOピンにつき電流量が16mAまで、合計は50mAまで、電圧は3.3V
その半分を超える電流を流すと寿命を縮めるおそれがあるそう→3mAにしとく、3.3v= 3mA*1kΩ
GPIOピンは汎用入出力(General Purpose Input/Output)ポート、入力と出力ができる、40ピンある
GPIO 2-27の26ピン、GNDx8、3.3Vx2、5Vx2、ID_SDとID_SCの2ピン
ID_SD/ID_SCは外部にEEPROMというデータを保存するための部品を接続するピンだがあまり使わない
GPIOピンには+-どっちを入れてもいいの?→IOなので良いが注意点がある
https://robot-workshop.net/raspberry-pi-gpio
https://tool-lab.com/make/raspberrypi-startup-22/
//// GPIOを使うときの注意点
ショート:電源の+と-を直結すると過剰な電流が流れる
3.3v/5vピンをGNDピンに直結しない事
GPIOピンを出力モードでGNDピンに繋げない事(入力モードはOK)
GPIOピンは基本は入力モードにして、必要なものだけ出力モード、あるいはショートするケースには抵抗を入れておく
ピン指定方法が2種類あり、物理ピン番号(1,2/3,4~とコネクタに連番が振られている)による指定、BCM(GPIO)番号による指定がある
ラズパイのプロセッサはブロードコム社のBCM2837だが、このプロセッサのGPIOピンは53本あり、2番から27番の26本がラズパイのGPIOコネクタに接続されている。例えばGPIO2というピンがあり、これがコネクタの3番ピンにつながっている
https://www.denshi.club/make/2016/02/raspberry-pi2-3.html
GPIOピンの中でもGPIO2とGPIO3は他のピンと電気的特性が異なり注意が必要
I2Cにも使われ1.8kΩの抵抗が接続されている(1.74Vとなる?)
SPI通信ではGPIO番号GPIO7-GPIO11の5ピンが専用に割り当てられます(MOSI, MISO, SCLK, CE0/CE1で通信)
アナログ出力ができるピンはどのモデルでも固定でGPIO18のみ
アナログ出力では周波数とデューティ比でモータ制御などに使うPWM制御が可
ラズパイの電圧読み取り
0V〜0.8V: 0Vとして読み取る
0.8V〜1.3V: 不定
1.3V〜3.3V: 3.3Vとして読み取る
計算と実地: 結局計算しても正確ではないし、そもそもどれくらいの電流を流すと、どのくらいの明るさで光るのかもよくわからない→抵抗は大きめから
http://robocad.blog.jp/archives/662656.html
LED明るさ:1cd ろうそく、400cd 40W蛍光灯、100cd 100W蛍光灯
VF 1.85Vは順方向電圧(VF)を表す。LEDには極性がありアノード(プラス、端子長い、下側、足曲がり)からカソード(マイナス、端子短い、上側、足真っ直ぐ)に正電圧を加え使用。電圧が低いと電流が流れても発光せず、ある電圧を超えると電流が流る
│(-)
―
▲
│(+)
アクティブブザー:発振回路が入っており決まった音程でブザー音が鳴る
パッシブブザー:スピーカと同じで与えた音声信号で発生、音程を変えられる
I2Cで16本あるIOエキスパンダ(MCP23017)のポートを制御できる。8個使用すれば16x8の128ポートが使用可
http://kzhishu.hatenablog.jp/entry/2016/07/19/090000
■電流は+から-に流れる、電子は-から+に流れるが
電荷の移動である電流と電子は直接は関係ない
電気のスイッチを入れると、電荷は直ちに移動しますが、電子がその速さで移動しているわけではありません
電子はカタツムリの歩みより遅い速度でのらりくらりと動いているだけ
GNDから電子を集めるわけではない
電気の仕組みは、正負があるのではなく、電荷の多い少ないで電圧が現れる、電荷の多いほうから少ないほうに電気が流れる
電荷の移動の犯人のひとつに電子、他にはイオンであったりプラズマであったり
https://oshiete.goo.ne.jp/qa/8305340.html