Posts Tagged ‘ドヤ顔工作’

Raspi Pico Display

2年ほど前に、Pimoroniと言うブランドから出ている、Raspberry Pi用のアクセサリで、Raspberry Pi Pico用の小さい液晶ディスプレイを買ったままになっていたのをようやく引っ張り出していじって見た。例により、訳が分からないままgithubからサンプルソースをダウンロードし、中身を解読(想像)しながらいじって見た

例によってピンヘッダのハンダが汚いのは見なかったことにしてもらいたい

Raspberry Pi Picoと同じフットプリントの1.14インチ、240×135ピクセルの液晶基板上に図形や文字、画像を表示できるようだ。画面の周囲に4つのボタンが配置されているので、サンプルプログラムをいじって、マーフィーの法則から短いものを見繕って割り当て、ボタンが押されたら表示するようにした。因みに下記。本当は、いくつもの法則を入れて、ランダムに選んで表示できるようにしたいのだが、これは今後の宿題

これを買った動機は、例えばデイパックや鞄にぶら下げて、名札と言うか、動くサイネージみたいな使い方を考えたため。実現に向けて、少しずつ工夫して行きたい

入れた法則

Say no, then negotiate.
まずノーと言え、交渉はそれからだ
へルガの規則

When all else fails, read the instrctions.
他の全てがダメだったら、マニュアルを読め
カーンの金言

It workes better if you plug it in.
プラグを繋げばもっと良く動く
サッティンガーの法則

Variables wont; constants aren’t.
変数は変化せず、定数は定まらない
オズボーンの法則

2025/02/03
んねぞう

Raspberry piのNAS化 – 続き

Raspberry piのNAS化に成功して、でけたでけたとひとしきり悦に入っていたが、その後、使っているHWがRaspberry Pi Model 4B (4GB Mem)と、割合性能の高いものなので、ちょっとこれは勿体ないと思うようになった。これはRaspberry Pi Picoと言うもっと小さなコンピュータ(というかこれ位になるとコントローラと言うらしい)向けの開発マシンとして使いたいのだ

そこで、Raspberry Pi Zeroを使って同じようなことができないかと思い、早速Zeroを買った。ただし、私がこの間買って在宅勤務システムに組み込んだものから、性能向上がされたZero 2Wと言うモデルがあったので、これを買った

早速Openmediavaultを使ってNASの構築をしようとしたが、何故かOSのインストール時にWiFiのモジュールのインストールができず、ChatGPT様にも対策を聞きながらいろいろやって見たがうまく行かなかった

もう嫌になってWebを見ていたら、AlpineLinuxと言うOSを使ってできていた人がいたので、マネをして見たが、その人のBlogに書いてあることは、ある程度AlpineLinuxが分かっている人向けのレベルなので、途中で挫折した

ついに、Openmediavaultは諦め、もうSambaでもいいや、と言う時点でNASは諦めたわけだが、とにかくファイル共有ができれば良いという方面に転進。もう、何をどうやったか覚えておらず、思い出すまま、最後にメモとして書くが、とにかく固定アドレスでフォルダを共有するところまでこぎつけた。ただし、共有フォルダの名称が意図したものでなく、それ以外にもいくつか不要なフォルダが公開されてしまっているが、何をどうやって直したらよいのかわからず、とりあえず私一人で使っているので、実害はないので放置。USBインタフェースは2.0でスピードはお察しだが、特に高速アクセスを必要としているわけではないので、問題ない

Raspi財団オリジナルのケースとOTGケーブルを注文したので、到着次第、Tinyなファイルサーバとして、またひとしきり悦に入る所存

メモ

  • RaspiOS Desktop 32bit版をインストール
  • ディスクマウント用のディレクトリを作成
  • デバイス(/dev/sda)を上記ディレクトリにマウント
  • fstabにマウント情報を設定
  • sambaをインストール
  • /etc/samba/smb.confの内容を書き換え

ケースとOTGケーブルが来たので早速セット

ひと昔、いやふた昔前は、会社のサーバー室に鎮座ましますNTサーバにSambaをインストールして、そこにアクセスしていたものだが、今やFliskの箱よりちょっと大きい位の箱に収まってしまうのだから、凄いことだと思う。アクセスピードは、USB2.0だから大したことはないが

