
実際、このタスクは最も簡単でした。 しかし、いつものように、すべてが緊急です。 産業用ロガーにお金をかけたくありませんでしたが、Arduino UNOショールは在庫がありました。 質問を5分間グーグルで検索し、このタスクに最適な適切な銘板を見つけました。 ロガーに接続する必要があったDOG-4産業用ガス分析器は、紙のレコーダーに関する結論しかありません。 結論は、分析された各ガス(NOおよびSO2)の電流0..5 mAです。

インターネットで見つかった銘板は、 この (非常に良い)店で注文され、翌日ノボシビルスクからトムスクに届けられました。 説明ラベルは非常に便利で、プロトタイピング用のプラットフォームがあり、この単純なプロジェクトで使用したいと考えていました。 たとえば、グラウンドに引き込まれた1kΩの抵抗器にレコーダーの電流出力をロードするだけで十分であり、測定範囲全体にわたってデバイスからデジタルデータを受信します。 10ビットArduinoのADCビットは技術者に非常に満足していました(紙テープからデータをカットする方がはるかに楽しいでしょう)。 パッケージが届いた、美しいパッケージング、オンラインストアでの方法の説明。 プロトタイピングパッドの存在が示されており、その上に2つの抵抗のみをはんだ付けする必要がありました。

しかし、剖検により、ネームプレートが説明と一致しないことが示されました。 これが実際に箱に入っていたものです。

この表によると、ネームプレートはArduinoの4つのピンを使用します。 ここで、神に感謝します、何も台無しにされていません。

このデバイスの正しい操作を自分でプログラムし始めることをすでに考えていたので、Arduino IDE 1.0+開発者のバージョンでは、何らかの理由で#include "WProgram.h"の代わりに#include "Arduino.h"の定義を使用し始めました。 「したがって、古いライブラリは、Arduino IDEの以降のバージョンで動作しなくなりました。 メーカーのウェブサイトから図書館に戻ると、この理由で「入手」できなかったことがわかりました。 状況は非常に単純に扱われます。 拡張子が.hおよび.cppのファイルでは、#include "WProgram.h"という行をこのような構造に置き換える必要があります
#if defined(ARDUINO) && ARDUINO >= 100 #include "Arduino.h" #else #include "WProgram.h" #endif
その後、ライブラリはArduino IDEのどのバージョンでも動作します。 自分で実行することも、このリンクから既に修正されたバージョンのライブラリをダウンロードすることもできます。
ガスアナライザー用のロガーの最終的なコードは、この投稿にとって興味深いものではありませんが、レビューのために簡単な例を示します。 これは、データをSDカードに書き込むための作業コードのように見え、5秒ごとに「Hello、Habrahabr!」というフレーズがファイルに書き込まれます。
#include "FileLogger.h" // 3,3 8 #define MEM_PW 8 void setup(void) { pinMode(MEM_PW, OUTPUT); // 8 digitalWrite(MEM_PW, HIGH); } void loop(void) { byte buffer[] = "Hello, Habrahabr! \r\n"; unsigned long length = sizeof(buffer)-1; // ! int result = FileLogger::append("data.log", buffer, length); delay(5000); // 5 }
いくつかの重要なポイント。 記録を開始する前に、カード(FAT16)をフォーマットし、プログラムで使用される名前の空のファイルを開く必要があります。 この例では、これはdata.logです。 カードをネームプレートから「ホット」プレートに引っ張らないでください。 digitalWriteコマンド(MEM_PW、LOW)でソフトウェアの電源をオフにすることをお勧めします。
データが可変長の場合、文字列の長さの計算を使用します。 例では、これは符号なしlong length = sizeof(buffer)-1です。 フレーズの長さが不正確な場合、録音プロセスが誤動作し、データの代わりに破損したファイルを取得する可能性があります。
結論
ネームプレートは非常に機能していることが判明しました。 優れたデータ書き込み速度。 もちろん、説明が真実ではないのはあまり楽しいことではありませんが、面白いだけでなく、ちょっとした脳みそを与えることもできます。 ちなみに、同じネームプレートはミニSDにも使用できます。 このようなカードのコネクタは背面にあります。
みなさん、良い一日を!