h_nari @ 熊本市のブログ。電子工作、プログラミング、ゲーム、TV、 政治、インターネットなどに日々の思い付きを、 うだうだ~と書いていきたい。
このブログにはコメント欄を設けておりません。 記事への御意見、ご質問はtwitter @h_nari宛に お願い致します。


アーカイブ

メタ情報
RSS
Login

タグ:『プログラミング』の付いた記事

XIAOMI湿度計その後

フィラメント・ケースの湿度を監視している XIAOMIの湿度計だがトラブルが発生した。 Linuxサーバーが遅くなる。 調べると bluepy-helperというプロセスが 幾つか全速で走っている。 どうも pythonのbluepyを使用しているプログラムで Peripheralとのconnectionを切断した時に 時々bluepy-helperのプロセスが走りっぱなしに なるようだ。

LYWSD03MMC.pyには bluepy-helperをkillする処理が何箇所か入っているが それでも充分では無いようだ。

XIAOMI 湿度計到着

AliExpressに注文していた XIAOMIの湿度計がやっと届いた。 8月16日に注文していたので5.5週ぐらいで 届いたことになる。 価格は4個で1,229円。1個あたり306円と激安。

コンパクトで可愛いデザイン。 電池の絶縁テープを抜くと すぐに温度と湿度が表示された。 裏蓋を外し内部を確認。 電池はCR2032。 MOYASHI氏のフィラメントケースの ホルダーにバッチリはまって気持ちが良い。

Arduino で XIAOプログラミング

HDDサンダーで 回転数をXIAOで読み取るまでできた。 その際に取得できた ArduinoでXIAOのプログラム、 ライブラリでは解決できず、 自分でチップのレジスタを操作するような プログラムを書くために 必要な知識をいくつか紹介する。


「ESP8266のntpの設定は1行で」更新

「ESP8266のntpの設定は1行で」 というのは 3年前にQiitaに投稿した記事なのだが、 地味にLGTM(Look Good to Me,旧like)を 貰い続けている記事の1つ。

その記事に引数の値がおかしい、と コメントがついた。 サンプルプログラム通りだと 時間が18時間遅れるらしい。

調べると esp8266/arduinoの versionのせいらしい。 2.6.3までは正常に動くが 2.7.0以降はおかしくなる。 configTime()関数の 第1引数の符号の解釈が 逆になってしまったらしい。

USB-I2C基板 (ソフトウェア編)

USB-I2C基板はpythonから使いたい。 pythonでI2C経由で機器を操作する プログラムを作りたい。 MCP2221 Pythonで検索すると いろいろ情報が見つかる。


LED版RssDispも更新

昨日更新した OLED版のRSS表示プログラムの調子は良いが、 LED版の方は調子が悪い。 調子が悪くて、しばらく消していたのだが、 RSS表示はともかく、時計が見易く慣れてしまっていたので LED表示も復活させたい。 というわけでLED版も更新することにした。 ソースを調べるとLED版はOLED版のソースを流用したものだったので、 変更箇所が同じで、簡単に更新できた。

RssDispを更新

OLEDの寿命で取り上げた RSSを表示するプログラム: RssDispの表示が 調子悪くなってしまった。 原因の1つは、httpでRSSを提供するサイトが減ってしまったことで、 もう一つは Make:の RSSの反応が遅くなってしまったことらしい。 リクエストを出して10秒ぐらい返事が帰ってこない。

OLEDに表示されたRSSを真剣に読んでいるわけではないが、 正常に表示されないと気持ち悪いので プログラムを修正することにした。

2GTプーリー形状のベジェ曲線化

タイミングベルト2GT用のプーリーを3Dプリンタで 出力できるようになったが、 頂点多すぎる問題が気になって 他の作業が進まない。 仕方が無いので、 プーリー形状のベジェ曲線化に取り組むことにする。