ケースに入れる前に、それまでシステム用に使っていたMicroSDカードが32GBのもので、ちよっと勿体なかったので、手持ちの16GBのカードに再インストールした。その時にもSambaが正常に動いてくれるまでにすったもんだあったことを記しておく

2025/02/02
んねぞう

Raspberry piのNAS化

この正月休みの暇つぶしに、大掃除の終わった昨年の大晦日から、手持ちのRaspberry pi (Model 4B 4GB)と、よく名前を聞くフリーソフトのOpenmediavaultを使ってNAS(Network Attached Storage)を作って見た。別にNASを使う必要がある訳ではなく、単にNASできた、できたと喜ぶためだけのために。詳細手順はいろいろな人が共有してくれているので、ここでは手順の概要と私が嵌った壺に特化して書いて行く

材料

  1. Raspberry pi (Model 4B 4GB)(以降RASPI)
  2. 不要となったNote PCから抜き取った2.5in. HDD(250GB,SATA)
  3. USB-SATAアダプタ

手順

  • HDDの初期化
    1. HDDはWindows PCのc:ドライブとして使われていたので、内部はいくつかのパーティションに分かれていた。Windowsの「ディスクの管理」ではパーティションの削除ができなかったので、”diskpart”コマンドを使ってパーティションを削除した
    2. 次に、USBアダプタを使ってこのHDDをRASPIに接続し、RASPI OSの”fdisk”コマンドでデバイス名を確認、パーティションを作成
  • RASPIでのフォーマットとマウント
    1. RASPIではHDDはEXT4と言う形式でなければならないらしいので、”mkfs.ext4″と言うコマンドでフォーマット
    2. マウントポイントとなるディレクトリを”mkdir”コマンドで作成
    3. “mount”コマンドを使ってディスクをマウント
    4. “chown”コマンドを使ってディレクトリのownerを変更
    5. 起動時に自動マウントさせるために”blkid”と言うコマンドを使ってディスクドライブのUUIDをメモし、”/etc/fstab”の中にこのUUIDを書き込む
  • RASPI OSのインストール
    1. Raspberry pi OS LITEのインストールが必要なのだが、64bitフルVersionのOSがインストールされているDesktop環境からいきなりOpenmediavaultのインストールを始めたので怒られた。 Micro SDにRaspberry pi OS LITEをインストールして、RASPIに挿入して起動、インストールした後、PCのDOS コマンドプロンプトでSSHから入らなければならないらしい。以降の作業はすべてリモートの(私の場合はWindows PC)SSH環境からとなり、RASPIの画面は、起動時に割り振られたIPアドレスの確認のため参照するだけ
    2. この先何度も失敗(後になってい分かったのがこれは失敗ではなかった)、試行錯誤して、Micro SDカードへのOS書き込みをして、RASPIに差し込んで、WindowsからのSSHで接続する度に「誰かが悪意を持って侵入しようとしているぞ」と言うかなり強い調子の警告が英語で表示されるのだが、これは前回接続した時の指紋が残っていて、新しく接続した時のものとの不一致のために起こっているものだそうで、このような時は”C:\Users\[user名]\.ssh\known_hosts”の中の一部を削除すれば良いらしい
    3. “sudo apt update”, “sudo apt upgrade”コマンドでのアップデートを実施
  • Openmediavaultのインストール
    1. 下記コマンドでOpenmediavaultをインストール

