RaspberryPi3Bを手に入れた
今更感もありますが念願のRaspberryPi3Bです。
このモデルからWifiとBluetoothが組み込まれているのでとても簡単に遊ぶことが出来ます。
いざセットアップ!...がしかし
公式からRaspbianをダウンロードしブートディスクを作成したところで問題が発生しました。
我が家には有線のUSBキーボードがない。
我が家のキーボードとマウスは全てロジクール製のワイヤレスだったのでセットアップが出来ません。(試してませんが多分ドライバとか用意しないといけない)
わざわざ買いに行くのも面倒だなと思ってしまったので今回は"組み込みっぽく"こいつを利用しました。
Arduino Micro
Arduino Microです。
こいつはLeonardo系のArduinoでPCなどとUSB接続したとき、自身をHIDとして認識させる機能が標準で備わっています。
IDE上に
#include <keyboard.h>
この一文を添えてあげるだけでまるでキーボードかのように振る舞うことが出来ます。Aha! So Easy!
今回はこいつを利用してログイン等をして行こうと思います。
コード
/*
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コード表まで引っ張り出してきました。
// Keyboard.write(0x0D); // windows (CR + LF)
Keyboard.write(0x0A); // LF = 0x0A , CR = 0x0D
コードのココに書いてる通りlinuxではLFが改行コードです。
ついでに間違いなく必要にならないですが、一応Windowsでも使えるようにしておきました。
結果
Arduinoは書き込み後、USBでRaspberrypiにおもむろに接続すると自動的に起動します。
後は勝手にAruduinoが
- キーボードにふりをする
- IDを打ち込む
- パスフレーズを打ち込む
- /bootに移動する
- sshファイルを作る
- 一応確認のためにディレクトリの中身を見せてくれる
- 再起動させる
この一連の流れをやってくれます。
そうして無事に再起動後raspberrypilocalでの接続に成功しました。
ちなみに、この子には
#include <Mouse.h>
という特技もあります。ほんとにいい子!
とっさの状況では何が役に立つか分からないものですね!
次はこいつらを使ってなんちゃってIoTシステムを作ってみようと思います。

