2026年3月29日日曜日

kaluma on ide 未踏あり!

 

kaluma ide on chromeではconnectでピコとつないで左画面のコードがflashで書き込まれた!

packageもいけるかどうかは、未踏。。。。

2026年3月25日水曜日

Raspberry Piをwindows11でSSHするときエラーがでたら/Kaluma on Raspi

Raspberry PiのOS再インストールやSSH鍵の再生成によって、SSHのホストキー(raspberrypi.local)が変更されたため、古い情報が記録されているWindows側のknown_hostsファイルでエラーが発生しています。 信頼できる相手(自分のRaspberry Pi)である場合は、以下のいずれかの方法で解決できます。 方法1:PowerShellで古い鍵を削除する(推奨) Git BashやPowerShellを管理者として開き、以下のコマンドを実行して古いキーを特定・削除します。 powershell ssh-keygen -R raspberrypi.local これで成功した ----------------------------------------------- nodejs,kaluma がらみはsudoが必要(ubuntuではいらんがraspiでは必須)

2026年3月24日火曜日

golangで公開ブローカへpub成功

package main import ( "fmt" "time" mqtt "github.com/eclipse/paho.mqtt.golang" ) func main() { // 1. MQTTブローカーの設定 broker := "tcp://broker.hivemq.com:1883" // 公開ブローカー topic := "fseigojp/test" // smart-appで受信できた clientID := "go_client_pub" // 名前はなんでもよかった opts := mqtt.NewClientOptions() opts.AddBroker(broker) opts.SetClientID(clientID) // 接続ロスト時のハンドラ(オプション) opts.OnConnectionLost = func(c mqtt.Client, err error) { fmt.Printf("Connection lost: %v\n", err) } // 2. クライアントの作成と接続 client := mqtt.NewClient(opts) if token := client.Connect(); token.Wait() && token.Error() != nil { panic(token.Error()) } fmt.Println("Connected to", broker) // 3. メッセージのパブリッシュ payload := fmt.Sprintf("Hello from Go! Time: %s", time.Now().Format(time.RFC3339)) token := client.Publish(topic, 1, false, payload) token.Wait() // 完了を待つ fmt.Printf("Published to %s: %s\n", topic, payload) // 4. クライアントの切断 client.Disconnect(250) fmt.Println("Disconnected") }

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:text/html");
            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コードです。

Arduino IDE用プログラムコード
cpp
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");
    }
  }
}
Tera Termでの操作方法
  1. 接続:
    • Arduino Uno R4をUSBでパソコンに接続します。
    • Arduino IDEで上記コードを書き込みます。
  2. Tera Term設定:
    • Tera Termを起動し、Arduinoが接続されているシリアルポート(COMポート)を選択します。
    • [設定] -> [シリアルポート] で、ボーレート(Speed)を 115200 に設定します。
    • [設定] -> [端末] で、改行コードを 送信: CR+LF受信: CR+LF に設定します(必須ではありませんが推奨)。
  3. 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)

}

}

------------------------------uno r4 wifi---------------------------------------------------

#include "WiFiS3.h"
#include "secrets.h"
// Wi-Fi設定

int port = 8080;

WiFiClient client;

void setup() {
  Serial.begin(9600);
  while (WiFi.begin(ssid, pass) != WL_CONNECTED) delay(1000);
}

void loop() {
  if (client.connect(server, port)) {
    // GETリクエストの構築
    String url = "/?temp=34.5&humid=56.1";
    client.print("GET " + url + " HTTP/1.1\r\n");
    client.print("Host: " + String(server) + "\r\n");
    client.print("Connection: close\r\n\r\n");
    client.stop();
  }
  delay(8000);
}
今後はdht11から読み込むコードへrefactoring