wget -O – https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

  • Openmediavaultの設定
    1. ブラウザで、RASPIのIPアドレスを指定すると、Openmediavaultの画面が立ち上がり、これに管理者ID/PWを入力してセットアップを開始する
    2. ストレージ>ディスクで表示されている対象のディスクを選択して、消しゴムアイコンを押して「ワイプ」する。ワイプには「クイック」と「セキュア」の2種類を選ぶことができるが、「セキュア」でワイプしたら大変な時間がかかった
    3. ストレージ> ファイルシステムでファイルシステムを追加、フォーマットはEXT4を指定して保存
    4. ストレージ> ファイルシステム> マウントのメニューファイルシステムのマウント
    5. サービス> SMB/CIFS> 設定メニューでWORKGROUPの有効化を指定
    6. サービス> SMB/CIFS> 設定メニューでSMB/CIFSの有効化を指定
    7. ユーザー> 共有フォルダメニューで権限設定
    8. ストレージ> 共有フォルダ> アクセスコントロールリストで権限設定
    9. この後WindowsのExplorerの”ネットワーク”にRASPBERRYPIが見えたのでダブルクリックしたところ”Windowsセキュリティ”なるものからユーザに対応したパスワードを入力しろと言われて、わからないながらいろいろ入力してが「間違っています」と言われ続け、これがためにRASPI OSの入れ替えを何度も繰り返した。これで大晦日の午後がつぶれ、翌元旦の午前中にWebで解決法が分かった。Windowsの「資格情報マネージャー」の「Windows資格情報」から、該当部分のエントリーを削除したところ、Openmediavaultのuser設定で設定したパスワードを使ってアクセスできるようになった。最も躓いたのはRaspi OSでも、Openmediavaultでもなく、結局Windowsだったという落ち

  • Windowsでドライブレターの割り当て

結果

ここまで来たところで1.16GBのファイルをWindowsPCからNASにコピーしたところ、約19秒で完了したので転送速度(Upload)は約660MB/Sだった

懸案として下記2点があるが、もうすでにこれらに取り組む気力はないので、そのうち気が向いたら手を付けることとしたい

  1. RASPIの固定IPアドレス化が必要なのだが、多分私の環境では、ネットワークプロバイダからの貸与品のルータの設定が必要だ。私程度の技量でこれを始めると我が家全体のネットワークがそれこそ弩壺にはまると思うので、触らないようにしておく
  2. 基本的に私のデスクトップPCは有線LAN、RASPIはWiFiでの運用としているのだが、今回は両方有線LAN環境で設定している。RASPIをWiFiで接続したとたんに有線LANで繋いでいるクライアントとの通信を確保するためにサブネットマスクだかルーティングだ何だか知らないものの関係で通信ができなくなり、その解決にまた壺に嵌ることになると思われる

【追記】その後ルータの設定メニューに固定IPアドレス指定メニューが見つかったので、MACアドレスと、それに対するIPアドレスを設定したところ、今のところ固定IPアドレスになっているようだ。ただし有線LAN接続のみの場合。夜、iPadから接続して見たところ、正常に接続できた。【追々記】その後RASPIをWifi接続した時のMACアドレスを調べてルータに設定したところ、有線LANとは別の固定IPアドレスが割り振られた。当然と言えば当然だが、有線LANとWiFiで同じIPアドレスが割り当てられることはない。有線LAN接続したデスクトップPCからの接続も問題なし。このRASPI NASこれをいつまでもLANケーブルを繋いで机の上に置いて置く訳にもいかないので、とりあえずWiFiに繋げて放置して置くことになるか…と言うことで上記2件の懸案はClose

で、冒頭に書いた通り、使い道は特にない

2024/01/01
んねぞう

PC再利用

昨年PCを更新した時に、余ったcore i5 3570Kのセットをどうしようと思っていた。捨てるのには勿体ないし、取っておくにはケースが大きくて場所を取るしと思っていたところに、子供のために昔買ったスリムタワーデスクトップPC(Pentium搭載)が眠っていたのを、引っ越しを機に引き取ることになった。そこで、これらからニコイチで省スペースPCを組むことを企んだ

スリムタワーPCはPentium E5800と言うCPUが載っており、調べると2010年に発表されたものなので、i5 3570Kより2年前のモデルだ。Chrom OS Flexを入れて簡単にテストをして性能を調べてみたが、Clipchampによるビデオエンコード時間やOctane 2.0のベンチマークのスコアで数倍の開きがあるので、CPUを交換して場所を取らない遊び用のPCとして作る。まずはChrome OS Flexでもインストールして、遊んでみようという心積りだ

今回の換骨奪胎の全容を図にしておく

  1. Motherboard(MB)

CPUを収めるためのMotherboardは、現行のはATXで、スリムタワーのMicro ATXには入らないので、別途購入が必要だった。できるだけ安く上げたいので、中古品を探したらNECやLenovoのパソコンから抜いたものが売られていたが、いずれもメーカ独自のModificationがされている可能性が高く、細かいがどうにもならないこと(接続ピンのピッチとか)で躓いて頓挫するのが嫌だったので、これだけは新調した。4000円で、中国製。LGA1155と言うことで、多分動くだろうと予想

