23
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

raspberryPi3Bを手に入れました。が、、、、

Posted at

RaspberryPi3Bを手に入れた

2017-05-25 00.07.43.jpg
これです。

今更感もありますが念願のRaspberryPi3Bです。
このモデルからWifiとBluetoothが組み込まれているのでとても簡単に遊ぶことが出来ます。

いざセットアップ!...がしかし

公式からRaspbianをダウンロードしブートディスクを作成したところで問題が発生しました。

我が家には有線のUSBキーボードがない。

我が家のキーボードとマウスは全てロジクール製のワイヤレスだったのでセットアップが出来ません。(試してませんが多分ドライバとか用意しないといけない)

わざわざ買いに行くのも面倒だなと思ってしまったので今回は"組み込みっぽく"こいつを利用しました。

Arduino Micro

2017-06-10-0-33-30.jpg

Arduino Microです。
こいつはLeonardo系のArduinoでPCなどとUSB接続したとき、自身をHIDとして認識させる機能が標準で備わっています。

IDE上に
#include <keyboard.h>

この一文を添えてあげるだけでまるでキーボードかのように振る舞うことが出来ます。Aha! So Easy!

今回はこいつを利用してログイン等をして行こうと思います。

コード

raspi_init.ino
/*
2017_06_09 S.yagi
Raspi login without keyboard , make ssh file and auto reboot.
*/
# include <Keyboard.h>

const int DERAY_TIME = 3000;  // 3000ms (3sec)

void setup() {
//Serial.begin(9600); // for Debug
Keyboard.begin();
}

void loop() {

char loginID[] = "pi";
char passWD[]  = "raspberry";
char cdBoot[] = "cd /boot";
char touch[] = "sudo touch ssh";
char lsal[] = "ls -al";
char reboot[] = "sudo reboot";

delay(DERAY_TIME);
keyboardTyping( loginID );
delay(DERAY_TIME); 
keyboardTyping( passWD );
delay(DERAY_TIME);
keyboardTyping( cdBoot );
delay(DERAY_TIME); 
keyboardTyping( touch );
delay(DERAY_TIME); 
keyboardTyping( lsal );
delay(DERAY_TIME); 
keyboardTyping( reboot );
Keyboard.end();
while(1);

}

void keyboardTyping(char *text){
  for(int i=0; text[i]!='\0'; i++){
      Keyboard.write(text[i]);
//Serial.write(text[i]); for Debug
  }
//  Keyboard.write(0x0d);  // if windows (CR + LF)
  Keyboard.write(0x0A);    // LF = 0x0A , CR = 0x0D
  return;
}

簡単なコードなので説明は省きます。

ただ一つだけ悩んだ点がありました。

Linuxの改行コード

ん?改行コードって"LF"?"CR"?それともどっちもやったっけ?文字コードは?あれ?

てことで久々にASCIIコード表まで引っ張り出してきました。

raspi_init.ino(41-42)
//  Keyboard.write(0x0D);  // windows (CR + LF)
  Keyboard.write(0x0A);    // LF = 0x0A , CR = 0x0D

コードのココに書いてる通りlinuxではLFが改行コードです。
ついでに間違いなく必要にならないですが、一応Windowsでも使えるようにしておきました。

結果

Arduinoは書き込み後、USBでRaspberrypiにおもむろに接続すると自動的に起動します。
後は勝手にAruduinoが

  1. キーボードにふりをする
  2. IDを打ち込む
  3. パスフレーズを打ち込む
  4. /bootに移動する
  5. sshファイルを作る
  6. 一応確認のためにディレクトリの中身を見せてくれる
  7. 再起動させる

この一連の流れをやってくれます。

そうして無事に再起動後raspberrypilocalでの接続に成功しました。

ちなみに、この子には
#include <Mouse.h>
という特技もあります。ほんとにいい子!

とっさの状況では何が役に立つか分からないものですね!

次はこいつらを使ってなんちゃってIoTシステムを作ってみようと思います。

23
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?