スキップしてメイン コンテンツに移動

投稿

ラベル(Arduino)が付いた投稿を表示しています

UNO R4 Minimaの仕様を眺める

CANバス内蔵Classicボードたち。 しかし割高になってしまった… Uno R4 Minimaを入手したので遊びつつ、どのような実装になっているのか、仕様を眺めてみた。 UNOは現在のArduino製品の中ではClassic Familyというカテゴリに入っており、歴史的なフォームファクタを継承している。ルネサス製MCUの採用で話題だけれど、5V単電源動作可能なARMマイコンとしては高機能だ。 要点としては、初学者向けのClassicファミリにCortex-M4が降りてきて、内蔵RTC、DAC出力、CANバスといった機能にもAPIレベルで対応しているという点になる。  スペックだけ見ると、反射的に3.3Vで動いてほしいとかいろいろ要望が湧いてくるが、ターゲットはあくまで初心者なのを忘れないようにする。 (いい感じの互換ボードに期待) ボードとピンマップを眺める 公式サイトのボード紹介ページでは、回路図と基板図をAltium365ビューワーで見ることができるようになっていた。回路図で抵抗を選択すると詳細が表示されるし、基板図上の実装と連携して位置をハイライトできたりする。 Minimaの実際の基板には16MHzの水晶は空きパターンとなっている。内蔵オシレーターで動いているようだ。 Minima 回路図 https://docs.arduino.cc/resources/schematics/ABX00080-schematics.pdf Wifi R4回路図 https://docs.arduino.cc/resources/schematics/ABX00087-schematics.pdf MinimaとWifi R4ではソケットに引き出されたSPIバスのマッピングが異なっている。これに伴いCANで使うピンも位置が変わっている。APIが用意されてるのにピンマップ表で表記していないのはボード依存のためかもしれない。 CANを使いたければシールド設計で対処するしかなさそう。  他にも、Minimaのソケットの3.3V出力は、Minimaのデータシートに書いてある通りMCUの内部電圧を生成しているLDOの出力を引き出している。そこまでやるのかというくらい割り切っている。  内部レギュレータから引き出せる電流量はArduinoとしては表向き載っていないけれど、ルネサス...

新春マクロ撮影テスト

2022年に投稿するのをすっかり忘れていたら2023年になっていた。ということで今年もよろしくおねがいします。 主題としては、手元のマクロ撮影機材を比較する話。デジタル一眼レフとしてK-70を導入して数年になるが、最近ようやく標準ズームレンズ以外のレンズとしてHD PENTAX DA のマクロレンズ 35mmF2.8 Macro Limitedを入手。   マクロ撮影の領域については、Olympus TG-5でほぼ網羅されている。ほぼというのは、手軽さを追求した結果であり、一眼で真面目にマクロ撮影をしてこなかったという背景がある。一眼のキットレンズでも数十センチ離せば基板写真は撮れるので、画質の必要な用途でも棲み分けができていた。   iPhone13proもマクロ撮影が可能だが、こちらは普段あまり使っていないので比較に加えた。 テスト撮影の被写体として、Arduino Dueを使う。適度に大きく、背の高い部品が生えていて、シルク印刷のエッジが出ているので比較には持ってこいだ。 (市場では物凄い値段になってしまっているけれど) 基板全体を撮影する HD DA Macroは端までピントを出すためF8くらいまで絞った。TG-5も画角50mm相当で撮影する。iPhone13proは標準アプリとサードパーティアプリで撮影した。 HD DA Macro 35mm 50mm相当 TG-5 50mm相当  iPhone13pro 26mm (Procamを使用) iPhone13 pro 13mmクロップ状態(標準アプリ 26mm相当)  APS-CサイズだとRAW画像の素性が良いので処理しやすい。ファインダーを覗けばピントも追いこめる。 TG-5は大抵AFで撮影しているが、実はピントが出ていない眠い画像になることが多かった。大画面で見るまで気づくのが遅れやすい。明るければいい写真が取れるし、RAW処理でノイズは目立たないレベルに持っていくことができる。  iPhone13 proはお任せで撮ると、被写体が近ければ超広角13mm 遠ければ広角26mmを使う。Dueの基板全体を写そうとフレーミングを行うと、標準アプリ上では倍率1倍表示でも、13mmカメラをクロップして撮影しており、26mmカメラの画像と比較すると塗りのキツい絵作りになっている。  高画質化のためにセンササイズ拡大を...

