ジャンル不定の日記です。

mSATA SSD 16GBとmSATA to SATA届いた

メルカリのポイント消化で、先日Aliで買ったmSATA SSD 32GBの認識が確認できなかったから、mSATA SSD 16GB(確認済み中古)をポチってたんだが届いた。
で、もう一個届いてた荷物確認したら、ちょうどmSATA to SATA(箱付き)の変換ボードだった。

というわけでBIOSで確認してみたが、今日届いたSSDも先日のSSDも認識した。
なので壊れてるのはmSATA to ZIFのボードだね。

あと、古いやつだが、
SATA to USBの変換ケーブルが認識しない。
てかこれはそもそもドライブレスでもケーブルだけでUSBデバイスになるよね?
ドライブつけてもつけなくても何も出てこない。
前は使ったことあるんだが・・・
これ系1個あると便利だが、電源の関係でUSB3の方がいいと思うからマザー変えてからUSB3の買うか・・・
と思ったが、今のマザーリアにUSB3あった。
今は到着待ちの商品多いから、全部届いたら買うか。

Orange Pi ZeroでGPIO使ってみた

XR819がうまく行かないOrange Pi Zeroだが、
とりあえずシリアルコンソールで制御してGPIO触ってみることにした。
ピンヘッダーはさっきくっつけた。

ピン配列だが、
https://gist.github.com/probonopd/97f6826cc5aa3c0c0950682b0bc266bc
画像検索したら上のページが出てきた。
画像無くなったときのために画像は転載しておく。

LANコネクタある側の外側がGNDで、対角に5Vが2本、外側が3.3V。
テスタで測ったらそんな感じだった。

Raspberry Piの情報だが、
https://www.jtp.co.jp/techport/2016-08-31-002/
↑にファイルアクセスでGPIO制御する方法載ってたんで参考にした。
ググるとPython使ったやり方が出てきたりするがファイルアクセスだけで制御できる。Pythonなんか入れてない。

# cd /sys/class/gpio
# ls -al
total 0
drwxr-xr-x    2 root     root             0 Jan  1 00:00 .
drwxr-xr-x   43 root     root             0 Jan  1 00:00 ..
--w-------    1 root     root          4096 Jan  1 00:00 export
lrwxrwxrwx    1 root     root             0 Jan  1 00:00 gpiochip0 -> ../../devices/platform/soc/1c20800.pinctrl/gpio/gpiochip0
lrwxrwxrwx    1 root     root             0 Jan  1 00:00 gpiochip352 -> ../../devices/platform/soc/1f02c00.pinctrl/gpio/gpiochip352
--w-------    1 root     root          4096 Jan  1 00:00 unexport
/sys/class/gpio/export にピン番号を書き込めば有効になってunexportに書き込むと無効になるらしい。
だが、ピン番号がわからない。

https://github.com/orangepi-xunlong/wiringOP
↑にあるWiringOPというコマンドを使うと番号が確認できるみたい。これはwiringPiというRaspberry Pi用のコマンドのOrange Pi用みたい。
BuildrootにもOrange Pi用に使えそうなコマンドがなかったんで上のをビルドしようと思ったが、これクロスコンパイルできない感じ?
なので、上のページに出力結果が載ってるんで信じることにした。
 +------+-----+----------+------+---+  OPi H2  +---+------+----------+-----+------+
 | GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |
 +------+-----+----------+------+---+----++----+---+------+----------+-----+------+
 |      |     |     3.3V |      |   |  1 || 2  |   |      | 5V       |     |      |
 |   12 |   0 |    SDA.0 | ALT2 | 0 |  3 || 4  |   |      | 5V       |     |      |
 |   11 |   1 |    SCL.0 | ALT2 | 0 |  5 || 6  |   |      | GND      |     |      |
 |    6 |   2 |    PWM.1 |  OFF | 0 |  7 || 8  | 0 | ALT2 | TXD.1    | 3   | 198  |
 |      |     |      GND |      |   |  9 || 10 | 0 | ALT2 | RXD.1    | 4   | 199  |
 |    1 |   5 |    RXD.2 | ALT2 | 0 | 11 || 12 | 0 | OFF  | PA07     | 6   | 7    |
 |    0 |   7 |    TXD.2 | ALT2 | 0 | 13 || 14 |   |      | GND      |     |      |
 |    3 |   8 |    CTS.2 |  OFF | 0 | 15 || 16 | 0 | ALT3 | SDA.1    | 9   | 19   |
 |      |     |     3.3V |      |   | 17 || 18 | 0 | ALT3 | SCK.1    | 10  | 18   |
 |   15 |  11 |   MOSI.1 | ALT2 | 1 | 19 || 20 |   |      | GND      |     |      |
 |   16 |  12 |   MISO.1 | ALT2 | 0 | 21 || 22 | 0 | OFF  | RTS.2    | 13  | 2    |
 |   14 |  14 |   SCLK.1 | ALT2 | 0 | 23 || 24 | 0 | ALT2 | CE.1     | 15  | 13   |
 |      |     |      GND |      |   | 25 || 26 | 0 | OFF  | PA10     | 16  | 10   |
 +------+-----+----------+------+---+----++----+---+------+----------+-----+------+
 | GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |
 +------+-----+----------+------+---+  OPi H2  +---+------+----------+-----+------+
