投稿

Raspberry Pi Zero 2WでUECS Piを動かしてみる ー挫折編ー

イメージ
  Raspberry Pi Zero WでUECS Piを動かしてみる に続いてPi Zero 2Wにトライしてみます。しかし、残念ながら今回は挫折しました。何がうまくいかなかったのか紹介しておきます。 左がRaspberry Pi Zero 2W。チップにRaspberry Piのマークが入っている。右はPi Zero WH。 Raspbery Pi Zero 2Wとは 今年2022年6月に日本発売となった新しいRaspberry Piです。ネットではPi Zeroの5倍のパフォーマンスと言われています。比較表にあるようにメモリーは512MBですが、CPUはRasppberry Pi 3Bに近いものです。64bit OSも動かせます。 比較表 参考 https://ja.wikipedia.org/wiki/Raspberry_Pi Raspberry Pi Imagerを使うとWindowsやMACのPCで、Raspberry PiのOSを選んでSDカードに書き込むことができます。このツールでRaspberry Pi OS Lite(Desk Topなし)で32bitと64bit版を作成しまして試してみました。Pi Zero 2Wでは64bitも32bitも動きますが、Pi Zero Wでは、32bit版しか動きません。今回作成されたDebianのバージョンは11(Bullseye)でした。今回UECS Piで確認できなかったのでしっかりデータを取っていませんが、bootのスピードからいえば格段にPi Zero 2Wが速くなっています。やはりRaspberry Pi 3Bレベルだと思います。 Raspberry Pi Zero WでUECS Piを動かしてみる でUECS Piの画面遷移を行ったときには、少しフラストレーションを感じるレベルでしたので、改善が期待できます。 (しかし2つのセンサーからデータを収集してクラウドに上げるぐらいの処理ではPi Zero Wでも問題は発生してません) UECS PiはRaspberry PiモデルB以上を前提にしているので、32bitです。Pi Zero 2Wでも動くはずです。 https://www.raspberrypi.com/software/ からダウンロードする 実際に動かしてみる UECS Piファ...

水位センサーXKC-Y25とオープンコレクタ入力

イメージ
 水位センサーについては UECS Piで肥料管理機を作る③ で触れました。今回はXKC-Y25という非接触式液体レベルセンサを入手しましたので検証結果を報告します。 非接触式液体レベルセンサー XKC-Y25-V(左)とXKC-Y25-PNP(右) このセンサーを使用すると下の図のように水槽の壁面に貼り付けて液体に接触せずに水位を検知出来ます。(金属の水槽はだめ) 機械式に比べて設置が簡単だし、水漏れ、腐食の心配もないので便利だと思います。 XKC-Y25取付例  データシート より ネットショップの商品説明 https://ja.aliexpress.com/item/32623722632.html さて、XKC-Y25ですがネットで検索すると3種類あることがわかります。XKC-Y25-V、PNP、NPNです。(データシートのT12VはVではないかと思います) 詳しい説明が書いていませんので今回は2種類(VとPNP)を買って試してみました。ポイントはオープンコレクタという接続方式で、PNPとかNPNとかのモデルの違いで差があるのかということです。 オープンコレクタって何? 簡単にいうとトランジスタを使ったスイッチ回路で、アウトプットがトランジスタのコレクタに接続されているのでそのような名称です。 詳しくはこちらを参照→オープンコレクタとは?接続方法とNPNとPNPの違いについて https://ana-dig.com/open_collector/  これは概念図であり、実際のセンサーの回路とは異なります トランジスタは、上の図でB(ベース)に電圧がかかるとC(コレクタ)とE(エミッタ)が接続された(スイッチが入った)状態になります。スイッチが入った状態のとき、NPN型ではOUTの端子はGNDと同じ電位になり、PNP型ではVccと同じ電位になります。OUTをRaspberry PiなどのGPIOに接続すればセンサーのスイッチがオンになっているのかオフになっているのかがわかるという仕組みです。 XKC-Y25-PNPの場合 PNP型からテストしてみましょう。ケーブルは4本あり、VCCには電源5V~12Vを入力します。 (T12Vのデータシートでは5~24Vになっている?)   Raspberry Piでは5V電源に接続すればいいでしょ...

UECS PiにLCD(デイスプレイ)を接続する

