脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

raspbian stretchインストール方法

raspbianの最新OSのStrechのインストール方法です
versionは4.14, release dateは2018-04-18です

install

イメージのダウンロード

www.raspberrypi.org
まずは上のサイトからイメージをダウンロードします
raspbianにはGUI付きのRASPBIAN STRETCH WITH DESKTOPと、CUIのみのRASPBIAN STRETCH LITEがありますが、今回はRASPBIAN STRETCH WITH DESKTOPを使います
f:id:portaltan:20180618100732p:plain

SDカードへイメージの書き込み

DD for Windowsを利用してダウンロードしてきたイメージをSDカードに焼きます
Target DiskをSDカードに、Target FileをダウンロードしたイメージにしてRestoreを選択すると以下のように書き込みがはじまります
f:id:portaltan:20180618105121p:plain

起動

raspbianを書き込んだSDをラズベリーパイに差し込み、HDMIディスプレイとUSBマウス・キーボードも差し込んでmicro USB電源ケーブルをさせばラズベリーパイが起動します
(マウスやキーボードは電源をいれた後でも構いませんが、ディスプレイだけは電源接続時に接続していないと、後で接続しても認識しません)
しばらく待っていると以下のような画面が表示されます
f:id:portaltan:20180618110134j:plain

確認

ちゃんとstrechがinstallされているか確認します

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.4 (stretch)
Release:        9.4
Codename:       stretch

その他

local IPの固定
$ sudo cp -ip /etc/dhcpcd.conf{,.org}
$ sudo vi /etc/dhcpcd.conf
  # uncomment and change below lines
  50 static ip_address=192.168.179.101/24
  51 static routers=192.168.179.1
  52 static domain_name_servers=192.168.179.1
ユーザー名変更

デフォルトのpi/raspberryから変更する方法

### login as pi user
# create temporary user
$ sudo useradd -M tmp
$ sudo gpasswd -a tmp sudo
$ sudo passwd tmp  ## すぐ消すので適当につける
 
### reboot and login as tmp user
$ sudo usermod -l nouziru pi
$ sudo usermod -d /home/nouziru -m nouziru
$ sudo groupmod -n nouziru pi
$ sudo passwd nouziru
 
### reboot and login as nouziru user
$ sudo userdel tmp
raspi-config設定
$ sudo raspi-config
  # 自動ログイン無効
  3. Boot Options
    > Desktop / CLI
      > B3 Desktop Desktop GUI, requiring user to loginを選択

  # TimeZone変更
  4. Internatinalization Option
    > Timezon
      > Azia > Tokyoを選択

  # カメラ・SSH・I2C・Serial有効化
  5. Interfacing Options
    > Camera => Yes
    > SSH    => Yes
    > I2C    => Yes
    > Serial
      > Serial Login     => No
      > Serail Interface => Yes

# setting後に再起動するか確認されるので再起動
sshのポート変更
$ sudo cp -ip /etc/ssh/sshd_config{,.org}
$ sudo vi /etc/ssh/sshd_config
### uncomment and change below line
13 Port 10022
音声テスト
### confirm audio output system
$ speaker-test -t sine -f 1000

Eagle Tips

Eagleのtipsです
versionは6.6.0で確認しています

よく使うlibrary

  • akizukiタクトスイッチ
    • switch-omron.lbr > 10-XX
  • 電源、GND
    • supply1.lbr
  • 抵抗・コンデンサ・コイル等
    • registor.lbr, rcl.lbr
  • ピンヘッダ
    • pinhead.lbr
  • SJ
    • jumper.lbr > SJ, SJ2W
  • 水晶
    • crystal.lbr > CRYSTAL
  • モジュラージャック
    • con-tycoelectronics.lbr
  • DC-DCコンバーター
    • dc-dc-converterllbr

ベタGND(Polygon)

Polygonを選択してLayerを選択(通常TopかBottom)して基板を囲む
f:id:portaltan:20180615103525p:plain
ratnestを選択すると実際の塗りパターンが確認できる
f:id:portaltan:20180615103706p:plain
戻したいときはRipupで先ほどひいたPolygonを選択すれば戻せる
変なところに塗られていやな場合はtRestrict/bRestrict LayerでPolygonを配置してやるとそこをさけて塗るようになる

  • 自分が使ってる設定
    • Width: 0.4064mm
    • cap: round
    • Polygon Pour : solid
    • Spacing: 1.27
    • Isolate: 0.3048
    • Orphans: no
    • Thermals: yes

配線確認(Show)

Showで配線上を選択すると、つながっている線が全てハイライトされる
f:id:portaltan:20180615103930p:plain
回路図の方でも対応した線がハイライトされる
f:id:portaltan:20180615104047p:plain

Layer選択(Layer)

