30ドルの3つのじんましんの重量のSMS監視

私のロゴ







いいえ、これは商業的なオファーではありません。記事を読んだ後に収集できるシステムコンポーネントのコストです。







少しの背景:







しばらく前に、私はミツバチを捕まえることに決めました。そして、彼らは現れました...シーズン全体の間、冬から出ませんでした。

そして、これはすべてがうまくいっているように見えたという事実にもかかわらず-秋のルアー、寒さの前に暖まる。

ハイブは、40 mmのボードから10フレームの古典的な木製のDadanシステムでした。

しかし、その冬、経験豊富な養蜂家でさえ、気温の変動のために通常よりもはるかに多くを失いました。







そこで、巣箱の状態監視システムのアイデアが生まれました。

Habr-eに関するいくつかの記事の公開と養蜂家のフォーラムでのコミュニケーションの後、私は単純なものから複雑なものに進むことにしました。

重みは議論の余地のない唯一のパラメーターですが、原則として、既存のシステムは1つの「参照」ハイブのみを監視します。

彼に何か問題が生じた場合(たとえば、群れの飛行、蜂の病気)、指標は無関係になります。







そのため、1つのマイクロコントローラーで3つのハイブの重量変化を一度にモニターし、その後に他の「バン」を追加することが決定されました。

その結果、18650のバッテリーを1回充電し、1日に1回統計を送信することで、実行時間が約1か月の自律システムが実現します。

一枚の写真によると、スキームを使用しなくても設計を繰り返すことができるように、できるだけデザインを単純化しようとしました。







作業のロジックは次のとおりです。最初の起動/リセット時に、ハイブの下に設置されたセンサーの測定値がEEPROMに保存されます。

さらに、毎日、日没後、システムは「目覚め」、証言を読み、1日あたり、および電源を入れた瞬間から体重の変化とともにSMSを送信します。

さらに、バッテリーの電圧値が送信され、3.5 Vに低下すると、充電の必要性に関する警告が発行されます。これは、3.4 V未満では通信モジュールがオンにならず、重量表示が既に「浮いている」ためです。







「それがどのように始まったかを覚えていますか?すべてが初めてでした。」

その始まり

はい、ロードセルとワイヤのみが最終バージョンまで生き延びましたが、最初に最初のものでしたが、それは元々のような「鉄」のセットでした。

実際、ケーブルベイは不要で、30mと同じ価格であることが判明しました。







3つのsmd-LEDと50ポイントの通常の(出力)はんだ付けを分解することを恐れていない場合は、行ってください!







したがって、次の機器/材料のセットが必要です。







  1. Arduino Pro Mini 3V

    KB 33 / LB 33 / DE A10マーキングチップでは-リニアコンバーターマイクロチップに注意を払う必要があります-正確に3.3Vである必要があります

    店内の回路基板は、5ボルトのレギュレータと16 MHzの水晶を使用していることが判明しました。
  2. CH340チップ上のUSB-Ttl-5ボルトでもかまいませんが、マイクロコントローラーのファームウェアの実行中は、GSMモジュールを焼き付けないようにArduinoをGSMモジュールから切断する必要があります。

    PL2303チップ上のボードは、Windows 10では機能しません。
  3. GSM通信モジュールGoouu Tech IOT GA-6-BまたはAI-THINKER A-6 Mini。

    なぜあなたはそれにとどまったのですか? Neoway M590-タンバリンとの個別のダンスを必要とするデザイナー、GSM SIM800L-は、3ボルトのArduinoとの調整が必要な非標準の2.8Vレベルのロジックを好まなかった。

    さらに、AiThinkerソリューションの電力消費は最小限に抑えられています(SMSを送信するとき、100 mAを超える電流は表示されませんでした)。
  4. GSM GPRS 3DBIアンテナ(上の写真-「テール」付きの長方形のスカーフ、9時間)
  5. あなたの養蜂場の場所で良いカバレッジを持っているオペレーターのためのスターターパッケージ。

    はい、まずパッケージを通常の電話でアクティベートし、入り口でPINリクエストを無効にし、アカウントを補充する必要があります。

    現在、「センサー」、「IoT」のスタイルの名前を持つ多くのオプションがあります-それらはわずかに低い月額料金を持っています。
  6. デュポンワイヤー20cmマザーマザー-3個 (ArduinoをUSB-TTLに接続するため)
  7. 3個 HX711-スケール用ADC
  8. 最大50 kgのロードセル6個
  9. 15メートルの4芯電話ケーブル-重量モジュールをARDUINOに接続します。
  10. GL5528フォトレジスタ(これは重要であり、暗抵抗1MOhmおよび耐光抵抗10-20kOhm)および2つの従来の20k抵抗
  11. Arduinoを通信モジュールに取り付けるための、厚さ18x18mmの両面「粘着テープ」。
  12. バッテリーホルダーは18650で、実際、バッテリー自体は〜2600mAhです。
  13. 少量のワックスまたはパラフィン(アロマランプタブレットキャンドル)-防湿用HX711
  14. ロードセルのベース用の木片25x50x300mm。
  15. センサーをベースに取り付けるための4.2x19 mmプレスワッシャー付きの12本のセルフタッピングネジ。


