jlcpcb(EasyEDA) から KiCAD 用フットプリントを出力(2024/06)

jlcpcb の EasyEDA から KiCAD 用のフットプリント出力ができなくなっていたので別の方法を模索。

python の easyeda2kicad で幸せになれる。

github.com

使い方ダイジェスト

docker-compose.yml

version: '3'

services:
  app:
    image: python:3.9
    tty: true
    stdin_open: true
    volumes:
      - ./source:/app

インストール

pip install easyeda2kicad

実行コマンド

easyeda2kicad --symbol --footprint --lcsc_id=C99999 --overwrite --output /app/test/hogehoge
  • symbol と footprint の作成を指定
  • LCSC の ID を指定
  • overwrite はおまじない
  • output で出力先を指定

出力された .pretty を kicad のライブラリに追加したら良い。

iOS の DNS 設定アプリ "DNSecure" で広告ブロック

概要

広告ブロックとして ADGuard Home を検討していたが導入がうまくいかず、ひとまず ADGuard DNS を利用してみることにした。iOS で容易に設定するため DNSecure というアプリを使用することに。

github.com

一番のメリットは Safari だけでなく他のアプリ内広告もブロックできること。

インストール、起動

すでに項目の順番を並び替えてしまっているが、上2つに来ているものがメインで使用する DNS だ。

  • Google Public DNS

    広告をブロックしたくない時に使用する。アプリで広告視聴することによって恩恵が得られる場合、こっちに切り替えてブロックしないようにする。

  • AdGuard DNS (Block Ads / Trackers)

    広告をブロックしたいときに使用する。こちらがメイン。だいぶ下の方にあるため項目移動を推奨。

設定手順

  1. AdGuard DNS を選択し、"Use This Server" を有効にする

  2. 一覧に戻る。画面下部が Inactive(非活性) となっている。iPhone 側の設定も変更する必要がある。

  3. iPhoneの設定から、"一般 > VPN とデバイス管理" を開く。DNSの項目を変更する。

  4. DNS を開き、DNSecure を選択する。

  5. DNSecure のアプリに戻ると、画面下部が Active(活性) になっているのが確認できる。

動作確認

自分が良く見るサイトやアプリなどを使って広告が表示されていないことを確認すると良い。 ※Safari だけでなくアプリの広告もブロックされる

その他補足

  • あえて広告を表示したい場合、 Google Public DNS の "Use This Server" をオンにすると良い。戻す場合は AdGuard DNS をオンにする。

    ※"Use This Server" をオフにしてしまうと "設定 > 一般 > VPN とデバイス管理 > DNS" の設定も元に戻ってしまう。これは面倒なので、2つのDNSを"オン"に切り替えるだけの方が良い。

  • このアプリを導入する際、既存の類似アプリ (AdBlock や 280blockerなど) はオフにして良い。"設定 > Safari > 機能拡張" あたりで設定できる。

  • iPad で DNSecure を起動したときは横向きにすると左側に一覧が出る。縦向きの場合は左端から内側にスワイプすると一覧が出たと思う。

まとめや余談

本来は Raspberry Pi に ADGuard Home を入れて広告ブロックを考えていた。dig コマンドで動くのは確認出来たが iOS などで設定してもうまくいかず。またルーターDNS 設定を変更できると良かったのだが、IPoE 接続のためか変更できないため諦めた。

そんな中、DNSecure の存在を知り試してみることにした。これはこれで良かったと思っている。

次は、Raspberry Piルーターとして稼働し、dnsmasq で DNS 設定してみようかなと思案中。うまくいけば wifi の向き先を変えることで家の中が対応できる。

Raspberry Pi Zero WH を使用した MH-Z19C のCO2濃度取得

目的

CO2 濃度を Windows 上に表示する。

環境

概要

  • CO2 センサー MH-Z19C を使って CO2 濃度を計測する。
  • データの取得は Raspi zero で一定時間ごとに行い、取得したデータは Google スプレッドシートに記録する。
  • Google スプレッドシートのデータをグラフ化し、デスクトップアプリのような形で表示する。

開発

Raspberry Pi Zero WH の シリアル通信(UART)を有効にする

# sudo raspi-config
->3 Interface Options」を選択
->「P5 Serial Port」を選択
->「Would you lik alogin shell to be accessible over serial?」には "No"
->「Would you like the serial port hardware to be enabled?」には "Yes"
-> 再起動

Python 関連のインストール

# python3 -m venv myenv
# source myenv/bin/activate
# pip3 install mh_z19
# pip3 install gspread
# pip3 install oauth2client

MH-Z19C の配線