新AVRの内蔵温度センサを試す

 AVRにはADCの内部入力として温度センサが搭載されているものがある。シリコンダイオード方式ゆえに製造工程で特性がばらつくため、個体毎に面倒な校正作業が必要となっていた。 http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf  新しいmegaAVR-0やTinyAVR-1、AVR-DAはXMEGAの系譜なので、内蔵温度センサの校正係数があらかじめSignature ROW領域に記述されている。これを読みだしてキャリブレーションを行う手順がデータシートに記述されていたので試してみた。  Arduino Nano Everyで試せるサンプルスケッチ。    https://github.com/kentN/samplecodes/tree/main/Arduino/NANOEVERY-TEMPSENSE IDE付属のシリアルプロッタでモニタしてみると温度グラフが現れる。ホットエアでダイ温度が100℃になるほど炙ってしまったが、そのまま動作しつづけていた。 手元にあった二つのArduino Nano Everyはそれぞれ校正値を読み出すと次のようになっていた。 DEBUG: 305k, offset :-31 gain :142 DEBUG: 305k, offset :-6 gain :144  実機で比較テスト tinyPDUテスト基板  実際に温度を調節して試験してみよう。比較対象として、tinyPDUに接続してあるパルス温度センサLMT01の一つ(CH2)をQFNパッケージに張り付けた。  LMT01は高精度ADC内蔵、2端子カレントループ、温度データを約100ms毎にパルス数で出力するという面白いセンサ。-20度~90℃範囲で±0.5℃の測定精度とあるので、用途的には十分すぎる。(ただし割り込み管理が甘いとパルスカウントの取りこぼしで正確な温度を示さないことがある) テストプログラム。CH1、CH2はLMT01。CH2はMCUに張り付けている。  緑色...

Arduino CLIの導入

Arduinoのコマンドライン環境 arduino-cli を触ってみる。 屋外設置のRaspberry pi3A+ に導入し、接続した独自ボードに書き込みができる環境を構築してみた。 結論から言うと、一度コンフィグが済んでしまえば、コンパイル、アップロードはとても快適。  手順を調べた時の環境 (2020年4月) 実行環境 :  Raspberrypi 3A+ , Raspberry pi 3B, RaspberryPi4B(4GB) OSはRaspbian Burster(v7)で共通 バイナリ: arduino-cli_0.10.0_Linux-ARMv7.tar.gz SSHターミナル:MovaXterm (Windows10) ボード: Arduino Uno,  Arduino互換機 (Sanguinoベース) 最初の工程は大まかに4つ (2020年5月現在) 1 最新バイナリを任意のディレクトリに設置。バイナリはPathを通しておく         入手先  https://arduino.github.io/arduino-cli/installation/         RaspianだとLinux ARM 32bitでよいはず(そのうち64bitバージョンになりそう) 2 初期設定        作業フォルダの設置         Configファイルの初期化(ホームディレクトリに.arduino15が生成される)                  $arduino-cli config init     3 ボード関連のインストール         ボードインデックスの初期化   ...

スケーラブル植木鉢

 日々の開発の途中、息抜きで多肉植物のための自動照明植木鉢を作っている。単体で卓上栽培できる全自動化が目標だ。 動機  多肉植物は、季節によって必要な日照量がかなり変化する。 また日本の多湿な気候ではかなりデリケートなものが多い。日照が少なければ徒長してしまうし、水の量を間違えても腐ってしまう。  水はスケジュールに従い、むしろ水やりしすぎないようにすればいいけれど、日照管理は窓辺など場所が限られてしまう。 そもそも観賞したいのに、窓辺に遠ざけるのも悲しい。  単純にLED灯で栽培する例はいろいろあって、多肉専用のおしゃれなLED照明(USB 5V給電)なども売っている。フレキシブルなLED灯を改造し、栽培灯の自作もしたけれど、手動で点灯管理する必要があり、一鉢しか育てられないため、株個体が増えてきた場合にその都度5V電源が必要になってしまう。 電源の問題はレイアウトの自由度に直結する。 システムのスケール問題を解決するには、初めから対応した設計が必要だ。 まずは、一株程度を植えられる容器を3Dプリンタで出力。個々のパーツをジュラコンスペーサで積み上げる方式。 コントローラは試作したAdafruit ItsyBitsy専用拡張基板を流用。単体で栽培時の環境モニタやリソース管理のために必要な拡張に対応している。 もともとデイジーチェーン方式のバス式接続規格の研究用にこしらえたので、この基板も多数の同規格の基板を連結することができる。システムとしては一つの通信バスでシーケンスを可視化し、異常なボードは電気的に切り離し、プログラムバスで一か所の接続点から全基板を書き換えできる。  ItsyBitsyボードにはもともとNeopixel駆動専用のポートが用意されていて、DMAで点灯制御ができる。 ただし、今回は複雑なパターンを点滅させるわけではない。色温度調節、輝度調整、点灯、消灯制御がメインだ。  スイッチも要らず、コントローラ一つでポットの数だけ照明をデイジーチェーンすることができる。スケーラブルなポットとして必要な要素だ。  サンプルを実行した結果ゲーミングPCのように虹色に輝く多肉植物というサイケデリックなものが...

