空中でスケッチを更新する

Arduino互換ボードのコードを開発するプロセスでは、多くの場合、コントローラーのファームウェアを更新する必要があります。これは、デバイスが既に組み立てられており、ネームプレートとワイヤーのヒープを前後に引っ張っているので、非常に困難です-疲れてイライラし始めます。 私の最初のArduinoはFreeduino Through-Holeキット(自分で組み立てる)で、到着時のキットはすぐにはんだ付けされてテストされましたが、このArduino Diecimilaの類似品には、不足している素敵な部品が1つありました...つまり、自動電源スイッチです。ボード上で、 子供の頃の夢のモデルのスケッチを更新するのがさらに難しくなりました。



この投稿では、はんだごてを使って5分間でXBeeシールドを変更して、無線通信チャネルを介してスケッチを更新する方法を説明します。 これらの変更を投影することは、他のXBee Shieldの同等物でもそれほど困難なく行うことができます。



まず、2つのXBeeシールドがありましたが、1つはXBeeモジュールをPCに直接接続するためのミニUSBコネクタとFTDI USB-Serialチップを備えていたため、サードパーティのUSB-Serialコードを使用していました。する必要はありませんでした。 結局のところ、このラベルを使用してモジュールを操作することは非常に便利であり、必要に応じてRTSおよびDTRピンを配線し、ファームウェアを更新し、構成を流し込みました。 注意! ピン、RTS、およびDTRを接続せずにファームウェアを更新しようとすると、モジュールは失敗しますが、これは修正可能です。 X-CTU接続設定でモジュールを操作するAPIモードを指定し、ファームウェアの更新を再度実行するだけです。



それでは始めましょう:



1.送信モジュールの変更



鉄から始めましょう。 私の場合の送信ラベルは、マイナーであると同時にエレガントなリバーシブルな変更を受けました。 私は非PROバージョンのXBeeモジュールを使用し、PROモジュールのパッドはネームプレートにはんだ付けされていません(20%以上)、このブロックの穴の間のステップはPLSコネクタ(これらはarduinoに挿入されたオスの接点です)、長い間箱にほこりを集めてきました。 メインの「くし」からピンを少し抜き取りました。 XBeeおよびXBee PROのデータシートによると、RTSおよびDIO3ピンはそれぞれ16および17ピンに配置されており、この状況では非常に便利です。 ネームプレートの16番目と17番目の穴に接点をはんだ付けし、その途中でジャンパー(ジャンパー)を古いネジまたはマザーボードから不必要に引き出し、はんだ付けしたばかりの接点を閉じます。 これにより、どのような場合でも、ジャンパーを結果なしですばやく取り外すことができます。 これで、送信モジュールの鉄の修正が完了しました。



モジュール自体の設定に移動します。 クラフトでXBeeモジュールを少なくとも1回使用したことがある場合は、 X-CTUプログラムとその機能についてすでにご存じでしょう。 さらにその助けを借りて設定について説明します。



最初に行う必要があるのは、XBeeモジュールをコンピューターに接続し、接続を確認することです。 これを初めて行う場合、パラメーターは次のようになります(もちろん、COMポートは独自のものを選択する必要があります)。







パラメータを設定した後、「 テスト/クエリ 」をクリックすると、1秒後にモジュールのシリアル番号とモデルが記載されたメッセージが表示されます。







これが起こらない場合、どこかがエラーです。 または、ポート速度(ボー)をポップしてみてください。



Modem Configurationタブに移動し、Readをクリックして、現在の設定とモジュールのファームウェアバージョンを取得します。



最初の値は、PAN IDを変更することです。

PAN IDはHEX形式の4桁で構成され、このモジュールが機能するネットワークのIDを決定します。 PAN IDは、受信機と送信機の両方で同じでなければなりません。 また、競合を回避するために、このIDに対してこれ以上モジュールを構成しないことをお勧めします。







設定の次の項目は、ポートの速度を変更する必要があります。 特定のマイクロ回路のファームウェアに必要な速度に対応する必要があります(ファームウェア速度を上げる代替ブートローダーもあります)。 168チップの場合、これは19200、328p 57600の場合です。将来、モジュールを使用するには、スケッチを修正する必要があります(たとえば、以前に標準速度9600を使用していた場合)、ポートの作業速度を変更してください。