こんな感じで出力されるらしい。
なお、ピン配列の画像のページにもこのコマンドの結果が載ってるが番号が違う。よく見るとh3用をビルドしてるんで違うpiの結果を出力しちゃってるぽい。
H2(ZeroとR1)の配列は上の通りと思われる。
ピンヘッダーの配置と同じ感じの出力になってるわけね。
これのGPIOの欄に書かれている数字が /sys/class/gpio へのアクセスで使う数字ぽい。

# echo "12">export
# ls -al
total 0
drwxr-xr-x    2 root     root             0 Jan  1 00:00 .
drwxr-xr-x   43 root     root             0 Jan  1 00:00 ..
--w-------    1 root     root          4096 Jan  1 01:18 export
lrwxrwxrwx    1 root     root             0 Jan  1 01:18 gpio12 -> ../../devices/platform/soc/1c20800.pinctrl/gpiochip0/gpio/gpio12
lrwxrwxrwx    1 root     root             0 Jan  1 00:00 gpiochip0 -> ../../devices/platform/soc/1c20800.pinctrl/gpio/gpiochip0
lrwxrwxrwx    1 root     root             0 Jan  1 00:00 gpiochip352 -> ../../devices/platform/soc/1f02c00.pinctrl/gpio/gpiochip352
--w-------    1 root     root          4096 Jan  1 00:00 unexport
3.3Vの隣りにある12番ピンを使うことにした。
exportにechoで"12"を書き込めば /sys/class/gpio/gpio12 が出てくる。
なお、echoのダブルクォート要らないんじゃね?思ったが要るみたい。(改行が入っちゃうとかか?)

# ls -alL gpio12
total 0
drwxr-xr-x    3 root     root             0 Jan  1 01:18 .
drwxr-xr-x    3 root     root             0 Jan  1 01:18 ..
-rw-r--r--    1 root     root          4096 Jan  1 01:19 active_low
drwxr-xr-x    4 root     root             0 Jan  1 00:00 device
-rw-r--r--    1 root     root          4096 Jan  1 01:19 direction
-rw-r--r--    1 root     root          4096 Jan  1 01:19 edge
drwxr-xr-x    2 root     root             0 Jan  1 01:19 power
drwxr-xr-x    2 root     root             0 Jan  1 00:00 subsystem
-rw-r--r--    1 root     root          4096 Jan  1 01:18 uevent
-rw-r--r--    1 root     root          4096 Jan  1 01:19 value
/sys/class/gpio/gpio12 には上記のファイルがある。
directionがin outの向きの確認と変更ができるみたい。
valueで値が確認できる。

# cat gpio12/direction
in
最初はinになってる。

# echo "out">gpio12/direction
# cat gpio12/direction
out
"out"を書き込むとoutになる。

# cat gpio12/value
0
valueの値は0。
この状況でテスタで電圧を測ってみたら0V強だった。
なお、inの状態でのテスタは3V強だった。active_lowだから?

# echo "1">gpio12/value
# cat gpio12/value
1
valueに"1"を書き込んだら1になった。
この状況でテスタで電圧を測ってみたら3V強だった。

テスタ当てるだけで制御できてることが確認できてるわけだが、一応LEDもくっつけてみた。
手元にVf2前後の緑LEDがあったんで20mA程度流せば光るだろうと計算したところ3.3Vに65Ωの抵抗で20mAになることがわかった。
100Ωの抵抗で光るだろうと判断して100Ω抵抗とLEDを直列でGPIO12とGNDの間につないでみた。
で、
# echo "0">gpio12/value
# echo "1">gpio12/value
# echo "0">gpio12/value
と交互に"0"と"1"をvalueに書き込んだら点滅した。