パソコンとAruduino Uno R4 WiFiをWiFiで連携し、TCP通信でパソコンから「1」を送信すればLEDが点灯し、「0」を送信すればLEDが消灯する方法についてメモしておきます。
Arduino側のプログラム
ArduinoをTCPサーバーにし、パソコンから送られてくるデータによってLEDの動作を変えるプログラムです。
#include <WiFiS3.h>
const char ssid[] = "***"; // ←あなたのWiFi SSID
const char pass[] = "***"; // ←あなたのWiFiパスワード
int status = WL_IDLE_STATUS;
WiFiServer server(5000); // TCPポート番号(任意で変更可)
WiFiClient client;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
// WiFi接続
if (WiFi.status() == WL_NO_MODULE) {
Serial.println("Failed to WiFi communication.");
while(true);
}
while (status != WL_CONNECTED) {
Serial.print("Try Connect to ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
delay(10000);
}
Serial.println("\nWiFi connected.");
Serial.print("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);
server.begin(); // TCPサーバー起動
Serial.println("TCP server started");
}
void loop() {
if (!client || !client.connected()) {
client = server.available(); // 新しいクライアントを取得
if (client) {
Serial.println("Client connected");
}
}
if (client && client.connected() && client.available()) {
char command = client.read();
Serial.print("Received: ");
Serial.println(command);
if (command == '1') {
digitalWrite(LED_BUILTIN, HIGH);
} else if (command == '0') {
digitalWrite(LED_BUILTIN, LOW);
}
// 応答送信(オプション)
client.print("ACK: ");
client.println(command);
}
}
パソコン側のプログラム
Pythonによるプログラムです。パソコンからTCPサーバー(Arduino)へ向けてデータを送ります。
import socket
HOST = "172.20.10.2" # ← ArduinoのIPアドレスに置き換えてください
PORT = 5000 # ← Arduinoスケッチと一致させてください
while(1):
led = input('led 点灯:1、消灯:0、終了:q → ')
if led == 'q':
break
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(led.encode()) # LEDをONにするには '1' を送る
まとめ
これでやっとパソコン側からのデータをWiFiを経由してArduinoに送ることができました。次回はこれを音声認識と組み合わせてみたいと思います。


コメント