気の向くままに辿るIT/ICT/IoT
IoT・電子工作

Arduinoあれこれ

ホーム前へ次へ
Arduinoって?

Arduinoあれこれ

Arduinoあれこれ

2017/07/10

 電子工作・IoTを始めてみようと思い立ってから約4ヶ月、Arduinoの各種互換機や激安電子パーツ類を使って実際に取り組んでいるわけですが、結構いろいろな状況に遭遇したし、今後も遭遇しそう、しかも原因が究明されていない模様のものもありそうなのでノウハウ・how to、トラブルシューティングにつながればよいなという意味も込めて止めどなく、つらつらと書き留めるページ。

 各ページに追記の形で既に書いてあるものを整理したい思いもあり、追記日があれば、その日付であとからここに転載・追記することもあるかもしれないし、そこそこまとまれば、それらやここに書いたものを個別ページとして起こすこともあるかも。

 また、既に判明していたことでも各ページに書き留めていないものもあるので、そういったものは、今日の日付で書いておく関係もあって内容如何に関わらず、順不同。

Arduino IDEライブラリエラー

2024/06/01

 Arduino IDEのライブラリエラーは、たいてい当該ライブラリがないよエラーだけど...

 時につないだArduinoボードとボード設定が合ってないことが原因となることも。

 ぼんやりしてる時になりがち、そんな時は、一息つこう。

Arduino IDE 1.8.10以降も使えるようになった

2022/10/21

 あれ、ESPボードだけArduino IDE 1.8.9含む以前のバージョンでしか、まともに使えなくなっていた問題、いつの間にか解消したっぽいです。

 1.8.19と2.0.0で確認済み。

 2.0.0入れたからじゃないよね?

Arduino IDE 2.0.0

2022/10/18

 気づけば、Arduino IDE 2.0.0がリリースされていたのでamd64 Debianにダウンロード、インストール、起動してみました。

 1.8.x系ではできていたIDEのtarball展開での利用はできなくなったようです。

 それに、さして乗り換えてみようというほど魅力的でもなさそう...。

 実は、amd64 Debianに展開したArduino IDEだとここにもあるようにタイミング的には、python2系から3系に乗り換えるべく行った設定に起因するのか、ESPボードにおいて1.8.9でないとまともに使えない謎現象があります。

 一方、今やメインと化したARM64なRaspberry Pi 400パソコンに2.0.0は対応しておらず、Box64でamd64とか、Box64+Wine 64(訳あって5.0.2)でWindows版とかいけるかでいけるかと思いきや無理ではありましたが、1.8系の最新1.8.19がまともに使えるのでArduino IDEはラズパイ400で使おうと思います。

 とは言え、スマートホーム化やIoTも一段落、モチベーションが上がらなくなってきて、すっかりご無沙汰してたことに輪をかけて急激な円安も手伝ってAliExpressもその方面では全くお買い得感もなく、再開するのはいつのことやらって感じではありますが。

 そんな中、大陸製のESPボードもそろそろ...、円がもう少しいい線いく日が来るのなら、様々な市場環境の影響か、単に技適待ちなのか、未発売のRaspberry Pi Pico Wに乗り換えかな...と試しにArduino公式mbed版とGitHubのearlephilhower版のボード設定を入れてみたり。

Arduino IDE 1.8.19

2022/05/24

 気づけば、Arduino IDE 1.8.19がリリースされていたのでダウンロード、展開(インストールはせず、複数バージョンを選択・使用)。

 ESP32-CAMにアップロードする際に気づき、ESP32系については、ある時点から1.8.16までは、なぜか1.8.9まで遡らないとまともに使えない状況が続いていたのですが、少なくともESP32-CAMについては、1.8.19でもアップロードできました。

[2022/05/29]
 と思いきや、ESP32開発ボードについては、やはり、1.8.9でないとツールメニュー内のボード設定値が消えるなど正常に機能しませんでした。

 尚、ESP32-CAMにアップロードする際、[A fatal error occurred: MD5 of file does not match data in flash!]というエラーに見舞われましたが、入力電圧を切り替え可能なFTDIモジュールにて3.3Vではなく、5Vにしたところ、正常に完了しました。

 ESP32-CAMへのアップロードに限っては3.3Vの方が安定していたこともあったため、あえて、そうしてみたわけですが、今回は、むしろ、5Vでないとダメでした。

Arduino IDEでexec: "python": executable file not found in $PATH

2021/10/06

 Arduino IDEでESP32プロジェクトのビルドをしてみると[exec: "python": executable file not found in $PATH]という見慣れないエラーが。

 ただ、これってPython2系からPython3系へのアップグレードの余波でしょと端末で試してみると今となっては(少なくともDebian bullseye 11.0では)、コマンドpythonは、python 2系に関連付けられることもなく、存在せず、python3コマンドのみが存在していました。

 そこで端末で[sudo ln -s /usr/bin/python3 /usr/bin/python]とした後、Arduino IDEでビルド、ボード書き込みしてみると共にできるようになりました。

 ちなみに、こうした本来対処が必要なエラーメッセージを見落とさせるかのように[*.hに対して複数のライブラリが見つかりました]のようなメッセージが多発することがあるので惑わされないよう要注意。

Arduino IDE Arduino AVR Boardsバージョンとavr-g++

2020/09/14

 Pro Miniにスケッチをアップロードしようと思ったら、Arduino AVR Boardsの最新バージョンが使えなかった話。

 結果、Arduino AVR Boardsのバージョンを最新の1.8.3から1つ古い1.8.2にしたら正常にスケッチのアップロードが完了しました。

 最新のArduino AVR Boardsのバージョン1.8.3だとスケッチのアップロード時、下記のようなエラーが出ました。

  • fork/exec /home/ryo/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++: no such file or directory

 ただ、これは昔からあったようで、そこでは1.6.20に戻すか、preferences.txtを書き換えると良いとありますし、もっと古い情報もあります

 ちなみにESPボードを選択すると不具合があって、これまで使えていた最新のArduino IDE 1.8.13が使えず、1.8.12を使っていますが、Arduino IDE周り、ちょっと不安定ですね。

モータをMOSFETで駆動する一例 by Fritzing

Arduino/MOSFET Motor Example画像 by Fritzing
2020/07/23

 MOSFET Nチャネル、整流ダイオード(逆流防止)を使ったモータ駆動回路。

 幾度となく引用、参考にさせて頂いていたFritzingの下記リンクが消滅したようなので画像検索結果に残っていたものコピーしてアップしました。

  • http://fritzing.org/media/fritzing-repo/projects/m/mosfet-motor-example/images/MOSFET%20Motor.png

 Arduinoに限りませんが、12V LEDテープライト+DC DC昇圧コンバータとか、マイコンだけでは、電流が厳しい用途にいろいろ使えて便利です。

 ただ、抵抗の必要性が理解できていませんが。

Arduino IDE 1.8.7

