Raspberry Pi OS の buster と bullseye のi2cアドレスレンジ範囲の違いと、明るさセンサー使用の巻
こんにちは。DIYフクロウです(・ω・)ノ
Raspberry Pi OS の buster と bullseye のi2cアドレスレンジ範囲の違い 備忘録です
(buster 32bit とbullseye 32bitにて確認)
図において
左がレガシーのBuster、右が現行のBullseryeです。
seeed社のGrove Base HAT for Raspberry Pi(0x04アドレスのSTM32版) のアナログ入力が使えなくて(=動かない)
見比べたところ、
Bullseyeでは0x03,0x04,0x05,0x06,0x07の割り当てが無いから使えないの(・ω・;)
(右図の赤字の箇所がBullseyeから割り当てなしI2Cアドレス)
seeed社のGrove Base HAT for Raspberry Piの
STM32版はファームウェアを書き換えて0x08以上にしないと無理っぽいですね
(しろふくろうはすぐには無理です)
現行のMM32版のGrove Base HATは、I2Cアドレスが0x08なので BullseryeでもBusterでも
どちらでも使えると思います。
ということで、
/home/pi/grove.py/grove/adc.pyの57行目:
def __init__(self, address = 0x08):
の0x08は使用するGrove Base HATがSTM32かMM32かによって、I2Cアドレスに書き換えましょう。(STM32=0x04、MM32=0x08)
書き換えたら、/home/pi/grove.py の階層で
sudo pip3 install . を再度して反映させましょう。
し忘れると、/home/pi/grove.py/grove/の階層にある
grove_light_sensor_v1_2.py 等のアナログ入力(adc.py)を使うpython3サンプルで
Check whether I2C enabled and Grove Base Hat RPi or Grove Base Hat RPi Zero inserted
のエラーが出てしまうので、反映は必須です (;ω;)
ちなみに、OKな場合は、次の通り出力されます。
pi@raspberrypi:~/grove.py/grove $ python3 grove_light_sensor_v1_2.py
Hat Name = 'Grove Base Hat RPi Zero'
Usage: grove_light_sensor_v1_2.py <pin>
<pin> could be one of below values
in the pin column for ADC function
And connect the device to corresponding slot
==============
pin | slot
==============
0 | A0
2 | A2
4 | A4
引数0を付けた場合、A0ポートに接続した明るさセンサーの値が数値で出ます:
pi@raspberrypi:~/grove.py/grove $ python3 grove_light_sensor_v1_2.py 0
Hat Name = 'Grove Base Hat RPi Zero'
Detecting light...
Light value: 37
Light value: 36
Light value: 36
Light value: 36
Light value: 36
以上となります(`・ω・´)v
ラズベリーパイ Zero / Zero 2W / 3A スワップサイズの変更(拡張) bullseye 32bitにて
こんにちは。DIYフクロウです(・ω・)ノ
ラズベリーパイ Zero / Zero 2W / 3A スワップサイズの変更(拡張) 備忘録です
(bullseye 32bitにて確認)
0. LXTerminalを起動
1. スワップの状況を確認
free -h
→Swapのtotalが99Mi
2. スワップの設定を編集する
sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE=100 を 1024とかに変える
Ctrl + o (上書き保存)
Ctrl + x (nanoエディタ終了)
3. スワップのサービスを再起動(停止、スタート)する
sudo service dphys-swapfile restart
(restart = stop + start なので少し待つ)
4. スワップの状況を再確認
free -h
→Swapのtotalが1.0Giに変わっている
以上となります(`・ω・´)v
Planex Cloud Pi 2 P2Pプラットフォームソフトウェア を1年使ってみた感想
こんにちは。DIYフクロウです(・ω・)ノ
令和ゴネン、ウサギ年ですな・・・フクロウ年は永遠に来ない・・・
Planex Cloud Pi 2 をラズベリーパイで使った感想です。
個人的に、「点数」や
「使える」「使えない」や
「いけてる」「いけてない」で書くならば・・・
LTE回線で、リモートSSH接続は割とできるが、性質上、VNC接続は不安定で難しい感じなので、
1000~2000円で購入できたら、月額費用かからない点が良いのでSSH保守用に〇
2000円~3500円で購入できたら△
それ以上なら うーん躊躇しちゃうかも。
うーん、〇△ という感想になってますね (・ω・;ノ)
SSHは下記の条件を守れば、そこまで切断しやすい訳でもないので、
そこそこ使える製品だと思います!
1.ラズパイからの応答が無くなる件(・ω・;)
接続する際はP2PTunnelをCONNECTION SUCCEED UID した後に、TeraTerm等のターミナルを起動してSSH接続する順番でつながりますし、切断する際は、TeraTermを切断してからP2PTunnelを切断すればフリーズしないです。
つまり切断する際に、先にP2PTunnelを切断するとPeer-to-Peerのトンネルがなくなり、確実にTeraTermがフリーズします。(レールの上に車両を置いたのに、車両とレールを撤去する際に、レールを先に外すのは順番的にちょっと違うのでは?という感じでしょうか)
そうはいっても、操作を間違ってP2PTunnelのウィンドウがフリーズしたときはタスクマネージャーで強制的に切れば大丈夫でした。(・ω・;)
また、長時間接続するとフリーズしている場合があるのは、セキュリティ的にリモートをつなぎっぱなしはどうなのか?という面もあるので、使ったあとはまめにSSHを切断する運用が良いと思います。
2.ラズベリーパイOS 64bit環境下で動作(・ω・)♪
非公式ですが、Raspberry Pi OSが64bit(bullseye)の場合は、
Jetson Nanoのを使って内部のパス等を睨めっこしながら修正すればPiで使えました。
(Jetson Nano用というのは64bitという意味だったようです)
3.まとめ
1年以上連続稼働していますが、個人的には特に問題なくPiのリモート接続に使えて役立っています。
今後の製品改良でVNCの接続が安定する事に期待します。(・ω・)ノ
ラズベリーパイ 3A 3B 3B+ 4B Zero2W へのTensorflow導入メモ
こんにちは。DIYフクロウです(・ω・)ノ
ラズベリーパイ 3A 3B 3B+ 4B Zero2W のRaspberry Pi OS に
Tensorflowを導入するときのメモです。
■Buster 32bit armv7l (Python3.7 cp37)
→ 対応
pip3 install tensorflow (pip3の場合は1.13か1.14?)もしくは
PINTO0309 (Katsuya Hyodo) 様のビルドした Tensorflow1系 1.14 1.15、TF2系の2.0 2.1 2.2 2.3 2.4 2.5 のcp37を使用
■Bullseye 32bit armv7l (Python3.9 cp39)
→ 非対応(;ω;)
■Bullseye 64bit aarch64 (Python3.9 cp39)
→ 対応
PINTO0309 (Katsuya Hyodo) 様のビルドした TensorFlow 2.5 2.6 2.7 2.7 2.8 2.9 2.10 の 64-bit 版 を使用
細かい導入手順はここでは割愛・・・そこも重要(・ω・;)
ちなみに、
from typing_extensions import Protocol
ModuleNotFoundError: No module named 'typing_extensions'
のエラーが発生したときは
pip3 install typing_extensions
で解決しました。
以上となります(`・ω・´)v
ラズベリーパイへのVNC接続で Cannot currently show the desktop
こんにちは。DIYフクロウです(・ω・)ノ
お久しぶりの投稿です~
Bullseye 32bit/64bit では改善済みですが、Buster 32bit 備忘録として。
ラズベリーパイ4(Buster 32bit)で HDMI出力先にディスプレイを接続しない状態で
VNCでリモート画面確認しようとしたら、
Cannot currently show the desktop
と表示されてしまい、起動したのかもよくわからない状態になってしまいました。
解決方法
①HDMIをセーフモードにする
→解像度XGA固定となってしまう?
②HDMIダミープラグを接続する
→ 追加購入が必要となるが、正解でした。
microHDMI対応の小型ダミープラグがあると最高なのですが
Amazon見ても現状無い感じなので・・・
microHDMIオス- HDMIメス の変換にHDMIダミープラグ(オス)を接続したら
VNC経由で画面が表示されるようになりましたとさ。
ラズベリーパイに接続した温度センサーの数値をAzureのクラウドストレージに保存してみました
こんにちは。DIYフクロウです(・ω・)ノ
お久しぶりの投稿です~
Pythonで動かして学ぶ!あたらしいIoTの教科書 株式会社VOST著
を読んで、なんとか、
Microsoft Azureのクラウドストレージに温度(数値)をアップロードできました。
Azureで苦労し、顔文字までIoTになってしまったフクロウです (IoT)ノ
Azureは無料試用版で試しています。
本書ではI2C温度センサー(ADT7410)をRaspberry Pi に接続した例ですが、
DIYフクロウはI2C温度センサー(AM2320)を使いました。(・ω・v)
やっぱり、本書の動作環境のとおりRaspberry Pi は Stretch (Python3.5.3) でないとダメでした。
Buster (Python3.7.3) ですとchapter5.pyで次のようなエラーが出てあきらめました。
(ラズパイ4で進めていくとP.111でプログラムを実行するとエラーで行きづまります。)
import iothub_client
File "/home/pi/.local/lib/python3.7/site-packages/iothub_client/__init__.py", line 1, in <module>
from .iothub_client import *
ImportError: libboost_python-py35.so.1.62.0: cannot open shared object file: No such file or directory
ムムムム・・・(;ω;)
ということで、ラズパイ4BはBuster (Python3.7.3) なので難しいと思います。
ラズパイ3BのRaspbian OSがStretchの環境で行いました。(・ω・;)
そのほか、気になった点
P.95 ④クリック:
IoT Hub が、「おすすめ」に無いときは「すべて表示」から探しましょう。
P.100 ④クリック:
Stream Analytics job が、「おすすめ」に無いときは「すべて表示」から探して作成しましょう。
P.103 Stream AnalyticsのジョブでIoT Hub の新規入力設定:
パーティションキーは 空白 でOK。
P.105 出力の設定
サブスクリプションが無料試用版だと、ストレージアカウントが選べない・・・
→手動で行えば突破できました!
ここが一番困りました・・・Azure慣れておらず(;ω;)
詳細は、
・「サブスクリプションからストレージを選択する」から「ストレージ設定を手動で行う」に丸ポチを変える
・ストレージアカウントを手動で入力(P.92で設定した名前)し、ストレージ アカウント キーは、左上の「三」クリックして、「ストレージアカウント」をクリックして、自分で設定したストレージアカウントの名前(P.92で設定した名前)をクリックして左のメニューの設定にある「アクセスキー」をクリックすると、key1のキーやkey2のキーがありますので、key1のキーをコピーして貼り付ける。
・コンテナーは「既存のものを使用」にして、P.94の5.3項で作成したコンテナーの名前を入れる。
これで突破できると思います。
なお、cyapter5.pyのAM2320化改造は
頭に追加:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
補足:
CONNECTION_STRING = "xxxxxx" のxxxxxは
CONNECTION_STRING = "HostName=xxxxxx" でした。(・ω・;)
削除:
bus = smbus.SMBus(1)
追加:
i2c = smbus.SMBus(1)
address = 0x5c
追加:
def am2320():
try:
i2c.write_i2c_block_data(address,0x00,[])
except:
pass
time.sleep(0.003)
i2c.write_i2c_block_data(address,0x03,[0x00,0x04])
time.sleep(0.015)
block = i2c.read_i2c_block_data(address,0,6)
hum = float(block[2] << 8 | block[3])/10 # 湿度
tmp = float(block[4] << 8 | block[5])/10 # 温度
return tmp
削除:
# 温度を読み込む関数
def adt7410():
block = bus.read_i2c_block_data(0x48, 0x00, 2)
data = (block[0] << 8 | block[1]) >> 3 # 13ビットデータ
if (data >= 4096): # 温度が負の場合
data -= 8192
temp = data * 0.0625
return temp
削除:
inputValue = adt7410()
追加:
inputValue = am2320()
print(inputValue)
削除(任意):
time.sleep(1) #1秒
追加(任意):
time.sleep(60) #60秒
Thonny Python IDEを使わずにターミナルから実行してみました。
これでP.114までうまくいきコンテナーの中からCSVファイルをダウンロードすると温度が取得できました!(・ω・♪)
ちなみにAM2320の物理配線はI2C接続なので、次の通りジャンパーワイヤーで接続します。
ここまでお読みいただき、ありがとうございます。
以上となります(`・ω・´)v
Raspberry Pi 3 Model B SSH接続できない ⇒ 解決!
こんにちは。DIYフクロウです(・ω・)ノ
Raspberry Pi 3 Model Bを手に入れました!
Windows 10 PCからVNCによるリモートデスクトップ接続したり、
SSH接続してPythonでLチカとかして遊ぼう(訂正:勉強しよう)と思ったのですが、
「ホストに接続できません」ってエラーになる。困った (IoT)ノ
raspbianにおいてデフォルトでSSHは無効なので、有効にしたり
起動時にSSHが自動で有効になるようにしたりしたものの、解決しない!(;ω;)
インターネットでSSH接続できない事例を参照するも、解決しない!(・ω・;)
PCからラズパイへping応答するので、IPアドレスは問題ないのに・・・
(ラズパイからPCへping応答しないのは別途調査・・・)
結局:
ダメ元でターミナルソフトをTeraTermから
Puttyに変更するとすんなりSSH接続しました(・ω・;)
・・・ん、TeraTermでSSH接続するときのPort番号が23になっている・・・
22に変更したらTeraTermからでもSSH接続でき…ました 汗
完全にお疲れ様モードでした(;ω;)
ここまでお読みいただき、ありがとうございます。
以上となります(`・ω・´)v