パケット化タイムアウト-空中に送信する前に待機する時間を決定するタイムアウト。 10より大きい値が必要な場合があります-スケッチのサイズに基づいて個別に選択されます、10 = 10kbスケッチ。







次に、ピンD3(デジタル入力/出力)を3-DIに設定します。これは、ピンがデジタル入力として使用されることを意味します。







デジタルIO変更検出パラメーターをFFに設定します。 FFの代わりに0x08を指定することもできます。 次に、DIの変更をD3ピンでリッスンする必要があることを具体的に示しますが、とにかく正常に機能します。







これで、トランスミッタ(トランスミッタ)は、D3ピンの現在のステータスを範囲内のモデムに送信するように構成されました。 上部パネルの[書き込み]ボタンをクリックして、モジュールへの変更を書き込みます。



また、Windowsユーザーの予測可能なレーキについて言及する価値があります(MacOSおよびLinuxでは、これはデフォルトで提供されます)。



COMポート設定で[RTSを閉じるに設定]オプションを指定する必要があります(ロシア語バージョンでは、別の名前が可能です)















チェックマークが設定されていることを確認し、設定を適用します。



2.受信モジュールの変更



伝統的に、鉄から変更を開始します。つまり、コンデンサ、トランジスタ、抵抗器をヒープにはんだ付けします(現在は、回路をさらにデバッグするために、重量がより適切です)。







XBeeからのリセット信号-D3ピンに直接つながる。 Arduinoにリセット-arduinoのリセットピンに直接。



このようなものでなければなりません。







念のため繰り返しますが、プロジェクトの為替レートを調整することを忘れないでください。



次に、受信機(受信モジュール)をコンピューターに接続し、使い慣れたX-CTUを開いて次のパラメーターを設定します



PAN ID-送信モジュールと一致する必要があります







インターフェイスデータレート-同様にトランスミッタと一致する必要があります







パケット化タイムアウト-送信機と同様に理解した







レシーバーのピンD3を5-DO HIGH(デジタル出力デフォルトHigh)に設定します







I / O出力は無効です。 ステータスメッセージがシリアルポートに入らないようにするには







そして最後に、すべてのブロードキャストからI / Oメッセージを受信するために、I / O入力アドレスをFFFFに設定します。 送信機のアドレスを指定することもできます。











次に、「書き込み」ボタンをクリックして、モジュールに変更を書き込みます。



混乱を避けるため、コンピューター上の両方のモジュールのプロファイルを一度セットアップして保存することをお勧めします。 トッププロファイル->保存。



すべてのGNDを一緒に接続し、送信モジュールをコンピューターに(アダプターまたはネームプレートを介して)接続し、ターゲットArduinoに受信モジュールをインストールすることを忘れないでください。 もう一度すべてをチェックしますが、突然私は間違っていたか、他の些細な事がどこかに残っていました。 すぐにすべてをもう一度確認して、試してみてください! :)



私が持っていた熊手:Arduinoが時々再起動したがスケッチは洪水を拒否し、私を困惑させましたが、Arduino IDEでアップロードをすばやくダブルクリックすると、スケッチが正常に塗りつぶされることがすぐに明らかになりました(常にWifiとBlutoothを非難たくさんあった)どうやら、掘削はコンデンサの方向にあるはずです(ボリュームで遊んで)まあ、または極端な場合には、RTSピンが2回2回引っ張られるようにIDEコードを編集してください:)



私は混乱をお、びし、ほぼ1年前にSatayと書き始めました。すでに多くのことを忘れていましたが、言いたいことはすべて言いました。 提案や提案を歓迎します。 記事の不正確さや伝統による間違いは、PMに書いてください。記事がお役に立てば幸いです。



私の記事はこれの翻訳とみなすことができます

少しだけ追加して、できる限り装飾しました。



私の質問はここの Q&A あり、回答されたdjmorganのおかげです



All Articles