PICマイコンを使ってポイントマシンを動作させたり信号の点灯制御を行うNゲージレイアウトを製作中。複数のPICマイコンはI2C通信を使ってRaspberry Pi3で制御するつもり。だが、電圧レベル変換モジュールでドツボにハマってしまった。
ラズベリーパイ・・wiringPiが動かない
Raspberry PiとPICマイコン間をI2C通信でやりとりしながらNゲージレイアウトのポイントマシンの制御を行うつもりで準備中。
wiringPiが動かない
Raspberry Pi3をマスターとし、I2C通信でスレーブ側から取得したデータを表示するサンプルプログラムを作ってみた。
wiringPiを使用し、c言語で記述したものである。
それを実行すると・・
Unable to determine hardware version. I see: Hardware : BCM2835
,
– expecting BCM2708 or BCM2709.
If this is a genuine Raspberry Pi then please report this
to projects@drogon.net. If this is not a Raspberry Pi then you
are on your own as wiringPi is designed to support the
Raspberry Pi ONLY.
pi@raspberrypi-1:~ $
gpioのバージョンを見てみる。
gpio version: 2.32
Copyright (c) 2012-2015 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Unable to determine hardware version. I see: Hardware : BCM2835
,
– expecting BCM2708 or BCM2709.
If this is a genuine Raspberry Pi then please report this
to projects@drogon.net. If this is not a Raspberry Pi then you
are on your own as wiringPi is designed to support the
Raspberry Pi ONLY.
pi@raspberrypi-1:~ $
ネットで調べたら、「Kernelをダウングレードする」とか、「ファームウェアをダウングレードする」とかが出てきた。
まあ、そういう手法もあるかも知れないが、将来的には・・・どんどん遡っていっても困る(^^;
現在のアタイの環境は・・
gpio version: 2.32
ユーザーのホームディレクトリ配下に「wiringPi」というディレクトリがあった。
ここにあるということは、自分でインストールしたのだろう。
記憶が定かではないが・・ディレクトリの日付は2016年・・記憶してる方がおかしいか。
アンインストール
新しいバージョンがあるようなので、現在のバージョンをアンインストールして、新しいのを入れてみよう。
まず、アンインストール。
wiringPi: [UnInstall]
DevLib: [UnInstall]
gpio: [UnInstall]
pi@raspberrypi-1:~/wiringPi $
残されたディレクトリやファイル類は手動で削除。
余談だが、
この「wiringPi」と同じ階層に「WiringPi-PHP」というものもあった。
PHP版は2016年3月に久方ぶりにアップデートされたらしい。
ディレクトリの中を覗くと
というものがあった。
我が家の環境はすでにPHP7。PHP5時代の名残か。
このままでは動かないが、リンク張り直せば動くのかな?
続いては、インストール
他人様のページを参考にインストール。
pi@raspberrypi-1:~ $ git clone git://git.drogon.net/wiringPi
Cloning into ‘wiringPi’…
fatal: unable to connect to git.drogon.net:
git.drogon.net[xxxxxxxxxx]: errno=接続を拒否されました
git.drogon.net[xxxxxxxxxx]: errno=接続を拒否されました
pi@raspberrypi-1:~ $
ほう、ダメですか。
gitがだめなら、これまた他人様のページを参考にhttpで。
pi@raspberrypi-1:~ $ git clone https://github.com/hardkernel/wiringPi
Cloning into ‘wiringPi’…
~省略~
pi@raspberrypi-1:~ $
取得したもののバージョンを一応確認してコンパイル
pi@raspberrypi-1:~ $ cd wiringPi/
pi@raspberrypi-1:~/wiringPi $ cat VERSION
2.44-5.0
pi@raspberrypi-1:~/wiringPi $ ./build
wiringPi Build script
=====================
WiringPi Library
[Compile] wiringPi.c
[Compile] wiringSerial.c
[Compile] wiringShift.c
[Compile] piHiPri.c
[Compile] piThread.c
[Compile] wiringPiSPI.c
[Compile] wiringPiI2C.c
[Compile] softPwm.c
In file included from wiringPiI2C.c:56:0:
/usr/include/linux/i2c-dev.h:37:8: error: redefinition of ‘struct i2c_msg’
struct i2c_msg {
~省略~
[Compile] softTone.c
Makefile:92: ターゲット ‘wiringPiI2C.o’ のレシピで失敗しました
make: *** [wiringPiI2C.o] エラー 1
make: *** 未完了のジョブを待っています….
pi@raspberrypi-1:~/wiringPi $
ウ~ム、コンパイルエラーか。
結局、aptでインストールできた
いろいろとググっていたら海外の「Wiring Pi」というサイトにたどり着いた。
どうやら本家。
だいたいが、英語のサイトは敬遠して、国内のサイトでおいしい情報だけが書かれていそうなサイトにお世話になってつまみ食いするのだが、困ったときはやっぱ本家ですな。
で、Download and Installのページからダウンロードしてインストール。
ちなみに、そのページにはこんなことが書かれていた。
WiringPi is PRE-INSTALLED with standard Raspbian systems. Please DO NOT try to follow any installation instructions you may be given anywhere else. THIS PAGE is the definitive and proper way to do it.
ちなみに、アタイがたどたどしく翻訳すると間違いがあるのでGoogleに翻訳してもらった。
WiringPiは、標準のRaspbianシステムにプリインストールされています。他の場所に表示される可能性のあるインストール手順には従わないでください。このページは、それを行うための決定的かつ適切な方法です。
ごもっともで。
pi@raspberrypi-1:~ $ sudo apt-get install wiringpi
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
以下のパッケージが新たにインストールされます:
wiringpi
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
~省略~
wiringpi (2.50) を設定しています …
pi@raspberrypi-1:~ $
が、
「gpio -v」とコマンドを打っても何も表示されなかった。
「dpkg -l」でインストールされているパッケージにも表示されない。
どうしよう・・
もう一度、本家のサイトをみると、「パッケージとしてインストールした場合、最初にパッケージを削除する必要があります。」
ともある。ハテ?
「標準のRaspbianシステムにプリインストールされています。」とあるが、当初dpkgコマンドで見たときにはなかった。
いつ頃からプリインストールされたのだろうか。
それはともかく、今回すでにパッケージとしてインストールしたので、ここからやり直し、必要なものすべて実施してみる。
pi@raspberrypi-1:~ $ hash -r
pi@raspberrypi-1:~ $ sudo apt-get update
pi@raspberrypi-1:~ $ sudo apt-get upgrade
pi@raspberrypi-1:~ $ sudo apt-get install wiringpi
pi@raspberrypi-1:~ $ dpkg -l
~省略~
ii wiringpi 2.50 armhf The wiringPi libraries, headers a
~省略~
pi@raspberrypi-1:~ $ gpio -v
gpio version: 2.50
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
Type: Pi 3, Revision: 02, Memory: 1024MB, Maker: Sony
* Device tree is enabled.
*–> Raspberry Pi 3 Model B Rev 1.2
* This Raspberry Pi supports user-level GPIO access.
pi@raspberrypi-1:~ $
インストールされたっぽい。
自分で作ったサンプルプログラムも冒頭のようなエラーも出ず、無事実行された。
めでたし、めでたし。
「Please DO NOT try to follow any installation instructions you may be given anywhere else.」
・・了解!!