Micro ATXを注文したつもりだったがMini ITXだった。まあ、小さいから良い。4GBのメモリが4枚余っているので、メモリスロットは4つあるのが良かったのだが、値段が高いし、またChrome OSだし8GBでも十分だろうと2スロットで妥協

マニュアルは各部のソケットの説明の紙1枚。それも、フロントパネル関連のピンの場所が実物と違っている。まあ、とにかく動いてくれれば良い

因みに、箱には”Gaming Motherboard”との表記があるが、マニュアルには”Military Level Layout”とある。この2つの概念はどのように折り合いを付ければ良いのか、突っ込み所の多いMBだ

背面インタフェース。映像出力にはHDMIとD-SUB端子があるから物の役には立つ

2. CPU、クーラー取り外し

ミニタワーのケースを開けてCPUクーラーを外してみたらグリスがかぴかぴになっていた(左)。10年ぶりにCPU様と再会(中)。リテールクーラーさんには、ファンをひたすら回し続けて、ある意味CPU様よりくたびれているかも知れないが、引き続き頑張ってもらう(右)。10年後の第13世代の同等モデルのcore i5 13600Kを使って昨年組み上げたが、昨今はK付きモデルには爆熱のせいでリテールクーラーの添付を諦められてしまっているのに隔世の感がある

3. CPU、メモリ取り付け

これは特記することもなく済んだ。CPUクーラやメモリモジュールがちんまりと収まって、なかなか良いんでないかい? これにPSとSSDだけ付けて、大き目のクッキーの缶位のケースに収容できると面白いと思う

4. Motherboard組み付け

スリムタワーの中。Micro ATXのMB。これをそっくり取り外して、

新しいMBを組み付けた。これをマンハッタンの上空から撮った写真だとすると、MBの左側は、バスケットボールの遊びができる位のちょっとした空き地に見える(謎)

5. 配線

ここで一つ気がかりな点があった。このケースのフロントパネルの電源、リセット、HDDアクセス、電源ランプのピン(8ピン+1ピンNC)が一体式になっていることだ。この配列とMB側の配列が一致していれば良いのだが、最悪リード線を切って一本ずつピンソケットをハンダ付けして行く必要があるかも知れない。この懸念は追って確認することとして、電源ユニットの配線をして、ACコード、キーボード、マウス、ディスプレイの最低限の接続をして、PWRのピンをショートさせて起動するかどうか確認する

6. 問題発生

ここで問題発生。電源が入って、CPUクーラーのファンが回転を始めるのだが、モニタにBIOSの画面が出てこない。かなりの時間放置して見たり、CMOSクリア、メモリの交換、組み合わせを変えて見たり、電源を変えて見たり、なだめすかしたりして数時間あれこれやった挙句、Pentiumの方に付いていた2GBのメモリを入れて起動したところBIOSの画面が表示された。その後はメモリを交換しても、何をしても起動するようになった。何なんだ? ひょっとしてドライバがインストールされていないとダメ? だけどどうやって? ネットワークにつながっていないとダメ? とか様々なことを考えていろいろやって、結局何が悪かったのか分からず仕舞

7. 配線(続き)

5. の配線で、フロントパネルのリード線が束になって固められているものを、恐る恐る差し込んで電源ボタンを押してみると、正常に動作したので、良かった。USB、SATA、Audioの内部ケーブルを繋いで完成

8. 実用性

Chrome OS Flexで使って見たところ、ChromeによるWebブラウジングは全く問題ないレスポンスで、YouTubeもFHDまでであれば実用になる。音声も問題ない。4kは流石に読み込みが頻発して実用にならない。重負荷の作業でなければ、まだ十分に活躍できる。子供が使い道があるというのであれば返しても良し、そうでなければChrome OSの他にUbuntuでも入れて私のおもちゃにしても良い

9. まとめ

■Mini towerのcore i5 3570K CPUの有効活用のため、Pentiumを積んだスリムタワーのケースを活用してChrome OSを積んだ小さめのおもちゃPCを組んだ