Arduino Nano Everyを試す

 秋月で売っていたAtmega8と、感光基板でエッチングしたArduino互換ボードを製作してみて、次に本家ボードも買って…  と気が付いたら10年が経過していた。  ハードウェア的な観点では、今は32bitMCUの低価格化、高性能化、低消費電力化が著しい。動作周波数も100MHz超えが当たり前で、30mA程度しか消費しない。  動作電圧範囲が広く、単純な8ビットMCUが不要になることはまだないだろうけど、クラシックなAVRマイコンは値上がりしており、価格競争力は無くなりつつある。 そしてコモディティ化により、公式ボードでは不可能な値付けの安価な互換ボードがたいていの需要を満たすようになってしまった。     Arduino Nano Every https://store.arduino.cc/usa/nano-every https://www.arduino.cc/en/Guide/NANOEvery  そんな中、Arduino本家がリリースした新しいNanoボードの一つ。  他のボード2種はATSAMD21(Cortex-M0+)と無線モジュールを搭載したArduino zero(生産終了済み)ベースのIoT向けボードだが、 Nano EveryはWifi Rev2と同じくAtmega4809を採用していて、安価で5V単電源な8ビットAVRボードだ。  Atmega4809はATmegaと名がついているが、アーキテクチャはXMEGAベースとなり、クラシックAVRとの間にレジスタレベルの互換性は無い。   https://blog.kemushicomputer.com/2018/08/megaavr0.html  もちろん、ArduinoとしてはArduinoAPIのみで記述されたスケッチやライブラリは普通に動作するし、Nano Every用のボードオプションとして、I/Oレジスタ操作についてはAPIでエミュレーションするコンパイルオプション(328Pモード)がある。 公式のMegaAVR0ボードはどれもブートローダーを使わず、オンボードデバッガで直接書き込みを行っている。  ボードを観察...

CAL.4809の開発(2) ケース試作

CAL.4809のためのケースを設計してみた記録。  21世紀のかまど。 マインクラフト感がある。 思考する速度で試作したい  3Dプリンタを導入した。 個人的に初めて3Dプリンタ造形物のデータを作って、出力してもらったのが2012年頃だったので、すでに6年もの歳月が経っている・・・。 自己所有する機運が高まるのにだいぶかかった。 どうもハイプ・サイクル的な波が落ち着いた頃に導入する傾向がある。  いろいろ検討してみた結果、今年出た新型、Flashforge Adventurer3に決めた。 完成品で箱なので、机の下に設置しても大丈夫なのが決め手。  動作音は静かなインクジェットプリンタと炊飯中の炊飯器のファン音を足して二で割った感じ。 静音を謳うだけあってほとんど気にならない。  Z軸キャリブレーションだけで快調に動いている。  高速試作環境のために導入したわけなので、Fusion360に慣れる目的でCAL.4809の外装を試作してみた。 3Dモデリングも久しぶりだが、割と覚えていた。  基板部分のデータはKiCadからエクスポートしたSTEPファイルを取り込んだ。 その外側にケースを作成する。 外装は基板外形を1mm拡張して、壁の厚みを0.8mmとした。  前後はNATOベルトを通すための隙間を設けている。  側面はボタン、IrDAポートのための加工を行った。 ボタン部は素材の弾性を使う。 ケース自体は装着を考え、下部の時計用ベース基板に固定するための爪を側面に設ける。  上のCAD図は既に5回くらいのバージョンアップの後のもので、最初はボタン部などの造形をせず、外形だけでプリントして検証し、徐々に細部の造形に移っていった。 単純な造形なら30分ほどで出力できる。 彫り込みというか刈り込みというか、とにかく手元にプリンタが無いと試行錯誤ができない。 途中から出力方向をひっくり返した。 ほぼサポート材 モデリングの過程で出力して確認するサイクルを経て、最終的に一番精密なモードで1時間半かけて出力した。 ラフトを剥がすのに便利な 時計のコジアケ。 買ったけど時計を全然こじ開けてない...

