Raspberry Pi(ラズパイ)のOSが32ビットか64ビットかを確認するには、コマンド「lsb_release -a」を使用します。【確認方法】- コマンド「lsb_release -a」を実行します。
また、OSが対応するbitを確認するには「getconf LONG_BIT」を使用します。
- コマンド「lsb_release -a」を実行します。
https://thunderblog.org/2019/02/obniz-rc.html これすぐれものサイト
https://docs.obniz.com/ja/
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
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();
}
以下が成功コード let input2...はinputにするとエラーとなる、理由不明
https://zenn.dev/ha864zenn/books/how-to-make-biped-robot/viewer/communicating-via-bluetooth :: micro:bit ble pedia
https://monomonotech.jp/
https://qiita.com/nanbuwks/
https://qiita.com/youtoy/
https://monomonotech.jp/
返信転送 リアクションを追加 |
bluetooth.onBluetoothConnected(function () {
-----------ラズパイ----------------------------------------
zero は2になっても2GしかWifi未対応 3a+は5Gも対応している
install時のusキーボード配列は、起動後にraspi-configでjpキーボードに変更できた
https://mail.google.com/mail/
gpiozero で 直感的にデバイスを制御する
--------------キースタジオモータボードで無線操縦(サバクラ共通)--------------------------------
https://wiki.keyestudio.com/Ks0308_keyestudio_Motor_Drive_Breakout_Board_for_micro_bit
このサイトのコードをjsですると
digitalWritePin(DigitalPin.P14, 1)
basic.forever(function () {
pins.analogWritePin(AnalogPin.P1, 600)
pins.digitalWritePin(DigitalPin.P13, 1)
pins.digitalWritePin(DigitalPin.P12, 0)
pins.analogWritePin(AnalogPin.P2, 600)
pins.digitalWritePin(DigitalPin.P15, 1)
pins.digitalWritePin(DigitalPin.P16, 0)
basic.pause(500)
pins.digitalWritePin(DigitalPin.P13, 0)
pins.digitalWritePin(DigitalPin.P12, 0)
pins.digitalWritePin(DigitalPin.P15, 0)
pins.digitalWritePin(DigitalPin.P16, 0)
basic.pause(500)
})
_keyestudio_Motor_Drive_Breakout_Board_for_micro_bit
--
https://iot-gym.com/arducammini-obniz/ を基本とするがakizukiの取り扱い品が
mini-2m から mini-2m-plusになっていたので、以下のサイトを参照する
なお上サイトのようにvccを抜くのはいかんようだ。。。。
https://qiita.com/y-hira/items/0a1f4a69f1b1e858a916 のようにすべてつなぐ
それでもlow voltageとアラームでて画面がでない、単3x3をVCC、GNDに追加してでた
それでも画面は緑がかって。。。。
繰り返すが本サイトの修正が必須!
ストリーム表示でも同様だ!
<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>
<script src="https://unpkg.com/obniz@latest/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<img id="image">
<script>
var obniz = new Obniz("5312-1232"); //obnizIDを入力する
obniz.onconnect = async function () {
var cam = obniz.wired("ArduCAMMini", { cs:0, mosi:1, miso:2, sclk:3, gnd:4, vcc:5,sda:6, scl:7 });
await cam.startupWait();
while (true) { //これでストリームとなる
const data = await cam.takeWait('160x120'); //'160x120'or'176x144'or'320x240'or'352x288'or'640x480'or'800x600'or'1024x768'or'1280x960'or'1600x1200'を指定する
data.unshift(255);
console.log("image size = " + data.length + " bytes");
const base64 = cam.arrayToBase64(data);
document.getElementById("image").src = "data:image/jpeg;base64, " + base64;
}
}
</script>
</body>
</html>
https://www.petitmonte.com/ プチモンテ uno&wroom
https://omoroya.com/ おもろ家 uno&kit-oscilo
https://sanuki-tech.net/ さぬきテックネット micro:bit
https://hellobreak.net/ メタエレ実験室 picoとraspi
esp系はrandom nerd tutorialが一番(picoもある)
obnizは本社サイトが一番
http://www.picfun.com/ 後閑さん PICの神様
意外とないのがpicow.....以下に
https://sozorablog.com/raspberry-pi-pico-w-review/
https://qiita.com/Nabeshin/items/b195cad1afe99ce29f1e :: 一番親切なサイト
ただしipがdhcpでadhocに割り当てられるのが難
https://mukujii.sakura.ne.jp/esp2.html でgpio0が怪しげだったので17に変更
左右へふるには当該側だけがうごく
/* https://mukujii.sakura.ne.jp/esp2.html WiFi-Control-Car(softAP) */
#include <WiFi.h>
const char ssid[] = "ESP32AP-WiFi";
const char pass[] = "esp32apwifi";
const IPAddress ip(192,168,30,3);
const IPAddress subnet(255,255,255,0);
const char html[] =
"<!DOCTYPE html><html lang='ja'><head><meta charset='UTF-8'>\
<style>input {margin:8px;width:80px;}\
div {font-size:16pt;color:red;text-align:center;width:400px;border:groove 40px orange;}</style>\
<title>WiFi_Car Controller</title></head>\
<body><div><p>Tank Controller</p>\
<form method='get'>\
<input type='submit' name='le' value='左' />\
<input type='submit' name='fo' value='前' />\
<input type='submit' name='ri' value='右' /><br>\
<input type='submit' name='st' value='停止' /><br>\
<input type='submit' name='bl' value='後左' />\
<input type='submit' name='ba' value='後ろ' />\
<input type='submit' name='br' value='後右' /><br><br>\
</form></div></body></html>";
void stop(){
digitalWrite(17, LOW);
digitalWrite(2, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
WiFiServer server(80);
void setup()
{
Serial.begin(115200);
WiFi.softAP(ssid,pass);
delay(100);
WiFi.softAPConfig(ip,ip,subnet);
IPAddress myIP = WiFi.softAPIP();
pinMode(17, OUTPUT);
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
delay(10);
server.begin();
Serial.print("SSID: ");
Serial.println(ssid);
Serial.print("AP IP address: ");
Serial.println(myIP);
Serial.println("Server start!");
}
void loop(){
WiFiClient client = server.available();
if (client) {
String currentLine = "";
Serial.println("New Client.");
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
client.print(html);
client.println();
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
if (currentLine.endsWith("GET /?fo")) {
stop();
digitalWrite(17, HIGH);
digitalWrite(4, HIGH);
}
if (currentLine.endsWith("GET /?le")) {
stop();
digitalWrite(17, HIGH);
}
if (currentLine.endsWith("GET /?ri")) {
stop();
digitalWrite(4, HIGH);
}
if (currentLine.endsWith("GET /?ba")) {
stop();
digitalWrite(2, HIGH);
digitalWrite(5, HIGH);
}
if (currentLine.endsWith("GET /?bl")) {
stop();
digitalWrite(2, HIGH);
}
if (currentLine.endsWith("GET /?br")) {
stop();
digitalWrite(5, HIGH);
}
if (currentLine.endsWith("GET /?st")) {
stop();
}
}
}
client.stop();
Serial.println("Client Disconnected.");
}
}
https://makers-with-myson.blog.ss-blog.jp/2017-01-14 を参考に
PWMのFREQ/DUTYをセットして成功した DUTYは1000くらいまで設定しないと
モータがうごかんかった PINMODE設定不要だったこと(行儀わるし、書くべし)
https://www.ei.tohoku.ac.jp/xkozima/lab/espTutorial0.html にFREQ目安あり
PWM 周波数が高いほど、使用可能なデューティ分解能は低くなり、その逆も同様です。
https://micropython-docs-ja.readthedocs.io/ja/v1.19.1ja/library/machine.PWM.html より
const in ledPin = 2;
void setup(){
pinMode(ledPin,OUTPUT);
analogWriteFreq(1000);
analogWriteRange(1000);
}
void loop(){
digitalWrite(4,LOW); // drv8833用、stby3.3vわすれずに
for(int dutyCycle=0;dutyCycle<1000;dutyCycle++){
analogWrite(ledPin,dutyCycle);
delay(10);
}
for(int dutyCycle=0;dutyCycle<1000;dutyCycle++){
analogWrite(ledPin,dutyCycle);
delay(10);
}
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
// https://cotechworks.ltt.jp/2023/06/05/post-668/ を改変
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#define WIFI_SSID "ESP8266-softAP" /* SSID */
#define WIFI_PWD "12345678" /* パスワード */
#define AIN0 2
#define AIN1 4
ESP8266WebServer server(80);
IPAddress ip( 192, 168, 0, 1 ); /* ESP8266のIPアドレス */
IPAddress subnet( 255, 255, 255, 0 ); /* サブネットマスク */
void setup() {
pinMode(AIN0,OUTPUT);
pinMode(AIN1,OUTPUT);
/* softAPモードに設定 */
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(ip, ip, subnet);
WiFi.softAP(WIFI_SSID, WIFI_PWD);
server.on("/", []() {
server.send(
200,
"text/html",
"<h1>Hello! Web Server!</h1>"
"Click <a href=\"/F\">forward</a>"
"</br>"
"Click <a href=\"/B\">backward</a>");
});
server.on("/F", []() {
digitalWrite(AIN0,HIGH);
digitalWrite(AIN1,LOW);
delay(100);
digitalWrite(AIN0,HIGH);
digitalWrite(AIN1,HIGH);
server.send(
200,
"text/html",
"<h1>Hello! Web Server!</h1>"
"Click <a href=\"/F\">forward</a>"
"</br>"
"Click <a href=\"/B\">backward</a>");
});
server.on("/B", []() {
digitalWrite(AIN0,LOW);
digitalWrite(AIN1,HIGH);
delay(100);
digitalWrite(AIN0,HIGH);
digitalWrite(AIN1,HIGH);
server.send(
200,
"text/html",
"<h1>Hello! Web Server!</h1>"
"Click <a href=\"/F\">forward</a>"
"</br>"
"Click <a href=\"/B\">backward</a>");
});
server.begin();
}
void loop() {
/* クライアントからアクセスがあった時の処理 */
server.handleClient();
}