2018/09/24

 気づけば、Arduino IDE 1.8.7がリリースされていたのでダウンロード、展開(インストールはしないで使う)。

 前述のArduino IDE 1.8.6で必要となったユーザーのグループ追加及びマシン再起動(もしくは、arduino-linux-setup.shの実行)は必要ですが、他は特に何もする必要はありません。

 つまり、1.8.7では、1.8.5以前と同様、展開のみで使う場合も1.8.6のようにportableディレクトリを作成する必要はなくなり、環境設定の問題も解消されています。

 その中でplugdevグループを作ってユーザーを追加する必要もあったのですが、Debian Stretch amd64(debian-amd64 4.9.0-8-amd64)では、plugdevグループはもともと存在しました。

 というのも64bitマシンでDebian含む32bit OSを使っていたのですが、Juliusを使ってみたくなり、Debian Stretch amd64をマルチブートさせる恰好でインストール、Arduino IDEもLinux 64bit版を新たにダウンロード・展開したことでわかりました。

 ちなみにグループ追加しなくても展開しただけでArduino IDEの起動自体は可能ですが、/dev/USB*(USBデバイス)に対して許可がなく使用できないため、スケッチを書き込めなかったりします。

 さて、以前のは音が小さく認識できなかったんだろうと思い、改めて音源を作成、Arduinoボードに書き込み、Arduinoが発話した内容をJuliusで認識できるか改めて確認...しようとしたところ...。

 再起動したら、Juliusが使えなくなりました...正確には、/dev/dsp*がなくなりました、もっと言えば、sudo modprobe -c | lessで確認してみるとカーネルモジュールsnd-pcm-ossがblacklist化されていた...sudo modprobe snd-pcm-ossで復活はできるにはできますが...、Arduino IDE用にユーザーをグループ追加した関係で干渉したのか?はたまた、実行したか覚えていませんが、apt update/apt upgradeによる何らかの影響か、それともDebianの気まぐれか...、いずれにしても不要だと判断されただけならまだしも、干渉したとなると復活させるにしても後々不安が残る...。

 ここで追加したグループからユーザーを削除、保存して再起動してみましたが、blacklist状態は変わらず...、一度なったら自動では戻らないものなのか...。

 /etc/modprobe.d/osspd.confをホームディレクトリ内に移動(mv)、退避して再起動後、whitelist化され、/dev/dsp*も表示されたことを確認後、更に改めてArduino IDE用にユーザーを各種グループに追加し、マシンを再起動したところ、何もせずとも/dev/dsp*は表示されるようにはなりましたが、原因は絞りきれず、不明のまま...。

 改めてArduinoボードの声を認識するか確認、あれ、まだ声が小さいのか、誤認識...さて、どうしたものか...。

2018/10/01

 なんて流れで勢い余ってRaspberry Pi/ESP8266/Julius/Open JTalkでスマートスピーカーを作ってみたらできた

Arduino IDE仕様変更?

2018/08/26

 かくしてArduino IDE 1.8.6もユーザー権限で起動できるようにはなったのですが、安心したのも束の間、念の為、サラッと確認してみるとサンプルスケッチ、ライブラリのインクルードにおけるライブラリ、ボード、[ESP8266 Sketch Data Upload]など1.8.5までに標準に後で追加してあったものが、ことごとくメニューから消えていることが判明...。

 Arduino Software Release Notesを確認するも因果関係のありそうなものはなく、原因不明...。

 ちなみに以前、ここでも書いたNanoにATmega328P (Old Bootloader)メニューができた件、1.8.6で仕様変更になったかのように書いてありますが、1.8.5で既に変わってたって...。

 ということは、IDEの参照パスが変更になりましたってことだよね?、ついては、インストールせずに使う場合に[portable]フォルダを要するのも関係あるってことだよね?

 実際、以前のバージョンと比較して自身で変更していた為、異なりましたスケッチブックの場所をArduino IDE 1.8.6で[ファイル] => [環境設定]においてデフォルトが[sketchbook]である[スケッチブックの場所:]で変更したところ、起動できなくなり、元に戻したら起動できたし。

 尚、起動できた状態でこれを変更したところ改めて起動できなくなったことから、直接ファイルを編集すべく、find、grepでArduino IDE 1.8.6ディレクトリ以下を検索した結果、[portable/preferences.txt]がヒット、当該ファイル内を検索、[sketchbook.path=]の右辺を[sketchbook]としたところ、起動するようになりました。

 つまり、展開したArduino IDE 1.8.6ディレクトリに[portable]ディレクトリを作成するとIDEの初回起動時に必要なディレクトリやファイルが配置され、その中に[sketchbook]ディレクトリもあり、ここが、デフォルトの[スケッチブックの場所:]となっているということになります。

 が、これを然るべき方法で変更すると起動しなくなるっていうのは、バグだわな...。

 あ、[ファイル] => [環境設定]を改めて比較してみたら、以前のバージョンでは、[~/.arduino15/preferences.txt]、1.8.6では、[arduino-1.8.6]以下の[portable/preferences.txt]が環境設定用ファイルパスとなっていました。

 ちなみに以前のバージョンの[~/.arduino15/]以下にも、[arduino-1.8.6/portable/]と同様のファイル類があるため、(本来はportableである気がしますが、)[sketchbook]ではなく、[/home/xxx/.arduino15]を1.8.6の[スケッチブックの場所:]にしても起動はしますが、ライブラリやボードが標準のみしかないのに変わりはないため、害はあっても、良いことは全くないでしょう。

 で、1.8.6から再出発する、つまり、とりあえず、デフォルトを変更することなく、過去バージョンで、これまで追加してきたものを改めて追加しなおせば、よいわけですが、それもめんどい...、もしかしたら複数バージョン使わず、install.shすればよいのかも?しれませんが、それは論外だから、継続調査中...。

 ライブラリについては、少なくとも自身の環境における1.8.3/1.8.5では、~/Arduino/libraries、~/sketchbook/libraries、~/.arduino15/libraries、~/.sketchbook/librariesが参照されていた(はず)ですが、1.8.6では、これらは一切参照されていない...。

 それらの内、必要なlibrariesフォルダから[arduino-1.8.6/portable/sketchbook/libraries]にコピーすれば、妥当なものは、[スケッチ] =>> [ライブラリのインクルード]に追加されるはず...というわけでやってみたら追加されたのでコピペの必要はありますが、これで解決と言って良いでしょう。

 ボードについては、そんなにたくさんあるわけではないでしょうし、改めて追加するしかなさ気。

 自身は、今思いつく限り、ESP8266とESP32を追加しておきたいところで、以前、前者は、Arduino IDEの[ファイル] => [環境設定]の[追加のボードマネージャのURL:]から、後者は、git cloneしました。

 今回は、ESP8266/ESP32が共に認識されていないことから既存のディレクトリは、そのままでも問題ないと判断し、どちらもArduino IDEの[ファイル] => [環境設定]の[追加のボードマネージャのURL:]から追加することにします。

 というのも既存のディレクトリには、既にESP8266/ESP32用に作成したスケッチが多々あるので後でコピペしようという目論見。