バッテリーは分解するラップトップから取り出すことができます-新しいものよりも何倍も安く、容量は中国のUltraFireの容量よりもはるかに多くなります-私は1,500対450を得ました(これは6800の火の場合です;-)







さらに、曲がった手、EPSN-25はんだごて、ロジン、POS-60はんだが必要です。







はんだごて







5年前、ソビエトのはんだごてに銅の刺し傷を付けて使用しました(そこにはんだ付けステーションがありませんでした。テストドライブのためにEPSN回路を完成させました)。

しかし、彼の失敗と(d)クリスマスツリーの下でのいくつかの中国の怪物の後、後者はスパルタと呼ばれました-名前が止まったのと同じくらい厳しいもの

温度コントローラー付きの製品。







さあ、行こう!







GSM A6







開始するには、2つのLEDがGSMモジュール(オレンジ色の楕円で囲まれた場所)からはんだ付けされます。

パッド付きのSIMカードをプリント基板に挿入します。写真の斜めの角は矢印で示されています。







Arduino Pro Mini 3v







次に、Arduinoボード上のLED(正方形のチップの左側に楕円)を使用して同様の手順を実行します。

櫛を4つの接点(1)にはんだ付けし、

2つの20k抵抗器を取り、片側のリードをねじり、ねじれをコンタクトホールA5にはんだ付けし、残りのリードをRAWおよびGND arduinki(2)にはんだ付けし、

フォトレジスタを10 mmに短縮し、GNDおよびD2ボードの結論にはんだ付けします(3)。







今は時間です 青い電気テープ 両面テープ-通信モジュールのSIMカードホルダーに接着し、上部-arduino-赤い(銀色)ボタンが私たちに面し、SIMカードの上にあります。







電源をはんだ付けします。さらに、通信モジュールのコンデンサ(4)からRAW arduinoピンにはんだ付けします。

実際には、通信モジュール自体が電源に3.4-4.2Vを必要とし、そのPWR接点が降圧降圧コンバータに接続されているため、リチウムイオン電圧からの動作には、回路のこの部分をバイパスして適用する必要があります。







逆に、arduinoでは、リニアコンバーターを介して電源を起動します。低電流では、ドロップアウト電圧降下は0.1Vです。

しかし、安定化された電圧をHX711モジュールに印加することにより、より低い電圧でモジュールを改良する必要がなくなります(同時に、この操作の結果としてノイズが増加します)。







次に、ジャンパー(5)をPWR-A1、URX-D4およびUTX-D5接点、GND-Gアース(6)、そして最後に18650バッテリーホルダー(7)からの電力をはんだ付けし、アンテナ(8)を接続します。

次に、USB-TTLコンバーターを使用して、RXD-TXDおよびTXD-RXD、GND-GND接点をデュポンワイヤでARDUINO(櫛1)に接続します。







最初のバージョン







上の写真-デバッグに使用されたシステムの最初のバージョン(3つのうち)。







そして、しばらくの間、はんだごてから脱却し、ソフトウェア部分に移ります。

