Archive for the ‘変なモノ達’Category

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
んねぞう

やる気のない信号機再来-完結編

前回のシステム再構築の後、基板が届いたので、早速基板上に作りつけた。配線が最もシンプルになるように考える。今回はクロスするようなところはなかったので幸いだった。ラズパイのピンソケットを付け、LED、抵抗を穴に差し込んで、足を折り曲げながらはんだ付けの順序を考えて行く

はんだ付けの後、どれ、と電源をつないでみたが、動かない。いろいろ調べてみたら、プログラム上のピン番号が違っていたのがわかり、はんだの付けなおし。また、Raspberry Pi Picoに接続するGPIOのピンが近接しすぎていてはんだの作業性が悪かったので、お互いに少し離したピンに接続。これでようやく動いた。(前の記事のプログラムは変更済)

さて、これをこれからどうしてくれよう。夜、寝室の暗がりの片隅でひたすら点滅している様子も、悪くはないかも知れない

2021/08/21
んねぞう

Raspberry Pi Picoとやる気のない信号機再来

Raspberry Pi Picoによるしょうもないシステムの専用機化、その第一弾「やる気のない信号機」。

昔作ったPythonのソースコードは、先日のデスクトップパソコンのシステムのクラッシュと共に失われ、またRaspberry Pi model 4Bの中にもあったはずだが、タッチディスプレイを試してうまく行かなかったときに、システムのクリーンインストールを何回もしていて跡形もないので、仕方なく作り直した。他人の参考にはまったくならないが、今後こういったことのないよう、自分の安全のために末尾に置いておく。何となく前回とGPIOだかPWM(Pulse Width Modulation)のコーディングのお作法が違っているような気がするが、動けば良い。今回は、専用機化に向けて、ブレッドボード上でのシステムの復旧まで。基板が届いた後本格的に作業したい

こうして作って見たが、各色の輝度を合わせるためLED毎に電流制限抵抗の数とつなぎ方に見事なバラエティができた。私は今330Ωの抵抗しか持っていないので、緑は2本並列(165Ω)、黄色は2本直列(660Ω)、赤は3本直列(1kΩ)という組み合わせになった。上の絵を見てもらえば何となくわかるだろうか。誠に趣深いものがある。黄色いLEDのサイズが他と異なっていることと併せ、こうなると詫び寂びの世界と言っても過言ではないだろう(過言だろう)

この動画の場合、青(緑)はいやいやながら徐々に点灯するが、それなりに持続して(短いが)すっと消える。続く黄色は小粒だがぴりりと点灯して、青より頑張っていることをアピールする。最低なのが赤で、黄色が消灯するや否や嫌なことはさっさと片づけて、と一応立ち上がりはするが、最低限保持したら後はぴしゃりと消灯してできるだけエネルギーを温存しようとする。その後、青はもう自分の番が来たのかとばかりに面倒臭そうに少し間をおいてよっこいしょ、と腰を上げる…というイメージ

ソースコード中、dutyサイクルの範囲と増減の刻み値(iの値 – 明るくなったり暗くなったりの幅と増減の刻み幅)、sleepの時間設定( 明るくなったり暗くなったりの増減の刻みの保持時間や、青 – 黄 – 赤の移り変わりの間の取り方)で、いろいろなパターンを実現できる。ここでは赤色のLEDの処理の部分は徐々に減光する部分をあえて無効にしてあるが、コメントアウトしてあるだけなので必要であれば復活させられる

人それぞれのやる気のなさの表現に使えるかも知れない。やる気のなさコンテストでもやるか

専用機化にあたって、基板を注文して届くまでの間に本人のやる気が失せないかが問題だ

2021/08/14
んねぞう

from machine import PWM, Pin
import time

# Pin 7:Green 9:Yellow 10:Red (in GPIO nomenclature)

Green = PWM(Pin(7))
Yellow = PWM(Pin(9))
Red = PWM(Pin(10))

max_duty = 65025

while True:
    i=0
    while i<25:
        Green.duty_u16(int(max_duty*i/100))
        time.sleep(0.03)
        i+=0.4
    time.sleep(0.1)
    while i>=0:
        Green.duty_u16(int(max_duty*i/100))
        time.sleep(0.005)
        i-=0.5
