GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
GR-LYCHEE初心者です。
パソコン⇔GR-LYCHEEでUART通信させて、
パソコンから特定のデータを受信すると、SDカード内に保存されている画像をLCDに表示させるプログラムを作成しようとしています。
(例:「1」を受信すると、SDカード内の1番目の画像を表示する。)
SDカード内の画像をLCDで表示する部分は、サンプルコードや書籍を参考に作成することが出来ましたが、
UART通信の部分が、よく分かっておりません。
※プログラムはMbedで作成しております。
・パソコン⇔GR-LYCHEEでUART通信させるにはどのピンを使用すればよいか?
・プログラムを書く際は、ライブラリ内のどこを参照すればよいか?
・参考となるサンプルコード
上記の内容について分かる方がいらっしゃれば是非ご教示願いたいです。
無知で申し訳ありません。よろしくお願いいたします。
「Tera Term」をお使いでしたら以下のようなコードでPCとGR-LYCHEE間で通信できます。WIFI_SSID と WIFI_PASSWORD お使いの環境に合わせて変更してください。
下記サンプルでは「ターミナル入出力(printfの表示用)」と「TCP/IPによる通信」の2つのウィンドウを使用します。「ターミナル入出力(printfの表示用)」については既にお使いのはずなので説明は省略します。「TCP/IPによる通信」は「新しい接続 -> TCP/IP」を選択し、「ホスト(T)」部分にGR-LYCHEEのIPアドレスを入力します(WiFi接続に成功するとターミナル入出力側のウィンドウにIPアドレスが表示されます)。「サービス」は「その他」、プロトコルは「IPv4」を選択してください。「TCPポート」に23(他の値にしたい場合はソース中のPORT_NUMを変更してください)を設定し、「OK」ボタンを押すと接続できると思います。
「Tera Term」から文字列を送信する際、改行を押すまでデータは送信されません。詳しくは「Tera Term 行単位送信モードの無効化」などで検索してみてください。
#include "mbed.h" #include "ESP32Interface.h" #define WIFI_SSID "SSID" #define WIFI_PASSWORD "Password" #define PORT_NUM (23) #if defined(TARGET_RZ_A1H) ESP32Interface wifi(P3_10, P3_9, P2_14, P2_15); #elif defined(TARGET_GR_LYCHEE) ESP32Interface wifi(P5_3, P3_14, P7_1, P0_1); #else #error "Not supported target." #endif int main() { printf("\r\nConnecting...\r\n"); int ret = wifi.connect(WIFI_SSID, WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); if (ret != 0) { printf("\r\nConnection error\r\n"); return -1; } printf("Success\r\n\r\n"); printf("MAC: %s\r\n", wifi.get_mac_address()); printf("IP: %s\r\n", wifi.get_ip_address()); printf("Netmask: %s\r\n", wifi.get_netmask()); printf("Gateway: %s\r\n", wifi.get_gateway()); printf("RSSI: %d\r\n\r\n", wifi.get_rssi()); TCPSocket client; TCPServer server(&wifi); char buffer[64 + 1]; int n; server.bind(PORT_NUM); server.listen(); while (true) { server.accept(&client); printf("\r\nSocket open\r\n"); while (true) { n = client.recv(buffer, sizeof(buffer) - 1); if (n <= 0) { break; } // print received message to terminal buffer[n] = '\0'; printf("%s\r\n",buffer); } printf("\r\nSocket close\r\n"); client.close(); } }