Layersを選択
デフォルトでは以下のようになっている
f:id:portaltan:20180615104233p:plain
青く選択されているlayerが現在ボードの画面に表示されている
f:id:portaltan:20180615104622p:plain
マスク部分を確認したいときはtStop, bStopを選択してApply
f:id:portaltan:20180615104401p:plain
p版.comなどではvalueは印刷されないのでボードから外して確認するにはtvalue, bvalueを外してApply
f:id:portaltan:20180615104526p:plain

パーツ移動(Move/Group)

1つずつ移動したいときはMove
f:id:portaltan:20180615104857p:plain
まとめて移動したいときはgroupで対象を囲ってから右クリックでMoveを選択
f:id:portaltan:20180615105015p:plain

パーツコピー(copy)

パーツのコピーはcopy
1度コピーすれば他の回路図(ファイル)へのコピーも可能

パーツ反転(Mirror)

パーツを裏側に移動させたいときはMirror

パーツ追加(Add)

addしてライブラリからパーツを選択して配置
このとき表示されるライブラリはEagleを開いたときに最初に表示されるControl PanelのLibraryの項目で緑丸がついているものだけなので注意
f:id:portaltan:20180615105449p:plain

パーツ変更(Replace)

少し大きいパーツに変更したい時とかReplaceを使うとわざわざ配線しなおさなくてすむ

パーツName, Value設定・変更(Name/Value)

それぞれNameとValueから設定可能
f:id:portaltan:20180615105701p:plain f:id:portaltan:20180615105729p:plain

NameとValueの位置を変更したい(Smash)

パーツの位置はそのままでNameとValueの位置だけ変更したい場合はSmash
Smashを選択してパーツ中心の十字マークを選択すると、NameとValueの右上にも十字マークが表示される
f:id:portaltan:20180615105953p:plain
Moveでそのマークを選択するとNameのみ, Valueのみ移動することが出来る
f:id:portaltan:20180615110027p:plain

配線(Route/Ripup)

配線する際にはRoute
このとき配線は直角に曲げるのはよくないとされ、45度ずつ曲げるようにする
f:id:portaltan:20180615134859p:plain
うまくパーツの中心にこないときは、一度途中で配線を止めてもう一つのパーツからひいて繋げるとうまくいくことが多い
一度配線したものを取り消すのはRipup
Deleteではできないので注意
表面(Top)から裏面(Bottom)への配線をする場合は途中でviaをうつ必要があるが、Routeコマンドで配線している途中でlayerを変更することで自動でviaをうってくれる
回路図ではシングルクリックではどこまでも線が続くが、ダブルクリックで終了となる

Wire

こちらも線を引くツールだが、こちらでは回路図の方で指定していない線も自由にボードに引くことができる
線をひいた後にNameをGNDと変更することでベタGNDで塗られていない部位も追加することができる
f:id:portaltan:20180615135439p:plain

テキストボックス(Text)

文字を入力することが出来る
通常p版.comではパーツのvalueは印刷されないが、それを個別に入力することで印刷したり、ボードの名前や簡単な説明を入力することができる
f:id:portaltan:20180615135754p:plain

Grid

ボードに表示されるGridを指定できる

  • 自分が使ってる設定
    • Size: 1.27mm
    • Multiple: 1
    • Alt: 0.0125inch

f:id:portaltan:20180615172259p:plain

パッド間レジスト開口クリアランス

以下の画像のtStop(緑の斜線エリア)を広くしたい or せまくしたい場合
f:id:portaltan:20180727102208p:plain
DRCから以下のMasksのパラメータで調整
f:id:portaltan:20180727102311p:plain
f:id:portaltan:20180727102510p:plain
今回は2milから5milに広げてみた
f:id:portaltan:20180727102548p:plain

SANs対応済みでワイルドカードオレオレ証明書の作り方

過去の投稿はこちら
portaltan.hatenablog.com
portaltan.hatenablog.com

### 1. setting
$ export name=server

### 2. create private key
$ openssl genrsa 2048 > ${name}.key
 
### 3. create csr
$ openssl req -new -key ${name}.key > ${name}.csr
.
.
Common Name (eg, your name or your servers hostname) []:*.domain.com # 適宜修正
.
.

### 4. create crt
## create extension file
$ echo subjectAltName=DNS:*.domain.com > san.ext #適宜修正
## generate crt
$ openssl x509 -days 3650 -req -signkey ${name}.key < ${name}.csr > ${name}.crt -extfile san.ext

### 5. confirm
### confirm(csrファイル)
$ openssl req -text -noout -in ${name}.csr
### confirm(crtファイル)
$ openssl x509 -text -noout -in ${name}.crt