http://arduino.esp8266.com/versions/2.4.2/package_esp8266com_index.json
https://dl.espressif.com/dl/package_esp32_index.json

 というわけで、これら2つのURLをカンマ区切りで指定(ESP8266の方は、httpである点に注意)、Arduino IDEの[ツール] => [ボード]の[ボードマネージャ...]から選択、更新・インストールという手順を踏みました。

 ESP32の方は、以前追加したディレクトリをそのままにしておくと[...xtensa-esp32-elf]が既に存在する旨、表示されたりしますが、警告であって別にインストールに支障はない模様(一度、削除、再インストールしてみましたが、今度は警告は出なかった)。

 これでESP8266/ESP32何れかのボードを選ぶとスケッチ例にも対象標準スケッチが表示されるようになることは確認済み。

 念の為、ESP32の方は、以前追加した内の[...xtensa-esp32-elf]ディレクトリのみ削除(ゴミ箱送りに)しても、削除せず、そのままにしておいてもArduino IDE 1.8.6からサンプルスケッチGetChipIDやStartCounterをアップロードでき、DevKit V1互換ボードで機能することも確認済み。

 というか、DevKit V1互換ボードで試してみてよかった...DevKit V1互換ボードは、Arduino IDEの場合、スケッチ書き込み時にボード上のBOOTボタンを押さないとエラーとなっていたのですが、1.8.6で改善されたようでBOOTボタンを押さなくてもスケッチを書き込むことができることが偶然にも判明。

Arduino IDE 1.8.6が起動しない...?と思ったら

2018/08/26

 Arduino IDEも1.8.6がリリースされていたことを知ったので、早速ダウンロード、展開。

 ですが、実行ファイルarduinoをダブルクリックしても起動しない...。

 ちなみに自身の現時点でのメインOSは、Debian(Linux)、パソコンは64bitですが、OSは32bitを使っている為、Arduino IDEもLinux 32bit版。

 展開ディレクトリを確認、他のバージョンと比較してみると[arduino-linux-setup.sh]なる新たなファイルがあります。

 展開のみで複数バージョンを併用してきたため(と言っても滅多に古いバージョン使うことないけど)、install.shも実行したことはなく、arduino-linux-setup.shを実行したら古いバージョンが使えなくなるなんてことはないよね?

 ということで...中身を確認してみるといろいろ設定している中にグループ作成やユーザーのグループへの追加がなされている箇所があります。

 [arduino-linux-setup.sh抜粋]

 ...
sudo usermod -a -G tty $1
sudo usermod -a -G dialout $1
sudo usermod -a -G uucp $1
sudo groupadd plugdev
sudo usermod -a -G plugdev $1
 ...

 端末からidコマンドを実行した結果と比べると自身の場合、1.8.6では、新たにtty、uucpグループにユーザーを追加する必要があるようです。

 ttyはUSBを扱うにあたって以前から追加してあったと思い込んでいましたが、そうではなかったらしい。

 一方、uucpってなんぞや?と思ったら...

 「Unix to Unix CoPy 」の略で, UNIX マシン間でデータ転送を行うためのコマンド群の総称」

 「初期のインターネットの通信手段として広く使われていた」

 などとある...、まぁ、いっか。

 実行後は、再起動が必要なようです。

 とりあえず、問題なさげなので[arduino-linux-setup.sh]を実行、再起動してみよう。

 実行してみると、そらそうだ、引数にユーザー名がいるとのこと

 arduino-linux-setup.sh $USER

 更にそらそーだ、グループへの追加などを伴うため、sudoすべく、パスワードを求められました。

 するとパッケージのインストール画面も含まれ、結果、インストールされるものはなかったものの、[modemmanager]なるものが、削除されたとある...。

 関係ないかもしれませんが、調べてみると、何やら関係ありそうにも見える。

 https://packages.debian.org/ja/sid/modemmanagerによれば、

 ModemManager はモバイルブロードバンド (2G/3G/4G) デバイスおよび接続を制御する DBus 駆動のデーモンです。内蔵デバイスや USB ドングル、Bluetooth ペアリング 済みの電話やプロ仕様の外部電源付き RS232/USB デバイスに対しても、 ModemManager はモデムの準備や設定、接続の構成ができます。

とあります。

 一方、これがあると、他のアプリが起動できないこともあるという情報も。

 Arduinoも通信の関係で?これにあたるのかもしれませんが、真偽の程は定かではない...と思ったら、[arduino-linux-setup.sh]内にこれを削除する行を発見。

 というわけで再起動...してみるが、arduinoをダブルクリックしてみても、やはり、途中で消えて起動しない...。

 端末でディレクトリを移動し、./arduinoとしてみるとJavaが何やらエラーを吐いている...。

 そこで「arduino 1.8.6 起動しない」をキーにぐぐるとバージョンは異なるものの、Arduino 1.8.2が起動しないがヒット、これによれば、「管理者として実行」するか、実行ファイルarduinoのあるディレクトリに[portable]フォルダを作成するという2つの方法があるとのこと。

 確かにsudo ./arduinoなら起動しますが、いちいちsudoするのは馬鹿馬鹿しい、なんでグループに追加したのかわからなくなるし、スケッチの編集含め、ユーザー権限では何もできなくなるのは不便極まりない。

 そこで「portable」フォルダを作成する方法にしてみましたが、それでも管理者権限が必要...というのは解せなかったため、ユーザーで実行してみると...起動できました。

 ファイルマネージャ上でダブルクリックしても起動できました。

 portableディレクトリありきの仕様だったのか...。

 それにしても1.8.3や1.8.5では、「portable」フォルダを作らなくても(もちろん、今現在もなく)起動できているのですが、1.8.2や1.8.6で挙動が異なるのは謎だが...先祖返りしてしまったのか...?仕様変更が二転三転しているのか...?

 まぁ、とりあえず、めでたし、めでたし。

Processing 3.4

2018/08/26

 気づけば、Processing 3.4がリリースされていたのでダウンロード、展開。

 久々に実行してみたProcessing、バグフィックスの影響か、Processing 3.3.7では、実行できていたスケッチが修正しないと実行できないというケースにたまたま遭遇する奇跡。

2018/10/02

 Processing 3.4では、デフォルトでは、日本語フォントが表示されず、かと言って[設定]メニュー選択後の[環境設定]ポップアップ上でも[日本語]となっている一方で[Source Code Pro]のままグレー反転し、入力を受け付けず、フォント変更ができなくなっていますが、下段にあるpreference.txtを編集すれば、日本語フォントを表示できるようになります。

 具体的には、[editor.font.family=Source Code Pro]を[editor.font.family=Monospaced]に変更して起動済みならProcessingを再起動。

 というか、[フォントの作成]でIPAPGothicやIPAPMinchoを追加、当初、[editor.font.family=MS Gothic]に修正してみて日本語表示できたことを確認していたのですが、これを書くにあたり、改めて確認してみると勝手に[editor.font.family=Monospaced]に変更されていた...。