Windowsのアクションのシーケンスについて説明します。

まず、 Arduino IDEプログラムをダウンロードしてインストール/解凍する必要があります-現在のバージョンは1.8.9ですが、1.6.4を使用しています







簡単にするために、アーカイブをフォルダーC:\ arduino- "your_version_number"に解凍します。内部には、/ dist、ドライバー、例、ハードウェア、java、lib、ライブラリ、リファレンス、ツールフォルダー、およびarduino実行可能ファイル(など)があります。







ここで、 HX711 ADCを操作するためのライブラリ(緑色の[クローンまたはダウンロード]ボタン)が必要です。ZIPをダウンロードしてください。

コンテンツ(フォルダーHX711-master)は、ディレクトリC:\ arduino- "your_version_number" \ librariesに配置されます。







そしてもちろん、 USB-TTLのドライバーは同じgithubからのものです-解凍されたアーカイブから、インストーラーのSETUPファイルが起動されます。







OK、プログラムCを実行して構成します。\ arduino- "your_version_number" \ arduino







プログラムインターフェース







「ツール」アイテムに移動します-「Arduino ProまたはPro Mini」ボード、Atmega 328 3.3V 8 MHzプロセッサを選択します。ポートはシステムCOM1以外の番号です(USB-TTLアダプターを接続したCH340ドライバーをインストールすると表示されます)







OK、次のスケッチ(プログラム)をコピーしてArduino IDEに貼り付けます







