リモートコントロールを備えた.NET Micro Frameworkのスクールベル

この投稿は、 FEZ Dominoデバッグボードを使用した学校の鐘の提出の実装を開示しています。 スケジュール管理は、Webページを通じて行われます。 .NET Micro Frameworkは FEZ Dominoに移植されました。 C#プログラミング言語。 ポストの先史時代は...
Khabrovchan prostosergikが投稿したNew Year's Raspberry-HD44780スクリーンをRaspberry Piに固定します 。 私とprostosergikの間のコメントで、これらのタスクにRaspberry Piを使用することの妥当性について紛争が生じました。 prostosergikはコメントで、Raspberry Piの完成した学校通話プロジェクトについてコメントしました。
リモコン付きのRaspberry Piのポストスクールベルは、後に公開されました。 次に、このタスクを実装する番です。

連絡の結果、彼は次のTKを形成しました。
目的:教育機関での学校呼び出しのスケジュールに従って呼び出し含める
操作のメカニズム:接点リレーの信号「1」に従って呼び出しが行われます。 リレーが閉じると、ベルが鳴ります。
必要条件

実装
Arduino UNO R3の技術的な制限のため、このプロジェクトを完全に実装することは不可能でした。
コントローラーを選択するときは、次のルールに従ってください。

タイトルには、偶然ではなくFEZ Dominoが記載されていません。 .NET Micro Frameworkで実行されているマイクロコントローラー間のプログラムコードは、バージョンに応じて、ほとんど変更なしで常に移植可能です。 この場合、FEZ Dominoは、機能を犠牲にすることなく、 NET Duino Plus 2ボードに簡単に交換できます。

使用されるコンポーネントのリスト:

すべてのコンポーネントは、 Aliexpress.comで購入することができ、かなり安くなります。
FEZ Domino仕様:
画像

残念ながら、FEZ Dominoは長い間廃止されているため、以下が最も近いアナログです

配線図
画像
デバイスの写真:
平面図
画像
Fez Dominoバンドル、イーサネットシールド、I / O拡張シールド、スタックモード
画像
画像

デバイスの起動
起動時に、デバイスがフリーズした場合に備えて、WatchDogが20秒間インストールされます。
//Enable Watchdog GHI_LowLevel.Watchdog.Enable(1000 * 20); 

リセットカウンター
 GHI_LowLevel.Watchdog.ResetCounter(); 

ボタン割り込みの初期化
 //      FEZ_Components.Button Button_ManualCall = new FEZ_Components.Button(FEZ_Pin.Interrupt.Di5); //     FEZ_Components.Button Button_HardReset = new FEZ_Components.Button(FEZ_Pin.Interrupt.Di6); //     Button_ManualCall.ButtonPressEvent += new FEZ_Components.Button.ButtonPressEventHandler(Button_ManualCall_ButtonPressEvent); //     Button_HardReset.ButtonPressEvent += new FEZ_Components.Button.ButtonPressEventHandler(Button_HardReset_ButtonPressEvent); 

次に、スタンバイモードが5秒に設定され、デフォルト設定がリセットされます。 LEDが点灯し、「Starting ...」画面のテキストが表示されます。
SDメモリーカードからの設定の読み取り
 //  appset = new AppSettings(); appset.ReadSettings(); 

ネットワークの初期化
 netinter = new netinteface(); 

RTCから時間を読み取ります。 RTCはチップに統合されています。 クロックの進行を保証するには、v3.3バッテリーを接点に接続する必要があります
 Utility.SetLocalTime(RealTimeClock.GetTime()); 

NTPサーバーとの時刻同期ストリームを開始します。 同期間隔は設定で設定されます。
 Thread ThreadUpdateTimeNTP = new Thread(UpdateTimeNTPThread); ThreadUpdateTimeNTP.Start(); 

コールフローの開始。 現在の時刻と呼び出しの時刻を比較します。 偶然の場合、それは鳴ります。
 Thread ThreadTimeBells = new Thread(TimeBells); ThreadTimeBells.Start(); 

Webサーバーの起動
 Webserver server = new Webserver(); 

    .      string[] confstr = {appset.SyncTimeDelayMin.ToString(), appset.CurTimeBell[0].ToString("HH:mm"), … appset.CurTimeBell[7].ToString("HH:mm")}; server.StartServer(confstr); 

実装機能
Arduino UNOは、次の理由でほぼ即座に放棄されなければなりませんでした。
同時に、ネットワークおよびSDカードの操作はサポートされていません。 Ladyada Arduino Ethernet + SDには実装がありますが、開始できませんでした。
Arduinoは、2つの並列スレッドまたは2つの割り込みをサポートしています。
私の実装では、4つのストリームが判明しました。手動呼び出し配信のボタンの中断、NTPサーバーとの同期、呼び出しが行われた時間を追跡するためのスレッド、httpサーバーのサービスフローです。 Arduino UNOの場合、これは多すぎます。
Raspberry piのプロジェクトと比較して、Watchdogサポートの実装の容易さ。
残念ながら、物理的なイーサネットデータ伝送メディアの存在の監視は機能しません(デバイスがスイッチに接続されているかどうかを判断することは不可能です)。 物理的な中断が発生した場合、ネットワークを初期化する必要があります。 この問題を解決するオプションとして、ネットワーク上のノード(IPアドレス)を定期的にポーリング(ping)します。 応答がない場合は、ネットワークを再初期化します。 しかし、これはFEZ DominoマイクロコントローラーのCLRの欠陥です。
通話時間の追跡は、2番目の精度で行われます。 「不在着信」の状況を解消するために、以前の時間と新しい時間が保存されます。 「コールのスキップ」の状況は、プログラムコードの実行に費やされた時間とストリームの一時停止(1秒)により発生します。
 public static void TimeBells() { string NowLocalTime = ""; DateTime NewTime; DateTime OldTime = DateTime.Now.ToLocalTime(); OpredCallZvon ocz; while (true) { //  NewTime = DateTime.Now.ToLocalTime(); //   NowLocalTime = NewTime.ToString("HH:mm:ss"); //   foreach (DateTime dt in appset.CurTimeBell) { ocz=new OpredCallZvon(NewTime,OldTime,dt); if (ocz.isCall) { LCD.setCursor(0, 1); LCD.print("NOW ZVONOK "); RunBell(); } } OldTime = NewTime; Thread.Sleep(1000); } } 

呼び出し時、LEDは点灯しています。
RTCは組み込みです。 VBAT INおよびグラウンドピンに電力を供給すれば十分です。
単純化するために、htmlページテンプレートがプロジェクトのリソースに配置されました。
使用されているライブラリ:

実装には3日x 4時間= 12人時間かかりました。
時々、HTTP要求で、RAMの超過について例外がスローされました(〜62KB)。 このため、新しい設定はオンラインではなく再起動時にのみ適用する必要がありました。
原価見積
いや役職数量価格金額、$
1Netduino Plus 2159.9559.95
2リレーモジュール11.741.74
3RGB 3色フルカラーLED任意の色11.991.99
4標準ボタンスイッチセンサーモジュール21.292,58
5LCDモジュールブルースクリーンIIC / I2C 2004 5V17.67.6
6MicroSDカード13.143.14
7取り付けの基礎、ワイヤー11010
合計87

ビデオ:

スクリーンショット:
画像
画像
画像

コード:
FEZ_Domino_Zvonok.zip


Source: https://habr.com/ru/post/J246853/


All Articles