Wio LTE JP Version(SORACOM)モジュールを使ってGPSデータの取得(UART)と別のマイコンとの通信(UART)をしようとしています。
ですが、このWioLTEのプロセッサーSTM32F405RGはハードウェアシリアルは多いのですが、UARTのGroveコネクタとしては一つしか出ていません。
そこでタイトルの通り、Wio LTE JP Version(SORACOM)モジュールでソフトウエアシリアルを使いたいと思っています。
STM32F4はハードウエアシリアルが多いのでソフトウエアシリアルはあまり使われないようですが、ライブラリを探したところ下記3つがありました。
それらのスケッチ例を少しWioLTE用に書き換えてコンパイルしたところ、それぞれ「No such file or directory」というようなエラーが出てしまいました。
それぞれ、ライブラリがみつからないだけだと思うのですが、必要そうなライブラリのインストールにつまづき解決に至りませんでした。
解決方法についてご助言いただければ幸いです。
●Wio LTE JP Version(SORACOM)モジュール
https://soracom.jp/products/module/wio_lte/
●Wio LTE の開発環境設定
https://seeedjp.github.io/Wiki/Wio_LTE_for_Arduino/Home-ja.html
●IDE
Arduino IDE 1.8.9
●ソフトウエアシリアルライブラリ
SoftSerialIntCC
https://github.com/wingspinner/SoftSerialIntCC
SoftSerialIntAP
https://github.com/wingspinner/SoftSerialIntAP
SoftSerialSTM32
https://github.com/wingspinner/SoftwareSerialSTM32
●エラー内容
SoftSerialIntCC の場合 >> fatal error: libmaple/libmaple.h: No such file or directory
SoftSerialIntAP の場合 >> fatal error: libmaple/libmaple.h: No such file or directory
SoftSerialSTM32 の場合 >> fatal error: avr/interrupt.h: No such file or directory
ボードSeeed Wio LTE Cat.1に対するコンパイル時にエラーが発生しました。
●解決しようと試みたこと
#SoftSerialIntCC と SoftSerialIntAP の場合
libmapleライブラリを入れれば解決するだろうと
https://github.com/rogerclarkmelbourne/Arduino_STM32
からダウンロードしたzipから「zip形式のライブラリをインクルード」しようとしたが有効なライブラリが見つかりませんと出て断念…
#SoftSerialSTM32 の場合
ボードをarduino UNOにするとエラーが出なくなるのでどこかにinterrupt.hはあると思うのですが、わからずに保留…
●「SoftSerialIntCC」の場合のコード
#include <WioLTEforArduino.h> #include <SoftSerialIntCC.h> SoftSerialIntCC mySerial(WIOLTE_D20, WIOLTE_D19, 2); void setup() { delay(200); SerialUSB.begin(9600); SerialUSB.println(""); SerialUSB.println("--- START ---------------------------------------------------"); SerialUSB.println("### I/O Initialize."); Wio.Init(); SerialUSB.println("### Power supply ON."); Wio.PowerSupplyGrove(true); delay(500); // set the data rate for the SoftwareSerial port mySerial.begin(4800); mySerial.println("Hello, world?"); SerialUSB.println("### Setup completed."); } void loop() // run over and over { if (mySerial.available()) SerialUSB.print((char)mySerial.read()); if (SerialUSB.available()) mySerial.print((char)SerialUSB.read()); }
●解決した方法(ソフトウェアシリアルでなくハードウェアシリアル)
(前準備)
GroveUARTコネクタとGroveD38コネクタをGroveケーブルでつなぐ。
C++
1#include <WioLTEforArduino.h> 2WioLTE Wio; 3 4 5HardwareSerial Serial6(WIO_D39, WIO_D38); // 下記4行と同等 6/* 7#define USART6 ((USART_TypeDef *) USART6_BASE) 8#define PIN_SERIAL6_TX D38 9#define PIN_SERIAL6_RX D39 10HardwareSerial Serial6(USART6); 11*/ 12 13 14void setup() 15{ 16 delay(200); 17 18 Serial.begin(9600); 19 Serial6.begin(9600); 20 21 SerialUSB.begin(9600); 22 SerialUSB.println(""); 23 SerialUSB.println("--- START ---------------------------------------------------"); 24 SerialUSB.println("### I/O Initialize."); 25 Wio.Init(); 26 Wio.PowerSupplyGrove(true); 27 delay(500); 28 29 SerialUSB.println("### Setup completed."); 30} 31 32 33 34void loop() 35{ 36 Serial6.println("This is Serial6!"); 37 38 while (Serial.available()>0){ 39 SerialUSB.print((char)Serial.read()); 40 } 41 42 43 SerialUSB.println(); 44 delay(1000); 45}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/31 00:24
2019/07/31 11:58
2019/07/31 12:41 編集