char phone_no[]="+123456789012"; // Your phone number that receive SMS with counry code #include <avr/sleep.h> // ARDUINO sleep mode library #include <SoftwareSerial.h> // Sofrware serial library #include "HX711.h" // HX711 lib. https://github.com/bogde/HX711 #include <EEPROM.h> // EEPROM lib. HX711 scale0(10, 14); HX711 scale1(11, 14); HX711 scale2(12, 14); #define SENSORCNT 3 HX711 *scale[SENSORCNT]; SoftwareSerial mySerial(5, 4); // Set I/O-port TXD, RXD of GSM-shield byte pin2sleep=15; // Set powerON/OFF pin float delta00; // delta weight from start float delta10; float delta20; float delta01; // delta weight from yesterday float delta11; float delta21; float raw00; //raw data from sensors on first start float raw10; float raw20; float raw01; //raw data from sensors on yesterday float raw11; float raw21; float raw02; //actual raw data from sensors float raw12; float raw22; word calibrate0=20880; //calibration factor for each sensor word calibrate1=20880; word calibrate2=20880; word daynum=0; //numbers of day after start int notsunset=0; boolean setZero=false; float readVcc() { // Read battery voltage function long result1000; float rvcc; result1000 = analogRead(A5); rvcc=result1000; rvcc=6.6*rvcc/1023; return rvcc; } void setup() { // Setup part run once, at start pinMode(13, OUTPUT); // Led pin init pinMode(2, INPUT_PULLUP); // Set pullup voltage Serial.begin(9600); mySerial.begin(115200); // Open Software Serial port to work with GSM-shield pinMode(pin2sleep, OUTPUT);// Itit ON/OFF pin for GSM digitalWrite(pin2sleep, LOW); // Turn ON modem delay(16000); // Wait for its boot scale[0] = &scale0; //init scale scale[1] = &scale1; scale[2] = &scale2; scale0.set_scale(); scale1.set_scale(); scale2.set_scale(); delay(200); setZero=digitalRead(2); if (EEPROM.read(500)==EEPROM.read(501) || setZero) // first boot/reset with hiding photoresistor //if (setZero) { raw00=scale0.get_units(16); //read data from scales raw10=scale1.get_units(16); raw20=scale2.get_units(16); EEPROM.put(500, raw00); //write data to eeprom EEPROM.put(504, raw10); EEPROM.put(508, raw20); for (int i = 0; i <= 24; i++) { //blinking LED13 on reset/first boot digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); delay(500); } } else { EEPROM.get(500, raw00); // read data from eeprom after battery change EEPROM.get(504, raw10); EEPROM.get(508, raw20); digitalWrite(13, HIGH); // turn on LED 13 on 12sec. delay(12000); digitalWrite(13, LOW); } delay(200); // Test SMS at initial boot // mySerial.println("AT+CMGF=1"); // Send SMS part delay(2000); mySerial.print("AT+CMGS=\""); mySerial.print(phone_no); mySerial.write(0x22); mySerial.write(0x0D); // hex equivalent of Carraige return mySerial.write(0x0A); // hex equivalent of newline delay(2000); mySerial.println("INITIAL BOOT OK"); mySerial.print("V Bat= "); mySerial.println(readVcc()); if (readVcc()<3.5) {mySerial.print("!!! CHARGE BATTERY !!!");} delay(500); mySerial.println (char(26));//the ASCII code of the ctrl+z is 26 delay(3000); // raw02=raw00; raw12=raw10; raw22=raw20; //scale0.power_down(); //power down all scales //scale1.power_down(); //scale2.power_down(); } void loop() { attachInterrupt(0, NULL , RISING); // Interrupt on high lewel set_sleep_mode(SLEEP_MODE_PWR_DOWN); //Set ARDUINO sleep mode digitalWrite(pin2sleep, HIGH); // Turn OFF GSM-shield delay(2200); digitalWrite(pin2sleep, LOW); // Turn OFF GSM-shield delay(2200); digitalWrite(pin2sleep, HIGH); digitalWrite(13, LOW); scale0.power_down(); //power down all scales scale1.power_down(); scale2.power_down(); delay(90000); sleep_mode(); // Go to sleep detachInterrupt(digitalPinToInterrupt(0)); // turn off external interrupt notsunset=0; for (int i=0; i <= 250; i++){ if ( !digitalRead(2) ){ notsunset++; } //is a really sunset now? you shure? delay(360); } if ( notsunset==0 ) { digitalWrite(13, HIGH); digitalWrite(pin2sleep, LOW); // Turn-ON GSM-shield scale0.power_up(); //power up all scales scale1.power_up(); scale2.power_up(); raw01=raw02; raw11=raw12; raw21=raw22; raw02=scale0.get_units(16); //read data from scales raw12=scale1.get_units(16); raw22=scale2.get_units(16); daynum++; delta00=(raw02-raw00)/calibrate0; // calculate weight changes delta01=(raw02-raw01)/calibrate0; delta10=(raw12-raw10)/calibrate1; delta11=(raw12-raw11)/calibrate1; delta20=(raw22-raw20)/calibrate2; delta21=(raw22-raw21)/calibrate2; delay(16000); mySerial.println("AT+CMGF=1"); // Send SMS part delay(2000); mySerial.print("AT+CMGS=\""); mySerial.print(phone_no); mySerial.write(0x22); mySerial.write(0x0D); // hex equivalent of Carraige return mySerial.write(0x0A); // hex equivalent of newline delay(2000); mySerial.print("Turn "); mySerial.println(daynum); mySerial.print("Hive1 "); mySerial.print(delta01); mySerial.print(" "); mySerial.println(delta00); mySerial.print("Hive2 "); mySerial.print(delta11); mySerial.print(" "); mySerial.println(delta10); mySerial.print("Hive3 "); mySerial.print(delta21); mySerial.print(" "); mySerial.println(delta20); mySerial.print("V Bat= "); mySerial.println(readVcc()); if (readVcc()<3.5) {mySerial.print("!!! CHARGE BATTERY !!!");} delay(500); mySerial.println (char(26));//the ASCII code of the ctrl+z is 26 delay(3000); } }
      
      





最初の行の引用符で、char phone_no [] = "+ 123456789012"; -123456789012の代わりに、SMSの送信先の国番号を電話番号に入れます。







ここでチェックボタンをクリックします(上のスクリーンショットのナンバーワンの上)-コンパイルが下にある場合(スクリーンショットのトリプルの下)、マイクロコントローラーをフラッシュできます。







そのため、USB-TTLはARDUINOとコンピューターに接続され、充電されたバッテリーをホルダーに入れます(通常、新しいarduinoでは、LEDは1秒に1回の頻度で点滅を開始します)。







