Skip to content

hackspi_command

TANAHASHI, Jiro edited this page Jun 1, 2023 · 9 revisions

hackspiコマンドを用いたHackSPiのセットアップと実行

使用するメリット

  • hackspiコマンドは、HackSPiを完全ヘッドレスで扱うためのコマンドです。
  • RasPike環境のWikiにて解説されているセットアップ手順に比べ、ほぼフルオートでセットアップします。
    • Raspberry Pi ImagerでSDカードを作成する
    • etrobo環境から hackspi install を実行する
    • SDカードをラズパイにセットして電源を投入し、以下の項目を自動インストールしてもらう
      • raspi-configおよび/boot/config.txtの変更
      • OSのアップデート
      • 必要なパッケージのインストール
      • RasPike環境のインストール
      • Bluetooth PAN-NAPの設定
      • Spike Hubのmain.pyの書き換え
    • 約15分ほど待ち、Spike Hubに表示されるWi-FiのIPアドレスを確認する
      • 既知の問題:1と11など、同じ数字が連続する場合には表示されている時間の長さが2倍になるだけになっています。
  • ホストPCにVNC Viewer・Mu Editorをインストールする必要がなくなります。
    • Raspberry Pi Imagerは必須です。
    • Legacy SPIKE Appは、Spike Hubのファームウェアを更新する場合にのみ必要です
      • 現行のSPIKE App Ver.3系でファームウェアを更新するとRasPikeが動作しません。必ずLegacy Spike App(Ver.2系)を使用してください。
    • Visual Studio Codeは、なくてもいいですが、使いたくなるはずです。
    • ホストPCのVisual Studio Code上で全て操作可能ですので、VNC Viewerは不要です。
    • main.pyの書き換え機能を持っているので、Mu Editorは完全に不要です。
  • Spike HubのREPLコンソールを直接利用することができます。
  • ラズパイのBluetoothとペアリングすることができます。
  • 電源投入時に自動的に make start し走行することができます(起動には40秒程度かかります)。
  • (Debian系)Linuxでもセットアップを行えます(ただし、ChromeOSではできなくもないですが不安定です)。

hackspiコマンドを用いたセットアップ手順

1. Raspberry Pi ImagerでSDカードを作成する

  • Raspberry Pi Imagerが起動したら、 「OS」に「Raspberry Pi OS (32-bit)」、「ストレージ」はSDカードのデバイスを設定し、ウィンドウ右下の設定ギアボタンを押す
  • 「SSHを有効化する」「ユーザー名とパスワードを設定する」「Wi-Fiを設定する」の項目は、必ず漏れなく設定する
    • セットアップ中にもWi-Fi経由でインターネットアクセスする必要があります。自宅やスマホテザリングなど、プロキシがかかっていない環境で実行してください。
  • 「終わったときにメディアを取り出す」のチェックを外し、「保存」ボタンを押す
  • 「書き込む」ボタンを押し、「本当に続けますか?」に「はい」で回答する
  • ディスクイメージの書き込みを10分程度待つ

2. etrobo環境から hackspi install を実行する

  • (注:1.の手順で使用したPCにSDカードがそのまま入っている前提です。 また、まれにそのままの状態で実行するとコマンドが失敗することがあります。この場合には一度SDカードを抜いてからもう一度挿し直してください。 それでも失敗する場合はもっと別の問題です)
  • WindowsではWSLのパスワードを聞かれます。
  • 一瞬で終わり、説明書きが出ます。

3. SDカードをラズパイにセットし電源を投入する

  • 途中4回再起動します。15分程度そのままお待ちください。
  • インストールが終了すると、起動音がなって「wlan0: <IPアドレス>」が表示されますので、オートパワーオフする前にメモを取ってください。

4. 「ホストPC側で」VSCodeを起動し、「Remote - SSH」拡張機能をインストールする

  • ものすごく便利ですよ。使わない手はないです。

