HX711モジュールとRaspberrypi Picoを接続してみる

秋月電子で購入したHX711のモジュールは、電源を入れると、約85us幅のPOSパルスが

10Hzで出力されている。

このパルスをセンスして、すぐに、CLKパルスを25発入れてやることで、1パルスごとに1ビットのデータを返し、24bitのデータを返すようになっている。最後のCLK1発は、次のデータの計測モードを制御する。

試しのために、RaspberrypiPicoがきちんと受信できるパフォーマンスがあるのかどうかを確認してみた。

 

from machine import Pin
import utime
import time
Clk=Pin(1,Pin.OUT)
Dat=Pin(2,Pin.IN)
c=0
a=0
b=0

while c<10:
    b=a
    t1=time.ticks_us()
    while b==a:
        a=Dat.value()
    t2=time.ticks_us()

    print(t2-t1,b)
    c=c+1

 

簡単なパルス幅の計測プログラムを作成してみた。

結果は、下記の様になった。

 

65664 0
42 1
97824 0
29 1
984749 0
30 1
98248 0
28 1
98243 0
32 1

 

us単位の時間と、パルスのNEG/POSになっている。

NEGは、98ms程度になるはずだが、980msになってしまうことがあるようだ。

しかし、オシロスコープで確認すると、パルスが抜けていることは確認できなかった。

きちんととれていることもあることから、プログラムによるものというよりは、信号のアナログ的な振る舞いに原因がありそうだ。

最近、あじさいが美しい

梅雨に入り、一段とアジサイがきれいです。

散歩途中のアジサイを撮ってみました。

花びらについた水滴がなんとも風情があります。

赤いガクアジサイ

ほんのり紫のあじさい

定番だけどなぜかあまり見なくなった、青いあじさい

ちょっと淡い黄色みが入ったあじさい

潔い、真っ白なアジサイ

 

RaspberryPi Zeroを使ってみた。

現在、ロードセルを使用した秤を作成中で、そのADコンバータHX711の出力を見ている。最初、RaspberryPi Picoを試してみたが、これには、ストレージがなく、新たにSDカードモジュールを購入する必要がある。

まあハードウェアとの相性は抜群なので、PCと接続してPCコンソールで結果を表示させることができそうなのでこれでもよいのだが。

RaspberryPi3は、パフォーマンスはありそうだが、ある程度電源が必要だ、キッチンで使用するにはちょっとそぐわない。

そこで、前に購入していたRaspberrypi Zeroの存在を思い出した。

これなら、1500円程度なので、GPIOをいたずらして壊してもあまり痛くない。

早速実験してみることにした。

 

RaspberryPi3と同じRaspberrypiOSをインストールしてみるとちゃんとできる。

この辺りは、RaspberryPi3と同じだ。

RapberryPiZeroは、HDMI端子がMini端子のため変換が必要で接続がちょっと面倒だ。

RaspberryPiZeroの接続風景

また、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の知識がないので適当に作ってある。

GUI環境で、VNCをONにして走らせてみた。

LXTerminalにて、Python Lchika.py を実行

下記の写真は、CH1:RaspberrypiZeoからのGPIO出力CLK、CH2:HX711のData出力信号だ。本来は、双方とも500us幅も広がらないはずだが、CH2は、50ms以上ぶれている。これは、OSで余計なタスクが発生して、プログラムで書いたGPIOの出力タイミングがずれるせいだと思われる。

RaspberryPiZeroをGUI設置の上VNCをON

では、ちょっと面倒だが、VNCをOFFにするとどうなのだろうか。

下記がその結果だが、心もち少なくなってはいるが大差ないようだ。

RaspberryPiZeroでは、GUIを使ってはいけないということが分かった。

 

RaspberrypiZeoをGUI設定 VNCはOFFにした

それでは、CLI環境ではどうなのだろうか。

これには、ちょっと壁があった。

GUICLIに行き来の問題だ、GUIでは、設定で、デスクトップー>CLIにチェックすればよいのだが、その反対はどうすりゃいいの?

ターミナルにて、startx を実行すればよいことが分かった。

すると、たちどころにGUI環境に戻った。

この時、GUI環境での設定は、依然としてCLIとなったままなので、Rebootすると、またCLI環境で立ち上がることになる。

しかし、復活の呪文が分かったので怖いものなしだ。

ターミナルにて、Python Lchika.py を実行。

特にPathとかは必要なく、そのままたたけばいいらしい。

 

RaspberryPiZeroをCLI環境で立ち上げ

結果は、ある程度収束した波形が得られた。

CLI環境でSSHにして、こちらもリモート環境としたいが、上記の波形以上によくなることはないように思える。

この状態では、HX711のスペック(CLK High Time<50us)からすると完全にOUTだ。