さて、ファームウェア-マイクロコントローラの赤い(シルバー)ボタンを押すようにトレーニングしています-これは特定の瞬間に厳密に行う必要があります!!!

ありますか 「アップロード」ボタン(スクリーンショットの2つの上)をクリックし、インターフェースの下部(3つの画面の下)の行を注意深く見てください。

碑文「コンパイル」が「ダウンロード」に置き換えられるとすぐに-赤いボタンを押して(リセット)-すべて問題なければ-USB-TTLアダプターが嬉しく点滅し、インターフェースの下部にある「ダウンロード済み」という碑文







テストSMSが電話に届くのを待っている間に、プログラムの仕組みを説明します。







デバッグスタンドの2番目のバージョン







写真では-デバッグスタンドの2番目のバージョン。







システムの最初の電源投入時に、EEPROMのバイト500と501をチェックします;これらが等しい場合、キャリブレーションデータは書き込まれておらず、アルゴリズムはセットアップセクションに進みます。

オンにすると、フォトレジスタがシェーディングされます(ペンのキャップ付き)-パラメータリセットモードがアクティブになった場合も同じことが起こります。







初期レベルのゼロを修正してから重量の変化を測定するだけなので、ひずみゲージは既に巣箱の下に取り付けられているはずです(まだ何も接続していないのでゼロになります)。

arduinoでは、ピン13の内蔵LEDが点滅します。

リセットが発生しない場合、LEDは12秒間点灯します。

その後、テストSMSがメッセージ「INITIAL BOOT OK」とバッテリー電圧とともに送信されます。

通信モジュールがオフになり、3分後にArduinoボードがHX711 ADCボードをスリープモードにし、自動的にスリープ状態になります。

このような遅延は、動作中のGSMモジュールからの干渉をキャッチしないようにするために行われました(電源をオフにした後、しばらく「フォント」します)。







さらに、2番目のピンの光センサーに割り込みがあります(プルアップ機能によりリフトが有効になります)。

この場合、さらに3分間トリップした後、フォトレジスターの状態がチェックされ、繰り返し/誤検出が除外されます。

特徴的なのは、調整なしで、曇りの天気では天文学的な日没から10分後、晴天では20分後にシステムが機能することです。

はい、システムがリセットされないたびに、少なくとも最初のHX711モジュールを接続する必要があります(ピンDT-D10、SCK-A0)







次に、ロードセルの読み取り値が取得され、前の操作(Hiveの後の行の最初の数)からの重量変化が計算され、最初の開始からバッテリー電圧がチェックされ、この情報がSMSの形式で送信されます。







サンプルシステム







ところで、SMSを受信しましたか? おめでとうございます! 途中です! バッテリーはホルダーから取り外すことができますが、コンピューターをこれ以上必要としません。







ちなみに、フライトコントロールセンターは非常にコンパクトであることが判明したため、マヨネーズの瓶に収まるようになりました。







はい、スリープ状態のシステムは通信モジュールのために約2.3mA-90%を消費します-完全にオフになるわけではありませんが、スタンバイモードになります。







ヒューストンではない







センサーの製造に進みます。まず、センサーのレイアウトを見てみましょう。







センサーの位置







これがハイブの平面図です。







古典的には、4つのセンサーが隅に取り付けられています(1,2,3,4)







異なる方法で測定します。 むしろ、3番目でも。 BroodMinderのメンバーが異なるように:







ひよこ







この設計では、センサーは位置1と2に設置され、ポイント3.4はビームに基づいています。

その後、センサーにかかる重量は半分になります。

はい、この方法の精度は劣りますが、ミツバチが巣箱の壁に沿ったハニカムからの「舌」ですべてのフレームを構築することは想像しにくいです。







したがって、センサーをすべてポイント5に減らすことを提案します。システムを保護する必要はありません。また、ライトハイブを使用する場合は、1つのセンサーを使用する必要があります。







センサーとセンサーオプション







一般に、HX711で2種類のモジュール、2種類のセンサー、およびそれらを接続するための2つのオプションをテストしました-フルホイートストンブリッジ(2センサー)と、2番目の部分に許容誤差0.1%の1k抵抗を追加した場合の半分。