CAL.4809の開発(1)

 2018年の新作。ATmega4809を使った試作ということで、CAL.430FR(2015年)の後継機を製造した。   CAL.430FR https://blog.kemushicomputer.com/2015/03/cal430fr1.html  今回はケースの作成にも挑戦してみたので、3Dプリンタでの製造は別の記事にまとめる。  430FRはKiCadの練習で作ったけれど、それ以来3年間で設計、製造、実装した基板は結構な数になった。  今年は大きなプロジェクトも一段落したので、自分の趣味プロジェクトも原点回帰してみることにした。 3年半前の基板(左)と今回の基板(右) シルクに印字したQRコード。思ったよりコントラスト不足で認識率が良くない 黒基板とかだとアリかも  36mm角の基板サイズ、コネクタ位置等はCAL.430FRと同じだが、マイコンはATmega4809にして、新たに赤外線トランシーバーを載せた。IrDAにした理由はUSARTにモデム機能があったからというだけだけれど、一応通信機能を持った基板となった。これで規格の波に数周遅れのスマートウォッチが作れる。  サイドボタンは1つ削減して3つになっている。 https://github.com/kentN/CAL4809 12月に入り、夏以降 ほとんど音沙汰のなかったArduino Uno Wifi rev2がとつぜん販売開始となっていた。 日本では無線LANモジュールの認証作業の完了待ちらしいけど、そのうち入手できるだろう。 ボード外観を見た感じではレベルシフタが一つ増えていて、WifiモジュールとのIFまわりに仕様変更が見て取れる。   リリースされたばかりのArduino Uno Wifi rev2向けのボード定義も配信が始まり、ボードマネージャ経由でインストールすることができた。  ボード定義で面白いのは、ATmega4809としての定義と別に、端子レベルでATmega328Pをエミュレートするコンパイルオプションがあること。Wifiモジュールなどとの通信制御を遮蔽しつつ、UNOと同じピン定義でプログラミング可能なようだ。 ...

ATmega4809(megaAVR0)を試す

megaAVR 0という新しいAVRシリーズを試してみた。  小さいパッケージなのに、UARTが4本もあるのが気になったのがきっかけ。 登場すると噂の Arduino Uno Wifi rev2  にも採用されるらしい。  簡単にデータシートを眺めてみると、アーキテクチャはXmegaシリーズを簡素化し、動作電圧範囲を広げたもののようだ。  CPUの命令セットはAVRxtと新しくなっているが、Xmegaで拡張された一部の命令(DESやUSBで使われる命令)が削除されていて、基本的に今までのATmegaとほぼ同じだ。  コンパイラからは、先に登場した新しいtinyAVR0, tinyAVR1シリーズと共にAVR8Xと呼ばれて区別されている。  CPU周りを見てみると、割り込みレベルなど、今までのクラシックなATmegaで足りないなと思っていたものがかなり強化されていた。 ArduinoAPIを再実装するとしたら便利そうなペリフェラルもだいたい揃っている。 データシート P6  DMAは無いけれど、周辺機能にイベント駆動用の割り込みネットワークが張り巡らされているのがわかる。  できるだけCPUを介在させない使い方がいろいろ提案されているので、アプリケーションノートやマニュアルを読み込むことになる。 ピックアップした特徴 ・データメモリ空間(64kB)に統合されたFlashROMとEEPROM ・RAM 6kB ROM 最大48kB (メモリ空間制限のため) ・デバッグ専用の端子 UPDIを搭載 ・優先度付きの割り込み(NMIと2レベル) ・ピン単位の割り込み(かなり複雑になった) ・リセットコントローラ(ソフトウェアリセット用レジスタが実装され、リセット原因が何だったかもリセット後に読み出せるようになった) ・豊富な16ビットタイマ(4809では5基) ・16ビット リアルタイムカウンタ(RTC) ・豊富な非同期シリアル/同期シリアル(USART 4ch、SPI 1ch,TWI 1ch) ・内蔵クロックは最高20MHz(PLL)と32kHzの2種類。外部クロックは発振器と時計用水晶のみ ・ADCは10bit 16ch...