(### convert der file)
$ openssl x509 -in ${name}.crt -outform DER -out ${name}.der

秋月のコイル(SMD Power Inductor) NR10050T100Mのライブラリを作った

以下の秋月のコイルのEagleのライブラリが見つからなかったので作成しました
akizukidenshi.com
データシート
http://akizukidenshi.com/download/ds/taiyouyuden/NR10050T100M.pdf

ライブラリ作成の開始

File > New > Libraryを選択すると新規ライブラリ作成画面が表示される
f:id:portaltan:20180601113208p:plain
まずはこの時点でライブラリ名を決めて保存してしまう
今回は『smd-power-inductor.lbr』とした
基本的にライブラリ名は英小文字と数字とハイフンで作られているので、それに従ったほうがよさそう

次から実際のライブラリ作成を進めていく。大きな流れは以下のようになる
1. Packageの作成 : パターン図に表示される
2. Symbolの作成 : 回路図に表示される
3. Deviceの作成 : 作成したPackageとSymbolを連携させる

Packageの作成

f:id:portaltan:20180601113418p:plain
Packageアイコンを選択して、名前を決める
(今回はNR10050とした)
以下のようなパターン図作成のような画面が表示される
f:id:portaltan:20180601114303p:plain

Gridの設定

まずはGridの設定を行う
今回は部品が小さいので、Sizeを0.1mm、Altを0.05mmにした
f:id:portaltan:20180601114529p:plain

Smdの設置

次にSmdの設置を行う
smdは表面実装用のpadで、pinはその名の通りピン用のホールを作成する
今回のコイルは表面実装コイルなのでsmdを選択する
f:id:portaltan:20180601114617p:plain

まずボード上に配置したら、Propertiesから調整をする

  • Name:1へ変更
  • position: 0,0へ変更
  • Smd Size: 2.6 x 4.5

f:id:portaltan:20180601115103p:plain
Smd SizeはデータシートのRecommeded Land Patterns通りにした
f:id:portaltan:20180601115804p:plain

つぎに見やすいようにスケーラをつける
f:id:portaltan:20180601115243p:plain
スケーラ自体もデフォルトは太すぎて見にくいので細く小さくする

  • Size: 0.3048へ変更
  • Layer: 47 Measuresに変更
  • Line Width: 0.01へ変更

f:id:portaltan:20180601115603p:plain
もしMeasuresのLayerを非表示にしている場合は見えなくなってしまうので、その場合はLayer Settingから47番を表示にする
f:id:portaltan:20180601115713p:plain
同じく高さ(データシートのC)もスケーラをつけた
f:id:portaltan:20180601120037p:plain

次に作成したsmdをコピーしてもう一つ作成する
smd間の距離はデータシートの通り5.4mmにする
f:id:portaltan:20180601120241p:plain

外形の作成

今回はコイルが丸型なので外形として円を書きます
大きさ等はデータシートを参考にします。ちょっと楕円になっていますが、ほぼ変わらないので半径は5mmとします。
f:id:portaltan:20180601120723p:plain

Circleを選んで適当に配置したら、Propertiesで調整します

  • Position: 4,0へ変更
  • Layer: 21 tPlaceへ変更
  • Radius: 5へ変更

f:id:portaltan:20180601120656p:plain

Descriptionの追加

下部のDescriptionというリンクをクリックして説明文を追加します
f:id:portaltan:20180601121147p:plain

Packageの完成

以上でPackageの完成です、保存をして次のSymbolの作成に移ります
f:id:portaltan:20180601121336p:plain

Symbolの作成

まずはSymbolアイコンをクリックして名前をつけます
f:id:portaltan:20180601121434p:plain
そうすると回路図の画面が表示されます
ここで実際に回路図に表示される記号を作成していきます
f:id:portaltan:20180601121649p:plain

コイル記号の作成

Arcアイコンを利用してコイルの記号を作成します
f:id:portaltan:20180601121808p:plain

pinのアタッチ

pinアイコンを選択して、以下のように配置します
f:id:portaltan:20180601121914p:plain
これもPropertiesで調整します

  • Length: shortへ変更
  • Visible: offへ変更

f:id:portaltan:20180601122039p:plain

Symbolの完成

以上でSymbolの作成は完了です。保存してDeviceの作成にすすみます
f:id:portaltan:20180601122139p:plain

Deviceの作成

Deviceアイコンをクリックして名前をつけます
f:id:portaltan:20180601122300p:plain
以下のような画面が表示されます
f:id:portaltan:20180601122354p:plain

Symbolの追加

Addアイコンから今作ったNR10050 Symbolをaddします
f:id:portaltan:20180601122507p:plain

Packageの追加

次に右下のNewボタンからNR10050 Packageをaddします
f:id:portaltan:20180601122549p:plain

Connect

まだPackageとSymbolは別のものとして関係がないので、Packageのsmdとsymbolのpinをconnectします
右下のConnectボタンを選択し、接続したいpinとpadを選択してConnectをクリックします
f:id:portaltan:20180601122752p:plain

Prefixの追加

右下のPrefixを選択し、Lと1文字いれてOKを押します
これで、同じ部品が呼び出されたときにL1, L2・・・と名前が自動で付加されていきます
(PackageとSymbolで名前を付け忘れていたのでつけています)
f:id:portaltan:20180601123045p:plain

Desciptionの追加

左下のDescriptionアイコンをクリックして説明文を入力します
f:id:portaltan:20180601123308p:plain

Deviceの完成

以上でDevideの完成です。これが最後の工程なのでライブラリの完成となります。
f:id:portaltan:20180601123430p:plain

確認

実際にライブラリを呼び出して確認してみましょう
Libraries一覧で確認をして、
f:id:portaltan:20180601123727p:plain
新規プロジェクトで呼び出すと以下のように先ほど作成したコイルが表示されるのが確認できます
f:id:portaltan:20180601123859p:plain

メモ

今回はやっていないんですが、パッケージ作成時の最後に中心点をパーツの真ん中にしておくと、実際にライブラリを使う際に便利です
(中心じゃないとrotate時に位置がずれてしまうので)

gitで親ブランチのない空ブランチを作成する

gitで親ブランチの空ブランチを作成する方法です
私はgit利用開始時に色々なversionのソースがあって、それらをgit上でmergeしていきたいときになど使います

--orphanオプション

# 親のないブランチの作成
$ git checkout --orphan <new_branch>

# 管理対象ファイルの指定
$ git add <file you want to add>

# commit
$ git commit

# push
$ git push origin <new_branch>

これでネットワークグラフなどで、どのブランチともつながっていないブランチが作成されます
ちなみにすでにmasterブランチなどで開発を開始してcommitをしている場合、git addの履歴は残っているのでaddしなおさなくて大丈夫です
git commit はしないといけません

Gitメモ

大昔に書いたgitのメモ

Install Git

環境設定
vi ~/.gitconfig
[user]
  name = nouziru          # username
  email = foo@bar.com # mail address
[core]
  editor = vim           # gitで利用するeditorの指定

$ git config --list            # 現在の設定の表示

clone repository

clone other brach
$ git branch -a  # (リモート上の全てのブランチを表示)
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/test
  remotes/origin/master
  
### CUIから作成する場合
# 1. 今いるブランチの状態がbaseとする場合
$ git branch [つけたいbranch名]
$ git branch
   master
 * develop

# 2. 現在の HEAD (デフォルト)以外の場所から始まるブランチを作成するには
$ git branch new test           # "test" ブランチのHEADから開始するブランチ "new" を作成
$ git branch new v1.2.3     # タグ v1.2.3 から開始するブランチ "new" を作成
$ git branch new HEAD^     # 最新のコミットの1つ前の位置から分岐するブランチを作成
$ git branch new HEAD^^   # 最新のコミットの2つ前の位置から分岐するブランチを作成
$ git branch new test~10     # ブランチ "test" の10個前の位置から分岐するブランチを作成

### 既にGUIでdevelopブランチを作成している場合
$ git checkout -b develop remotes/origin/develop
$ git branch
   master
 * develop

Merge

リポジトリ内の場合
### masterからmerge用(確認用)ブランチを作成
git branch merge master
 
### merge処理(確認)
git checkout merge # merge(受け入れ側)ブランチに移動
git merge --no-ff dev #merge(差出側)ブランチを指定してmerge
git push http://github.com/xxxxxxxxx/xxxxxxx.git merge:merge
  
### merge(リリース)
git checkout master
git merge --no-ff merge
git push http://github.com/xxxxxxxxx/xxxxxxx.git merge:merge
Forkしてきた場合
###Fork元の最新ver.のコードからremoteブランチを作成する
git remote add fork_master http://github.com/xxx/xxx.git
  
#ブランチ確認
git branch -a
  develop
* release
  remotes/fork_master/master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  
# remotes/fork_master/masterをbaseにrelease用ブランチに作成
git checkout -b release remotes/fork_master/master
  
### 開発してきたブランチをmerge
git checkout release
git merge --no-ff remotes/origin/develop # merge(差出側)ブランチを指定してmerge
git push http://github.com/xxx/xxx.git merge:merge

### merge(リリース)
git checkout master
git merge --no-ff merge
git push http://github.com/xxx/xxx.git master:master
  
### このままではWEB上で表示されて、かつローカルにもブランチはあるが、remoteにはない(remotes/origin/****がない)という状態になるはずなので以下を実行
# pull(fetch + merge)してもよい
git remote -v
git fetch origin