雑感
2026年3月24日火曜日
golangで公開ブローカへpub成功
2026年3月23日月曜日
golang :wifiLAN内のuno r4 wifiのLED制御 ・ uno r4 wifi 単体でも
「ArduinoをWebサーバーにする」方法が最も簡単で確実です。Arduino R4 WiFiの標準ライブラリ(WiFiS3)だけで完結
1. Arduino側のコード
以下のスケッチをコピーして、SSIDとパスワードを書き換えて書き込んでください。/led/on で点灯、/led/off で消灯します。
#include "WiFiS3.h"
char ssid[] = "あなたのSSID";
char pass[] = "あなたのパスワード";
WiFiServer server(80);
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) delay(500);
server.begin();
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() {
WiFiClient client = server.available();
if (client) {
String req = client.readStringUntil('\r');
if (req.indexOf("GET /led/on") != -1) digitalWrite(LED_BUILTIN, HIGH);
if (req.indexOf("GET /led/off") != -1) digitalWrite(LED_BUILTIN, LOW);
client.println("HTTP/1.1 200 OK\n\nOK");
client.stop();
}
}
※ 書き込み後、シリアルモニタに表示される IPアドレス をメモしてください。
2. Go言語側のコード
Goからは標準の http パッケージを使って、ArduinoのURLを叩くだけです。
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
// ArduinoのIPアドレスに書き換えてください
baseURL := "http://192.168.x.x"
for {
// LED ON
fmt.Println("LED ON")
http.Get(baseURL + "/led/on")
time.Sleep(1 * time.Second)
// LED OFF
fmt.Println("LED OFF")
http.Get(baseURL + "/led/off")
time.Sleep(1 * time.Second)
}
}
コードは注意してご使用ください。
この方法のメリット
ライブラリ不要&安定性: Arduino R4 WiFi公式の WiFiS3 ライブラリを使うため、接続が非常に安定します。
拡張性: ブラウザから http://IPアドレス/led/on と入力するだけでも操作OK
まずは ArduinoのシリアルモニタにIPアドレスが表示されるか 確認してみてください!=>数回unoのリセットをかけんとipが0.0.0.0となる、secrets.h必要?
ーーーーーーーーーーーーーーーーーーーーーーーーー
softapの場合はsecrets.h設定不要だった
#include "WiFiS3.h"
// アクセスポイントの設定
char ssid[] = "UNO-R4-AP"; // 任意のSSID
char pass[] = "password"; // 8文字以上のパスワード
int status = WL_IDLE_STATUS;
WiFiServer server(80); // 80番ポートでサーバーを起動
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
// APを作成
Serial.print("Creating access point named: ");
Serial.println(ssid);
status = WiFi.beginAP(ssid, pass);
if (status != WL_AP_LISTENING) {
Serial.println("Creating access point failed");
while (true);
}
// サーバー起動
server.begin();
// IPアドレス表示
IPAddress ip = WiFi.localIP();
Serial.print("AP IP address: ");
Serial.println(ip);
}
void loop() {
WiFiClient client = server.available(); // クライアントの接続を待つ
if (client) {
Serial.println("new client");
String currentLine = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
if (currentLine.length() == 0) {
// HTTPレスポンスの送信
client.println("HTTP/1.1 200 OK");
client.println("Content-type:t
client.println();
client.print("Click <a href=\"/H\">here</a> to turn the
LED on.<br>");
client.print("Click <a href=\"/L\">here</a> to turn the
LED off.<br>");
client.println();
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
// URLによるLED制御
if (currentLine.endsWith("GET /H")) {
digitalWrite(LED_BUILTIN, HIGH);
}
if (currentLine.endsWith("GET /L")) {
digitalWrite(LED_BUILTIN, LOW);
}
}
}
client.stop();
Serial.println("client disconnected");
}
}
2026年3月21日土曜日
gobot uno3-builtinLED
scratchino,johnfive同様にuart制御である、ラズパイやesp8266でもOKみたい
package main
import (
"time"
"gobot.io/x/gobot"
"gobot.io/x/gobot/drivers/gpio"
"gobot.io/x/gobot/platforms/firmata"
)
func main() {
adaptor := firmata.NewAdaptor("COM8")
led := gpio.NewLedDriver(adaptor, "13")
work := func() {
gobot.Every(1*time.Second, func() {
led.Toggle()
})
}
robot := gobot.NewRobot("bot",
[]gobot.Connection{adaptor},
[]gobot.Device{led},
work,
)
robot.Start()
}
2026年3月18日水曜日
teratermでuno r4のLED制御(モータなんかへ転用可)
Arduino Uno R4(Minima / WiFi共通)で、Tera Termなどのシリアルモニタから文字を入力して、オンボードのBuilt-in LED(L)をオン/オフするArduinoコードです。
void setup() {
// シリアル通信を開始 (ボーレートは115200)
Serial.begin(115200);
// LEDのピンを出力に設定
pinMode(LED_BUILTIN, OUTPUT);
Serial.println("Arduino Uno R4 LED Control");
Serial.println("Type '1' to turn ON, '0' to turn OFF");
}
void loop() {
// シリアルデータが届いているか確認
if (Serial.available() > 0) {
char incomingByte = Serial.read(); // 1バイト読み込み
if (incomingByte == '1') {
digitalWrite(LED_BUILTIN, HIGH); // LEDオン
Serial.println("LED: ON");
}
else if (incomingByte == '0') {
digitalWrite(LED_BUILTIN, LOW); // LEDオフ
Serial.println("LED: OFF");
}
}
}
- 接続:
- Arduino Uno R4をUSBでパソコンに接続します。
- Arduino IDEで上記コードを書き込みます。
- Tera Term設定:
- Tera Termを起動し、Arduinoが接続されているシリアルポート(COMポート)を選択します。
[設定]->[シリアルポート]で、ボーレート(Speed)を 115200 に設定します。[設定]->[端末]で、改行コードを 送信: CR+LF、受信: CR+LF に設定します(必須ではありませんが推奨)。
- LED操作:
- キーボードで
1を入力するとLEDが点灯します。 - キーボードで
0を入力するとLEDが消灯します。
- キーボードで
- LED_BUILTIN: Uno R4では自動的に適切なピン(通常はデジタル13番)に割り当てられます。
- 通信速度: 115200bpsを使用しています。
- 対応ボード: Uno R4 MinimaおよびWiFiの両方で動作します
2026年3月17日火曜日
golang /?temp=xx.1%humid=yy.1でfileに書き/で、それを読み表示
package main
import (
"fmt"
"html/template"
"log"
"net/http"
"os"
"strings"
"sync"
)
// テンプレート用データ
type PageData struct {
Temp string
Humid string
}
var (
tmpl *template.Template
once sync.Once
)
// テンプレート読み込み
func initTemplate() {
var err error
tmpl, err = template.ParseFiles("index.html")
if err != nil {
log.Fatalf("テンプレート読み込み失敗: %v", err)
}
}
func handler(w http.ResponseWriter, r *http.Request) {
once.Do(initTemplate)
if r.Method != http.MethodGet {
http.Error(w, "GETのみ対応", http.StatusMethodNotAllowed)
return
}
query := r.URL.Query()
temp := query.Get("temp")
humid := query.Get("humid")
// ------------------------
// データ保存
// ------------------------
if temp != "" && humid != "" {
log.Printf("受信 temp=%s humid=%s\n", temp, humid)
file, err := os.OpenFile("data.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Println("保存エラー:", err)
} else {
defer file.Close()
line := fmt.Sprintf("temp=%s,humid=%s\n", temp, humid)
file.WriteString(line)
}
}
// ------------------------
// / の場合 data.txt 読み込み
// ------------------------
if temp == "" && humid == "" {
b, err := os.ReadFile("data.txt")
if err == nil {
lines := strings.Split(string(b), "\n")
for i := len(lines) - 1; i >= 0; i-- {
if lines[i] != "" {
line := lines[i]
parts := strings.Split(line, ",")
if len(parts) == 2 {
t := strings.Split(parts[0], "=")
h := strings.Split(parts[1], "=")
if len(t) == 2 && len(h) == 2 {
temp = t[1]
humid = h[1]
}
}
break
}
}
}
}
data := PageData{
Temp: temp,
Humid: humid,
}
err := tmpl.Execute(w, data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
func main() {
http.HandleFunc("/", handler)
addr := "192.168.150.188:8080"
log.Println("サーバ起動 http://" + addr)
err := http.ListenAndServe(addr, nil)
if err != nil {
log.Fatal(err)
}
}
2026年3月7日土曜日
xampp そしてGetリクでデータを保存する
xreaなら永続的にwordressOK,paizacloudなら一時的にOK(十分かも)
indows 11でXAMPPを使ってPHPを動かすには、公式サイトからイ
> C:\xampp\htdocs に保存し、ブラウザで http://localhost/ファイル名.php にアクセスして動作を確認します。
> 手順の概要:
>
> ダウンロード・インストール: XAMPPをインストールします。
> Apacheを起動: コントロールパネルでApacheの[Start]をクリック。
> PHPファイルを作成: C:\xampp\htdocs フォルダに test.php などを保存。
> ブラウザで確認: http://localhost/test.php にアクセス。
>
> この動画でXAMPPのインストールと動作確認の手順を確認でき
1. インストール: XAMPPの公式サイトからWindows版をダウンロードし、
2. コントロールパネルの操作: インストール後、XAMPP Control Panelを起動し、Apacheの「Start」ボタンをクリ
3. PHPファイルの作成: C:\xampp\htdocs フォルダの中に、メモ帳などのエディタでPHPファイル(例: hello.php)を作成します。
> php
>
> <?php
> echo "Hello, XAMPP!";
> ?>
>
> 4. ブラウザで確認: ブラウザを開き、アドレスバーに http://localhost/hello.php と入力します。ブラウザ画面に
> "Hello, XAMPP!" と表示されれば成功です。
>
> 注意点:
>
> ポート80が他のアプリケーション(IISやSkypeなど)で
> データベースを使用する場合は、MySQLの「Start」をク
> PHPのバージョンは、最新のXAMPPをインストールすること
>
ーーーーーlocalhostでなくLAN内からアクセスしたい場合ーーーー
Windows 11上のXAMPPをIPアドレス(例:http://192.168.x.x)でアクセスできるように
スタートボタンを右クリックし、「ターミナル」または「コマンド
ipconfig と入力し、Enterキーを押します。
表示された情報の中から「IPv4 アドレス」(例: 192.168.1.10)をメモします。
手順2: WindowsファイアウォールでApacheのアクセスを許可
外部(スマホや他のPC)からアクセスするために、Window
タスクバーの検索で「Windows ファイアウォールを介したアプリの許可」を検索して開きます。
「設定の変更」ボタンをクリックします。
リストから「Apache HTTP Server」を探し、チェックボックスがオン(パブリック・プ
もしリストになければ、「別のアプリの許可」から C:\xampp\apache\bin\httpd.exe を追加します。
手順3: Apacheの設定ファイル (httpd-xampp.conf) を変更する
デフォルトでは外部からのアクセスが拒否されているため、設定を
XAMPPコントロールパネルを開き、Apacheの「Conf
ファイル内で <Directory "C:/xampp/phpMyAdmin"> などのブロックを探し、Require local
と書かれている箇所を Require all granted に書き換えます。
※この変更により、同じLAN内の端末から誰でもアクセスできる
手順4: Apacheを再起動する
XAMPPコントロールパネルでApacheの「Stop」をク
手順5: IPアドレスでアクセス確認
別のPCまたはスマホのブラウザで、手順1で確認したIPアドレ
例: http://192.168.x.x/
XAMPPのダッシュボードが表示されれば成功です。
______________________________
トラブルシューティング
アクセスできない場合: セキュリティソフトが通信をブロックしている可能性があります。
別PCから接続不可の場合: 端末同士が同じWi-Fi(またはLAN)に接続されているか確
> > Perl)をインストールする手順を解説します。XAMPPを導
> > 1. XAMPPのダウンロード
> >
> > 公式サイトにアクセス: Apache Friends へアクセスします。
> > Windows版をダウンロード: Windows向けの最新版(PHP 8.2 または 8.3が推奨)の「XAMPP for
> > Windows」をダウンロードします。
> > XAMPP Installers and Downloads for Apache Friends +2
> >
> > 2. インストール手順
> >
> > インストーラーの実行: ダウンロードした.exeファイルをダブルクリックして起動しま
> >
> > ヒント: 右クリックして「管理者として実行」を選択すると、権限トラブル
> >
> > 警告表示: UAC(ユーザーアカウント制御)の警告が出た場合は「OK」を
> > ウィザードの進行: 「Next」をクリックして進めます。
> > コンポーネントの選択: デフォルト(全てにチェック)のままで「Next」をクリックし
> > インストールフォルダの選択: デフォルトの C:\xampp のまま「Next」をクリックします。
> > 言語の選択: Englishを選択し「Next」をクリックします。
> > インストール開始: 「Next」をクリックするとインストールが始まります。
> > ファイアウォールの許可: インストール中にWindows
> > Defender(ファイアウォール)がアクセスをブロックする
> > 完了: 「Finish」をクリックしてウィザードを閉じます。「Do you want to start the Control Panel
> > now?」にチェックを入れておくと、そのままコントロールパネ
> > YouTube +4
> >
> > 3. 起動と動作確認
> >
> > コントロールパネルを開く: Windowsのスタートメニューから「XAMPP Control Panel」を検索して起動します。
> > ApacheとMySQLを起動: 「Actions」欄の「Start」ボタンをクリックします。
> > ブラウザでアクセス: ブラウザを立ち上げ、アドレスバーに http://localhost/ と入力してアクセスします。
> > ダッシュボード表示: XAMPPのダッシュボード画面が表示されれば、インストールは
> > > Windows 11でXAMPPを起動するには、C:\xamppフォルダー内
> > > 主な操作手順:
> > >
> > > インストール先へ移動: 通常は C:\xampp にインストールされます。
> > > 起動: xampp-control.exe を右クリックし、「管理者として実行」を選択します。
> > > モジュール開始: ApacheやMySQLの「Start」をクリックして緑色に
> > >
> > > 起動しない場合の対処法:
> > >
> > > 権限不足: XAMPPを右クリックし、「管理者として実行」を選んで起動し
> > > ポート競合: ポート80(Apache)が他のアプリで使用されている場合、
> > > ファイアウォール: Windows Defenderがブロックしている場合、プライベートネットワ
> > > タスクトレイ: コンパイルが開かない場合は、タスクトレイのXAMPPアイコン
> > >
> > > 再起動時、セキュリティの警告(Windows Defender)が表示された場合は、「アクセスを許可する」
ーーー ファイル読み書き と Getきりわけ ーーーー
> > > > <?php
> > > > $dataFile = 'data.txt'; // 保存先ファイル
> > > > $dataToSave = ""; // 読み込みまたは保存するデータ
> > > >
> > > > // --- 切り分け処理 ---
> > > > if (isset($_GET['save']) && !empty($_GET['save'])) {
> > > > // 1. GET命令(save)でデータが送られてきた場合:データを保
> > > > $dataToSave = $_GET['save'];
> > > > file_put_contents($dataFile, $dataToSave);
> > > > echo "データを保存しました: " . htmlspecialchars($dataToSave);
> > > > } else {
> > > > // 2. 通常のアクセスの(または別のGETパラメータ)の場合:保存デ
> > > > if (file_exists($dataFile)) {
> > > > $dataToSave = file_get_contents($dataFile);
> > > > echo "保存データから読み出しました: " . htmlspecialchars($dataToSave);
> > > > } else {
> > > > echo "保存データはありません。";
> > > > }
> > > > }
> > > > ?>
2026年3月6日金曜日
golang and nodejs on ubuntu in wsl2
---------------------golang--------
https://qiita.com/riiiii/items/eac0d5cabf6cac2f6902でインストできた
tar.gzを~にもってくるのはググった ちょっとメンド。。。
------------------------------以下はnodejs------------------------
https://learn.microsoft.com/ja-jp/windows/dev-environment/javascript/nodejs-on-wsl