Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

新幹線Free WiFiが証明書エラー云々で再接続しないときは諦めてスタートページにいく

新幹線Free WiFiが証明書エラー云々で再接続しないときは、無駄な抵抗はやめてスタートページに行きましょうという話です。

最近はhttps化も進んでおり、証明書エラーを起こさないページのほうが少ないくらい。

ここで昔ながらのページ経由でトップページを出す努力をしても無駄なので素直に飛ばされたページをお気に入りに登録しときましょう。
東海道新幹線なら、以下のページ。
http://www.wifi-cloud.jp/jr_c_shinkansen/ja/01/index.html

飛行機内WiFiや飲食店でも勝手は同じかと思われます。

【読書メモ】宙に参る(1)

ウェブ連載が好きだったので
電子版も購入。

のっけから遠隔焼香用ロボットなんてファンキーなのが出てきたり
長距離宇宙船のお手伝いロボットのリースビジネスモデルの話だったりと
あー……なんかそういう未来ありそう感が最高にエモです。

【読書メモ】はじめての治具設計

はじめての治具設計

はじめての治具設計

  • 作者:西村 仁
  • 発売日: 2020/01/07
  • メディア: 単行本
ロボットモノを作るとき、
それと連動した装置のデザインは結構頭を使うとこです。

この本はそう言った周辺装置のうち、
治具と呼ばれる部分のアイディアや考え方を紹介してくれます。

教科書的な本だと数式が多すぎて、分野外から入った私みたいなのには難しかったりしますが
本書は図面も多く、解説も丁寧で読みやすいです。
……あとは、実践あるのみってところですね。

ロボットアームxARM体験会に行ってきました

江東区のTechShare社で行なわれた、
ロボットアームxARMの体験会に行ってきました。
DobotやOMXと比べて大型、
ユニバーサルロボティクスのアレくらいのサイズ感です。
xArmとは | Physical Computing FAQ& Tutorial

python用TKインターフェイスtkinter その4:グリッドレイアウト

実際のところ

import tkinter as tk
from tkinter import messagebox

class Application(tk.Frame):
    # 初期化
    def __init__(self, master=None):
        super().__init__(master)
        self.grid(sticky="nsew")  # self.pack() を self.grid() に変更
        self.create_widgets()

    # 画面の作成
    def create_widgets(self):
        # ラベルウィジェット
        self.label = tk.Label(self, text="This is a label")
        self.label.grid(row=0, column=0, sticky="nsew")
        
        # ボタンウィジェット
        self.hi_there = tk.Button(self)
        self.hi_there["text"] = "Hello World\n(click me)"
        self.hi_there["command"] = self.say_hi
        self.hi_there.grid(row=0, column=1, sticky="nsew")

        # ラジオボタンウィジェット
        self.fruit = tk.StringVar()  # ラジオボタンの選択結果を保存する変数
        # ラジオボタンを同じ列に配置
        self.apple_radio = tk.Radiobutton(self, text="Apple", variable=self.fruit, value="Apple")
        self.apple_radio.grid(row=0, column=2, sticky="nsew") 
        self.orange_radio = tk.Radiobutton(self, text="Orange", variable=self.fruit, value="Orange")
        self.orange_radio.grid(row=1, column=2, sticky="nsew")
        self.banana_radio = tk.Radiobutton(self, text="Banana", variable=self.fruit, value="Banana")
        self.banana_radio.grid(row=2, column=2, sticky="nsew")

        # スケールウィジェット
        self.scale = tk.Scale(self, orient="horizontal")  # 横方向にスライド
        self.scale.grid(row=0, column=3, sticky="nsew")

        # 終了ボタンウィジェット
        self.quit = tk.Button(self, text="QUIT", fg="red", command=self.quit_message)
        self.quit.grid(row=0, column=4, sticky="nsew")

    # ボタンを押したときのアクション
    def say_hi(self):
        print("Hi there, everyone!")
        print(f"Your fruit choice: {self.fruit.get()}")  # ラジオボタンの選択結果を表示
        print(f"Scale value: {self.scale.get()}")  # スケールの値を表示

    # 終了ボタンを押したときのアクション
    def quit_message(self):
        if messagebox.askokcancel("Quit", "Do you really wish to quit?"):
            root.destroy()

root = tk.Tk()
root.grid_columnconfigure((0, 1, 2, 3, 4), weight=1)  # 各列に均等にスペースを割り当て
root.grid_rowconfigure((0, 1, 2), weight=1)  # 各行に均等にスペースを割り当て
app = Application(master=root)
app.mainloop()  # ここでレンダリング

動かすと、こんな感じ

京セラのGPSマルチユニットを使ってみる

京セラのGPSマルチユニットを使ってみるという話。

いわゆる「みちびき」の電波を使えるので
高精度に測定可能。
各種設定はusbコネクタ越しのシリアルで、ATコマンドで実行。
Webサーバ的使い方やリアルタイム通知は出来ないものの、
総合的使い勝手は良さげ。

https://www.kyocera.co.jp/prdct/telecom/office/iot/products/gps_multiunit.html

同様のユニットで、ソフト面で拡張されているSORACOM社の同等品もあります。

https://soracom.jp/products/kit/gps_multiunit/

RasPi4が執筆時のAPT経由ではいるWiringPiでは認識しないので手動で最新版いれる

RasPi4が執筆時のAPT経由ではいるWiringPiでは認識しないので手動で最新版いれる

$ gpio readall
Oops - unable to determine board type... model: 17

$ sudo apt upgrade wiringpi
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
wiringpi はすでに最新バージョン (2.50) です。
アップグレードパッケージを検出しています... 完了
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

え、最新!? 最新なんで!?

ためしにバージョン確認

$ gpio -v
gpio version: 2.50
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Unknown17, Revision: 02, Memory: 0MB, Maker: Sony
  * Device tree is enabled.
  *--> Raspberry Pi 4 Model B Rev 1.2
  * This Raspberry Pi supports user-level GPIO access.

導入

$ cd /tmp/
$ wget https://project-downloads.drogon.net/wiringpi-latest.
deb
--2020-03-10 10:16:05--  https://project-downloads.drogon.net/wiringpi-latest.deb
project-downloads.drogon.net (project-downloads.drogon.net) をDNSに問いあわせて います... 188.246.205.22, 2a03:9800:10:7b::2
project-downloads.drogon.net (project-downloads.drogon.net)|188.246.205.22|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 52260 (51K) [application/x-debian-package]
`wiringpi-latest.deb' に保存中

wiringpi-latest.deb 100%[===================>]  51.04K  95.1KB/s 時間 0.5s

2020-03-10 10:16:07 (95.1 KB/s) - `wiringpi-latest.deb' へ保存完了 [52260/52260]

で、dpkgで直接ぶち込み。

$ sudo dpkg -i wiringpi-latest.deb
(データベースを読み込んでいます ... 現在 107885 個のファイルとディレクトリがインストールされています。)
wiringpi-latest.deb を展開する準備をしています ...
wiringpi (2.52) で (2.50 に) 上書き展開しています ...
wiringpi (2.52) を設定しています ...
man-db (2.8.5-2) のトリガを処理しています ...

なにがある訳でもないでしょうが、一応入れたパッケージは消しときます。

$ rm wiringpi-latest.deb

コマンドを確認すると