CircuitPythonでSORACOM LTE-M Button Plusのコード移植に挑戦!

以前書いたSORACOMさんの「ひげデバイス」ことSORACOM LTE-M Button PlusSeeed Studio XIAOArduino IDEを使用してコードを作成していたのですが、最近はC言語よりもPythonを使っていることのほうが増えてきていることもあるので、CircuitPythonを使用して同じコードができないかを確認してみたいと思います。

今回は以下のエントリーの内容を移植することにします。

uepon.hatenadiary.com

CircuitPythonとは

簡単に言うとAdafruitさんの組み込み向けのPython処理系となります。同じ位置づけのMicroPythonもありますがCircuitPythonMicroPythonのfolkです😅。

【(Wikipediaより参照)https://ja.wikipedia.org/wiki/CircuitPython

CircuitPythonはMicroPythonから派生した、教育および初心者向けのオープンソースプログラミング言語である。CircuitPythonは、Adafruit Industriesが開発を支援しており、Python3プログラミング言語C言語によるソフトウェア実装である。数種類の現行のマイクロコントローラに移植されている。

【CircuitPythonの公式ページ】

circuitpython.org

組み込み環境での使用となるため純粋なPythonといいにくい部分もありますが、文法やREPLなどでは似た環境なので、Pythonに詳しい方にとっては導入のハードルが低いですね。またREPLがあるので、USB接続したシリアル通信を使用してコマンドラインからテストが可能になっています。

対応ハードウエアは以下のページ参照

circuitpython.org

今回使用するのはSeeed Studio XIAO SAMD21となります。切手サイズのかわいいデバイスです。

Seeed Studio XIAO SAMD21www.switch-science.com

続きを読む

IBM watsonx.aiで未来の扉を開く: 初心者のための冒険ガイド

昨年の秋ごろから気になっていた```IBM watsonx.aiですが、ようやく時間ができたので、これまでの情報をもとにさわってみようかなと思います。 まずは事前に準備されたサンドボックスを使用して、どんな感じなのかを体験してみようと思います。

Qiitaにも記事はありますが半年ほど前の情報が多いので、その後の変化などを楽しめるといいのかなと感じています。

このエントリーの内容ではIBM Cloudの知識が少し必要な部分もありますが、そこまで詳しい知識がなくても体験ができるというレベルを目指したいと思います。また、このサンドボックスからプログラミングへの派生などに関してもヒントがあれば残してみようと思います。

参考にしたのは以下の情報となります。

【参考】

qiita.com

qiita.com

続きを読む

PEP668エラー回避のヒント:pipxの活用

最近のUbuntuRaspberryPiを使用しているとpipコマンドでライブラリのインストールをするときにPEP668のエラーが出てきます。 以下は最新のRaspberryPi OSであるDebian GNU/Linux 12 (bookworm)pipコマンドを使用してnumpyを インストールしてみた結果になります。

$ pip install numpy
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    For more information visit http://rptl.io/venv

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

エラーメッセージはaptコマンドを使用したインストールとpipコマンドでインストールがバッティングするのでvenvを使用してねというメッセージになります。最近のPythonのライブラリ関係はライブラリとしての使用はもちろんなのですが、エントリーポイントのような形で単体で動くコマンドのような役割を持ったものも多く存在しています。そのため、pipコマンドでのインストールでは仮想環境であるvenvを使用したほうが環境の混濁にならないのでいいですよ~という警告になります。もちろん、このあたりの回避方法はオプションスイッチの指定であったり、設定ファイルなどを使用すれば回避可能です。

【参考】

blog.jp.square-enix.com

ですが、その他の方法として、pipxという方法もあるようです。先程のpipコマンドを実行時には表示されていませんでしたが、以前は以下の表示がありました。pipxを使用するのが簡単ですよってことのようです。

 If you wish to install a non-Debian packaged Python application,
 it may be easiest to use pipx install xyz, which will manage a
 virtual environment for you. Make sure you have pipx installed.

【参考】

peps.python.org

自分はpipxの存在については初耳でもあったので、ちょっと調べてみました。

続きを読む

RaspberryPi5の”電源ボタン”について調査する🔍

自分の元にもRaspberryPi5がやってきました。今回は結構ラッキーなタイミングで告知を見ることができたので購入できました。ただ、到着まではなぜかかなり時間がかかってしまい、初期購入勢のブログをみてあーネタがなくなってしまうなあという感じでした。新製品のスタート直後の情報は生モノです。

ascii.jp

ひとしきりネタがなくなってきてはいますが、購入前から気になっていた電源ボタンについてどんな感じなのか調べてみました。

RaspberryPi5の電源ボタン

RaspberryPi5にはこれまでなかった電源ボタンがあります。

SDカードの近くににあります。以前から電源ボタンがあるといいのにと思うことがかなりあったので、これはいいんじゃない?と気になっていました。これまでは電源共有用のケーブル(ACアダプタ)に電源スイッチのついたものを使用していました。これはこれで便利なんですが、製品によっては電源不足になるようなケーブルもあるので過信はできない状況でもあります。

現在はこちらに落ち着いています。ケーブルの太さは細いですが、RaspberryPi4Bでも電源不足にはなっていません。

では、USB Type-Cコネクタ経由で電源ケーブルを接続すると…電源が入りました😯おや?普通にブートしてしまいます。「電源ボタンの意味とは?」という顔になってしまいました。

この動きはどうも想定どおりのようなので、その他はどういう挙動になるかを調べてみます。では、RaspberryPishutdownをしてみます。自分は最近はpoweroff派です。

$ sudo poweroff

通電したまま(赤いLEDが点灯したまま)shutdownが行われました。本体には電源が通電しています。ここで、電源ボタンを押すと…再起動しました。shutdown後に再起動するには電源ケーブルの抜き差しが必要だったので、これはちょっと便利かなってレベルでした。

続きを読む

煩雑なインストール不要!Pythonから簡単にOpenJTalk

ここ最近VOICEVOXを使用して音声合成を楽しんでいましたが、その中でよくOpenJTalkを使用すればもっと軽くリアルタイムにできるのに…ということも言っていました。以前は自分もOpenJTalkを使っていたのですが、インストールの手順が煩雑だったのでいまいち手が出ないというのが正直なところでした。

参考

uepon.hatenadiary.com

それも2016年のこと、現在ではどうなっているか改めて調べてみたところ、Pythonから簡単にOpenJTalkが使用できるラッパーであるpyopenjtalkがある事がわかりました。あまりにも簡単に導入ができるので、今後は導入はこれ1つで良いと思います。

github.com

続きを読む
/* -----codeの行番号----- */