そこでこの記事ではIoT初学者が良く躓くポイントと、その際にどう行動して欲しいかを紹介します。
センサーが動かない
センサーが動かないという質問はよくある問題です。センサーは精密部品なので、壊れていることも確かにあります。しかし、故障だと決めつける前にできることがたくさんあります。
繋ぎ直す
まずセンサーを外して、繋ぎ直してみましょう。これで改めて認識されて動作し始めることがあります。
再起動する
センサーによっては起動時に繋がれていないと動かないものもあります。起動した後に接続して動かないならば、一回再起動してみるのも手でしょう。
繋ぎ方を見直す
HATのように40ピン同士で接続するものもありますが、ブレッドボードを使って自分で配線する場合はしばしば接続ミスが問題になります。一つ隣に刺さっているだけで動きませんし、プラスとマイナスが逆になっていることもあるでしょう。一旦すべての配線を外して、一から繋ぎ直してみるのも解決の糸口です。
公式サイトで確認する
繋ぎ方も正しいとしたら、次は公式サイトの内容をチェックしましょう。型番がちょっと違うだけで、ピン配置が変更されている可能性があります。第三者のコンテンツだと情報が古く、今では間違った情報になってしまっているかも知れません。センサーの公式サイトは大抵英語になると思いますが、毛嫌いせずにチェックしてください。
プログラムがエラーを出した
せっかく組んだプログラムが動かないと大きなストレスになります。エラーと修正、そして実行を何度も繰り返していたら、ストレスで何もかも嫌になってしまうかも知れません。そうならないための解決策を紹介します。
エラーをよく読む
大抵のプログラムはエラーメッセージを出力します。そのエラーメッセージをよく読んで内容を把握しましょう。英語で書かれていてよく分からないという人もいるかも知れませんが、翻訳サービスを使って内容を読みましょう。「○○ is not found
」というエラーが出ますといった質問をされることがありますが、それは○○がないと書かれている通りなのです。場合によってはエラーメッセージを翻訳して、日本語で理解しても良いでしょう。
エラーメッセージで検索する
読んでも内容が分からないエラーの場合もあるでしょう。そうした時にはエラーメッセージでWeb検索してみましょう。同じようなところで詰まっている人、解決した記事を見つけられるかも知れません。検索結果があまりに多い、意図したものと異なる場合にはダブルクォートで囲んで検索してみましょう(”○○ is not found”
など)。そうすれば完全一致する検索結果だけが得られます。
ターミナル操作でエラーが出た
Raspberry Piを使う際に欠かせないのがターミナル操作(いわゆる黒い画面)です。普段使っているWindowsなどのGUI画面とは異なり、テキストでの入出力になるので慣れないと不便さを感じることでしょう。良くある問題と解決策を紹介します。
コマンドが見つからない
Raspberry Pi上でコマンドを実行した時に「-bash: ○○: command not found
」といったエラーメッセージを見ることがあります。これは「○○というコマンドが見つからない」という意味です。まずコマンド名が正しく入力できているか確認しましょう。正しいのを確認したら、コマンドを途中まで入力してTabキーを2回押してみましょう。前方一致で同じ名前のコマンドが一覧表示されます。ここで見つからない場合は、そのコマンドがインストールされていないということです。
コマンドが見つからない場合、そのソフトウェアをインストールするのが最初のステップになります。Raspberry Piの場合aptというコマンドでインストールしたり、各プログラミング言語に付属するパッケージ管理を使います。例えばNode.jsであればnpm、Pythonであればpipを使います。インストールしたいソフトウェアに合わせて選択してください。
入力したコマンドを検索したい
前に入力したコマンドを探したい時には history
コマンドで一覧を出すか、Ctrl+Rで過去に入力したコマンドから検索ができます。移動先のディレクトリを見失ってしまった場合、長いコマンドを再度入力したくない時に使えます。矢印キーの上下を使って過去に入力したコマンドを順番に表示することもできるので覚えておくと便利です。
コマンドを停止したい
プログラムをミスしていて終了したい状態になってしまった時には Ctrl +C を押して強制終了ができます。Ctrl + Cでも終了できない場合には別なターミナルウィンドウを開いて、該当プログラムを探します。ps aux | grep ○○
として今実行されているプロセス一覧から該当プログラムのPID(プロセスID)を探します。次の結果でいう、10192という数字がPIDです。
$ ps aux | grep python
nakatsugawa 10192 0.0 0.0 4334556 240 ?? S 木05AM 0:00.13 /path/to/program -type:exit-monitor -method:collectupload -python-version:3.7.2 -session-token:7eb24ea1-1040-4b90-8de4-ca7c7aff68b3 -target-handle:10188 -target-shutdown-event:4 -target-restart-event:6
後はこのPIDを指定してプログラムを停止させます。 -9
を付けると強制終了になるので良くはないのですが、Ctrl+Cでも停止できない状態なので致し方ないでしょう。
kill -9 10192
SSH/SFTPが切れる
SSHでRaspberry Piに接続して操作している人は多いと思いますが、その接続はターミナルを開いたままにしていると突然切れてしまいます。それを防ぐためには、まず自分のSSH設定を見直します。場所は ~/.ssh/config
になります。以下の2つの設定が必要です。
ServerAliveInterval 300
TCPKeepAlive yes
次にRaspberry Pi側の設定を見直します。設定ファイルは /etc/ssh/sshd_config
です。以下の設定があることを確認します。
ClientAliveInterval 15 # 何秒ごとにクライアントにpingを送るか
ClientAliveCountMax 3 # 何回送るか
この数字は必要に応じて調整してください。設定したらSSHサーバを再起動します。
sudo systemctl restart sshd
aptが動かない
Raspbianのパッケージ管理であるaptが実行できない(0%で止まってしまう)場合、良くあるのは会社内のプロキシ設定によってインターネットに出られないというものです。この場合、プロキシを設定してあげれば解決します。
/etc/apt/apt.conf
というファイルを開いて次の設定を追加します。 proxy-server
と port
はそれぞれ必要なものを設定してください。
Acquire::http::Proxy "http://proxy-server:port";
Acquire::https::Proxy "http://proxy-server:port";
まとめ
初心者がよく出会う問題は「エラーメッセージをよく読む」「エラーメッセージで検索する」「公式情報をチェックする」で解決することが多いです。とはいえ、これは上級者になっても変わらない手順でもあります。一旦この癖を身につければ、IoTプロジェクトの開発が格段にスムーズになるはずです。ぜひ覚えてください。
isaaxではIoT初心者が順を追ってIoTエンジニアとして成長できるisaax IoTエンジニア養成キットを提供しています。ぜひご覧ください!
]]>