2026年6月23日火曜日

現況、windows11でardupy for xiao-rp2040,wioterminal

wioterminal  arduinoIDE/tinygo/ardupy/micropython

xiao-rp2040 or raspico/w -> micropython

microbit -> microblocks/makecode

obniz -> javascript/vbp

raspico2w -> webmite (pico kaluma,pico picomite),

uno r3 with esp01,uno r4 wifi,raspi4,pic-esp01,esp01,esp32cam,

 py -3.8 -m venv ardupy-env

ardupy-env\Scripts\activate

これで仮想環境にはいるとaip help OKとなる

なお、チャット君によれば

現在のおすすめ

Wio Terminal

  • Arduino IDE
  • TinyGo
  • PlatformIO

あたりが現実的です。

XIAO RP2040

  • MicroPython(最も情報が多い)
  • CircuitPython
  • Arduino IDE

がおすすめです。

2026年6月19日金曜日

raspberry pi pico/w , esp8266,esp32 by arduinoIDE using freertos

port uf2boardとなるようにブートモードでrapsicoをつなぐがportが出てこん場合は

以下の設定変更を実施する必要あり

[ツール]→[Upload Method]の設定値 default uf2とする

[ツール]→[Operating system]の設定値 freeRTOS SMPとする

以下が書き込み成功したらserial monitorのportをCOMnにすると

どんな表示スピードでもOKとなる なんでやろ?

#define __FREERTOS 1
#include <FreeRTOS.h>
#include <task.h>

// タスク1:Lチカを行う処理
void taskBlink(void *pvParameters) {
  pinMode(LED_BUILTIN, OUTPUT);
  while(1) {
    digitalWrite(LED_BUILTIN, HIGH);
    vTaskDelay(pdMS_TO_TICKS(500)); // 500ms待機
    digitalWrite(LED_BUILTIN, LOW);
    vTaskDelay(pdMS_TO_TICKS(500));
  }
}

// タスク2:シリアル通信でメッセージを出力
void taskPrint(void *pvParameters) {
  while(1) {
    Serial.println("Task 2 is running...");
    vTaskDelay(pdMS_TO_TICKS(1000)); // 1000ms待機
  }
}

void setup() {
  Serial.begin(115200);

  // タスク1の生成 (タスク関数, タスク名, スタックサイズ, パラメータ, 優先度, ハンドル)
  xTaskCreate(taskBlink, "BlinkTask", 128, NULL, 1, NULL);

  // タスク2の生成
  xTaskCreate(taskPrint, "PrintTask", 128, NULL, 1, NULL);

  // vTaskStartScheduler() は自動的に呼ばれるためsetup内に記述不要
}

void loop() {
  // FreeRTOSを使用している場合、loop関数は使用しないか、
  // 最低でも vTaskDelay などの待機処理を組み込む必要があります。
}

2026年6月10日水曜日

少し挙動がおかしいwebserver on raspicow(need refactor)

 #include <WiFi.h>

const char* ssid = "Pikara2-91d8e4";

const char* password = "";

WiFiServer server(80);

const int LED_PIN = LED_BUILTIN;

void setup() {

  Serial.begin(115200);

  pinMode(LED_PIN, OUTPUT);

  digitalWrite(LED_PIN, LOW);

  Serial.println("Connecting...");

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }

  Serial.println();

  Serial.println("WiFi connected");

  Serial.print("IP address: ");

  Serial.println(WiFi.localIP());


  server.begin();

}


void loop() {

  WiFiClient client = server.available();


  if (!client) {

    return;

  }


  Serial.println("New Client");


  String request = client.readStringUntil('\r');

  Serial.println(request);


  if (request.indexOf("/ON") >= 0) {

    digitalWrite(LED_PIN, HIGH);

  }


  if (request.indexOf("/OFF") >= 0) {

    digitalWrite(LED_PIN, LOW);

  }


  client.println("HTTP/1.1 200 OK");

  client.println("Content-Type: text/html");

  client.println("Connection: close");

  client.println();


  client.println("<html><body>");

  client.println("<h1>Pico W Web Server</h1>");

  client.println("<a href=\"/ON\">LED ON</a><br>");

  client.println("<a href=\"/OFF\">LED OFF</a>");

  client.println("</body></html>");


  delay(1000);

  client.stop();

}

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

以下のリファクタが回答された

#include <WiFi.h>


const char* ssid = "YOUR_SSID";

const char* password = "YOUR_PASSWORD";


WiFiServer server(80);


void sendPage(WiFiClient& client)

{

  bool ledState = digitalRead(LED_BUILTIN);


  client.println("HTTP/1.1 200 OK");

  client.println("Content-Type: text/html; charset=UTF-8");

  client.println("Connection: close");

  client.println();


  client.println("<!DOCTYPE html>");

  client.println("<html>");

  client.println("<head>");

  client.println("<meta charset='utf-8'>");

  client.println("<meta name='viewport' content='width=device-width,initial-scale=1'>");

  client.println("<title>Pico W LED</title>");

  client.println("</head>");

  client.println("<body>");

  client.println("<h1>Pico W Web Server</h1>");


  if (ledState)

    client.println("<p><b>LED = ON</b></p>");

  else

    client.println("<p><b>LED = OFF</b></p>");


  client.println("<p><a href='/ON'><button style='font-size:24px'>LED ON</button></a></p>");

  client.println("<p><a href='/OFF'><button style='font-size:24px'>LED OFF</button></a></p>");


  client.println("</body>");

  client.println("</html>");

}