Arduino IDEでスケッチ開き過ぎたら[終了]メニューは...?

2018/07/26

 Arduino IDEでスケッチを開き過ぎても[ファイル] => [終了]で全部いっぺんに閉じることができる...が、再度IDEを起動した時、同じ数だけスケッチが開いてしまう...。

 もしかして...とやってみたものの、Arduino小休止、ESP32を使いだして気づくという滑稽さもさることながら、この挙動は使えるのか使えないのか...。

Linuxでも使えるProcessing 3+gstreamer1.0用Videoライブラリ

2018/03/28

 Processingについては、あれこれ書くほどではないと思われるため、ここに書いておきます。

 ここ1ヶ月ほどArduino+Processing(Processing 3)ネタのデモを実行させて頂いたり、スケッチを書いてみていたのですが、ここ数日、自身が使わせて頂いているOS Debian Stretch環境においてProcessingのVideoライブラリで映像キャプチャや動画再生ができず、ハマって調べた末、テスト版である模様も2017/11/24リリースのgohai氏のライブラリのおかげで解決しました。

 尚、Processing標準videoライブラリをインストールした場合は、削除しておくか、ディレクトリ名を改名してからパスの通ったsketchbook/librariesなどに展開。

 結果的には、Processing videoライブラリが、gstreamer0.10に依存しており、最新のgstreamer1.xに対応していなかったことに起因していたようでgohai氏がgstreamer1.x対応のProcessing video用ライブラリを公開して下さったため、自身のLinux環境でも使用可能となり、外付けUSB Webカメラを認識、その映像をキャプチャできました。

 また、VideoライブラリやVideoライブラリに依存する一部のOpenCVライブラリのサンプルスケッチなども機能し、確認することができました。

(PC内蔵カメラはなく、接続したUSBカメラは1つだけでしたが、Capture.list()の出力にあたり、要素を与えて1つだけなら、println()でもよいものの、配列要素全ては?と、ふと気になったのですが、printArray()なる関数があり、これが使えることを、この時、知りました。)

 gohai氏のご尽力については、Processingフォーラムだったかで昨日、知ったのですが、そのライブラリが機能する形でリリースされていたというのは今日、知るに至りました。

 具体的には、以下のようなエラーが表示され、ProcessingでWebカメラ(USBカメラ/Web Cam...)からの映像キャプチャや動画ファイルの再生ができない事象が発生(これが今回解決したことになる)。

32ビットOSの場合
  • UnsatisfiedLinkError: Error looking up function 'gst_date_get_type' : /usr/lib/i386-linux-gnu/libgstreamer- 1.0 .so. 0.800 . 0 : undefined symbol: gst_date_get_type. A library relies on native code that's not available. Or only works properly when the sketch is run as a 64 -bit application.
64ビットOSの場合
  • UnsatisfiedLinkError: Error looking up function 'gst_date_get_type' : /usr/lib/x86_64-linux-gnu/libgstreamer- 1.0 .so. 0.800 . 0 : undefined symbol: gst_date_get_type. A library relies on native code that's not available. Or only works properly when the sketch is run as a 32 -bit application.

 NetBSDでは、ユーザーにとっての早道としてGStreamerのバージョンの混在はさせざるを得なかったし(とは言え、干渉するわけでもなく、難しいことではなかった...はず)、そうでないにしても、今回、[libgstreamer- 1.0 .so]とあるので、検索した過去の状況(昔はできていたらしいこと)からして、この時点でGStreamerのバージョンを0.10にすれば解決しそうなことは予想に難しくありませんが、できるにしても今更感もあり、Linuxでまでそれをやるのは、何より面倒...なので途中、OpenCVになびきかけつつ、他の解決策を求めて先のvideoライブラリにたどり着いた次第。

 ちなみに遡ることProcessing 1.0では、当初、ビデオキャプチャには、Apple QuickTime(、Windowsでは、これに加え、VDIGソフトウェア)を必要としており、Mac OSやWindowsでは使えたが、Linuxでは実質、使えなかったっぽい?、Processing 2.0あたりから?gstreamer0.10に移行したものの、その後のGStreamerのアップデート(1.0など)には未対応となっていた模様。

 それでも今も昔もLinuxでは、gstreamer{0.10,1.0}-{base,bad,good,dev}やこれらplugins、また、H.264やlibavなどを必要とする可能性があり、環境を整える必要はある模様。

 自身の環境(Debian Stretch)では、Processingのvideoキャプチャ、動画再生が機能するようになったわけですが、完全な環境は把握できておらず、先のvideoライブラリだけでよいのか、追加パッケージもあってのことなのかは判然としない...。

 今回、試行錯誤する中でインストールしていったことや万一、端末を複数開いてインストール作業を別個にバラバラやっていたとしたら履歴も残らず、正確とは言えないわけですが、現存の端末履歴を見る限り、このVideoライブラリに出会う前に適当に見繕ったものを含む次のものをインストールしていました。

$ history | grep "apt install"
1923 sudo apt install libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-dev
1946 sudo apt install gstreamer1.0-plugins-ugly gstreamer1.0-tools
1947 sudo apt install gstreamer1.0-alsa
1948 sudo apt install gstreamer1.0-nice gstreamer1.0-packagekit
1974 sudo apt install x264 libx264-148
1976 sudo apt install gstreamer1.0-plugins-good
1985 sudo apt install gstreamer1.0-libav

手持ちのATmega328P搭載ボードが古物扱いになった!?

2018/02/25

 突然、Arduino Nano互換機にスケッチをアップロードするとエラーになり、なんだろ?と思っていたら...。

 な、なんとArduino IDEのボードライブラリを更新したからでしょうが、[ツール] => [プロセッサ]メニューを見ると同じAtmega328PにOld Bootloaderなる選択肢が追加(新たな[ATmega328P]が追加、以前のATmega328Pは、[Atmega328P (Old Bootloader)]に改名)されており、手持ちのArduino Nano互換機は、軒並みOldになった模様(Oldを選択しないとスケッチをアップロードできなくなっている)。

 書き込み装置も増えてるみたい?

 で、ブートローダ、何が変わったんだろ?

プルアップ抵抗・プルダウン抵抗は必須