RaspberrypiZeoでは、GPIO制御のレートは、usオーダーは難しく、msオーダーならかろうじて使用できるという代物らしい。

 

そういえば、Pi3の実力はどうなんだろう?

早速GUICLIについて実験してみた

 

Raspberrypi3 GUI環境にて VNCをONに設定

GUIでもそこそこ使用できるレベルの様だ。

RaspbwerryPi3 をCLI環境で使用

 

こちらも、あまり変化はないようだ。

HX711のスペックからは、ぎりぎり使用できるレベルの様だ。

これらの結果から、使用すべきプラっとフォームは、ストレージがなくても、Raspberrypi Picoのラットフォームであることが分かった。

Pi3でもできなくはないのかもしれないが、ちょっとusレベルの制御にはリスクがありそうだ。

Raspberrypi3とEDUX1052GをLANケーブルで直結 PINGが通らない

Raspberrypi3とEDUX1052GをLANケーブル(ストレート)で直結するも、PINGが通らない。

RaspberryPi3:IPAddress:192.168.1.2

EDUX1052G:IPAddress:192.168.1.1

Raspberrypi3からPING 192.168.1.1を試すもLoss100%帰ってこない。

Windowsxpの時代じゃあるまいし、今時、クロスケーブルにしないといけないということもあるまいしなー。

第一、以前は、ストレートケーブルでLXIで制御できていた。確実に。

 

Raspberrypi3のLAN設定をいろいろ試すも、処置なし。

Auto設定を外してみたり、IPv6ありにしてみたりとやったがダメだった。

PINGが通らないので当然EDUX1052GのLXIページも表示されない。

コントロールもできない。

以前はできていたはずなの、なぜ?

LAN経由でPythonでIDが返ってきて、制御もできていた。

あの時と何が違うの?

思い切ってIPAddressを変えてみた。

EDUX1052G IPAddress:192.168.1.3  (1->3へ変更)

Raspberrypi3:IPAddress:192.168.1.2 (変更なし)

に変更してみた。

するとなんとナント、あっさりPINGが通るようになってしまった。

機器アドレスに1をアサインしちゃダメなのか?

めでたく、LXIページも表示されるようになり、VNC経由で、PCからRaspberrypi3を共有してEDUX1052Gのマウスコントロールができるようになってしまった。

なんで1にしちゃだめなの?

勉強が足りないおやじなのだった。

 

 

 

 

 

 

 

Tverが見づらくなった。 ドラマに愛を感じない作りだ。

日々ドラマーを続けているおやじだが、4/1のTverの変更で正直使えなくなってしまった。

・リアルタイムでやっているドラマかどうかの見分けがつかなくなった。

・検索でドラマを選択しても、番組を見てもどっと来ると、ドラマ検索が消えていて、また検索しなくてはいけなくなってしまった。今までは、ドラマというカテゴリにいればずっとドラマの世界を検索出来ていたが、正直もう使えないサイトになってしまった。

いままでそっぽを向ていたが、GYAOの方が見やすい状況になっている。

多分Tverのサイトを作った人は、ドラマを見ていない人だろう。

まったく愛を感じないサイトになってしまった。

残念だ。

GYAOも韓国ドラマは別になってしまっているので、これはこれで、いけていない。

全部のドラマを見ている自分としては、まったく不満だ。

 

禁断のWajun PCを購入してみた

プログラミング用のPCとして、64ビットOSのPCが欲しくなり、悩んだ末、禁断のWajun PCを購入した。

YOGA20CO Windows11Home CPU:i3 4GBメモリ 128GBSSD MSOffice付き¥23,2200也 というものだ。しかも、タッチパネルというおまけ付きである。

なかでも、MSOffice付きが突き刺さった。表計算だけであれば、Online版で使用できるのでさほど不自由はしないが、プログラミング目的となると状況は一変する。

そう、Online版では、開発メニューが出ないのだ。VBAが使用できないのである。

興味は、この一点に注がれ、Amazonで売っていた、13000円の小型PC(Windows10Pro CPU:Celeron)は、購入には至らなかった。正直かなり悩んだ

電池のパフォーマンスは、今のところ未知だが、中古で、この価格にしては、申し分ないと思える。Wajunという底辺もありではないかと思えた。

さすがに、Windows8時代のPCであり重さは、それなりの重さがあるが。

 

KeysightのIOLibrarySuiteがインストールしてあったので、KeysightのVBA手順を参考に、Addinを指定するといとも簡単にオシロスコープEDUX1052Gを認識してIDを返してきた。

あっという間に、ExcelVBAでオシロスコープとの通信ができることを確認できた。動画再生能力も申し分なく、EeePCAtom)ではとぎれとぎれだった、TverGyaoの動画再生は、まったく問題なくできることを確認できた。