– ケース側から来ているフロントパネルのピンがひとまとまりになっていて、もしMBのピンアサインと違っている場合は大変だと心配したが、問題なかった

– 途中システムブートができない事象が発生したが、何だかんだやっているうちに直った。原因不明

– CPUクーラのファンのピンが4ピンなのに対してMB側が3ピンなので、ひょってファンは全力で回りっぱなしになるのかと心配したが、そうでもなくて良かった

– Webのブラウジングには全く問題なく、YouTubeもFHDまでであればは支障なく再生できる性能である

– 何かの都合で、ACコードを抜いて、再度繋ぐと電源ボタンを押してもいないのにシステムが起動するのは何でなんだぜ?

ベースとなったものはFrontier FRS211/20A。私がDOS/V機をいじり始めた当時はフロンティア神代と言うブランド名だったと思う。このPCはヤマダ電機で売られていたものを買ったと記憶している。ブランドは生き残っているようだが、会社自体は消滅してしまったようだ

2024/01/22
んねぞう

PCの延命措置 – 続

先日メインのデスクトップPCの延命のためにメモリを増設したことを書いたが、その時に触れた電源のスイッチのリード線がはんだ付けのところで破断したため、修理した

リード線とスイッチのはんだ付けの部分に負荷がかかったためだと思うので、リード線をはんだ付けし直して、ペットボトルのキャップを向かい合わせにしてケースを作り、その中にスイッチを封入した。キャップ同志の接合部と、リード線の引き出し部は万能接着剤で固め、リード線にかかる張力がはんだ付けした点にかからないようにした

そしてこのスイッチを両面テープでケースに接着

手作り感並びに生活感満載のものが出来上がった。名付けて出臍スイッチ

因みに奥に見えているシールは…

このケースがかつてpentium 4を収容していたことを示す。「pentium 4って何?」か、「だから何?」か、それよりも圧倒的多数は「ほー(適当)。」という反応だろうから半ばやけくそ気味に披露する

2022/11/12
んねぞう

ひかり回線のGWとRaspberry Pi

連休が始まって間もなくネットワークの接続が不安定なので見ていたら、ひかり回線のGW(Gateway)機器が電源断-再起動を繰り返していた。サポートに電話したら、交換品を送ってきてくれた。これでネットワークは安定したが、nWFHS (nNEZOU Work From Home System)のStatus IndicatorのRaspberry Pi (Zero WH)がつながらなくなった。GWのせいかわからないが、ホストからいくらpingを打っても届かない。これで数日悩んでいる。Raspbrry Pi 4でRaspberry Piのお作法通りに固定IPの設定をして、このSDカードをRaspberry Pi Zero WHに差し込むと全くネットワークから見えなくなる。

2022/05/04
んねぞう

んねぞう 在宅勤務システム(nWFHS)

システム図を改訂

改訂点

  1. Raspberry Pi 4を追加
  2. Status IndicatorをLCDに変更

2021/10/02
んねぞう

トラブルは続けてやってくる

  1. nWFHS

nWFHS (nNezou Work From Home System – んねぞう在宅勤務システム)の主要機能であるRaspberry Pi ZeroによるLED表示ができなくなった。止せば良いのに Pi Zero のアップデートをしたのが悪いらしく、これまでうまく行っていた環境が壊れてしまい、再インストールしても後の祭り。原因を究明する気力もないが、さりとて月曜日からの仕事にないと困るので、下記のように考えた。

LED表示はハードルが高いので、以前ギブアップして取っておいた3.5インチ液晶を表示用として使う。

方法 1 コントロールセンターであるRaspberry Pi 4からZeroにVNC接続して、「仕事中」、「会議中」の旨表示をしたmp4動画ファイルを作成して、vlcプレーヤーで表示させる。

表示できたは良いが、Zero側のCPU負荷が100%に張り付いていて、VNC接続したPi 4側からの停止コマンドを受け付けない。表示を切り替えるためにタスクマネージャーを呼び出してプロセスを停止させる、というなんともダサい恰好になる。→ 断念

方法 2 Windows PCのアニメーション付pptを作成し、Motion GIFで保存し、Zero側で表示させる。pptでGIFを書き出したが、Motion GIFではなかった… → 断念

