前回、定番の圧力センサ Bosch BMP280の補償計算をなんとかやっつけてMicroPythonで気圧と温度を測れるようになりました。今回は測った結果を、例によってMQTTに載せてNode-REDへ報告し、Dashboard上にグラフ表示してみます。まずは前回プログラムのモジュール化から。
ブロックを積みながら(45) Node-RED、Dashboard、formノード
前々回、Node-REDダッシュボードのTemplateノードを使ってみました。表示ができるだけでなくボタンを配置して入力にも使える優れものでした。今回は同じく入出力兼用のformノードを使ってみます。ユーザーとのインタフェースを作るにはバッチリ?なノードです。
鳥なき里のマイコン屋(146) ラズパイPico、C/C++SDK、マルチコアで割り込み1
折角2コア積んでいるラズパイPicoなのに、大分前にちょっと2コアで動かしただけでした。これでは宝の持ち腐れです。無理にでも2コア使う方針といたしました。ま、動かしてみないと身に染みないこともあるっと。今回は2コアで外部端子からの割り込みを受けてみました。早速のお間抜けあり。
ぐだぐだ低レベルプログラミング(38) RISC-V、mulとdiv、RV32M拡張その1
今回のRV32Mは拡張命令セットといいつつ、ほとんどの実装で採用されている筈のもの。整数掛け算と割り算であります。しかし命令が存在しても何サイクルで処理できるのかは実装依存です。まずはmulとdiv命令を使ってみて処理サイクル数を数えてみるところから始めました(前にもやったっけ?忘れているからいいか。)
手習ひデジタル信号処理(9) STM32F446、FIRフィルタその1、直接形
今回からいよいよデジタル信号処理らしい「手習ひ」に入れます。その最初はFIRフィルタです。まずは素直な「直接形」の実装でその威力をシミジミ味わえ、という感じでありましょう。アイキャッチ画像に振幅特性を示しましたが、いい感じじゃないでしょうか。こちらは書いてあるとおりにやっただけなのですが、ちょっと感動。
忘却の微分方程式(22) 対数関数、MathematicaとMaxima
前回は極座標でしたが、今回は対数関数、Logです。改めて使わせていただいてみると、Mathematica、Maximaともにクセがあり、似ているようで似ていない感じもチラホラと。まあ実用的に一番お世話になっているのは対数グラフくらいですかね。あんまり数学という感じでもない。
ブロックを積みながら(44) Node-RED、Dashboard、Chartノード
Node-REDのDashboardのノード群には、常々お世話になっているのでありますが、よくわからないまま「成り行き」で使ってしまっています。今回はグラフを描くときに使うchartノードについて、使い方を確かめて行きたいと思います。ついでにRandomノードについてもチャッカリとテスト。
MicroPython的午睡(51) ATOMLite、BMP280の補償計算大変なのね
前々回、温度と湿度を測ってNode-REDに報告しました。今回は気圧も測るべしということで、定番の圧力センサBosch BMP280をMicroPythonから制御してみることに。ただし読み取りは自前のコードで実施。簡単に圧力読めるものと思っていたら、補償の計算大変なのね。自分でやってみないと身にしみませぬ。
IoT何をいまさら(100) ATSAMD51、アナログコンパレータ AC を使ってみる
Microchip社 ATSAMD51は、ADコンバータ、DAコンバータだけでなくアナログコンパレータ(AC)も搭載しています。2つの電圧を比較して大きい、小さいを判断できる回路。各種設定はソフトウエアですが、完全ハードウエアのコンパレータ的動作も可能。ただし今回は諸般の事情あり、割り込み受けです。
鳥なき里のマイコン屋(145) ラズパイPico、C/C++SDKでDMAを使ってみる
今回はラズパイPicoのDMAC(Direct Memory Access Controller)を使ってみるために、前回の母艦PCのArduino環境から母艦ラズパイ4のC/C++SDK環境に戻ってまいりました。とりあえず最低線ということでソフトウエアトリガのメモリ間転送をやってみたのですが、ラズパイPicoのSDK楽です(別シリーズでやったDMAC実験に比べ。) “鳥なき里のマイコン屋(145) ラズパイPico、C/C++SDKでDMAを使ってみる” の続きを読む
ソフトな忘却力(10) RPi4、Pthreadの実験をOpenMPで書き換えてみた
前回は、Pthreadを用いた実験プログラムを最適化したものとしないもの、RPi3とRPi4でスレッド数を変えて走らせて比べました。今回はそのときのプログラムを「無理やり」OpenMP化してみました。スレッド数が同じなら、PthreadでもOpenMPでも似たような結果でないかい、と思いましたが、結果は微妙。こだわる人はコダワル? “ソフトな忘却力(10) RPi4、Pthreadの実験をOpenMPで書き換えてみた” の続きを読む
ぐだぐだ低レベルプログラミング(37) RISC-V、無条件JMPもRETも皆CALL
今回は、CISC風に言うと 無条件JMP、CALL、RETといった制御転送系の命令です。しかし例のごとくで、RISC-Vには CALL に相当する JALとJALRしかありません。「ジャル」一つでJMPもRETも皆やってしまう。清々しいというのはこういうものを言うような気がします。書き方は結構なんでもあり、なんだけれども。 “ぐだぐだ低レベルプログラミング(37) RISC-V、無条件JMPもRETも皆CALL” の続きを読む
手習いデジタル信号処理(8) STM32F446、巡回型移動平均3/3
前回から引き続きの「巡回型移動平均」今回の3回目で完了であります。目出度い、ようやく次回はFIRフィルタに進めます。しかし、3回目、見た目は前回とほとんど同じ画像ばかり。2回目と3回目、唯一の変化は、積分を浮動小数点で計算するか整数で計算するかの違いのみ。信号処理的には「大きな一歩」に思えますが、見た目は同じ。 “手習いデジタル信号処理(8) STM32F446、巡回型移動平均3/3” の続きを読む
忘却の微分方程式(21) 極座標表示、MathematicaとMaxima
Mathematicaのチュートリアルを読みながら、同じことをMathematicaとMaximaでやってみております今回は極座標であります。例によって「よきにはからって」くれるMathematicaに対し、ちゃんと指定しないと思ったように動いてくれないMaximaの性格?の違いが現れております。Maximaを深く分かっている人にはどうということないのでしょうが。