現在、ロードセルを使用した秤を作成中で、そのADコンバータHX711の出力を見ている。最初、RaspberryPi Picoを試してみたが、これには、ストレージがなく、新たにSDカードモジュールを購入する必要がある。
まあハードウェアとの相性は抜群なので、PCと接続してPCコンソールで結果を表示させることができそうなのでこれでもよいのだが。
RaspberryPi3は、パフォーマンスはありそうだが、ある程度電源が必要だ、キッチンで使用するにはちょっとそぐわない。
そこで、前に購入していたRaspberrypi Zeroの存在を思い出した。
これなら、1500円程度なので、GPIOをいたずらして壊してもあまり痛くない。
早速実験してみることにした。
RaspberryPi3と同じRaspberrypiOSをインストールしてみるとちゃんとできる。
この辺りは、RaspberryPi3と同じだ。
RapberryPiZeroは、HDMI端子がMini端子のため変換が必要で接続がちょっと面倒だ。
また、USBもMicroUSBのためこちらも変換が必要となるため、RaspberryPi3と同様にVNC接続して使用するのがよさそうだ。
しかし接続設定してみると、右上のVNCとキーボードのアイコンが点滅している。
一応外部PCからの制御はできそうだが、極めてGUIの動作が遅い。
これは、おそらくちょっとリソースが足りない感じなのではないだろうか。
念のため、下記サンプルプログラムLchika.pyを走らせてみることにした。
Lchka.py
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(3,GPIO.OUT)
GPIO.setup(2,GPIO.IN)
n=1000 #loop iteration limit
k=0 #loop iteration
a=0
w=0
while k<n:
a=GPIO.input(2)
while a==GPIO.input(2):
pass
#if k==0:
# utime.sleep_us(100)
#utime.sleep_us(80)
a=0
test_list=[]
a=0
while a<25:
GPIO.output(3,GPIO.HIGH)
#sleep(0.5)
GPIO.output(3,GPIO.LOW)
a=a+1
Pythonの知識がないので適当に作ってある。
LXTerminalにて、Python Lchika.py を実行
下記の写真は、CH1:RaspberrypiZeoからのGPIO出力CLK、CH2:HX711のData出力信号だ。本来は、双方とも500us幅も広がらないはずだが、CH2は、50ms以上ぶれている。これは、OSで余計なタスクが発生して、プログラムで書いたGPIOの出力タイミングがずれるせいだと思われる。
では、ちょっと面倒だが、VNCをOFFにするとどうなのだろうか。
下記がその結果だが、心もち少なくなってはいるが大差ないようだ。
RaspberryPiZeroでは、GUIを使ってはいけないということが分かった。
それでは、CLI環境ではどうなのだろうか。
これには、ちょっと壁があった。
GUIとCLIに行き来の問題だ、GUIでは、設定で、デスクトップー>CLIにチェックすればよいのだが、その反対はどうすりゃいいの?
ターミナルにて、startx を実行すればよいことが分かった。
すると、たちどころにGUI環境に戻った。
この時、GUI環境での設定は、依然としてCLIとなったままなので、Rebootすると、またCLI環境で立ち上がることになる。
しかし、復活の呪文が分かったので怖いものなしだ。
ターミナルにて、Python Lchika.py を実行。
特にPathとかは必要なく、そのままたたけばいいらしい。
結果は、ある程度収束した波形が得られた。
CLI環境でSSHにして、こちらもリモート環境としたいが、上記の波形以上によくなることはないように思える。
この状態では、HX711のスペック(CLK High Time<50us)からすると完全にOUTだ。
RaspberrypiZeoでは、GPIO制御のレートは、usオーダーは難しく、msオーダーならかろうじて使用できるという代物らしい。
そういえば、Pi3の実力はどうなんだろう?
GUIでもそこそこ使用できるレベルの様だ。
こちらも、あまり変化はないようだ。
HX711のスペックからは、ぎりぎり使用できるレベルの様だ。
これらの結果から、使用すべきプラっとフォームは、ストレージがなくても、Raspberrypi Picoのラットフォームであることが分かった。
Pi3でもできなくはないのかもしれないが、ちょっとusレベルの制御にはリスクがありそうだ。