方法3 方法2のpptで作ったものをjpeg化した静止画をZero備え付けのイメージビューワで全画面表示させる → 一番つまらないが、背に腹は代えられないので採用。下の写真参照。Pi 4からのVNC接続だけでは一定時間経過するとスクリーンセーバーが働いて画面が暗くなるので、Picoで作ったMouse JigglerをコントロールセンターのPi 4に接続して、定期的にマウスポインタを1pxずつ動かすことでスクリーンセーバが働かないようにした。こういう本筋でないところで頭を使うことも多い。なんだか電子工作から遠くなってしまったのが悲しい

2. 中華アンプ壊れた

これまで使っていた中華アンプがお亡くなりになった。調べてみたら2017年の8月に3,000円程度で買ったのが4年間保ったことになるので十分元は取れた。それまでの間、故障したと勘違いして買っていて、そのまま保管していた別のアンプLP-2040+というものがあったので交換した。

またいたずら心を出して分解を始めたのだが、前面と裏面のパネルの固定に特殊なねじが使われていて外せないので、本体とパネルの間にマイナスドライバをねじ込んで、パネルを破断させるという暴挙に出た結果が下の写真。

なぜこんなことをしたのかというと、部品を回収して電子工作に使えないかという下心から。基板を引き出してみた

簡素な基板。Lepyのロゴの上あたりの裏側にトランジスタ(FET?)が張り付けてあり、アルミの筐体と直接接触して放熱されるようになっていた

20kΩのボリュームが1個と100kΩのボリューム2個が、つまみ付きでゲットできた。何に使うか知らないが。また、ジャック類も何かに使えそう。コンデンサとコイルもあるが、これは私にはハードルが高そう

この破壊工作の際に金属の縁で指に小さな切り傷を作ってしまった

本日の教訓

  1. うまく動いているシステムには手を付けるな
  2. 金属をねじ切った後、ケガに注意

2021/09/26
んねぞう

Mouse Jiggler

パソコンで一定時間操作がないとスクリーンセーバーが作動して、いちいちパスワードを入れないと作業途中の画面に戻れないので面倒な思いをしている。YouTubeを見ていたら便利そうなツールの紹介があったので、Raspberry Pi Picoで作って見た。ソースは下記。社畜商会様に感謝

【ラズパイPico】マウス・キーボードを自動で操作してみた【Android対応】(社畜商会)

(上のリンクの文字列です) www.youtube.com/watch?v=19OxWjO6gqg

Raspberry Pi PicoをFliskのケースに入れた。中身を処理するのに10日かかった。お腹がおかしくなった

緩衝用、またやたら動かないようにエアキャップの切れ端で巻いてある。本当はグルーで固定すれば 良いのかもしれないが、生来の貧乏根性がそうさせない

例によりリスク回避のためにソースコードを掲載

Mouse Jiggler
# Raspy Picoを繋ぎ、ThonnyでCircuitPythonを選ぶ
# Firmware は https://circuitpython.org/board/raspberry_pi_pico/ から取得

import time
import usb_hid
from adafruit_hid.mouse import Mouse

m = Mouse(usb_hid.devices)

while True:
    m.move(x = 1)
    m.move(y = 1)
#    time.sleep(.04)
#    m.move(x = 1)
#    m.move(y = 1)
    time.sleep(3)
    m.move(x = -1)
    m.move(y = -1)
#    time.sleep(.04)
#    m.move(x = -1)
#    m.move(y = -1)
    time.sleep(3)

このプログラムはマウスポインタをx,y方向それぞれに1px移動して3秒待ち、そして元の位置に戻して3秒待つという動作を繰り返させる。実際のマウス操作には支障はない。微妙な位置にマウスがあってたまたま変なタイミングで押された場合はその限りではないが、あまり起こらないのではないかと思う

使うにあたっては、① PicoをPi 4に接続し、② Thonnyでプログラムを開いて実行させる必要がある。一度起動しておけばThonnyは終了しても大丈夫だが、C/C++で開発すれば実行ファイルを一回叩けば動くのだろうか…

2021/09/20
んねぞう

人生ゲームルーレット再来 – 再構築編

Raspberry Pi Picoによるしょうもないシステムの専用機化の第二弾として、Raspberry Pi 4Bで作った人生ゲームのルーレットを、専用機化するプロジェクト。前回より少し機能を追加してブレッドボード上に組み上げた

