nRF24L01+とSTM8S103FでFirmata用の無線Uartを作って見ました
すればメモリの容量を気にしないでコードが書けるのでそれらも検討して見たいと
思いました。ただし、通常のFirmataはPCと接続にはUSBケーブルが想定されており
次の無線化する方法を検討して見ました。
<Arduino Firmata の無線化Uart での利用>
無線モジュールのnRF24L01+とSTM8S103F3PのCPUボードを利用して
無線モジュールのnRF24L01+とSTM8S103F3PのCPUボードを利用して
1.Firmata用のボードにはArduino Pro Mini クローンボードを利用
2.PCとの接続にはUSB to Uart のボードを利用
3.無線デバイスはnRF24L01+のボードを利用
4.Uart回線用の制御にはSTM8S103F3ボードを利用
5.HTTPサーバとしてはApacheを実装し、http.conf を必要に応じて編集して
HTTPサーバのルートにHTMLとJavaScriptのファイルを置く
6.スマホからWiFiを通じてPCを呼び出して、Firamata用のCPUボードに
2.PCとの接続にはUSB to Uart のボードを利用
3.無線デバイスはnRF24L01+のボードを利用
4.Uart回線用の制御にはSTM8S103F3ボードを利用
5.HTTPサーバとしてはApacheを実装し、http.conf を必要に応じて編集して
HTTPサーバのルートにHTMLとJavaScriptのファイルを置く
6.スマホからWiFiを通じてPCを呼び出して、Firamata用のCPUボードに
接続されたテスト基板で動作を確認
[使用した主要部品]
[使用した主要部品]
1.nRF24L01+無線モジュール
2.USB to Uart TTL 変換基板
3.Arduino Pro Mini clone
4.手作りのオリジナルI/Oテスト基板
(Red & Green LED, slide switch, pre-set resister が実装)
[動作状況]
2.USB to Uart TTL 変換基板
3.Arduino Pro Mini clone
4.手作りのオリジナルI/Oテスト基板
(Red & Green LED, slide switch, pre-set resister が実装)
[動作状況]
<関連資料>
以前作成した次のESP-01によるWiFi to Uartブリッジの記事のESP-01を
以前作成した次のESP-01によるWiFi to Uartブリッジの記事のESP-01を
利用してのWiFiによる無線化の部分を今回のWireless Uart モジュールに
置き換えて動作確認をしました。
HTTP化の部分 : ESP-01 WiFi Bridge version
nRF24L01+の接続等に関しては以前作成した次の記事に合わせました。
nRF24L01+の部分 : nRF24L01+無線モジュール
<テスト内容と結果>
ESP-01によるWiFiBridgeの代わりに今回の方法でも、以下の動作をPCから
HTTP化の部分 : ESP-01 WiFi Bridge version
nRF24L01+の接続等に関しては以前作成した次の記事に合わせました。
nRF24L01+の部分 : nRF24L01+無線モジュール
<テスト内容と結果>
ESP-01によるWiFiBridgeの代わりに今回の方法でも、以下の動作をPCから
Firmataをワイヤレスで動作させる事ができるのを確認できました。
1.Pro Miniに接続されたLEDのON/OFFの制御
2.スマホのスライドバーでのPro Miniに接続されたLEDの明るさの制御
3.スマホからPro Miniに接続されたアナログおよびデジタル入力の確認
動作させた結果としては、次の様なものでした。
1.今回の方法でも以前のWiFiBridgeを利用した場合と同様な制御が可能で
1.Pro Miniに接続されたLEDのON/OFFの制御
2.スマホのスライドバーでのPro Miniに接続されたLEDの明るさの制御
3.スマホからPro Miniに接続されたアナログおよびデジタル入力の確認
動作させた結果としては、次の様なものでした。
1.今回の方法でも以前のWiFiBridgeを利用した場合と同様な制御が可能で
ある事が判りました。
2.ただし、nRF24L01+のモジュールでは、同時に送受信ができない為、
2.ただし、nRF24L01+のモジュールでは、同時に送受信ができない為、
通信方式としては半二重の方式としました。(両端末は通常は受信
状態にして、送信時に送信モードに切り替える方式)
3.この時、問題となるのは両端末が同時に送信モードになる事で、それに
3.この時、問題となるのは両端末が同時に送信モードになる事で、それに
関しては、ランダムな時間遅延による再試行の方法が利用できる事が
判りました。
4.また、送信直後に別なデータを送信すると、前回の送信のリトライ中と
4.また、送信直後に別なデータを送信すると、前回の送信のリトライ中と
競合して送信データが喪失する事も判り、これに関しては、送信直後に
別なデータを送信しない時間帯を設ける事で対応できました。
5.なお、STM8Sのボードでは動作が緩慢で、動作時間にほとんど余裕が
5.なお、STM8Sのボードでは動作が緩慢で、動作時間にほとんど余裕が
無い事も判り、別なボードを利用するか、あるいは、アセンブラで
コードを書いてもう少し動作時間を早くできれば良いと思いました。
[テストでの機器の接続]
[テストでの機器の接続]
[コード類]
コードの開発にはIARのシステムを利用しました。
(STM8S103F3P6ボードののコード開発に 関してはこちらの記事を
参照して下さい。)
Code download URL : https://www.dropbox.com/s/q5qbs3zjrdr2smq/Wireless_Uart_STM8S.zip?dl=0
コードの開発にはIARのシステムを利用しました。
(STM8S103F3P6ボードののコード開発に 関してはこちらの記事を
参照して下さい。)
Code download URL : https://www.dropbox.com/s/q5qbs3zjrdr2smq/Wireless_Uart_STM8S.zip?dl=0