#    Green.duty_u16(int(0))
    time.sleep(0.8)

    i=0
    while i<100:
        Yellow.duty_u16(int(max_duty*i/100))
        time.sleep(0.03)
        i+=2
    time.sleep(1)
    while i>=0:
        Yellow.duty_u16(int(max_duty*i/100))
        time.sleep(0.001)
        i-=1
#    Yellow.duty_u16(int(0))
#    time.sleep(0.3)

    i=0
    while i<=100:
        Red.duty_u16(int(max_duty*i/100))
        time.sleep(0.005)
        i+=2
    time.sleep(0.05)
    Red.duty_u16(0)
#    while i>=0:
#        Red.duty_u16(int(max_duty*i/100))
#        time.sleep(0.001)
#        i-=2
#    Red.duty_u16(int(0))
    time.sleep(1)

GPIO.cleanup(Red)
GPIO.cleanup(Yellow)
GPIO.cleanup(Green)

Raspberry Pi Pico

Raspberry Pi Picoという、コンピュータというかコントローラが気になり、試しに一つ買って見た。プログラムの開発のためのプラットフォームではなく、開発したプログラムをロードして実行させるためのもので、安価でコンパクトだ。これまで作ったソフトとハードウェアを一体化して残しておくのにちょうど良いと思う。

大きさは昔の板ガムを短く太くした位の大きさで、この中にコンピューティングパワーを秘めていると思うと、すごい時代になったものだと思う。思い立ったらすぐ欲しくなる質なのでAmazonで860円で買ったが、安いところでは550円で買えるし。因みにピンヘッダは自分で付けた。この前に、Raspberry Pi Model 4B用の、GPIOとブレッドボード接続キットのピンヘッダのはんだ付けをやって失敗して駄目にしたり、不注意ではんだごてのこて先をキーボードに当ててしまい、一部溶かしてしまったことはあまり言いたくない。言いたくないが、万一この記事を見られた方がいたとすると、この写真のはんだの状態を見てコメントしたくなるだろうから、言い訳のために言っておくのだ

これを元にして、これまでブレッドボード上で作ってきたしょうもないものを専用機化して、保存しようという魂胆。そのために、基板やスイッチを買いそろえる計画である

2021/08/12
んねぞう

Raspberry piのタッチスクリーン化失敗

手持ちのRaspberry pi 4にタッチスクリーンをつければ、何か面白いことができるのではないかと考え、買ってみた。説明書が添付されているのだが、この説明書に従ってもタッチスクリーンが動作しない。何度もSDカードのフォーマットとOSのクリーンインストール、ドライバのインストールを繰り返しても動作しない。さらにWifiの固定アドレスの指定ができなくなって、Bluetoothのアイコンが表示されなくなってしまった。これで10日悩んでいる。説明書以外にもWebで調べたりYoutubeを見たりして試しているが、LCDでの画面表示はできるが、タッチスクリーンは頑として動こうとしない。もう何をどうやったか整理して書き記す気力もなくなった

本体と付属品。右手前の2つは、LCDディスプレイとRasbperry pi 3と4それぞれのHDMIジャックを連結するための基板。この他にドライバやドキュメントが入ったDVD、紙の説明書2枚

裸のRaspberry pi 4Bの基板に取り付けたところ

Physical Computing Lab社製の金属製のケースに入れても接続できる

画像がぼやけてわかりにくいかも知れないが、他の金属製のケースと違いケースにフィンがないため、本体とLCDの間に干渉物がなく、すっきりとTinyに収まってくれるのは気に入っている。本体とLCDはGPIOのソケット、HDMIの接続基板で固定され、またRaspberry piの基板上のUSBや有線LANのジャックとLCDの基板が接触する形になり、3点支持で結構安定している。ただし金属製の筐体のため、Wifiの電波が裸の時よりも弱くなって、今私が座っている場所ではほとんど使い物にならない。設計にあたっては開口部を大きく取るようにしたとのことだが、限界があるようだ

取り敢えず起動して、画面が映っているところ。Bluetoothのアイコンがタスクトレイからなくなっている

結局今のところ何の収穫も得られていない。逆に今回の策動で、64GBのMicro SDカード1枚、そしてUSB有線接続の小型キーボードがなぜか増えてしまっている。Bluetooth、Wifiの電波が頼りなく、そして固定アドレス設定がうまく行かない状態では、SSHやVNC接続もままならず、有線接続のキーボードが命綱なので、デスクトップPCのキーボードを差し替えながらではやっていられなくなって買ってしまった