2017/08/17

 これまでプルアップ抵抗、プルダウン抵抗という言葉は知っていたし、これをいれないとINPUTのLOW、HIGHが不定になるため、思いもよらない、期待しない動作、つまり、誤動作の原因になることがあるというところまでは、なんとなく理解していましたが、どっちがどっちだか、よくわかんないし、まぁいいかと思っていました。

 しかし、試作をいくつか作った中で、これまで順調だったように思えた鳥よけ装置がある日突然、人感センサーや光センサーに関係なく動作してしまう現象に遭遇。

 (プルアップ、プルダウンについては、見てみぬふりをして、)人感センサーや光センサーの調子が優れないのかななんてなんの根拠もなく、交換してみたら、(たまたま)正常に機能したので、よしよし(プルダウン、プルアップから逃げ切った...)と思っていたら、翌日あたり、また同症状に見舞われました。

 これってやっぱり、プルダウン、プルアップは避けて通れないのか...と思い、よくよく調べてみると奥はそこそこ深いのかもしれませんが、億劫がっていたのがバカみたいと思えるほど、やること自体は超簡単なプルダウン(入力電圧=入力ピンとGNDの間に数kΩ〜数十kΩとのことなので適当に)10kΩの抵抗を入れてみたら、あっさり改善しました。

 プルダウン抵抗とは入力とGNDの間に抵抗を入れ、スイッチONで入力信号がHIGHとなる回路、プルアップ抵抗とは電源電圧と入力の間に抵抗を入れ、スイッチONで入力信号がLOWとなる回路であり、外部回路を組む場合、前者は素直で簡単ですが、後者はArduinoボードを使う場合、遠回り感があり、後述の通り、内蔵されているというのも頷ける気がします。(解釈あってるよね?)

 というわけで入力信号を受けて何かやろうと思ったら、それぞれの入力に対してプルダウン抵抗かプルアップ抵抗の何れかはなくてはならない必須のものだと実感するに至りました。

 Arduinoの場合、INPUTがデフォルトであり、INPUT用のpinMode設定は敢えてする必要はない(省略可能である)が、プルダウン抵抗の場合は先のように、プルアップ抵抗については、Arduinoボードに内蔵されており、これを機能させるためには、スケッチに入力信号用のピンを指定してpinMode(inputPin, INPUT_PULLUP);とするだけでよく、その分、外部回路を省略できるとのこと。

Pro Miniってスケッチアップ時リセット要らない?

2017/08/07

 試作・実装品に激安Pro Miniを使うことが多いのですが、FTDIモジュール使う場合、スケッチのアップロード時、もしかしてリセットって要らない?

 尤も、まだ電子工作自体始めて数カ月の自身のことだから、それは気のせいで、もしかするとArduino誕生から12年、いろんな変遷があった過去の一時点のある情報を正としている可能性もある?

 印象としてはリセットが要るときも要らないときもあったような気がするのだが...気のせいか。。。

2017/08/08

 FTDIモジュール使って手持ちのPro Miniいくつかでスケッチのアップをやってみましたが、やっぱり、リセットボタンを押す必要はありませんでした。

電池の特徴・特性を知る

2017/07/22

 少し前から、なぜCR2302リチウムイオンボタン電池だとLEDは点灯するけど、DCモータが回らないんだろう・・・と、とてつもなく基本的なところが、なんとなく気になっていました。

 というのも、つい、うっかり1個(3V)用だと思って先日買ってみたCR2302 x 2(6V)のコイン電池ホルダ(電池ボックス)、2個6Vってなんか使いみちあるか?と思い、なぜか、ちょっと焦って、まず、試したのが、LEDとDCモータだった次第。

 「DCモータ cr2302」をキーにぐぐっても期待する情報がない、が、それもそのはず、恥ずかしながら、CR2032などのボタン電池は時計、電卓、ICタグなど微電流で済む小型機器・小電流使用機器向けであり、アルカリ電池・マンガン電池などはDCモータ駆動などの比較的大電流を要するシーンで利用されることを想定し、製造されているからという極めて基本的な電池の特徴・特性を見落としていました。。。

 で、CR2302(3V)2個で6Vの有効な使いみちって?と思って["cr2302x2"]をキーにぐぐると意外と相当数ヒットするから、必要となる電流量の差こそあれ、アルカリ電池1本〜数本使うのと同じ感覚ってことか。。。

Arduino Nanoとピンヘッダ

2017/07/18

 Nanoは、USBポート必須のシーンにおいては、FTDIモジュールを要するPro Miniよりスマートで便利ですが、Pro Miniと違ってNanoは、ピンヘッダが半田付けされていないとブレッドボード上でも使えない。

 ブレッドボードにピンヘッダを挿してNanoを差し込み載せることも可能ですが、接触が微妙になり、往々にしてうまくいかず、本来の検証に支障が出る可能性大。

fuse resetter/ヒューズリセッタ

2017/07/10

 Arduinoボードにスケッチやブートローダを書き込むことができない・できなくなった場合、fuse値が書き換わっている可能性もあるらしい。

 その際、任意のfuse値への書き換え、工場出荷時の状態への復帰などlock bit設定含め、行なうfuseリセッタなるものが存在する模様で、これをArduinoボードで代替することもできるらしい。

壊れたか?と思われたArduino UnoやPro Miniも一応復活することもある

2017/07/10

 UnoにもR3などのバージョン以外にボード上の実装が異なる種類があることを知ったわけですが、そんな折、WifiモジュールESP8266、買ったばかりでデフォルトのBlinkが機能することは確認済みの複数のPro Miniにおいて故障なのか原因は不明もスケッチを書き込むことができない事象に遭遇、調べた末、たどり着いたArduinoISPでUnoをISPとして試してみるとブートローダが書き込まれていなかったようでこれを書き込むことでPro Miniの一部は復活しました。

 正常機能していたPro Miniが2つ、復活したPro Miniが2つ、内1つはLチカはしますが、電源LEDがつかず、最初からだったのか、ある時点から書き込めなくなったのか、どうにも書込みできないPro Miniが1つあるので結果、2個の残るPro Mini 1個は、Programmer is not respondingとなるばかり。

 書き込みに成功したPro Miniは、簡単!ATmega328Pにブートローダを書きこむ(第2弾)の外部オシレータを使わない方法を実行させて頂いたのですが、そこには「既に外部オシレータ付きで書き込まれているものは、これを使う以外方法はないかも」といった旨の記述もあり、もしかしたら、残りの2つも外部オシレータとコンデンサを噛ませれば、復活する可能性はゼロではないのかも?

 その後、Nanoの方がシンプルにできそうなので作り替える予定もPro MiniをArduinoISPとする簡易回路を作り置きしておくことにし、2台ある他のスケッチを書き込んであったUnoもArduinoISPとしたPro MiniでBlinkスケッチを書き込んでみたら成功、次回検証用にとしまっておきました。

[2017/07/11]

 というわけでコンデンサは前回買った詰め合わせで間に合いそうなのでオシレータとNanoを追加で買ってみた