イメージ
UECS PiユーザーマニュアルにはLCDモジュールの接続方法が記載されています。LCDを使用すれば、センサーで測定した値を表示できます、写真は温度、湿度、CO2濃度を表示したものです。 LCDはACM1602NIをモジュールにしたものを秋月電子通商で販売していますのでこれを使用します。  ACM1602NI→ https://akizukidenshi.com/catalog/g/gP-05693/ しかし、ここに超えないといけない山があります。マニュアル曰く、 モジュールの初期状態ではI2C通信速度が100kHzに対応していないためそのままでは動作しません。以下のHP情報を参考にモジュールのファームウェアを100kHz対応版に書き換えてください。 要するにLCDはI2Cで接続されますが、通信スピードをRaspberry Piと合わせないと接続できないということです。そのためにLCDのファームウエアを書き換えろと言っているのですが、これがなかなかむつかしいのです。ファーム書き換え用のツールである PICkit3(ネットで5千円~6千円する)を買ってきて、PCに開発環境を作ってサンプルプログラムをダウンロードして、ファームを書き換える。やってみましたがうまくいかず挫折しました。これはよほど慣れた人でないとできないと思います。 そこで下記のブログに書いてあるようにRaspberry Pi側のI2C通信スピードをLCDに合わせます。結果的にこちらの方がはるかに簡単でした。 参照) 秋月の I2C接続キャラクタLCD を Raspberry Pi に接続 Raspberry Pi ZeroにLCDと温湿度センサーSHT21とCO2センサーS-300を接続した。 LCDの表示は月日、時刻、温度、湿度、CO2濃度。 Raspbery Piは、自作のスタッキング基板の裏に隠れている。 青い可変抵抗はLCDのコントラストとバックライトの調整用。 Raspberry PiのI2C通信スピードを変える ブログにあるようにI2Cのbaudrate(ボーレート)を100KHzから50KHzに落とします。 「ボー」なんて大昔の通信モデムを使ってた方しかご存知ないと思いますが、bpsの類の言葉です。正確には1秒間の変調回数をいうもので50KHzは1秒間に50000回変調するということ。アナロ...

UECS Piファームウエアを自分用にカストマイズする④

イメージ
UECS Piのカストマイズシリーズの最後にSSHを使えるようにする方法を紹介します。 SSHは分散系システムのエンジニアでないとなじみがないかもしれませんが、分散系開発ではよく使われるツールです。Raspberry Piは個人で使うことが多いと思いますが、UNIX OSは本来サーバーとしても使われるので複数ユーザーで別の端末から操作できるようになっています。SSHを使えば自分がいつも使っているPCからRaspberry Piを操作することができます。 これまで紹介したUECS Piファームウエアのカストマイズでは、ネットワーク構成のファイルなどをテキストエディタで編集しました。複数の環境でUECS Piを運用する場合に何かの理由でSDカードを交換することがあると思いますが、いちいちネットワーク定義ファイルを手で書き換えるのは面倒ですし、間違いも起こりがちです。実績のあるファイルをPCに保管して必要な都度置き換える手順をとれば運用しやすくなります。 SSHのクライアントソフトを使えば、Raspberry PiのSDカードの中身をPCの1つのドライブのようなイメージで操作することができます。 なお、この記事ではPCで使用するOSはWindowsを前提にしています。MACの方はPC側のソフトをそれようにしてください。 何ができるようになるか 下記の写真はWinSCPというクライアントソフトを使ってRaspberry PiのSDカードの/etc/networkディレクトリを表示したものです。右がRaspberry Piのディレクトリで左がPC側のフォルダーです。 WindowsのWinSCPでRaspberry Piのディレクトリーを表示 上の画面でファイルを選択して右のRaspberry Piから左のWindows側にドラッグアンドドロップすればファイルをコピーできます。画面では左のPCのフォルダーにすでにネットワークファイルをコピーしています。Windows側からRaspberry Pi側にも左から右のドラッグアンドドロップでコピーできます。 また、ファイルをダブルクリックするとWindowsのエディターでファイルを編集できます。ネットワークで検索したプログラムや定義内容もコピペで編集できるので便利です。エディターはWinSCPの設定で好きなものを追加できます。 De...

Raspberry Pi Zero WでUECS Piを動かしてみる

イメージ
 AmazonでRaspberry Pi Zero Wが3300円(送料別)で売られているのを見つけて衝動買いしてしまいました。半導体不足前は1800円ぐらいで売られてたのですが、今となっては他では1万円とか2万円とかで売られているものもあり、3千円台は非常に良心的だななあと思います。 これでUECS Piが動くならRaspberry Piの価格高騰、品不足問題を緩和できると思い、試してみることにしました。 (当然のことながら、Raspberry Pi ZeroはUECS Piのサポート対象外なので、使う時は自己責任にてお願いします) スペック比較 まずは仕様を比較しておきましょう。Raspberry Pi Model BはUECS Piがサポートする最下位モデル。Raspberry Pi 3Bは私がいつも使っているモデルです。 Raspberry Piの仕様比較 ( Wikipediaから抜粋 ) 追記)Pi Zero WのCPUの表記が適切でなかったので訂正しました。 Pi Zero WのCPU、メモリはModel Bと同等以上になっていますのでPECS Piを動かすキャパシティはあるんじゃないかと思います。ただし、有線LANのコネクタがないので、その点は考慮が必要です。 とりあえず動かしてみる UECS Piのファーム(無線LAN対応済み)のmicroSDカードで起動してみた。 ピンヘッダの向きの関係でボードの裏側が写っている。 温湿度センサーはSHT-21。CO2センサーはELT S-300。 先週のブログで紹介した無線LAN対応済みのUECS PiファームウエアのmicroSDカードがあったので、とりあえずそれで起動してみました。 無線LANで接続し、UECS PiのWEB画面からログインできました。Pi3に比べて少し反応が遅いですが、稼働に問題ないようです。(あっけなかった) ログインや起動後新たな画面表示に時間がかかるようで、CPUとかメモリの大きさよりもSDカードの読み込みに時間がかかるような気がします。boot時のCUIのメッセージ表示のスピードも遅いですね。そもそもPi3と比べるのはかわいそうか? ピンの配置もRaspberry piの40ピンの配置と同じなので UECS Piに接続できるセンサー入門② で紹介した自作のスタッキングボード...