今回の課題

  • タッチスクリーンが動作しない(根本的問題)
  • なぜかBluetoothのアイコンが消えた
  • 固定IPアドレス設定ができない
  • HDMIジャックが2つあるのに2つ目のモニタが使えない

それでもこのLCD付きの本体、電源アダプタ、マウス、キーボード一式をちょっとしたポーチに入れて持ち歩き、ひょいと取り出してセットアップして使い出す、というシーンを想像すると、こんな小さな筐体でそれなりのコンピューティングパワーを発揮することに周りがどう反応するか楽しみになる。実用上はどうかわからないけど

もう何度目になるかわからないOSのクリーンインストールをして、セッティングした写真を撮って、気が向いて再挑戦するまでこのLCDは保管だ

7月に私の属している写真クラブの写真展が予定されていて、会場にもし偶然HDモニタがあったら、これを使ってサイネージを行ってみるのも面白いかなと思っている

2021/06/12
んねぞう

新種の恐竜

先日USB ハブが壊れたので、部品を取るために分解していじっていたら、たまたまできた造形

名付けてウソベハブザウルス、学名genus USoBeHubsaurusとした。

可愛いらしい動きをつけてGifアニメにでもしようかと思っていたが、USBプラグのケーブルの可撓性に難があり、なかなか思った角度に首が固定できないので投げ出している

2021/06/12
んねぞう

2021年んねぞうカレンダー完成

恒例の写真カレンダー、注文していたものが手に入った。A3より大きいB3サイズでやってくれる所だったが、来年1月でこのサービスは終了するとのこと

この1、2年、自分の(暗い)写真を撮るだけでなく、カレンダーになりそうな写真も意識して撮るようにしており、作成にあたっては家族のレビューを受けてセレクトしているが、それでも季節感に富んだ写真が毎月揃う訳ではなく、2~3枚は100%マッチしているとは言えないものが出て来る。来年に向けての反省点。楽しみにしてくれている人がいるので張り合いがある

2020/12/20
んねぞう

写真の写真を撮る-OmoidoriとiPhone SE 第2世代

プリントされた写真のスキャンにPFUのOmoidoriというキットを使っている。2017年に買って、そのあとiPhoneの機種変更(6s→8)に伴い、買い直した。今年の8月からiPhone SE(第2世代)への機種変更を考えていたが、そこでネックとなるのが、このOmoidoriの互換性だった。iPhone SE 第2世代が発売される直前にたまたまPFUからこのキットのサポート終了のアナウンスがあり、この時はすでにiPhone8とSE 第2世代の外形形状はカメラのレンズの位置まで同一であることは公知となっていたので、ダメもとでメーカに問い合わせてみたが、保障外とのこと

保障外でも、その可能性に賭けて機種変更して、今日動作確認して見た

結果はOKだった。同じ問題で逡巡している人がいたら参考にしてください

もちろんメーカは無保証だし、OSのアップデートでいつ動かなくなってもおかしくないので、当方は責任を負いません

以下はその記録

iPhone 8対応 PFU製Omoidori

iPhone SEをセットしてアプリ起動。OSはiOS14.2

動いた。

シャッターボタンを押して取り込んだ画像の表示

iPhoneの写真アプリでカメラロールを表示したところ。間違いなく取り込まれている

Omoidori一式。ケースと、手前の透明な板はカールした写真を押さえるためのカバー

先日写真集の写真を撮った時にもその難しさを痛感させられていたので、こんなに簡単に写真の写真を撮れることが、実はソフト・ハードが裏でいろいろなことをしてくれている(例えば顔認識、ホワイトバランス、2枚の写真を合成した際の照明の映り込み排除、さらに2L撮影時の画像合成)ということを改めて認識した

2020/11/22
んねぞう

携帯電話の機種変更にまつわる諸々

8月から携帯電話の機種変更を考えていて、ケースまで買ったのだが、本体を買う段階になって、新しく発表される機種で逡巡した挙句一周回って当初考えていた機種になったという話

今iPhone 8を使っていて、機能には何の不満もなく、唯一容量が64GBではどうしようもなくなっていたので、サイズや、デザインもカメラレンズの位置に至るまで同一でリーズナブルな価格のiPhone SE (第二世代) 256GBに狙いを定めて、ケースまで買っていた。しかし、iPhone 12 Miniという機種が発売されるという噂を小耳にはさみ、そして好きだった昔のiPhone 5のように角のあるデザインで、iPhone 8よりも小型になるとのこと。ここで心が大いにぐらついた