点列をベジェ曲線に変換する方法を ネットで検索するが、簡単には見つからない。 TensorFlowを使う方法 最小二乗法を使う方法 (媒介変数tの値が解れば最小2乗法で解けるらしい) などに翻弄されつつ、 stack overflow 経由で 1990年に出版された本 Graphic Gems のプログラム FitCurves.c に辿り着く。 ソースも github で公開されている。 コンパイルすると、ちゃんと動いた。

タイミング・ベルト用プーリーの製作

前回シンクロベルトを購入したと書いたが、 タイミング・ベルトというのが正しいのだろうか? ミスミの分類ではタイミングペルトで、 シンクロベルトはバンドー化学の商品名か?という気もする。 今後はタイミングペルトと書くことにする。

タイミングペルトがあれば、ギアというか歯付きプーリーも必要になる。 とりあえず手持ちで20歯のものが4個あるが、3Dプリンタで自由に作れると大変嬉しい。

srcPrint

テキストファイルをpdfに変換するプログラムを 作成した。名前はsrcPrint。プログラムのソースファイルを 印刷する時に使うやつ。 昔あった a2psみたいなやつ。 GitHubで公開中

プログラムをしていると、時々欲しくなる。 a2psやa2pdfなどや フリーソフトを探してみたりして、 なんとかしてきたが、 今回 electron と typescript の練習を兼ねて、 作ってみた。

electronを使っているので、テキストファイルは htmlに変換され、 cssでフォーマットを指定、 electronの機能でpdfに変換される。

現状、最低限の機能のみだが、 自分用としては、十分使える。 気が向いたら、機能拡張したい。

Doxygen再び

今、マイコンで動くテキスト・エディタを作っている。 まだ、Linux上で開発している段階だが、 ある程度できたので、 ここらでプログラムの整理をすることにする。

関数をグループごとに整理し、必要ならば名前も付け替えたい。 ここで Doxygenを使ってみたら便利だった。

まず、ファイルごとに関数の一覧を出してくれる。 これだけで便利だ。


次に、Doxygenの生成するhtmlを見ていると、 これを、もっと良いものにしてやろうという気持ちが起こる。 しかし、無駄に説明を追加しがちにもなるので、注意も必要だ。

あと、 graphvizも使うと、関数の呼び出し関係図を表示してくれて 興味深い。

Raspberry Pi用OLED ライブラリを作った

最終的に作ったライブラリは こちら

ラズパイ・ファン基板で OLEDを取り付け易くしたのだけれど、 i2c接続なので表示速度はどうなのだろうというのが気になっていた。

というのは、i2cは転送速度が速くない。 ラズパイのデフォルトでは100kbps。 OLEDは 128x64 dot なので、128x64 = 8kbit。 これを100kbpsで転送すると、転送時間は 8kbit ÷ 100kbps = 0.08sec 連続表示させると 毎秒 1 ÷ 0.08 = 12.5 フレーム表示できることになる。 スムーズな動画表示には少し遅い。転送以外の処理の時間も必要。

実際のところはどうなのだろうと測ってみることにした。

VS Codeでstm32のプログラミング

windows上のemacsでIMEを上手くコントロールできないため、 VisualStudio Code(以下VS Codeと記す)の環境整備を頑張った所、 かなり使えるようになってきた。 これで移行できるかもしれない。

Electronの本 読了

Electronの本を読了した。

掲載されているコードを律儀に入力し、 動作させながら読んでいったので、 時間はかかったが、 ある程度、知識が身についた気がする。

コードを本の通りに入力しても、 1文字でも間違えれば、動作しない。 コンソールを開ければ、例外のログとかが見れて、 大体理由がわかるのだが、 devToolを開けるのも 大変な場面が多々あり、なかなか大変だった。

あと main process側のメッセージは devToolのコンソールには 表示されないのかな? この辺の話は、まだ十分理解できていない。 こういうデバッグの話も詳しく説明してくれると、 もっといい本になるのではないかと思う。

今後は、独自プログラムの開発を行いつつ、 いろんなライブラリを試し、 Electronの技術を身に着けて行きたい。

Electronの本

Electronを覚えたいと、 正月にも書いているのだが、 一向に使えるようにならない。

