FS1000A/MX-RM-5V と STM8S103F3P6ボードでラジコンカー作って見ました
eBayを見ていると433MHzの送信モジュールと受信モジュールのペアが
100円位で有ったので購入して、先に調べた1ドルCPUボードと組み合わせて
CPUボードによるラジコンカーを作って見ました。433MHzの送受信モジュールは
さすがに強い癖が有ってなかなか使いこなせなかったのですが、癖も取り敢えず
理解できて、目標のラジコンカーを作る事が出来ました。
その内容は以下のものです。
<433MHz 無線送信/受信モジュールの概要>
購入した433MHz無線送信/受信モジュールは433MHxzのAMでデータの
転送を行う為のもので、次の様なものでした。
[デバイスの概要]
1.送信モジュールはFA1000A
433MHz、 AM変調、送信電力10mW、電源電圧 3.5V - 12V
2.受信モジュールはMX-RM-5V
電源 5V/4mA (4.5V以上必要)
[デバイス利用上の注意点]
受信モジュールは一筋縄で行くものではなく、利用する時に次の3つの大きな
問題が有り、その対策が必要でした。
1.データのHigh期間が長いと途中からデータが不安定になる。
(原因は送受どちらに有るかは不明)
そのため、UARTのデータをそのままバーストで送ると休止期間でエラーが
多発し、UARTのデータを反転して送るか、バーストを止めて連続送信に
する必要が有りました。今回はデータ反転のトランジスタをケチって
連続転送にしました。
UARTのバースト転送 --- そのままでは転送エラー多発
UARTの反転データのバースト転送、UARTの連続転送 --- OK
2.転送時にHighレベルのパルス幅が細り、距離が離れると更にその傾向が
増える為、利用する時にHighレベルのパルス幅の補正が必要でした。
反転のバースト転送では、送信側の反転用のトランジスタの出力に
コンデンサを付ける事により、High->Lowの立下りを遅らせれば簡単に
対応する事が出来ました。今回は連続転送にしましたが、CPUの利用
ポートの特性上、UART出力にコンデンサつ付ける事で対応できました。
High レベルのパルス幅が細くなる --- 遠距離、高速転送ではUARTの
タイミングが確保できない
データの High レベルのパルス幅を補正 --- OK
3.これが一番厄介な問題で、受信モジュールの電源ラインに変動が有ると、
チューニングがずれてデータの受信が不可能となりました。また、
5V品は4.5V以上の電源電圧が無いと、いくらチューニング用の
コイルを回しても受信できず、レギュレータを利用して5Vから変動の
ないきれいな電源を作って利用する事はできませんでした。Webには
3V品もあるので、多分どこかの抵抗を変更すれば対応できるのかと
思いましたが、Web上に受信モジュールを9Vで利用しているとの記事も
有りましたので、一旦9Vに昇圧してモーター駆動時等の電源変動の
影響のないものを用意し、更に昇圧コンバータからのノイズを低減する
電源フィルタを追加して対応できました。(本格的利用時には更なる
検討が必要です。)
受信モジュールの電源が変動あるいはノイズが有る --- 受信不可能となる
受信モジュールの電源を昇圧してノイズフィルタを入れてきれいな電源を
用意 --- OK
[動作検証]
1.2つのCPUボードを用意して一つはジョイスティックの情報の送信、
もう一つはそれを受信してモーターを駆動
2.CPUボードは、1ドルCPUボード(CPU:STM8S103F3P6) を利用する
3.制御対象は、2軸のジョイスティックによる左右のモーターの
回転方向と速度
4.ジョイスティックデータ転送はダミーデータを付加したUARTデータの
連続転送
[動作状況]
動作状況は次のURLから確認できます。
<関連資料>
送受信モジュールの仕様は次のものを参考にしました。
URL : https://www.willhaben.at/iad/kaufen-und-verkaufen/d/mx-rm-5v-433-mhz-rf-sender-und-empfaenger-fuer-arduino-215104263/
CPUボードのプログラムに関しては次のものを参考にしました。
URL : http://blog.mark-stevens.co.uk/the-way-of-the-register/
<テスト内容と結果>
今回のモジュールは、上記の利用上の問題が有り、いつもネット上で最低価格の
ものを探して購入していても全く問題は無かったのですが、当初全く動作する
気配が無く、今回だけは外したのかと思いました。それでも、色々検討して、
最終的に希望の機能が実現できる様になりました。
諦めないで良かったと思いました。そこで、購入時の予定通り、このモジュール
と1ドルCPUボードを利用してラジコンカーを作って見る事にしました。
1.この送受信モジュールを使ってラジコンカーを作成
2.制御用のCPUボードとしては、1ドルCPUボードを利用
動作させた結果としては、次の様なものでした。
1.受信モジュールの電源対策が美しく有りませんでしたが、当初の目標で
有る1ドルCPUボードによるラジコンカーを作る事が出来ました。
2.ただし、2つのモータをXY2軸の一つのジョイスティックで行う部分に
関しては、現在の方法では操作がしづらく、それでも取り敢えずまとめる
事にしましたが、まだまだ改善が必要かと思いました。
3.課題は沢山在りましたが、それでも、無線モジュールを利用しての
ラジコンカーは現実的なもので有る事が良く判りました。(色んな
無線モジュールから、今回の目的に最適なものが見つかる事が期待
できました。)
[テストでの機器の接続]
[コード類]
今回は、コード作成時に参照した記事に合わせて、コードの開発にはIARの
システムを利用しました。(STM8S103F3P6ボードののコード開発に関しては
こちらの記事を参照して下さい。)
Code download URL : https://www.dropbox.com/s/mkrah2so8la4ofe/IAR_STM8S103F3.zip?dl=0
100円位で有ったので購入して、先に調べた1ドルCPUボードと組み合わせて
CPUボードによるラジコンカーを作って見ました。433MHzの送受信モジュールは
さすがに強い癖が有ってなかなか使いこなせなかったのですが、癖も取り敢えず
理解できて、目標のラジコンカーを作る事が出来ました。
その内容は以下のものです。
<433MHz 無線送信/受信モジュールの概要>
購入した433MHz無線送信/受信モジュールは433MHxzのAMでデータの
転送を行う為のもので、次の様なものでした。
[デバイスの概要]
1.送信モジュールはFA1000A
433MHz、 AM変調、送信電力10mW、電源電圧 3.5V - 12V
2.受信モジュールはMX-RM-5V
電源 5V/4mA (4.5V以上必要)
[デバイス利用上の注意点]
受信モジュールは一筋縄で行くものではなく、利用する時に次の3つの大きな
問題が有り、その対策が必要でした。
1.データのHigh期間が長いと途中からデータが不安定になる。
(原因は送受どちらに有るかは不明)
そのため、UARTのデータをそのままバーストで送ると休止期間でエラーが
多発し、UARTのデータを反転して送るか、バーストを止めて連続送信に
する必要が有りました。今回はデータ反転のトランジスタをケチって
連続転送にしました。
UARTのバースト転送 --- そのままでは転送エラー多発
UARTの反転データのバースト転送、UARTの連続転送 --- OK
2.転送時にHighレベルのパルス幅が細り、距離が離れると更にその傾向が
増える為、利用する時にHighレベルのパルス幅の補正が必要でした。
反転のバースト転送では、送信側の反転用のトランジスタの出力に
コンデンサを付ける事により、High->Lowの立下りを遅らせれば簡単に
対応する事が出来ました。今回は連続転送にしましたが、CPUの利用
ポートの特性上、UART出力にコンデンサつ付ける事で対応できました。
High レベルのパルス幅が細くなる --- 遠距離、高速転送ではUARTの
タイミングが確保できない
データの High レベルのパルス幅を補正 --- OK
3.これが一番厄介な問題で、受信モジュールの電源ラインに変動が有ると、
チューニングがずれてデータの受信が不可能となりました。また、
5V品は4.5V以上の電源電圧が無いと、いくらチューニング用の
コイルを回しても受信できず、レギュレータを利用して5Vから変動の
ないきれいな電源を作って利用する事はできませんでした。Webには
3V品もあるので、多分どこかの抵抗を変更すれば対応できるのかと
思いましたが、Web上に受信モジュールを9Vで利用しているとの記事も
有りましたので、一旦9Vに昇圧してモーター駆動時等の電源変動の
影響のないものを用意し、更に昇圧コンバータからのノイズを低減する
電源フィルタを追加して対応できました。(本格的利用時には更なる
検討が必要です。)
受信モジュールの電源が変動あるいはノイズが有る --- 受信不可能となる
受信モジュールの電源を昇圧してノイズフィルタを入れてきれいな電源を
用意 --- OK
[動作検証]
1.2つのCPUボードを用意して一つはジョイスティックの情報の送信、
もう一つはそれを受信してモーターを駆動
2.CPUボードは、1ドルCPUボード(CPU:STM8S103F3P6) を利用する
3.制御対象は、2軸のジョイスティックによる左右のモーターの
回転方向と速度
4.ジョイスティックデータ転送はダミーデータを付加したUARTデータの
連続転送
[動作状況]
動作状況は次のURLから確認できます。
<関連資料>
送受信モジュールの仕様は次のものを参考にしました。
URL : https://www.willhaben.at/iad/kaufen-und-verkaufen/d/mx-rm-5v-433-mhz-rf-sender-und-empfaenger-fuer-arduino-215104263/
CPUボードのプログラムに関しては次のものを参考にしました。
URL : http://blog.mark-stevens.co.uk/the-way-of-the-register/
<テスト内容と結果>
今回のモジュールは、上記の利用上の問題が有り、いつもネット上で最低価格の
ものを探して購入していても全く問題は無かったのですが、当初全く動作する
気配が無く、今回だけは外したのかと思いました。それでも、色々検討して、
最終的に希望の機能が実現できる様になりました。
諦めないで良かったと思いました。そこで、購入時の予定通り、このモジュール
と1ドルCPUボードを利用してラジコンカーを作って見る事にしました。
1.この送受信モジュールを使ってラジコンカーを作成
2.制御用のCPUボードとしては、1ドルCPUボードを利用
動作させた結果としては、次の様なものでした。
1.受信モジュールの電源対策が美しく有りませんでしたが、当初の目標で
有る1ドルCPUボードによるラジコンカーを作る事が出来ました。
2.ただし、2つのモータをXY2軸の一つのジョイスティックで行う部分に
関しては、現在の方法では操作がしづらく、それでも取り敢えずまとめる
事にしましたが、まだまだ改善が必要かと思いました。
3.課題は沢山在りましたが、それでも、無線モジュールを利用しての
ラジコンカーは現実的なもので有る事が良く判りました。(色んな
無線モジュールから、今回の目的に最適なものが見つかる事が期待
できました。)
[テストでの機器の接続]
[コード類]
今回は、コード作成時に参照した記事に合わせて、コードの開発にはIARの
システムを利用しました。(STM8S103F3P6ボードののコード開発に関しては
こちらの記事を参照して下さい。)
Code download URL : https://www.dropbox.com/s/mkrah2so8la4ofe/IAR_STM8S103F3.zip?dl=0