起動ボタンを追加した。予め参加者が好きな色を決めて専用に使うも良し、そういう取り決めもなく自由にその時の気分で押しても良し。サーボモータが動いている間はLEDが点灯するようにもした。以前買っていたRGB LEDを使って押されたボタンの色で光るようにしようと思ったが、見つからないのでおとなしく手持ちの黄色のLEDにした

ゲームを始めるにあたって、それぞれのボタンには秘密の隠し味が仕込んであって目の出方が微妙に違い、参加者がどのようなコースを選んだか、また何を狙うかによってその結果に差が出て来るかもしれない等と能書きをコクのも趣が増して良いかも知れない(プログラムを見れば内部のロジックは全く同じなのは一目瞭然だけどな)

リード線が林立して非常に複雑そうに見え、自分にして見れば大したことをやったという感覚を覚える。それは良い、達成感を持つのは精神衛生上非常に良いことである。しかし、しみじみと考えると、PicoのGPIO端子とGNDをプルアップ(ダウン?)抵抗で繋いで → 電源と繋げるスイッチ → GNDの回路を4つと、GPIO → 電流制限抵抗 → LED → GNDの回路があるだけで、使っている抵抗もちゃんと計算したものではなく、とりあえず唸るほどある330Ωの抵抗を場当たり的に使っていたり、実はそれほど大した回路ではないということに思いを致すことも人生で大切なことである。

※(ここまで書いてきて、ソースコードでGPIOピンの定義でPULL-UPオプションを指定していることに気がついて混乱して来た。本当にこのままで良いのだろうか…動いているからこの場では良しとすることにする)

以下はリスク対策のためのソース(Micropython)

# ボタンを押すとサーボーモータがランダムな値を示し、作動中はLEDが点灯
# Raspberry Pi Picoで作動
# MycroPython上で稼働
# Servo Motor GP0
# 緑GP3 赤GP7 黄GP11 青GP15
# LED GP28

from machine import Pin
import time
import math
import random

pin28 = machine.Pin(28, machine.Pin.OUT)

def servorandom_dice_Pico():
    # 可動範囲は0°~約120°(Duty比で2300~7530)
    # 1~10のサイコロの目をサーボモータで表示する

    pin0 = machine.Pin(0, machine.Pin.OUT)
    servo = machine.PWM(pin0)
    servo.freq(50)

    m = random.randint (6, 10)
    n = 1
    while n <= m:
        dice = random.randint (0, 9)
        pulse = (523 * dice + 2300)
        servo.duty_u16(pulse)
        time.sleep (0.3)
        n += 1

n = 1
while True:
    pin = machine.Pin(3)
    pin = machine.Pin(3, machine.Pin.IN,machine.Pin.PULL_UP)
    if pin.value():
        pin28.value(1)
        servorandom_dice_Pico()
        pin28.value(0)

    pin = machine.Pin(7)
    pin = machine.Pin(7, machine.Pin.IN,machine.Pin.PULL_UP)
    print ("Pin5 (R) : ", pin.value())
    if pin.value():
        pin28.value(1)
        servorandom_dice_Pico()
        pin28.value(0)

    pin = machine.Pin(11)
    pin = machine.Pin(11, machine.Pin.IN,machine.Pin.PULL_UP)
    print ("Pin10(Y) : ", pin.value())
    if pin.value():
        pin28.value(1)
        servorandom_dice_Pico()
        pin28.value(0)

    pin = machine.Pin(15)
    pin = machine.Pin(15, machine.Pin.IN,machine.Pin.PULL_UP)
    print ("Pin15(B) : ", pin.value())
    if pin.value():
        pin28.value(1)
        servorandom_dice_Pico()
        pin28.value(0)

    print (n ,"---- ")
    n += 1
    time.sleep (.2)

MicropythonとPythonではライブラリの提供の内容が違うのか?よくわからないながらコーディングをした。途中で関数の定義と言う、私にとっては大きな飛躍を遂げた(すぐ忘れるけどな)。電子回路でプルアップという考え方にも触れた。これで一つの山を越えた。あとは使い方を考えて基板と筐体をどうやって作るかだ

2021/09/12
んねぞう