ネットでElectron入門的な記事を探し、 試しているのだが、周辺の知識が 足りなすぎて、勉強が進まない。

本でも買うかとAmazonで検索すると、 Electronとタイトルにある本は2冊しかない。

1冊は あなたにとってElectronを学ぶ価値があるかどうか、この本を読んで判断してみてくださいで、kindle本。 41ページで99円。

とりあえず、これを読んでみて 2冊めのElectronではじめるアプリ開発 ~JavaScript/HTML/CSSでデスクトップアプリを作ろうのレビューを見ると、 入門書ではなさそう。なんか良さそうに思えたので中古を購入。

で、届いて読んでいるのだが、結構良さそうだ。 この本に従って、アプリ開発を試してみよう。

電光掲示板プログラムを公開

HSES-LMC1の秋月電子での発売に合わせて、 電光掲示板プログラムを GitHubで公開した。

これは、HSES-LMC1を一般(?)の電光掲示板として動作 させるためのプログラム。

表示内容をSDカードに記憶し、読み出しながら表示する。 Web経由で表示内容の編集ができる。 (使用可能なブラウザは chrome のみ)

esp8266/Arduinoを 2.3.0に戻す

以前いじっていた esp8266/Arduinoのプログラムを make ota で書き込もうとするがエラーになる。 ArduinoOTAのexampleの BasicOTA で試すと書き込めるので、サイズの問題か? OTAが使えないと、とてもプログラムを開発する気にならない。 困った。

2.3.0のころは書けていたので、2.4.1から戻してみることにする。 ボードマネージャで戻す方法はよくわからなかったので、 git で esp8266/Arduinoをインストールし直す。 ちなみにgit clone では -b オプションで バージョン(tag)を 指定できる。

Arduino-IDEからは、すぐに使用できるようになったが makefileからだとエラーになる。 いろいろ調べた結果、git でインストールした際、 テキストファイルの改行コードが変換されていたことが 原因だと判明。 boards.txt platform.txtの改行が CRLFになってしまうと、 makefileでの処理中にCRコードが残り、 エラーになってしまうようだ。

これで makefileから OTAで書き込めるようになった。 2.4.1でうまくいかない理由は調べていない。 ArduinoOTAについても、いつか、調べないとなぁ。

Raspberry Piで動画をLEDに音付きで再生

hzeller/rpi-rgb-led-matrix付属の 動画再生プログラム video-viewerを改造し、 動画ファイルを音つきで再生できるようになった。 前にも書いたが フレームの遅れが蓄積されない ように改造した。 変更点は、pull-requestを投げたいが、 まだ、ちょっと汚いのが悩みどころ。

音の再生は別プログラム(aplay)で 行っている。これも将来的には組込みたい。

Raspberry Pi Zero WH 動作テスト

miniHDMI変換アダプタとUSB-microB OTGケーブル が届いたので、 Raspberry Pi Zero WHを動作させてみる。

Zeroは基板は極小だが、ケーブルを刺すと そうでもなくなる。 ケーブルを ケーブル・オーガナイザで固定してやると良い感じである。

Raspbianをダウンロード、 microSDカードに書込み 立ち上げたら、特に問題もなく起動。 キーボード、WiFiの設定を行い、 普通に使えるようになった。

その後、 hzeller/rpi-rgb-led-matrixをインストールし、 LEDマトリックスモジュールへの表示を試す。

表示はできるが、負荷が重い感じ。 動画の再生を行うと、はっきりと遅い。 やはり コア4個のRasberry Pi 3と比べると、 コア1個のZeroだと、余裕が無い感じだ。 表示も、多少、ちらつきが感じられる。

ESP32_bt_speaker 更新

ESP32をBluetoothスピーカーにするプログラム ESP32_bt_speakerを更新した。

作成後、esp-idfが、かなり更新されたので、 いろいろと問題があるだろうなとは思っていたのだが、 手を付けずにいたのだが、 githubにissueついたので、 対応することにした。