UECS Piファームウエアを自分用にカストマイズする③

イメージ
今回は、UECS PiをWiFi(無縁LAN)で接続する方法を紹介します。 UECS PiがサポートするRaspberry Pi 2では無線LANは実装されませんが、Raspberry Pi 3以上では無線LANは標準装備です。無線LANを使えばLANケーブルの配線が不要になり設置の自由度が高くなります。もちろん有線LANの方が安心という考え方もありますが。まだテストはしていませんが、Raspbery Pi Zeroでも無線LAN付きモデルがあるので、使えるようになれば選択肢が増える可能性があります。 UECS Piファームウエアを自分用にカストマイズする① で紹介したように、UECS Piの画面では無線LANのIPアドレス設定はできません。また、無線LAN用のSSIDの定義も追加する必要がありますので、ここはRaspberry Piに直接ログインしてCUIで設定します。ステップとしては2つです。 無線LAN用のインターフェース定義をする(/etc/network/interfacesを編集) WiFiアクセスポイントの定義をする(/etc/wpa_supplicant/wpa_supplicant.confの編集) 始める前に。ネットでRaspberry Piの無線LAN接続の記事を調べるとdhcpcd.confに定義する方法が紹介されています。しかし、UECS PiのファームウエアではDHCPクライアント(dhcpcd)のサービスが使用されてないためか、dhcpcd.confに定義しても無線LANに接続できません。いろいろ試しましたがうまくいかないので/etc/network/interfacesに定義する方法をとりました。しかし、dhcpcd.confに定義する方法が推奨されているので、いずれそちらに移行する必要があるでしょう。 無線LANインターフェースの定義 /etc/network/interfaces それでは、/etc/network/interfacesに無線LANインターフェースの定義をしましょう。 編集の仕方は UECS Piファームウエアを自分用にカストマイズする① で紹介したようにエディターのnanoで編集します。 /etc/network/interfacesの無線LAN用定義例 画面はWindowsのPCにファイル転送してサクラエディタ...

UECS Piファームウエアを自分用にカストマイズする②

イメージ
前回の記事で、Raspberry Piをネットワークに接続できる状態になっていると思います。今回の作業はネットワークに接続されている状態で行う必要があります。 Raspberry PiのOSであるDebianは無料で配布され、有用な多くのツールも無料です。たくさんのツールの導入やバージョン管理のために"apt"というツールが準備されています。今回はこの"apt"を使って作業をします。 また、Raspberry Pi用の構成ツールraspi-configを使ってカストマイズする方法をご紹介します。 ソフトウエアの最新化 UECS Piのファームウエアにもaptは導入されています。操作はroot権限が必要なので、権限を持ったユーザーで行う必要があります。 (Raspberry Piの通常の配布パッケージでpiユーザーを使用する場合はコマンドの前にsudoを追加してください) 更新の前に、下記のコマンドで配布用のサーバーから最新のソフトウエア情報を読み込みます。 apt-get update 画面イメージ取得のためにWindowsのsshクライアント画面を使用しています。表示される中身はRaspberry Piの画面と同じです。 Reading package Lists...Done が表示されればOK。ここでエラーが出る場合、多くはインターネット接続ができていないのが原因です。前回のネットワーク接続の確認で紹介したifconfigやpingコマンドでLAN接続を確認しましょう。また、LANからインターネットに接続できるかも確認しましょう。前回編集した/etc/network/interfacesのファイルで間違って編集していないか再確認しましょう。 LANに接続できているのにインターネットに接続できない状況では下記の定義が関係します。  up route 255.255.255.0 eth0 チェックしてみてください。 updateが成功したらupgradeを行います。 更新していいか確認がありますのでYを入力。 ここからはパッケージ内容を読み込みますので少し時間がかかります。 今回はこんなメッセージも出ました。パッケージのレベルによってメッセージが変わりますので慌てないでよく読んで対処しましょう。 ssh関連の定義ファイルを更...