いろいろ調べた結果下記のようなことが分かった

  iPhone 12 Miniは
      〇 角のあるデザイン
      〇 第一世代のSEに次ぐ小ささ
      ✖ FaceIDしかなく、TouchIDはない
      ✖ 値段が高い
      ✖ 多分電話会社のプランも高くなるだろう
  iPhone SE (第2世代)は
      △ 従来通りの大きさ、デザイン
      △ これまで使ってきた写真スキャンのソフト、ハードの適合可能性
      △ 既にケース買っちまった
      〇 安い
  差し当たりどうでもよいこと
      5G対応
      Magsafeというギミックの搭載
      カメラ

Face IDというものは使ったことがないので、人の話を聞いて自分で判断するしかないのだが、新型コロナウイルスが蔓延している現在、マスクをしていると認識されないらしい。当然と言えば当然で、マスクをして認証できたら、他人のなりすましができやすくなってしまう。指紋認証でも時々手が荒れていたり濡れていたりすると認識されないことがあるのに比べても不便なようだ。認証した後も画面スワイプというステップが必要らしい。また、寝転がったときに自分の顔を認識してくれるのだろうか等未知のポイントがあった。これと、自分にとって必要のない5GとかMagsafeというもののために価格が高いことを割り切ることができるかどうかで1か月悩んだ

その結果、結局iPhone SEを選んだ

注文する数日前位から、従来同梱されていたACアダプタとイヤホンがなくなり、ケーブルはUSB Type Cに代わるという話が聞こえて来た。Appleの言い分によると、パッケージが小さくなり、出荷回数が減って45万台のトラック(によるCO2排出?)を削減することになるという。パッケージを小さくしてCO2を削減するのだったら、間違いなくケーブルを繋ぐより効率の悪いワイヤレス充電をなくしたほうが電力のロスがなくなりずっと良いのではないかと、私は思う。しかも価格は据え置きとのこと。なんだか割り切れない思いがする。

下はパッケージの比較

右がiPhone 8、左がiPhone SE (第2世代)。確かに厚さが半分近くになっている

左は蓋を開けたところ、右は本体を取り出したところ。ケーブルのみで、箱の下半分はほぼ空

調子づいて、私の持っていた歴代のiPhoneの箱を引っ張り出して見た

年代順にiPhone 5

まだ使っていないイヤホンが残っていた。3.5mmジャックのもの

次にiPhone 6s

本体がLightning に変わったのにも関わらず添付されているイヤホンは3.5mmジャックのままであるせいだろう、Lightning – 3.5mm変換ケーブルが同梱されている。私はイヤホンではなく、iPhobneに外付けスピーカーを繋ぐのに重宝している。しかしこれでも買うと1000円するんだぜ

iPhone 8

iPhone8からのイヤホンのプラスチックのケースが省かれている。なんとACアダプタが未使用で残っていた! Appleがユーザに対して携帯電話を買った後ACアダプタやケーブルをどうしているかアンケート調査を行ったという話があるが、その結果やはりだぶつき気味であり、同梱をやめると判断したらしい。私もその例に漏れず、だぶついていた。あまつさえ1つか2つはAndridを使っている家族にも上げているはずだ。だとしても、価格据え置きってどして?、と思う

さて、ここまでひとしきり御託を並べたところで、iPhone SE (第2世代)と8の比較画像

仕様上サイズとデザインは全く同じことはわかっているのでどっちがどっちかという説明は面倒なのでしない。移行はあっけないほど簡単に済み、Mobile Suicaの移行だけ少し時間がかかった。これまで使い慣れた機種と全く同じデザイン、操作性なので、それほどの感動はなく、淡々と使い続ければ良い。これもある意味良いことなのかも知れない

しかしこれまでiPhoneの箱を良く保管していたものだ。私はカメラについては、後日売却するかも知れないと思って箱を保管しているが、これまで一度しか売ったことがなく、使っているうちに傷がついたり、売っても値段がつかないだろうと思うようになっているので、場所の節約のために少しずつ処分しようかと思い始めている。iPhoneについては、売却に備えて取っているつもりはなく、箱の仕上げとか質感が非常に良いのでなんとなく取っている

何なら私がAppleに引きずり込まれるきっかけとなったiPod touchの箱も見せようか

2020/10/25
んねぞう