5. リモートエクスプローラーからラズパイへの接続を設定す

  • 「リモートエクスプローラー」のドロップダウンから「リモート」を選択してください。
  • ツリー上「SSH」をホバーすると右側に表示される「+」(新しいリモート)ボタンを押します
    • バージョンが古い場合、「SSH ターゲット」→「新規に追加する」ボタンを押す、かもしれません
  • 「SSH 接続コマンドを入力する」欄に、「ssh <ユーザ名>@<Hubに表示されているWi-FiのIPアドレス> -A」と入力しエンターキー
  • 「更新するSSH 構成ファイルを選択する」に、一番上の選択肢を選ぶ
  • 登録したリモートホストは、初回「リモート」ホバーから「更新する」ボタンを押さないと表示されないかもしれません。

6. 登録したIPアドレスをホバーすると右側に表示される「新しいウィンドウで接続...」ボタンを押す

  • 「select the platform~」が出たら「Linux」を選ぶ。
  • 「"IPアドレス"のフィンガープリント~」が出たら「続行しますか?」に「続行」を選ぶ
    • 一度SSHしたIPアドレスに、再インストールしたHackSPiが繋がっていると、フィンガープリントで弾かれます。
    • この場合、etrobo環境から hackspi resetSSH <IPアドレス> を実行してから再トライしてください。
  • パスワードを入力すると接続します。
  • エクスプローラーペインの「フォルダーを開く」から「/home/<ユーザ名>」そのままで「OK」ボタンを押す
  • 再度パスワードを入力する
  • 「~信頼しますか?」で「親フォルダー~」のチェックを入れてから「はい、作成者を信頼します」を押します。
  • [Ctrl]+[@](Windows)または[Ctrl]+[Shift]+[@](Windows以外)でターミナルを開く

7. Bluetoothのペアリングを行う(Windows/Linux)

  • ./hackspi pairing を実行する
  • ホストPC側でHackSPiを探し接続を試みる
  • 双方にパスキーが表示されるので、必ずHackSPi側から「yes」と回答してからホストPC側の確認ボタンを押す
  • ホストPC側でBluetooth PAN接続を行う

※2022年6月末現在、Google社製およびApple社製の最新OSでは、Bluetooth PANは利用できません。

hackspiコマンドを用いたビルドと実行

hackspiコマンドはホームディレクトリ(~)で実行してください。

./hackspi make <プロジェクト名>

プロジェクトをビルドします。

./hackspi run

最後にビルドしたプロジェクトを実行します。実行に先立ちSpike Hubがリセットされます。

./hackspi autorun once

最後にビルドしたプロジェクトを、次回起動時に一度だけ実行します。

./hackspi autorun on

最後にビルドしたプロジェクトを、起動するたびに実行します。

./hackspi autorun off

設定した上記once/onの設定を解除します。

./hackspi hub restart

Spike Hubをリセットします。

./hackspi hub shutdown

Spike Hubの電源を切ります。

./hackspi mainpy repair

main.pyを工場出荷時のものへ戻します。

./hackspi mainpy upload [<ホストPC上のファイルパス> [<Spike Hub上のファイルパス>]]

Spike HubにPythonファイルをアップロードします。ファイルパスを全て省略すると、raspike_etrobo.pyをmain.pyとしてアップロードします。

例えば「ET」アイコンを独自のものに変更したいなどSpike Hub起動時の振る舞いを変更したい場合、~/work/RasPike/spike/raspike_etrobo.pyを適当な場所にコピーして、 455・456行目あたりを適切に変更し、./hackspi mainpy upload このファイルへのパスを実行してください。

./hackspi hubfs <サブコマンド>

Spike Hub上のファイルを操作します。サブコマンドは ./hackspi --helpでご確認ください。

なお、hub/hubfs系コマンドなど、一度直接REPLコンソールにアクセスすると、そのセッション中はオートパワーオフが自動的に有効になりますので注意してください。

Clone this wiki locally