ただし、後者の方法は望ましくないため、センサーメーカーでも推奨されないため、最初の方法についてのみ説明します。







そのため、1つのハイブに2つのひずみゲージと1つのHX711モジュールを設置します。配線図は次のとおりです。













ADCボードからarduinoまで、5メートルの4コア電話ケーブルがありますミツバチはハイブのGSMデバイスを好まないことを覚えています







一般に、センサーには8 cmの「テール」を残し、ツイストペアをクリーニングし、上の写真のようにすべてのはんだ付けを解除します。







極性に注意してください!







私はもう一度繰り返します-極性を観察してください!







ロードセルの黒い線がHX711ボードのE +に接続されている場合、赤はA +







それ以外の場合は、体重を増やす代わりに減量されますが、問題ではありません。この場合、ADCボード上​​のロードセル(A +およびA-)から赤いワイヤを交換するだけで十分です。







建具を開始する前に、適切な容器にワックス/パラフィンを入れて、水浴で溶かします。







次に、ビームを取得し、100 mmの3つのセグメントに分割します







次に、幅25 mm、深さ7〜8 mmの縦溝を、ノコギリとノミを使用してマークし、余分な部分を取り除きます。U字型のプロファイルが表示されます。







ワックスは温まりましたか? -私たちはそこにADCボードを浸します-これは湿気/霧からそれらを保護します:







湿気に対するADCの保護







私たちはそれをすべて木製のベースに置きます(腐敗から防腐剤で処理する必要があります):







組立







最後に、ネジでセンサーを固定します。







レディセンサー







青い電気テープには別のオプションがありましたが、人道上の理由で私はそれを持っていません;-)







Arduinoの側面から、次のことを行います。







電話ケーブルをきれいにし、色の付いたワイヤーを撚り合わせます。







その後、写真のようにボードの接点にはんだ付けします。







ファイナル







これで、最後のチェックのために、センサーを円のセクターに置き、上に合板を置き、コントローラーをゼロにします(万年筆のフォトダイオードにキャップを付けてバッテリーを置きます)。







同時に、arduinoのLEDが点滅し、テストSMSが来るはずです。







次に、光電池からキャップを取り外し、1.5リットルのペットボトルに水を集めます。

ボトルを合板に置き、電源を入れてから数分経過したら、キャップをフォトレジスターに戻します(日没をシミュレートします)。







3分後、arduinoのLEDが点灯し、すべての位置で体重が約1 kgのSMSを受信します。







おめでとうございます! システムが正常に組み立てられました!







システムを再び動作させると、重みの最初の列にゼロが表示されます。







はい、実際の条件では、フォトレジスタを垂直に上に向けることが望ましいです。







次に、以下の使用に関する簡単なマニュアルを提供します。







  1. ハイブの後壁の下にひずみゲージを取り付けます(前面の下に、厚さ約30 mmの梁/板を置きます)
  2. フォトレジスタをシェーディングし、バッテリーを入れます-LEDが点滅し、テキスト「INITIAL BOOT OK」を含むテストSMSが来るはずです
  3. ミツバチを操作するときにワイヤーが干渉しないように、中央ユニットを巣箱からできるだけ遠くに配置します。

    毎晩、日没後、SMSは1日あたりの重量の変化とともに、打ち上げの瞬間から到着します。

    バッテリー電圧が3.5Vに達すると、SMSは「!!! CHARGE BATTERY !!!」という行で終了します。

    2600mAhの容量を持つ1つのバッテリーでの動作時間は約1か月です。

    バッテリーを交換する場合、ハイブの重量の日々の変化は記憶されません。


次は?







  1. これらすべてをgithubのプロジェクトに入れる方法を理解するには
  2. Palivodyシステム(または角のある人)の巣箱で3匹のミツバチの家族を開始する
  3. 「バンズ」-湿度、温度の測定、そして最も重要な-蜂の鳴き声の分析を追加します。


すべてを占領しましょう、心からあなたのもの、電気の養蜂家アンドレイ







PSこのトピックに関する新しい出版物については、 beefree.xyzをご覧ください








All Articles