void setup()

{

  Serial.begin(115200);

  delay(2000);


  pinMode(LED_BUILTIN, OUTPUT);

  digitalWrite(LED_BUILTIN, LOW);


  Serial.println();

  Serial.println("Connecting WiFi...");


  WiFi.begin(ssid, password);


  while (WiFi.status() != WL_CONNECTED)

  {

    delay(500);

    Serial.print(".");

  }


  Serial.println();

  Serial.println("WiFi Connected");

  Serial.print("IP Address: ");

  Serial.println(WiFi.localIP());


  server.begin();


  Serial.println("Server Started");

}


void loop()

{

  WiFiClient client = server.available();


  if (!client)

  {

    delay(1);

    return;

  }


  Serial.println("Client Connected");


  String request = "";


  unsigned long timeout = millis();


  while (client.connected() && millis() - timeout < 2000)

  {

    if (client.available())

    {

      char c = client.read();

      request += c;


      if (request.endsWith("\r\n\r\n"))

      {

        break;

      }

    }

  }


  Serial.println("----- REQUEST -----");

  Serial.println(request);


  if (request.indexOf("GET /ON") >= 0)

  {

    digitalWrite(LED_BUILTIN, HIGH);


    client.println("HTTP/1.1 303 See Other");

    client.println("Location: /");

    client.println("Connection: close");

    client.println();

  }

  else if (request.indexOf("GET /OFF") >= 0)

  {

    digitalWrite(LED_BUILTIN, LOW);


    client.println("HTTP/1.1 303 See Other");

    client.println("Location: /");

    client.println("Connection: close");

    client.println();

  }

  else

  {

    sendPage(client);

  }


  delay(10);

  client.stop();


  Serial.println("Client Disconnected");

}

2026年6月8日月曜日

wio terminal sdcard (レッツトライ)

ウィンドウズでonedriveに勝手にarduinoが割り当てられていたので

c:Arduinoフォルダを作って、preferenceで既定フォルダをそれにしてlibraryもコピーした

コンパイルも焼きこみも無事に終了 しかしdraw failed 

そもそも購入したのがハズレでSDの読みが不安定(最後までカチとならん)

其の後、強く押し込む(ピンセットで)とカチとなった

 #include <LGFX_AUTODETECT.hpp>

#include <SPI.h>
#include "Seeed_FS.h"
#include "SD/Seeed_SD.h"

static LGFX tft;

void setup() {
  Serial.begin(115200);
  while (!Serial);

  Serial.println();
  Serial.println("=== JPEG TEST ===");

  // LCD初期化
  tft.init();
  tft.setRotation(3);

  pinMode(LCD_BACKLIGHT, OUTPUT);
  digitalWrite(LCD_BACKLIGHT, HIGH);

  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_WHITE);
  tft.setCursor(0, 0);

  // SDカード初期化
  Serial.println("SD init...");

  if (!SD.begin(SDCARD_SS_PIN, SDCARD_SPI)) {
    Serial.println("SD FAIL");
    tft.println("SD FAIL");
    return;
  }

  Serial.println("SD OK");
  tft.println("SD OK");

  // JPEGオープン
  File jpg = SD.open("/sample.jpg");

  if (!jpg) {
    Serial.println("OPEN FAIL");
    tft.println("OPEN FAIL");
    return;
  }

  Serial.print("FILE SIZE = ");
  Serial.println(jpg.size());

  // 先頭16バイト表示
  uint8_t buf[16];

  int n = jpg.read(buf, sizeof(buf));

  Serial.print("HEAD = ");

  for (int i = 0; i < n; i++) {
    if (buf[i] < 16) Serial.print('0');
    Serial.print(buf[i], HEX);
    Serial.print(' ');
  }

  Serial.println();

  // ファイル先頭へ戻す
  jpg.seek(0);

  Serial.println("DRAW JPEG...");

  bool result = tft.drawJpg(&jpg, jpg.size(), 0, 0);

  jpg.close();

  if (result) {
    Serial.println("JPEG DRAW OK");
  } else {
    Serial.println("JPEG DRAW FAILED");
    tft.setCursor(0, 20);
    tft.println("JPEG DRAW FAILED");
  }
}

void loop() {
}

2026年6月7日日曜日

tinygo-wioterminal(button-int-with-chatteringOK)

// チャタリング対策ずみコード チャット君に聞いた 

package main

import (

"machine"

"time"

)


func main() {

button1 := machine.BUTTON_1

button1.Configure(machine.PinConfig{

Mode: machine.PinInput,

})


led := machine.LED

led.Configure(machine.PinConfig{

Mode: machine.PinOutput,

})


var changed bool


button1.SetInterrupt(machine.PinToggle, func(machine.Pin) {

changed = true

})


for {

if changed {

// チャタリングが収まるまで待つ

time.Sleep(30 * time.Millisecond)


led.Set(button1.Get())


changed = false

}


time.Sleep(1 * time.Millisecond)

}

}

2026年6月5日金曜日

esp8266 async server not OK / esp32 async server OK

 lion(wmos)d1 esp w-room-02でいけた.asyncはだめのようだ。。。。チャットくんによるとRAMがたりんげな

esp32 dev module(devkit-c中華パチもん)でasyncばっちりでした

xiao rp2040 & microblocks 最高

 arduinoIDEめちゃ遅い、platformIOうごかん、micropython,ardupy,circuitpython全滅

しかしhttps://wiki.seeedstudio.com/ja/xiao_rp2040_microblocks/ microblocks偉大なり