Raspberry Pi Zero WH と MH-Z19C を配線する。( VCC, GND, TX, RX を配線)

CO2 濃度が取得可能か確認

# python3 -m mh_z19
{"co2": 482}

要管理者権限。シリアル通信が有効でないとここでエラーになるので注意。

キャリブレーション

念のため、外気が良く通る場所にしばらく放置してからキャリブレーション

# python -m mh_z19 --zero_point_calibration

Python

import sys
import datetime
import logging

# MH-Z19のCO2センサーを使用
import mh_z19

# GoogleSpreadSheetに書き込むためのインポート
import requests
import gspread
from oauth2client.service_account import ServiceAccountCredentials

logging.basicConfig(level=logging.ERROR)

# スプレッドシート
key_name = '{ jsonファイルを指定 }'
book_name = '{ Spreadsheet のファイル名 }'
sheet_name = '{ Spredsheet のシート名2 }'

# GoogleAPIを通してスプレッドシートに接続
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(key_name, scope)
gc = gspread.authorize(credentials)

# シートを取得
worksheet = gc.open(book_name).worksheet(sheet_name)

def writeSpreadsheet(timestamp, co2):
    # 書き込み
    # 2行目は表示書式、数式などを埋め込むためあえて3行目に追加する
    worksheet.insert_row([timestamp, co2], 3)

def main():
    global timestamp
    timestamp = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:00")

    CO2_conce = mh_z19.read_all()["co2"]
    writeSpreadsheet(timestamp, CO2_conce)

if __name__ == "__main__":
    main()

cron

0,15,30,45 * * * * /root/develop/co2/run.sh

実際の記録

参考

最後に

作ったものを寝室に仕掛けて計測してみたところ、最大でも 1000ppm 程度のため問題なさそうなのが確認できた。換気の弱い真冬や家族が一緒に寝るとまた変わってくるだろう。

pico w を使ったキーボード無線化の挑戦

先日アラサーBPさんが公開された pico w を使ったキーボード無線化に挑戦

twitter.com

qiita.com

購入したもの

販売コード 商品名 メモ
118021 Raspberry Pi Pico W ベーシックセット ピンも欲しかったのでベーシックセットを購入。不要な人は単体で買うと良い。
109833 006P安定化電源モジュールキット(5V出力) 降圧タイプ
103257 006Pアルカリ電池(積層電池) 9V ゴールデンパワー 5V以上のもの
100452 バッテリースナップ(電池スナップ・Bスナップ) 縦型 ソフトタイプ

他、picow(usb-micro-b) からキーボードに接続する USB ケーブルを用意しておくこと。私の場合は pico w ←→ usb-bオスusb-aメス ←→ usb-aオスusb-bオス ←→ キーボード で接続。

pico w のセットアップ

マスストレージにアラサーBPさんが公開しているファイル picow_ble_hid_keyboard.uf2 を入れるだけ。

github.com

作成物

全体像

アルカリ電池を 5V に降圧し、picow の VBUS,GND に接続。pico w の usb-micro-b はキーボードに接続。

Raspberry Pi Pico W

安定化電源モジュール

アルカリ電池

接続方法

安定化電源モジュールのスイッチを ON すると bluetooth がペアリングモードになるのでデバイスの追加を行う。以上。

バイスの追加

私的トラブル

私の環境ではデバイスの追加後、一度 OFF にして再度 ON にすると bluetooth の再接続を繰り返す現象が発生。PC に bluetooth が内蔵されていないため子機を繋げていたが、どうもその子機との相性が悪いらしい。別商品の子機に変えたら問題なく、また bluetooth 内臓のサブ機でも問題なかった。

自分でコンパイルする場合

アラサーBPさんの記事でも紹介されている Raspberry Pi Pico をセットアップしよう を参考にすると良い。「4.5. UART で「Hello World」テキストを表示する」までクリアできるとコンパイルから動作確認まで可能。

注意点として、Raspberry Pi 5 を使う場合は UART Port が変わっているので注意。 以下のどちらかで対応。

カレンダーからリマインダーに自動登録

iPhoneのおはなし

特定の日にやるべき作業をカレンダーに入れても忘れることがあるため、それをリマインダーに自動登録するショートカットを作成。

ショートカットの作成

  • カレンダーを以下の条件で検索

    • 開始日が今日
    • タイトルに「リマインド」を含む
  • ヒットしたカレンダー変数を繰り返しリマインダーに追加

オートメーションの設定

毎日 0:00 に実行するよう設定

カレンダーに予定の追加

タイトルに「リマインド」を入れる。

リマインダーに自動追加される