2025年2月16日日曜日

raspberry pi and legacy cam / gpiozero

 

Raspberry Pi(ラズパイ)のOSが32ビットか64ビットかを確認するには、コマンド「lsb_release -a」を使用します
【確認方法】
  1. コマンド「lsb_release -a」を実行します。
また、OSが対応するbitを確認するには「getconf LONG_BIT」を使用します。


bullseye 32bitにはraspistillが入っていたが


RasTech Raspberry Pi カメラモジュール Raspberry Pi カメラ 500万画素 Raspberry Pi 5/4B/3B+/3B/2B+/ZERO1.3/ZERO 2W/ZERO W for Raspberry Pi クリアスタンド*1、リボンケーブル*3

https://qiita.com/yamatonori/items/019d05a19b206cbcf571 によればOV5647センサー

でLIBCAMERAを使う準備をして成功 VNCでも動いた

https://hellobreak.net/raspberry-pi-bullseye-libcamera/ に説明が詳しい

-----------------about gpiozero---------------------------------------------------------------------------------------------

https://gpiozero.readthedocs.io/en/latest/recipes.html#led 英語
https://www.denshi.club/ 日本語

2025年2月11日火曜日

obnizスマホ両指操作など( https://blog.obniz.com/make/kids-project-simple-rc-car )

https://thunderblog.org/2019/02/obniz-rc.html これすぐれものサイト

https://docs.obniz.com/ja/guides/obniz-starter-kit/iot-by-html-and-javascript/browser-button-and-servo-motor :: オブニズJs例題 servo motor

https://docs.obniz.com/ja/sdk/parts/DCMotor/README.md

:: ⚠obnizBoard/obnizBoard1YにDCMotorをつなぐときは、obnizBoard/obnizBoard1Y電源供給はPCなどには繋がないでください。ノイズ等によりPCが破損する恐れがあります。

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

<html> <head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>

<link

rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css"
integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB"
crossorigin="anonymous"
/>
<script
src="https://unpkg.com/obniz@3.x/obniz.js"
crossorigin="anonymous"
></script>
</head>
<body>
<br />
<button
id="lf"
class="btn btn-warning"
style="width:45%;height:100px;font-size:50px;"
>
</button>
<button
id="rf"
class="btn btn-warning"
style="width:45%;height:100px;font-size:50px;"
>
</button>
<br />
<br />
<button
id="lb"
class="btn btn-primary"
style="width:45%;height:100px;font-size:50px;"
>
</button>
<button
id="rb"
class="btn btn-primary"
style="width:45%;height:100px;font-size:50px;"
>
</button>
<script>
let obniz = new Obniz("4998-4317");
obniz.onconnect = async () => {
let motorA = obniz.wired("DCMotor", { forward: 3, back: 2 });
motorA.power(40); // pwm? maybe....
let motorB = obniz.wired("DCMotor", { forward: 0, back: 1 });
motorB.power(40);

$("#lf").on("touchstart mousedown", () => {
motorA.move(true);
}); // during event , front on
$("#lf").on("touchend mouseup", () => {
motorA.stop();
});
$("#lb").on("touchstart mousedown", () => {
motorA.move(false);
}); // during event , back on
$("#lb").on("touchend mouseup", () => {
motorA.stop();
});

$("#rf").on("touchstart mousedown", () => {
motorB.move(true);
});
$("#rf").on("touchend mouseup", () => {
motorB.stop();
});
$("#rb").on("touchstart mousedown", () => {
motorB.move(false);
});
$("#rb").on("touchend mouseup", () => {
motorB.stop();
});
};

</script>
</body>
</html>

2025年2月3日月曜日

esp32-cam / esp01(dcm,static IPの怪の解決に成功はしたが?)

esp32-camでexampleのcamera web serverに以下の手段でstatic addressを振って成功

ただしesp32-wroverにするだけでは不足で①#define CAMERA_MODEL_AI_THINKERを

有効にして、もとの設定をコメントアウトする②partition schemaをhugeにする必要あり

以下は①②がデフォルトでそうなってるっぽいが困ったら上記を参照すること!

https://randomnerdtutorials.com/projects-esp32-cam/ でesp32-wroverを選んで

esp32-cam robot うごくが通信不安定 電源問題かもしれない。。。。

このコードはstation modeなので、softapもいずれ。。。。たぶんいらんな(以下参照)

おなじsiteのvideo streaming web serverのコードに

  IPAddress local_IP(192,168,43,160);

  IPAddress gateway(192,168,43,1);

  IPAddress subnet(255,155,0,0);

  IPAddress primaryDNS(8,8,8,8);

  IPAddress secondaryDNS(8,8,4,4);

  if(!WiFi.config(local_IP,gateway,subnet,primaryDNS,secondaryDNS)){

    Serial.println("STA failed to configure");

  }

の数行を  

  WiFi.begin(ssid, password);

 の前におくとstatic addressが振られる!


--------arecore no1---------------------------------------

 txdはgpio1,rxdはgpio3だった

以下はdrv8833のPWMでないコード まずは成功したので残すが、arecore noo2に

後述したようにモータはサーボもDCも一個だけしかつかえんようだ。。。。

#define VIN1 1

#define VIN2 3

void setup() 

{

  pinMode(VIN1, OUTPUT);

  pinMode(VIN2, OUTPUT);

   //analogWriteFreq(1000);

   //analogWriteRange(1000);

}


void loop()

{

  int i = 0;


  //正回転

  digitalWrite(VIN1, LOW);

  digitalWrite(VIN2,HIGH);

  //回転速度を上げる

  //for(i = 0; i < 1000; i ++)

 // {

   // analogWrite(VIN1, i);

    //delay(10);

  //}

  delay(500);

  digitalWrite(VIN1,HIGH);

  digitalWrite(VIN2,HIGH);

  delay(500);

  digitalWrite(VIN1,HIGH);

  digitalWrite(VIN2,LOW);

  //回転速度を上げる

  //for(i = 0; i < 1000; i ++)

 // {

   // analogWrite(VIN1, i);

    //delay(10);

  //}

  delay(500);

  digitalWrite(VIN1,HIGH);

  digitalWrite(VIN2,HIGH);

  delay(500);

  //回転速度を下げる

  //for(i = 0; i < 1000; i ++)

  //{

  //  analogWrite(VIN1, 0xff - i);

  //  delay(10);

  //}


  //逆回転

  //digitalWrite(VIN1, LOW);


  //回転速度を上げる

  //for(i = 0; i < 1000; i ++)

  //{

//    analogWrite(VIN2, i);

  //  delay(10);

  //}


  //回転速度を下げる

  //for(i = 0; i < 1000; i ++)

  //{

   // analogWrite(VIN2, 0xff - i);

  //  delay(10);

  //}

}

------------arecore no1---------------static ip -----------------------------------

https://teramorosu.hatenablog.com/entry/2016/10/23/163640でうまく設定できない

https://qiita.com/wamisnet/items/e2aea81f7f800a262be6を参考に改変

以下に成功 

ただしmotor2個につかうために0,2,1,3の組み合わせを使うも失敗

当然サーボ1個とモータ1個の同時制御も不成功

esp8266で再挑戦したら、あっさり成功 esp01では供給電流がたりんようだ

#include <WiFiClient.h>

#include <ESP8266WiFi.h>

#include <ESP8266WebServer.h>

#define LED 13                    //LED点灯に使用するピン

ESP8266WebServer server(80);


void onroot() {

    String msg ;

    msg += "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"><title>LED Button</title></head><body>";

    msg += "<script>";

    msg += "function sendOn(){" ;

    msg += "send(\"/on/\");";

    msg += "document.getElementById(\"LEDstatus\").innerHTML=\"ON!\";";

    msg += "}";

    msg += "function sendOff(){";

    msg += "send(\"/off/\");";

    msg += "document.getElementById(\"LEDstatus\").innerHTML=\"OFF!\";";

    msg += "}";

    msg += "function send(url){";

    msg += "var xhr = new XMLHttpRequest();";

    msg += "xhr.open(\"GET\", url, true);";

    msg += "xhr.send();";

    msg += "}";

    msg += "</script>";

    msg += "<button id=\"on\" onClick=sendOn()>LED ON</button>";

    msg += "<button id=\"off\" onClick=sendOff()>LED OFF</button>";

    msg += "<p id=\"LEDstatus\"></p>";

    msg += "</body></html>";


    server.send(200, "text/html", msg);

}


void LedOn(){

  Serial.println("ON");

  digitalWrite(LED,HIGH);

  server.send(200, "text/html","OK");

}


void LedOff(){

  Serial.println("OFF");

  digitalWrite(LED,LOW);

  server.send(200, "text/html","OK");

}


void setup() {


    pinMode(LED, OUTPUT);


    Serial.begin(115200);

    Serial.println("");

    Serial.println("ESP8266 Wifi test");


    // WiFi.config(IPAddress(192, 168, 43, 160), WiFi.gatewayIP(), WiFi.subnetMask());

  WiFi.config(IPAddress(192,168,43,160),IPAddress(192,168,43,1),\

     IPAddress(255,255,255,0)); // これで成功した

    WiFi.begin("HUAWEI@nova@lite@3+","99991111");

    WiFi.mode(WIFI_STA);


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

        delay(500);

        Serial.print(".");

    }


    Serial.println("");

    Serial.print("Connected as ");

    Serial.println(WiFi.localIP());


    // Web server setting

    server.on("/", onroot);

    server.on("/on/", LedOn);

    server.on("/off/", LedOff);

    server.begin();

}


void loop() {

    server.handleClient();

}