C106とGA7M
[2017/07/20]

 ブートローダもスケッチも書き込めないPro Mini、何が違うのか他のPro Miniと見比べてみると書込みとしては正常な4個のPro Miniの方は、2個あるコンデンサらしき[C106]が載っていますが、唯一、書込みできないPro Miniには[GA7M]が載っているくらいですが、これらに互換性があるのかないのか、これに起因するのかなど判断できず、ぐぐってみると[C106]はそれらしい情報がありますが、[GA7M]の方は、よくわかりません。。。

 Pro Miniを対象とした外部オシレータ+コンデンサを使う方法については、よくわからず断念。

 と言っても実は、これが判明する前に電源ランプの点かないPro Miniとブートローダ、スケッチを書き込むことができないPro Miniの2個は、文字欠けしていたパネル取付用デジタル電圧電流計と共に既にHiLetgoに相談していて良品を発送してくれることになり、その後、電圧電流計だけが届き、再連絡すると入れ忘れていたとのことでPro Miniも再送してくれたとのことなので近いうちに届くことになっています。 => [2017/08/03] 2個届いた内、1個スケッチが書き込めず、再々送して頂くことになりましたが、こんなことは未だかつてないので極々、稀なことでしょう。

 しかし、後日、さて、Unoにスケッチを書き込もうとArduino IDEを起動してスケッチをアップロードしようとしたら、[programmer is not responding]エラーになって書き込むことができなくなっていました。

 もしかして壊れた?故障なのか?でも、前回スケッチ書き込みできたところで終わっての今なのに壊れるってことある!?なんで?ということで改めてPro MiniのArduinoISPで試すも、やはり、Unoにスケッチを書き込むことができません。

debian:~$ arduino-1.8.2/hardware/tools/avr/bin/avrdude \
    -P /dev/ttyUSB0 \
    -b 19200 \
    -c stk500v1 \
    -p m328p \
    -C arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf \
    -v \
    -e \
    -U efuse:w:0xFD:m \
    -U hfuse:w:0xDE:m \
    -U lfuse:w:0xFF:m

 結果、最終的にできたわけですが、まず、Atmega328Pが1つ載ったUnoでInstalling an Arduino Bootloaderの後段の通り、ICSPの6ピンに配線の上、端末から各種fuse値(lfuse/hfuse/efuse)を{ARDUINO}/hardware/arduino/avr/board.txtの当該Arduinoボード用の[*.low_fuses]、[*.high_fuses]、[*.extended_fuses]の値を確認の上、必要に応じて設定し、avrdudeコマンドを実行したところブートローダの書き込みに成功。

 ちなみに冒頭述べたPro Miniにブートローダを書き込んだ際は、fuseの設定はしなかったのですが、なぜか、できました。

debian:~$ arduino-1.8.2/hardware/tools/avr/bin/avrdude \
    -F \
    -P /dev/ttyUSB0 \
    -c stk500v1 \
    -p m328p \
    -C arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf \
    -U flash:w:arduino-1.8.2/examples/01.Basics/Blink/Blink.ino
debian:~$

 スケッチもArduinoISPとしたPro Mini(などのArduinoボード)とスケッチを書き込みたいUnoを接続、端末からavrdudeコマンドを実行して書き込むか、Arduino IDEの[ツール] => [書込装置]を[Arduino as ISP]として[スケッチ] => [書込装置を使って書き込む]とすることで書き込むことができました。

  • 何れもavrdudeコマンドの各オプション詳細は要確認
  • 場合によっては、ブートローダの書込みの方もsignature checkをスルーする-Fフラグを追加する必要があるケースもあるかも。
  • パスを通していないため、avrdudeとavrdude.confはフルパス指定、パスが通っていれば、後者は指定不要かも。

 しかし、改めてUnoをPCにUSBケーブルで接続、Arduino IDEから[マイコンボードに書き込む]ボタンやメニューでスケッチを書き込んでみると応答がないとかでエラーになります。(もちろん、シリアルポートは適切なものに、書き込み装置もAVRISP mkIIなどに変更済み。)

 続いてAtmega16U2付きのUnoについては、How to Restore the Arduino UNO R3 ATmega16U2 Firmware Using the Arduino IDEによれば、まずは、Atmega16U2のブートローダ書き込みが必要か否かをLoop-Back Test Instructionsを参照して調べて良好ならその必要はないとのことで結果、(自身のDebian環境にはなかったのでインストールした)screenコマンドでシリアルポートにアクセスする方法(screen /dev/tty****)で調べてみるとAtmega16U2の方は、問題なさげでした。

 更に読み進めると、どうやらAtmega16U2が載っているものも、Atmega328Pのブートローダを続けて読み込む必要がある模様、つまり、Atmega328Pだけ積んだボードと同じく、Atmega328Pにもブートローダがあるようなので先と同様、Atmega328PのICSP6ピンに配線の上、ArduinoISPで書き込んだところブートローダの書き込みに成功、そのまま、スケッチを書き込んでみたところ、これまた成功、しかし、やはり、PCにUSBケーブルで接続、書き込み装置をAVRISP mkIIとしてArduino IDEから[マイコンボードに書き込む]ボタンやメニューからのスケッチのアップロードはできません。

 つまり、以後、どちらのUnoもArduino ISPからでないとスケッチを書き込むことができない状況となりました。

 なんで?

 もしかして外部クロックモード、内蔵クロックモードが関係してる?

[2017/07/24]

 Pro MiniをArduinoISPとしてLチカしているUnoに改めてブートローダを書き込んでみたら、Arduino IDEからスケッチをアップロードできるようになりました。。。オシレータ云々ではなく、原因はブートローダでした。(逆にどうやったらArduinoISPのみ機能するようになってしまうんだろう?というのも気になるが。)

[2017/07/28]

 あれ、再発。。。なんでだ?

 その後、ArduinoISPをPro MiniからNanoに変更はしましたが、Arduino IDEからNanoによるArduinoISPを介してUnoへの書込みも、AVRISP mkⅡでスケッチをアップロードも確認済みだったのですが。。。もしかしてArduinoISPとするボードを替えるたびに対象ボードのブートローダを書き換えないとAVRISPとかで書き込みできなくなるとか???

 あ、まさにブートローダ書き直したら、また、Arduino IDEからAVRISP mkⅡを使ってスケッチをアップできるようになりました。。。不思議。

 また、lsusb結果は事前確認していなかったため、なんとも言えませんが、直接PCとUSBケーブルをつないだ際、Atmega16U2付きのUnoは、シリアルポートが/dev/ttyACM0、これが載ってない方は、FTDIモジュール挿した時と同様の/dev/ttyUSB0になっているのですが、もしかして、これって後者はUSBドライバの再インストールが必要?あ、いや、lsusbでみると載ってる方は[Arduino SA Uno R3 (CDC ACM)]、載ってない方は、[QinHeng Electronics HL-340 USB-Serial adapter]だから最初からこうだったのかも。

[2020/08/21]

 あ、壊れていたかに思われたPro Mini 2個、復活。。。(よく見たら、まだ破損品が1個あり、これは復活できず。)

