「Raspberry Pi」カテゴリーアーカイブ

Google AIY Voice Kitで自作スマートスピーカー – 2 – GCPへの登録とサンプル実行

ども。こんばんは。

続いては、GCP周りです。

これもガイドには載っていますが、ガイドの画面キャプチャがちっちゃいのでこちらでも紹介したいと思います。

今回はGoogle Assitant APIを使うためにGoogle Cloud Platformにサインアップして、新しいプロジェクトの作成やAPIキーを取得します。
取得したAPIキーをAIY Voice Kitにコピーしてサンプルを動作するところまでをやります。

まずはGCPのコンソール(https://console.cloud.google.com/)にアクセスします。

私は初利用だったので、規約の同意とかが出てきました。
※Googleのアカウントはすでに持っていたモノを使っています。

新しいプロジェクトを作成します。

任意ですが「AIY Voice Kit」とかにしてみました。

できました。

作成されたプロジェクトが選ばれていることを確認して「API & Services」のダッシュボードに移動します。

Google Assistant APIを検索します。

APIを有効します。

有効化できたらこんな感じになります。
※「認証情報の作成」っていうボタンを押したくなるのですが一旦我慢します。

こんな感じで、左側の「認証情報」を選択して「OAuth同意画面」を設定します。
ユーザに表示するサービ名は最後に出てきます。
※それ以外はメールアドレスのみ入力しましたが多分大丈夫。。

で、次左のタブに移動してOAuthのクライアントIDとクライアントシークレットを作成します。

クライアントの種別とかを設定します。
今回はその他にして手打ちで入力しました。

作成を押した後ポップアップでIDとシークレットが表示されますが後でダウンロードできます。

出来上がったものをダウンロード(JSON形式)します。

ここまででGCP上での操作は一旦終了!

次にGoogle Assistant関連のアクティビティの設定をします。
これ結構重要みたいです。

実際にAssistantを使いたいGoogleアカウントでアクティビティの管理(https://myaccount.google.com/activitycontrols)にアクセスします。

以下のアクティビティを有効にします。(私は全部有効になっていました。)

  • ウェブとアプリのアクティビティ
    • Chrome の閲覧履歴と Google サービスを使用するウェブサイトやアプリでのアクティビティを含める
      ※↑これにチェック入ってないと一辺倒な応答しか返さない?らしい。
  • 端末情報
  • 音声アクティビティ
  • イメージはこんなかんじ。

では、いよいよAIY Voice Kitを使います!

ダウンロードしてたJSONファイルを転送します。

 

ダウンロードしたJSONファイルをAIY Voice Kitにアップロードします。
※ダウンロードした状態だと「client_secret_****」という名前のはず。

アップロード後以下のファイル名にリネームします。

/home/pi/assistant.json

ここまでで準備完了。

いよいよサンプルプログラムを実行するのですが、私はSSH環境でやっています。

HDMIでディスプレイに繋いでいれば、AIY用のターミナルがあるようですが、SSH経由だと環境変数などを一旦読み込む必要があります。

こんな感じ。(piユーザでログイン後に実行)

pi@hoge~ $ cd AIY-voice-kit-python/
pi@hoge:~/AIY-voice-kit-python $ source env/bin/activate
(env) pi@hoge:~/AIY-voice-kit-python $

じゃぁOK Googleなやつ言ってみますか!

(env) pi@hoge:~/AIY-voice-kit-python $ src/assistant_library_demo.py

※初回は以下のようにアカウントの同意?を求めるURLが出る模様です。ディスプレイとか繋いでるとブラウザが立ち上がってたのかも?

とりあえず普通にURLをコピーして(別の端末でもいいので)アクセスします。

アカウントの選択が出てきます。

アクセスを許可します。

コードが出てくるのでこれをSSHに戻って貼り付けます。

これで喋るはずです。

OK google!

(ボタンが光ります!おおお!)

今日の天気は♪

You are welcome!

・・・You are welcome?

 

!?

・・・あれ?

あ、こいつ英語しかしゃべれないんだった・・・

ということでこうなりました。
※こっ恥ずかしいので、私の声はカット済み。ハウアーユーとネイティブジャパニーズで喋りかけました。

 

あと、音でかい・・・。

音量(ボリューム)の調節はこちらが参考になりました。

Voice Kitで自作GoogleHomeを作る際に付け足したこと

$ sudo amixer -M #←ミキサーの名前を確認

$ sudo amixer set Master 70% #←音をちっちゃく。
Simple mixer control ‘Master’,0
  Capabilities: volume
  Playback channels: Front Left – Front Right
  Capture channels: Front Left – Front Right
  Limits: 0 – 255
  Front Left: 179 [70%]
  Front Right: 179 [70%]

起動時に小さくする用にしたほうがいいですね。

日本語の件は、一応つい最近Assistant SDKが多言語対応したみたい?ですね。

Google、「Google Assistant SDK」を日本語対応などの新機能でアップデート

あと、先駆者の方がいらっしゃいましたが、いわゆるGoogle Homeのようにはなかなかいかない模様ですね。。。

AIYスピーカーを、ほぼ日本語版Google Homeに【Google Assistant SDアップデート】

と、とりあえず動いた!!!

次回は・・・。。。うーん。どうしましょ。日本語対応ですかね。。。

あと、Cloud Speech(音声の認識してくれるサービス)は有料?らしいですが、日本語もちゃんと聞き取れる見たいでです。

また、登録していませんが、2017年12月30時点では、

料金はざっくりまとめると、月間60分までは無料。(15秒単位。一秒しか喋らなくても15秒分としてカウントされる)
それ以上(61~100 万分)は、$0.006 / 15 秒*らしいです。

えと、単純計算で

60分/15秒=240回

240回/31日=7.741…

一日7回までは無料で使える感じですかね。単純計算ですが。

で、まぁ追加になっても15秒1円もかからない($0.006=0.67643743 円 2017/12/30時点)し、いいかなぁ。
これも無料トライアルに含まれるんかな?(←まだトライアル登録してないけど。)

バックナンバー

ではでは。またの機会に・

Google AIY Voice Kitで自作スマートスピーカー – 1 – 組み立て〜初期設定編

ども。こんばんは。

先日キットは先行販売分が届いていましたが、
今日新しいRaspberry Pi 3 Model Bも届きました!

年末年始遊ぶよ!

ちなみに私は12連休の人です(^q^)

まずは組み立てて普通にラズパイとして使える状態にするところまでをやります。

先に書きますと、途中で両面テープが必要!!です。なかったのでちょっと困りました。

いろいろやり始める前にOSのイメージを準備しておきます。

専用にカスタマイズされたOS(Raspbianベース)が公開されていました。

https://aiyprojects.withgoogle.com/

あと、イメージの書き込みツールとしてEtcherというのが推奨されていましたのでこれもインストールしました。
これ結構良さそう!

ダウンロードしたイメージを選んで焼きます。

シンプルで使いやすいぞ。

SD焼いてる間に開梱。

今回追加で購入したRaspberry PI一式。全部KSYさんで購入しました。¥6,453なり。
SDはAmazonでも良かったのですが、ラズパイ本体(黒電源セット)が¥4,995とギリギリ送料がかかってしまう値付け笑だったので、KSYさんで購入しました。Sandiskの16GBで¥1,458なり。以前購入したもののほうが値段は安くスピードは出そうです。

改めてAIY Voice Kitとご対面。

開封の儀〜。写真付きのマニュアルがあります(英語)。十分読めます。

内容物はこんな感じ。意外とスピーカーがちゃんとしてる!ボタンは緑でした。色って選べたのかな?

では組み立てます。基本ガイド通りです。
まずはスペーサーみたいなやつをラズパイに挿してHATをかぶせます。
※このスペーサー(スタンドオフ?)は、真上から押してもなかなか入りませんでした。前後にグリグリやると入りました。。

スピーカーをつなぎます。
このケーブル、両方赤っぽいですが、奥側は反面が黒に塗られてます。。。
+/-はHAT上にも印字があるので、黒いケーブルを-側に。

差し込んだらドライバーで締めます。

次にマイク用とボタン用のケーブルをHATに接続します。
4ピンと5ピンなので迷わないはず。

マイク側も繋ぎます。
これ!後で両面で貼らないと駄目です。
一応トゲトゲ?がついててダンボールにブスっと刺さりますが、ガイドには両面で貼ってって書いてますね。

次は箱を組み立てます。まずは底から。

もう一つある箱も指示通り折り曲げていきます。

ラズパイとスピーカーを収めます。

外箱にいれます。写真撮り忘れましたが、マイクボードもつけます。(両面で)

いれ終わったところ。HDMIと電源もちゃんと横から抜き差しできます。

なんか斜めってるけどUSBとLAN

だいぶ斜めってるけど、SDカード・・。

ボダンを取り付けます。

ボタンのケーブルを刺します。
なんか「宝」って書いてる・・・。向きに注意してケーブルはガイド通り。色で判別でいます。

白 黒
△宝△
青 赤

です。

でけた!

SDも焼きががりました。

ここから、私は以下2つの操作をしました

・/boot/直下に空っぽのsshファイルを作成。(SSHを有効にするため)

あとWiFiの設定もしました。/boot/直下にいつもの「wpa_supplicant.conf」を書いておけば読み込んでくれる見たいです。

じゃぁSDカードを挿入して起動します!

おおおお。専用の壁紙だー。

ダイアログが出ているのはSSHが有効になっているってのとパスワードがデフォルトだってことが書いています。
※デフォルトID/パスワードはRaspbianと同じでpi/raspberryです。

デスクトップにある「Check audio」を実行します。

おおー。音出た!あと、自分の声を録音して再生してくれます。

意外と音でかい笑あと思ったより音がいい。

できました。

後は、piユーザのパスワード変えたり、Wifiのリージョンを変えたり、タイムゾーンを変えたり、apt-get update、apt-get dist upgradeとかrpi-updateとか。
この辺を参照。NTPは入ってたな。最初から。

間違いないくpiユーザ消さないほうがいいですね。今回は。

次回はGCPとかを設定してGoogle Assistant APIを設定します。

ではでは。またの機会に。

 

 

Google AIY Voice Kitが届いた

ども。こんばんは。

先行販売で申し込んでいた分が届きました!

が、まだこれ用のRaspberry Piを買ってない・・・・

FortiGateのリプレイスも終わってないし、これはもうちょっと後・・・かな。

実はこっちも欲しくなってきてる・・・

RaspberryPiを“学習リモコン化”する基板が発売、公式ケースに収納OK

うーん。やりたいことがいっぱいあるぞー。

あ、龍が如く 極2は、本編一通り終わりました!真島編も楽しみ!

ではでは。またの機会に。

おもちゃ箱を買った。龍が如く 極2を始めた。とか。

ども。こんばんは。

雑記です。

・電子工作用の諸々を入れるツールボックスを買いました。

アイリスオーヤマ 工具箱 マイキット 40 クリア/ブラック【幅約40×奥行約22×高さ約22cm】
¥1,500なり。

もともとキットに付属していたケースが小さくてパンパンだったので。

いい感じになりました。ちょっと大きいけどね。

・龍が如く 極2はじめました

・スマートスピーカー関連小ネタ

Amazon echo dotをBluetoothスピーカーにつなぎました。だいぶ前に買ったCreative T12 Wirelessに接続しました。なかなか快適です。

あと、買い物リストはなかなか便利。

やっぱり賢いのはechoかなあ。特にGoogle home miniは喋りかけても反応したかパット見わかりづらい。
ユーザアシスタンスで反応したら音出せるんだけど、なんかダサいよな。。。

ではでは。またの機会に。

 

いまさらはじめるRaspberry Pi(2017) – 7 –

ども。こんばんは。

今日は秋葉原に買い物に行ってきました。

秋月電子と千石電商を見てきました。

どっちもすごいですね。人もいっぱい。見たこと無い部品でいっぱいです。
なんとなく千石電商のほうが買いやすいかも?と個人的には思いました。
秋月電子のほうが細かいパーツはおおいのかな?比べるほどの知識はありませんが・・・。

こういうお店にいくと電気街って感じがしますよね。

色々面白そうなものがたくさんあって、思わずRaspberry Pi Zero Wのスタータキットとか買ってしまいそうになりましたが、今日は目的が決まっていたので、欲は出さずに以下購入。

ラジペン 一番やすそうなやつ・・・¥700
ブレッドボード用ジャンパワイヤ(50本) ¥470
メス-オス ジャンパワイヤ(100個) ¥570

これはなかなかいい買い物をしました。

ラジペンは一本も手持ちがなかったのでとりあえずで買いました。
その他2つのパーツおかげで随分スッキリしました。
※回線図でよく見かける斜めにシャっとつながっているのはこういうジャンパワイヤだったんですね。

ということでbefore/after。

・Before。ゴミゴミしている。写真には写ってないですが、LCDはオス-オスとメス-メスのジャンパワイヤで繋いでおりこんがらがっています。

・After。すっきり。

本当に少しずつ少しずつこういうところがわかってきました。

全く道の世界なのでお店に行ってどういうものが売ってるのか見るのは勉強になりますね。

ではでは。またの機会に。

バックナンバー

 

 

いまさらはじめるRaspberry Pi(2017) – 6 –

ども。こんばんは。

昨日は風邪で寝込んでしまいました。。。

一昨日のネタです。

赤外線レシーバーを使ったリモコンに挑戦中です。
※苦戦。単純に受信するだけなら簡単。

それはまた明日以降書くとして・・・・

ブレッドボードとT型拡張ボード(T型エクステンション、T Extentioinなど)の使い方を唐突に理解しました。。。

理解が遅い。。。

いろんなサンプルを見ていくうちに、自分が猛烈に間違っていることに気づきました。

今までの使い方・・・

正しい使い方

だから、メスのジャンパワイヤばっかりだったのか!
※でもメス-オスのジャンパワイヤは絶対いると思う。。。

ずっと、GPIOの3.3Vとか、一個しか無いのおかしいよなーと思ってましたが、こういう使い方するんですね。。。

3.3VとGNDをブレッドボードの上下の+と-に繋ぐと、そこに繋いで電力を得られる仕組みになっているようです。
※で、ちょっとまた知らなかったのですが、+と-で赤と青のラインが入ってますが、ラインの切れ目までしか電気が届かないようになっているみたいですね。
なので、今LEDに繋いでいる部分が左半分の一番右端という感じ。

で、T型拡張ボードの横からとっていきます。こうすれば、T型拡張ボードにかかれているピンアサインを見ながら接続できるし、電源も端から取ればいいので、いっぱいつなげます。

なるほど・・・。普通かもしれませんが、なかなか良いキット買ったみたいです。

やっと少しづつ理解してきました。

LCDも繋ぎ変えましたが、これメス-メスのジャンパワイヤにオス-オスを繋いでいるのであんまり良くないっぽいです。

そんなに値段は高くなさそうだしいろんな長さのセットを買っておこう。

おまけ。いま頑張っているIR受信モジュール。

AX-1838HSという名前みたいです。

参考:https://arduino-info.wikispaces.com/IR-RemoteControl

ではでは。またの機会に。

バックナンバー

いまさらはじめるRaspberry Pi(2017) – 5 –

ども。こんばんは。

新しいラズパイが届きました!

その前に、ちょっと今日はヨドバシにいって色々買ってきました。

小さめで安そうな(¥1800くらいしたけど・・・)キーボード、テスター(¥2,500くらい)、安いHDMIケーブル(¥1,000くらい2M)です。
HDMIケーブルは、ずっと余りが無いと思いこんで、DVI->HDMIを使ってPCのディスプレイにつないでいたので、テレビとつなぐために買いましたが、家に帰ったらテレビに余ったHDMIケーブルが刺さっていました。灯台下暗し。無駄な出費だー。。。

テスターは今後色々回路を作る上で、また壊してしまわないように買いました。

で、新しいラズパイきました!

Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab
¥5,980なり。

最初からケースに入っていました。
GPIOのピンアサイン表が付いてきます。

左が今回買ったもの、右が壊れた先代。
ネットの評判通りほぼ変わりません。
※ヒートシンクは今回も付属していました。写真は付ける前。

今回のケースは本体とケースをネジ止めしない見たいですね。
また、ケース側にはGPIOの上部に取り外し式のカバー(画面左端)がついています。
割れる想定なのか、予備が1つ付属していました。確かにすぐ割れそう。。。

それと、これ技適マークなくない?と思ったら説明書にありましたけど、これでいいのかな。。。

・・・。

さて、いよいよSDを旧→新へ差し替えて起動します。

・・・めちゃくちゃあっさり起動しました。

MACアドレスが変わったことで、無線APの設定など周辺機器は変更しましたが、ラズパイ自体は何も設定を変えなくても大丈ぶでした。。。大変すばらっです。

筐体が変わったのでrpi-updateをしておきます。

ちなみにちゃんとCEC?でテレビにraspberrypiだと通知するんですね。

そのまま、勢いでLCDにリベンジします。

やっぱりこれを使うのだろうということでこれを使います。

今回は、事前にLEDを光らる回路を接続してちゃんとGPIOの動作確認をしました。

結果、ピンは↑の印字通りで問題ないようでした。

先日失敗したときは、ラズパイ側のGPIOの接続の向きを間違ったのでは?と思っていましたが、どうも正しかったようです。

ということは、本当にジャンパワイヤの接続を間違えただけだった可能性がありますね。。。
※そもそも5Vに繋いでいたりしたので。。。

また、今回はちゃんとシャットダウンして、電源を抜いた上で接続し、何度かチェックしてから電源をいれます。

配線はこの付属ドキュメントの図の通り。

GPIO側。

LCD側

お!バックライト?が光った!
今回は熱くなったりもしないようです。

とりあえず一安心。

続いてI2Cを使えるようにします。

raspi-configから設定。

ここまで順調ですね。

付属のマニュアルによれば、/etc/moduleを編集したり、pythonにi2c-toolやsmbusをインストールするよう指示がありますが、特にそのあたりは不要でした。

続いて、I2Cの確認をします。

# i2cdetect -y 1

こんな結果が帰ってきます。
この27が大事みたいです。まだこの辺はよくわかっていません。。。

またいつのタイミングからなのかはわかりませんがgpio readallの結果がこんな感じになっていました。

PIN2とPIN3のモードがALT0になっている。I2Cを有効化したからなのか、ちゃんと接続後にI2Cとして認識されたのかは不明。後日試します。

ここまでくればサンプルを流してみます。

付属CDにあったサンプルを流してみました。
※付属CDにもpythonスクリプトがありますが、付属のドキュメントだと、wgetしろって書いてますね。

おー!動いた!!!!!

※うまく表示できない場合は、裏面のネジ?を回して濃度?を調整してみてください。
私は右にいっぱい回してちゃんと映りました。

ということで、サンプルを改変して、こんなのを作ってみました。

ちょっと撮影が下手ですが・・・。
今のラズパイの温度とuptimeコマンドの結果を出し続ける感じです。
本当は1行目だけ1秒ごとに更新したいのですが、あんまり再描画が速くないみたいで、断念しました。
※1行まるまる書き換えるのではなく、部分的に再描画させるようなことができないか確認中。

おまけです。

ラズパイって起動停止の如何によらず、赤色LED(PWR)点きっぱなしなので、起動中はピカピカするようにしました。

参考サイト:Raspberry-Pi 3 の電源ランプを点滅させる

ちょっと、見た目が”うるさい”感じになりました。。

しかし本当に昨日はなんでこんなに簡単なことなのに失敗してしまったんだろう。。。

ではでは。またの機会に。

バックナンバー

いまさらはじめるRaspberry Pi(2017) – 4 –

ども。こんばんは。

悲しいお知らせですが、記念すべき1台目のRaspberry PI 3は本日お亡くなりになった模様です。

多分、回路のつなぎ間違えか、よくわからずに繋いでしまったがゆえに過電圧をかけてしまったか。

今日はこちらを参考に、LCD(IIC/I2C 1602シリアル液晶モジュール)をつなごうとしていました。
※誤解のないようにしますが、こちらの記事を執筆された方は何も悪くないです。悪いのは私なので・・・。

1602 I2C Serial LCD Moduleをラズベリーパイ3(Raspberry Pi 3)で使う

何かをつなぎ間違えたのか、LCDモジュール側がかなり熱くなっていたことに気づいて抜いたのですが(それも良くなかったのかも)、その後ハングアップ。

本体も結構熱くなっていたので、一旦電源を抜いてみて、起動はしたものの、/bootなどがマウントできず。

何度か再起動して、普通に起動したのですが、その後ハングして、次に起動することはありませんでした。

電源を挿しても電源LEDも光らない(何度か再起動してみると、まれに弱々しく光る程度から完全に消灯した)ので、多分ハード的に壊してしまったのかな。。。

以下参考。先にこういった先人の知恵をいれておくべきだった。

Raspberry Piの壊し方

やっぱりハードものは難しい。

いかに自分がソフトウェアのレイヤーでやってきたかがよくわかります。

無知に物事をすすめると物が壊れるということがよくわかりました。
ソフトと違ってハードウェアは壊れるとすぐには元に戻らないので。。。

ただ、これにめげず、まだやってみようと思います。

ということで、新しいラズパイを発注しました。
今度はelement14版です。技適ついてるらしいので。

SDカードと中のOSが生きていることを願うばかりです。

ではでは。またの機会に。

–追記–

今回かったキットにそういえば付属CDがついてたと思って、見てみました。
※「K71 respberry PI」というフォルダを見ればいいみたい。

ちゃんと接続方法載ってますね。おいら5Vでつないじゃったよ・・・。

これLCDモジュール側も壊しちゃったかな。。。

あと、次このGPIOのライザ?みたいなの使う前に一度Lチカでピン配列が基盤のプリントと合ってるか見ておこう。。念のために。。。特に5Vの位置を・・・。

それと、ジャンパワイヤのメスがないので、ばらして使ったけど、いいんだよね・・・。

バックナンバー

 

いまさらはじめるRaspberry Pi(2017) – 3 –

ども。こんばんは。

前回のバックアップは無事終わったみたいです。リストア試験はしていません。
また、バックアップ前に「/forcefsck」をtouchして、バックアップ後に消すようにすれば、次回boot時にfsck走る・・・かも。

今回は、初めてのLチカ(GPIOを利用してLEDを点灯させる)をやってみます。

■環境のおさらい
Raspberry Pi 3 Model B
NOOBS v2.4.4
Raspbian 9.1 ※Stretchっていうやつかな?

■その前に

こんなものを買ってしまいました。

Kuman 35個 Raspberry Piに適用 初心者 電子工作 1602液晶ディスプレイ+温度/湿度センサ+BMP180デジタル気圧センサー+HC-SR501赤外線モーションセンサモジュール 子供遊び Raspberry Pi 3 2 model B A A+ + に対応 電子工作入門キット ラズベリーパイ K71
¥2,950なり。

こんな感じです。

色々入っています。

主役のブレッドボード。
初めて触ります。はんだ付けしなくても回路が作れるそうです。

LEDとか抵抗とかジャンパワイヤとか。

■Lチカする準備

もう回路とかは、たくさんサンプルがありますのでサンプル通りに。
※抵抗をどれにしていいかわかりませんでしたので、適当に選びました。
この辺の知識は0以下なのです。。。

参考:第9回「ラズベリーパイで電子工作!Lチカ…の前にLピカ!」

参考2:「Raspberry Pi3 Model B」で遊んでみよう!Part2

で、初っ端ですが、今回買ったキットには、ジャンパワイヤのメスが付属していませんでした。
正確には付属しているのですが、16ピンが束に鳴ったやつしかなかったです。。。

なので、キットに入っていたIDEケーブルみたいなやつを使いました。

これ、ピンの上下が反対になります。。。
これに気づかずだいぶ苦戦しました。

ブログ書きながら気づきましたが、これ使い方間違ってる気がする。
よく見るとこんなのが付属していました。

もしかして、こうやって使うんじゃね・・・?

何れにせよ、メスのジャンパワイヤがないですが・・・。

■GPIOの制御

とりあえずOS上から触ってみる上では、ざっくり2種類の方法があるようです。

仮想ファイルシステムとしてgpioを扱う。
gpioのコマンドで扱う。

今回は、ファイルシステムとして可視化されたものを扱う方法を使ってみます。

・まずはGPIOの状態確認

# gpio readall

このコマンドは、今後も使いそう。
※私の場合は、ピンの左右の物理配置は左右反対になってしまいますが。。。

BCMがGPIOの番号、Physicalが物理的なピンの位置。Vが1だと電気が流れる、Vが0だと電気が流れない。
MODEがINなのは、データを取ってくる、OUTなのはデータを書き込む方。

今のところそんな理解です。

 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
 | 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  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | 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 | 1 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+

・gpio2を使う

# cd /sys/class/gpio/ ← GPIOを扱うためのディレクトリ
# echo 2 > export ← GPIO2を使う。
# cd gpio2/ ← 上のコマンドを実行したことで、「gpio2」ディレクトリが生成される。
# echo out > direction ← directionをoutにする。

# gpio readall ← 状態確認。OUTにしたタイミングでvalue(V)が、0になりました(=電気が流れない)
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |  OUT | 0 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | 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 3---+---+------+---------+-----+-----+

・LEDを点灯させてみる。

valueを1にします。
※valueなので、てっきり”値”っていう意味かと思っていましたが、そういうもんでもない?
プルアップ/プルダウンとかそういうやつみたいです。

# echo 1 > value

これで光るはず!

・終わったら以下のコマンドで仮想ファイルを開放

# echo 2 > unexport

・チカチカさせるスクリプト

簡単ですが、ひたすらピカピカさせるスクリプトを書いてみました。
※1ラインでも動くレベルですが・・・。

#/bin/sh

while :
do

echo 0 > /sys/class/gpio/gpio2/value
sleep 0.1
echo 1 > /sys/class/gpio/gpio2/value
sleep 0.1

done

■動作確認

上記のスクリプトを動かしてみた感じ。

 

ということで、初めてのLチカでした。

次はLCDディスプレイにチャレンジします。

ではでは。またの機会に。

バックナンバー

 

 

いまさらはじめるRaspberry Pi(2017) – 2 –

ども。こんばんは。

昨日の続きをやっていきます。

今日は、rootパスワードを変えたり、piユーザを降格させたり、バックアップをとったりです。

■環境のおさらい
Raspberry Pi 3 Model B
NOOBS v2.4.4
Raspbian 9.1 ※Stretchっていうやつかな?

■rootパスワードの変更

デフォルトではパスワードなしっぽいです。正確には/etc/shadowでこのようになっています。

root:*:17416:0:99999:7:::

なので、sudo su -してrootになってpasswdで変えます。

これ、別にやらなくてもいいと思ってはいますが、何かあったときにrootで直接ログインしないと困るかもしれない。ということでやっています。この状態でもsudoでrootにはなれますし、あくまでパスワードが未設定(空ではない)ので、ログインもできないので、変に設定しないほうが安全といえば安全かも。

■SSHのrootログイン設定

こちらはデフォルトで無効でした。

■新規ユーザの作成/piユーザからsudo権限剥奪

これもいろんな先人のみなさんで方針はあるようです。
色々あってpiユーザは消さないほうが良いという話もあるみたいですね。
私もpiユーザを消すのはちょっと抵抗があります。
piからユーザ名を変えてしまうのが良さそうにも思います。

参考:[Raspberry Pi]ユーザ名変更の個人的に「正しい」と思うやり方

今回は、piユーザは残しつつ、sudo権限を剥奪し、新しいユーザにsudoを与え日々使うユーザにしてみます。

hogeユーザを追加しパスワードを設定。

# useradd hoge ←adduserのほうがよいかも(理由は後述)。
# passwd hoge

piユーザと同等の権限を付与。

# groups pi ← 今のグループの確認
pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio

# usermod -aG adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio hoge

※おまけ:usermod -G でユーザに新しいサブグループを追加してはいけない

ログインシェルをpiユーザに合わせる

# vipw
こんなかんじ。赤字部分を追記。

hoge:x:1001:1001::/home/tomo:/bin/bash

ホームディレクトリの作成とスケルトンの設定忘れてたorz
※プロンプトの色が緑じゃなかったので気づきました。。。

これuseraddじゃなくてadduserすればよかったですね。

今回はしょうがないので作ります。

# mkdir /home/hoge
# chown hoge:hoge hoge

# cp -ipv /etc/skel/.bash_logout /home/hoge/
# cp -ipv /etc/skel/.bashrc /home/hoge/
# cp -ipv /etc/skel/.profile /home/hoge/

# cd /home/hoge

# chown hoge:hoge .bash_logout
# chown hoge:hoge .bashrc
# chown hoge:hoge .profile

こんなところですかね。
hogeでログインして無事プロンプトが緑になればokかな。

続いてpiユーザをsudoグループから外します。

# gpasswd -d pi sudo

その後、「/etc/sudoers.d/010_pi-nopasswd」も編集しておきます。
※ファイル削除でもいいかも。

#pi ALL=(ALL) NOPASSWD: ALL

もし追加ユーザもsudoをパスワードなしで行いたい場合は上記のような設定をいれます。
※私は今回やりませんでした。

piユーザをログインできなくしてもいいのですが、まぁそれはいいかなー。
多分どっかでまたpiユーザ使う日がくる気がする。

■オートログインの無効化&デスクトップ起動させない(動作未確認)

これ最初から気に食わなかったので解除します。

/etc/lightdm/lightdm.conf」を編集して、「autologin-user=pi」をコメントアウトしてもいいと思いますが、raspi-configでもできるようです。

設定後はrebootを求められます。

ただ、これ、モニター繋ぐのが面倒くさいという理由でreboot後にチェックしていません。。。

autologin-user=pi」がconfig上まだ残ってる気がするんですが・・・。

■バックアップ

SDをコピーするのが主流?のようです。(ddとかで)

公式ドキュメント:https://www.raspberrypi.org/documentation/linux/filesystem/backup.md

NOOBS環境だと、パーティションがちょっと特殊で動かないツールもあるみたい?
SD Card Copierっていう付属のGUIツールもあるみたいですね。

個人的にネットワーク越しにどこかサーバに取りたいと思っています。

こんな方法があるんですね。ちょっと心配ですが、これが良さそう?

Use SSH and dd to Remotely Backup a Raspberry Pi

んー。でもSSHじゃなくて良いな。ということで、NASをマウントしてddします。

# mkdir /mnt/nas ←お好みで
# mount -t cifs -o username=username,password=password //xxx.xxx.xxx.xxx/sharename /mnt/nas

参考: make backup dd image while pi is live

バックアップするブロックデバイスを確認

# lsblk -p

NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
/dev/mmcblk0     179:0    0 14.4G  0 disk
├─/dev/mmcblk0p1 179:1    0  1.6G  0 part
├─/dev/mmcblk0p2 179:2    0    1K  0 part
├─/dev/mmcblk0p5 179:5    0   32M  0 part
├─/dev/mmcblk0p6 179:6    0   69M  0 part /boot
└─/dev/mmcblk0p7 179:7    0 12.8G  0 part /

/dev/mmcblk0」でいいのかな。

# dd if=/dev/mmcblk0 | gzip -1 – | dd of=/mnt/nas/raspi/sd.img.gz

※オプションが見慣れないが、圧縮率を低く=-1、標準入力を圧縮=-。という感じ。

時間がかかりそうなので、実行して放置。結果&リストアはまた今度!

今日はとりあえずここまで!

メモ:ddで取得したイメージを戻した後はfsckする。/boot/fsck

ではでは。またの機会に。

バックナンバー