...
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override this check.
debian:~$

 というか、ピンヘッダ未ハンダでブレッドボード&ジャンパワイヤの特にVCC/GNDの接触不良が原因で以前は、signatureが違うとかエラーが出たり、fuseが全部ゼロになってみたり、書き込めなかったりした模様...。

 尚、前回も今回もNanoによる自作ArduinoISPを使いました。

 それさえなければ、avrdudeによる現在の状態表示、各種fuseの書き換え、その後、Arduino IDEで[書込装置:Arduino as ISP]として[書込装置を使って書き込む]でスケッチのアップロードもできました。

 ただ、avrdudeによる書き込みは、配線をどう押さえて、何度やってみても[can't determine file format for ../../../../examples/01.Basics/Blink/Blink.ino, specify explicitly]となって書き込めませんでしたが、後述の通り、ピンヘッダはんだ済みのPro Miniでは、あっさり書き込めたので微妙な接触不良によるエラーのようです。

 尚、そのままだとArduino IDEから妥当な[書込装置:AVRISPmkⅡ]を使って普通にPro Miniを選択、FTDIモジュール経由でアップロードすることもできませんでしたが、前掲の以前やった通り、Arduino IDE上で[Arduino as ISP]経由で[ブートローダを書き込む]を実行したあとは、FTDI経由でArduino IDEから普通にアップロードできるようになりました。

 今回、2個ともそうだったので、CLIでavrdudeコマンドを実行して何らかの変更を加えたArduinoボードについては、Arduino IDEから通常の書き込み装置でかつボタン操作でスケッチをアップロードする場合には、この手順は必須のようです。

 あ、そうすると書き換えたfuseも元に戻ってしまうことが判明...。

 ということは、以後は、ISP+avrdudeでスケッチも書き込む必要があるということか...となると先のスケッチ書き込みの失敗の原因を探らないと...。

 と思ったら、やはり、失敗の原因は配線の接触不良のようです。

 というわけで物理的なArduinoISP回路とavrdudeコマンドを使って対象となるArduinoボードに対してfuseビットの変更を行った場合、スケッチを書き込むには、次の2通りの内、何れかの方法をとる必要がありそうです。

  • avrdudeの必要オプションに加え、-U flash:path/to/sketch.inoを追加
  • Arduino IDEで[書込装置:Arduino as ISP]としてから[書込装置を使って書き込む]メニューを選択

 未検証で想像でしかありませんが、boards.txtに相応のfuseビットとしたArduinoボード設定群を追記、命名してArduino IDEで当該ボードを選択すれば、ArduinoISPを使わずとも変更したfuseビットそのままにスケッチのアップロードもできるのかも?

 尚、仮に前者で[can't determine file format for ... , specify explicitly]といったエラーが出た場合でも後者なら多分に成功することがあるので試してみる価値は十分にあります。

 むしろ、前者で無事書き込めたように見せかけて実は、失敗しており、改めて後者でアップロードするとうまくいくケースもあるので要注意。

 ピンヘッダはんだ済みのPro Miniに端末からavrdudeで書き込んだら、Arduino IDEの下部のモニタと同じように進捗が表示され、あっさり、完了しました。

 ちなみに、これらの作業に至ったのは、Pro Miniで実装した鳥よけ装置も2個めが稼働中で場所は違えど1つめが約1ヶ月、2つめが2週間と電池のもちが異なり、機能する頻度の差かな、それともBOD/Brown Out Detectet設定変更してたんだっけな?ならやってみるかと思い立ったついでに破損品ケース行きになっていたPro Mini復活させられたらうれしくない?と淡い期待を込めて試してみたからでした。

 が、調べてみると1号機もlfuse:0xFF/hfuse:0xDA/efuse:0xFDでBODはデフォルトの2.7Vの模様ということでBODはいじっておらず、検知回数の差だったようです。

./avrdude -C ../etc/avrdude.conf -p m328p -P /dev/ttyUSB0 -b 19200 -c avrisp -v -e -U efuse:w:0xFE:m -U hfuse:w:0xDA:m -U lfuse:w:0xFF:m
or
./avrdude -C ../etc/avrdude.conf -p m328p -P /dev/ttyUSB0 -b 19200 -c avrisp -v -e -F -U efuse:w:0xFE:m -U hfuse:w:0xDA:m -U lfuse:w:0xFF:m

 鳥よけ1号機のPro Mini 5Vについては、efuse:0xFEとしてBODを1.8Vにして、スケッチもavrdudeで書き込んでおき、エネループをフル充電して現在、コンスタントに約1ヶ月もっている電池がどのくらい長持ちするのか観察してみることにします。

2020/09/14

 BODをいじる前、1ヶ月もっていた鳥よけ1号機(PIR+砲弾型LED)、2週間しかもたない2号機(RCWL0516+砲弾型LED)のBODを2.7Vから1.8Vに下げてみたのですが、1号機は逆に1週間もちが短くなった挙げ句、4本中2本の電池が過放電状態になり、2号機は変わらないという結果になりました...。

 2号機は、もう1度試してみてはいるものの、何れもエネループ4本で稼働させており、検知回数による電力消費の相違はあるにしても、複数本電池を使うとどれか1本だけ急激に減るなど電流消費が偏ることがままあることから、今回の1号機については、電流消費が2本に偏った上、BODを下げたため、より消費してしまった結果ではないかと。

 もしそうなら、電池1本ならBODを下げる効果は得られるが、数本の場合、必ずしも期待した結果にならない可能性があるのではと思うに至っていますが、これいかに。

Arduinoの各ボードにも複数種類ある場合がある

2017/07/10

 Arduinoシリーズには、いろんなタイプがあり、それとは別にバージョンアップを重ねてきたらしきUnoにも数タイプあるようで現時点で自身は、何れもArduino Uno R3らしき、Atmega328PというICが1つのものとAtmega328P+Atmega16U2という2つのICを持ったUno互換機を2種類持っています。

 当初は、Unoに複数あることも知らなかったのですが、Arduino関連パーツを買っているAmazon/HiLetgoでも複数タイプを扱っていることに気づき、何が違うのか比べてみようくらいのつもりであとから2つICが載ったものを買ってみた次第。

 買って手元に届いた直後は、Atmega328Pの石の大きさの違い程度と思いましたが、よく見れば、Atmega16U2と書かれた石も別途載っているし、Atmega328Pの石の大きさも違えば、小さい方ははんだ付けされていますが、大きい方はICソケットに刺さっており、容易に外すことができるタイプだったりします。

 それ以外にも大きく違うらしく、それでも今ひとつピンとはきませんが、Atmega8U2/16U2/32U2などがあり、16U2はUno用のものらしいこと、その石は、FTDIモジュールを使わずにシリアルUSB変換するためのブートローダ専用であることらしいことくらいはわかりました。

 ちなみにAtmega328Pの前は、Atmega328というICチップ名だったらしいし、データシートを眺めると328PのあとにAUとかPUと付くものもあるらしい、何れにしても、これらは品名というべきなのか、実際には、Atmel Mega 328(Atmel社のMega328)というらしいし、これらはUnoやPro MiniなどのICであって他のボードでは異なる石が載っているらしい。

Arduinoで電池を使うならsleepが有効

2017/07/10

 電池でArduinoボードを動かすと、そのままでは、連続稼働で1日程度持てばよい方、が、sleep機能、その他を使うと用途にもよるでしょうが、数ヶ月、1〜2年持つようにすることもできるらしい。

Arduinoボードでピンヘッダの半田付けを要するもの

2017/07/10

 Arduinoボードには、Pro MiniやNanoのように実装時には、基本的にピンヘッダの半田付けを要するものがありますが、実験・検証時は、ブレッドボードに置いてジャンパワイヤのピンを挿したり、Pro MiniならFTDIモジュールに半田付けされたピンヘッダをすっと挿すだけということもあるでしょう。

 そんな時、単に接触がよろしくないということに起因してスケッチやブートローダを書き込むことができないなど、まるでボードの不具合かと思うような事象に遭遇することがあるので指や手で抑えたり、更にFTDIモジュールに挿すだけの場合には、傾きを微妙に変えてみたりするなど、いろいろやってみる必要があります。

 Arduinoerたち(勝手に名付けた)の中には、そのようなブレッドボードの抱える負の一面をもって避ける人もいるようです。

 つまり、全てがそうというわけではありませんが、うまく半田付けされてさえいれば、ピンヘッダが装着された状態の場合、そのような不具合は起きない可能性が多分にあるということ。

 それでも動作確認で半田付けしない状態で試したいという場合もあるだろうから、その際は、十二分に注意の上にも注意したいところ。

ArduinoISP

2017/07/10

 ArduinoISPとは、FTDIモジュールの機能をArduinoボードで代替可能なArduino IDE上のサンプルスケッチのこと。

 検索するとUnoやPro Mini 3.3V/8MHzで構成する情報はあるもPro Mini 5V/16MHzの情報はなさげだったので作ってみたが、Nanoの方がシンプルにできそうなので後日Nanoで作り直す予定(見る限り1件くらい?少ないながらもNanoによるArduinoISPの情報はあった)。

Arduino IDEでボードを追加する新旧2通りの方法

2017/07/10

 Arduino IDEには、複数のボードがデフォルトで登録済みですが、必要に応じて更に追加することができます。

 Arduino IDE 1.6.4だか1.6.5?以前までは、board.txtへの必要情報追記、以後は、[ファイル] => [環境設定]で表示されたポップアップ上の[追加のボードマネージャのURL:]に当該ボードで説明されているはずのパスにあるjsonファイルをフルパス指定、環境設定パネルを閉じ、[ツール] => [ボード] => [ボードマネージャ]で表示されるポップアップの中から当該ボードを選んでインストール、そのままか、IDEを再起動すれば[ボード]メニューに追加されます。

Arduino Uno+イーサネットシールドにはバグがあるらしい

2017/05/22

 Arduino UnoとUno用のイーサネットシールドW5100などには、イーサネットシールド自体をリセットできないというバグがあるらしい。

 コンデンサを入れたり、W5100のRESETピンを曲げたりすることで対処できるようですが、後者を試した限り、対処可能なケースとそうでないケースに遭遇、その後の検証や前者の検証は、まだ、やってみていません。

 ちなみにICメーカーは複数あるのか、他のICもそこそこ熱くなりますが、WIZnetのICは、他に比べ、更に熱めといった情報もある模様。

LinuxでArduino IDEを使う場合、dialoutグループにユーザーを追加

2017/03/03

 Arduino IDEをLinuxで使う場合、dialoutグループ(なければ作成)にユーザーを追加する必要があります。

 そうでないと/dev/tty*へのアクセスに管理者(root)権限が必要になり、ひいてはArduino IDEをrootで起動しなければならなくなる。

 尚、途中で/dev/tty*へのアクセスできなくなった場合、何らかの事情で当該ユーザーがdialoutグループに存在しないことも考えられるので要確認。(それが原因でなければ、とりあえず、root起動で使うしかなさ気。)

Arduino IDEは複数バージョン混在で使うことも一応可能

2017/03/03

 Arduino IDEには、Web版とダウンロード版があります。

 Linuxだけなのか?ダウンロード版は、インストールせずに展開するだけにしておけば複数のバージョンの共存が可能。

 ただし、インストールしないと、パスが通っていないため、そのままでは、端末からavrdudeを直接実行する場合などにavrdudeコマンド自体やarduino.confファイルなどをフルパス指定する必要があります。

Arduinoボードには数多くの種類がある

2017/03/03

 Arduinoボードには、あらゆる用途などに対応すべく、Uno、Leonard、Mega、Pro Mini、Mini、Lilypadなどの他、たくさんの種類があります。

 互換機に関しては、公式品と全く同一とは限らず、同じ名称のボードでも使用パーツや配置が(もしかすると回路も?)、異なったりするものもあります。

Arduinoはフリーハードウェア

2017/03/03

 Arduinoはフリーソフトウェアならぬフリーハードウェアであり、設計図・回路図も公開されており、公式品と誤認されないよう「〜互換機」などと表記する必要はあるも一個人が互換機を作って販売することすら可能らしく、多くの激安互換ボードも市場に出回っており、「〜ino」といった名称のオリジナル派生ボードも販売されていることがあります。

 「〜ino」といったメーカーオリジナル派生ボードはともかく、そのほとんどが中国製と思われる「〜互換機」などとして販売されているものの多くは、往々にして複数の製造者から仕入れた販売代理店によるものの模様、特に激安品については、仕様への準拠や何らかの安全回路の有無、使用パーツ、回路の安全性、はんだ付け状態、同じ商品として売られているものでも構成品や場合によっては仕様が同じとは限らないなど全てに渡って公式品と同等であるとは限らず、そうでないケースの方が多い可能性もあるので要注意。

 また、複数個セットになった電子パーツなどの中には、数の過不足があったり、1つ〜2つだけタイプが違うといったことも多分にあり得るので買うなら、ある程度の覚悟が必要。

 尚、輸入となる場合、相手国内の輸送、通関、自国内輸送など含め、届くまで1〜2週間程度は当たり前にかかると思っていた方がよいでしょう。

公式ArduinoボードにはArduinoとGenuinoがある

2017/03/03

 アメリカで設計、イタリアで製造しているらしきArduinoは、2005年に初めてリリースされ、今に至り、アメリカ国内ではGenuino、それ以外の国・地域ではArduinoと呼ぶらしい。

 IDEにもarduino.cc製とarduino.org製の2種類がある模様ですが、ArduinoとGenuinoが存在することと関係するのか、前者がより多く普及していて情報が多いということなのか、少なくとも日本で使うなら前者を使うのが無難らしい。

ホーム前へ次へ