2023年7月28日金曜日

router中継器設定/samba設定/mjpg-streamer latest

 admin:pwd is for gmail

子機WG1800HP/WG1400HPの使い方|機能詳細ガイド (aterm.jp)

----------samba-------------------------------------------------------------

https://qiita.com/loach/items/36825623bc9277b08b71 注意 複数のサーバはたたん!

あくまで、ラズパイにファイルを送る際の便法 よって、ブラウザが使いづらい

raspi3a,raspi-zeroで有用と思う raspi4/raspi400はインターネット越しで送れるから。。。

-------------mjpg-streamer------------------------------------------------------------

https://novicengineering.com/ubuntu_lock_error/ :: sudo apt upgrade失敗時の処理 

やはりsudo update/ugradeはethernetがよろしいようで。。。

32ビットOSでraspi3でいろいろしてインスト成功 start.shがあったのでばっちり成功

Raspberry PiでMJPG-Streamerを使って監視カメラを作ってみよう (ponkichi.blog)

bullseyeでのインストだが、busterでも成功した!

WEBカメラで動画ストリーミング (hiramine.com) にあるように

sudo ./mjpg_streamer -i "./input_uvc.so -f 10 -r 320x240 -d /dev/video0 -y  u00 -n" -o "./output_http.so -w ./www -p 8080"  でウエブカムから起動成功!

注:以上はラズパイ3以上のはなし ラズパイゼロではfswebcamとか   できるが遅い!

またラズパイゼロではウエブカムのmic部分がjuliusで機能しない(usbマイクはOK)

2023年7月23日日曜日

Julius on Raspberry Pi

 https://neos21.net/blog/2020/12/24-02.html を参考にしたが 

wget https://github.com/julius-speech/julius/archive/v4.6.tar.gz

configureは以下のとおりにした、

./configure --with-mictype=alsa --buid=aarch64  で初回エラーとなり、以下に従い成功

http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_julius/

configure: error: no ALSA header!

configure: error: ./configure failed for libsent

 のエラーの場合は下記のコマンドでライブラリをインストールする。

$ sudo aptitude install libasound2-dev

git clone https://github.com/julius-speech/dictation-kit.git ここgitをつけんとだめ!

2Gもある!だいぶ時間がかかる(今後もそうだろう) 途中でやめてはだめ!プロンプトにもどるまで我慢!

dictation-kitはgitでないとゲットできん sudo apt-get install git-lfsでバージョンアップしてgit clone する  

dictation-kitフォルダに移動して julius -C ./main.jconf -C ./am-gmm.jconf -nostrip

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

クジラ飛行机のmeirei.voca,meirei.grammerをmeireiフォルダにいれる

そしてmeireiフォルダでmkdfa.pl meireiとするとdfatmpができるのでdfaに変更

arecord -lでみたカードとデバイスを参考に数字を入れる(以下)

このファイルはjuliusトップにおく -nostripをつけんほうがうまくいった 理由不明

export ALSADEV="plughw:3,0"

julius -C ./dictation-kit/am-gmm.jconf  -gram ./meirei/meirei 




2023年7月21日金曜日

Obniz::ardu-cam streaming radicon-car

cf https://iot-gym.com/arducammini-obniz/

https://qiita.com/y-hira/items/0a1f4a69f1b1e858a916

下記コードはarducam-mini-plusのvccを外部からとっているので、そこのところ注意!

<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> <h2 class="text-center" style="margin:40px">motor contol</h2> <div id="onoff-buttons" class="text-center"> <button id="front" type="button" class="btn btn-primary">front</button> <button id="back" type="button" class="btn btn-secondary">back</button ><br /> <button id="right" type="button" class="btn btn-primary">right</button> <button id="left" type="button" class="btn btn-secondary">left</button ><br /> <div id="obniz-debug"></div> <img id="image"> <script> var obniz = new Obniz("4998-4317"); //obnizIDを入力する obniz.onconnect = async function () { var motor = obniz.wired("DCMotor",{forward:10,back:11}); var motor2 = obniz.wired("DCMotor",{forward:8,back:9}); $('#front').click(function () { motor.forward(); motor2.forward(); setTimeout(function(){ motor.stop();motor2.stop(); }, 1000); }); $('#back').click(function () { motor.reverse(); motor2.reverse(); setTimeout(function(){ motor.stop();motor2.stop(); }, 1000); });  $('#right').click(function () { motor.forward(); motor2.reverse(); setTimeout(function(){ motor.stop();motor2.stop(); }, 1000); }); $('#left').click(function () { motor.reverse(); motor2.forward() setTimeout(function(){ motor.stop();motor2.stop(); }, 1000); }); var cam = obniz.wired("ArduCAMMini", { cs:0, mosi:1, miso:2, sclk:3, gnd:4,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); // for mini-plus (mini need no this code) console.log("image size = " + data.length + " bytes"); const base64 = cam.arrayToBase64(data); document.getElementById("image").src = "data:image/jpeg;base64, " + base64; } // end of while } </script></body></html>

-------------------arducam only----------------------------------------------------------

<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("4998-4317"); //obnizIDを入力する
obniz.onconnect = async function () {
var cam = obniz.wired("ArduCAMMini", { cs:0, mosi:1, miso:2, sclk:3, gnd:4, sda:6, scl:7 });
await cam.startupWait();
const data = await cam.takeWait('320x240'); // これでも写真がでるのが結構遅い
 //'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>

2023年7月16日日曜日

赤外線あれこれ(マイコン、ラズパイ..)

 赤外線受信モジュールの信号は割り込まれるのでINT0かINT1のピンを使うのはご存じでしたか。先日のATtiny85の電車はほかのピンを使っていました。どうりで反応がいまいちだったような気がします。 吉野さんより

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

ここにラズパイでの赤外線処理を書く予定。。。。

2023年7月7日金曜日

ubuntu::Julius,カメラ、録音 || ラズピコ sdcard.pyの肝

---------------ubuntuでジュリアス成功------------------------------- 

https://neos21.net/blog/2020/12/24-02.html#julius-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B

ラズパイOSはlibsent-error.....libasound2-dev install,uname -m ->machinetype

./configure --build=machinetype --with-mictype=alsa、sudo apt install git-lfs

git clone https://github.com/julius-speech/dictation-kit.gitでOK

----------------------------------------------------------------------------------------------------------

https://qiita.com/tukiyo3/items/524b435ffaf61199f434 :: ウブンツで録音が詳しい

https://trycatchand.blogspot.com/2013/12/how-to-recognize-the-built-in-webcam-on-ubuntu.html  :: ウブンツでカメラが詳しい

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

ラズピコでSDカード成功!どうも仕様が変わったようで、おのおののラズピコで

machine.SPI(0)を確認する必要がある、理由は不明だが、0と1がダメなraspicowと

https://blog.boochow.com/article/post-5591.html

https://moyoi-memo.hatenablog.com/entry/2022/03/10/165826

以上のサイトを参考にコード書いた

それまでのraspcicoはspi(0)が一緒、0と1の無傷なraspicowはspi(0)が違っていた

このあたりnrfの時と似ているが、じゃあなぜダメなraspicowでnrf不可だったのは不明

from machine import Pin,SPI

import os,sdcard

spi=SPI(0,sck=Pin(6),mosi=Pin(7),miso=Pin(4)) # in normal raspicow!

sd=sdcard.SDCard(spi,Pin(5))

os.mount(sd,'/sd')

fp=open('/sd/test.txt','a') # a is append

fp.write('hello\n')

fp.close()

os.chdir('sd')

os.listdir()

print(open('test.txt').read())

Raspiあれこ

 https://k28h.blogspot.com/2019/10/raspberry-pi.html 画面調整

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

ラズパイにLANを経由せず無線でssh接続する方法(2種類) - Qiita

いわゆるホットスポットでネット共有するやりかた 外でのSSH・VNCはこれしかない!

一度ネット接続できたら、あとはpskは書き換えられるようだ wpa_supplicant

--------------------------------------------------------------

日本語化

 https://www.indoorcorgielec.com/resources/raspberry-pi/raspberry-pi-input-japanese/#:~:text=%E5%B7%A6%E4%B8%8A%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%8B%E3%82%89%E3%80%8C%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B5%E3%83%AA%20%2D%3E%20Text%20Editor%E3%80%8D%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF,%E8%AA%9E%E5%85%A5%E5%8A%9B%E3%81%AB%E5%88%87%E3%82%8A%E6%9B%BF%E3%82%8F%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82 

キーボード日本語化 https://qiita.com/sukinasaki/items/426068d6e87169fa3d88 

----------------------------------------------

ラズパイゼロでは32bit buster GUI版にダウングレードして、

512mbRAMしかないraspberry pi3aで SDカードのスワップ領域を拡大したりとかイロイロしてYouTubeを見る (zenn.dev) を参考にスワップを1024にし直して、thonny,geanyはそれなりにうごくようになった GUI起動も1分少しになった lynx以外のブラウザは絶望的

ラズパイ3Aでは64ビットGUIうごかん!64ビットCUIはサクサクだが寂しいのでしない

32ビットBusterもサクサク、32ビットBullseyeもソコソコ ただしスワップ2048!

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

gpiozeroライブラリ入門①import LED その1 | RaspberryPiクックブック (denshi.club) 

このライブラリが、今後の主流かもしれない drv8835もMotorで動いた(PWM)

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

Nginxで自分のHTMLを表示させる方法:htmlディレクトリはどこにある? - Just do IT (hatenablog.com) 

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

speakerのないラズパイの場合、usb-speakerを認識させればいい

ラズベリーパイにUSBスピーカーを接続して音を出す超簡単な方法(Raspbian Stretch Jessie GUI編) | IoT PLUS (iot-plus.net) モノラル音源の場合の対処も書いている

-------------------------------------------------------------------------

Raspberry Piに2.4ドルのI2S DAC MAX98357Aをつないで音を鳴らす - みかんのゆるふわ技術ブログ (mikan-tech.net) のとおりに設定にしたがalsamixerでミキサがないので音量調整できんと叱られた aplay -l でカード0,デバイス0とはでたが。。。

Raspberry Pi2 に I2S DACを接続する - Qiita では、snd_soc_hifiberry_dacがでてこん

でも、aplay -lで認識されているっぽいので、上記のカードとデバイスをつかって

aplay -D plughw:0,0 test.wavで爆音成功 音量調整はスピーカの途中にボリュームいれ?

ラズパイ3 + I2S DAC (ES9023/PCM5102A) + AirPlay オーディオ - Qiitaを参考に

/etc/modulesにI2c-devのあとにsnd_soc_bcm2708,snd_soc_bcm2708_i2s,bcm2708_dmaengine,snd_soc_pcm5102aをいれて最期にsnd_soc_hifiberry_dacとしたら

alsaxmixerが成功したっぽい,usb-speakerをはずして大成功!(つけたままだとusb-speakerが優先される)

参考::ラズベリーパイでI2S出力 (mydns.jp) 

Raspberry Pi で再生と録音を行う | なたで日記 (natade.net) 

Raspberry Pi 音声まわりコマンドまとめ - Qiita 

なども乱読した

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

usb-mic::https://hellobreak.net/raspberry-pi-usb-microphone/ 

録音::USBーWebcamについているマイクを利用する

再生は2種類ある(イヤホンジャックがついていないとかhdmiディスプレイにきりかわらん場合とか、ディスプレイにスピーカ出力がないとかの場合の対処))

USBスピーカ:: ラズベリーパイにUSBスピーカーを接続して音を出す超簡単な方法(Raspbian Stretch Jessie GUI編) | IoT PLUS (iot-plus.net) aplayで音出し、mpg321で音出し 有用サイト::MP3 WAV 変換。オンライン フリー — Convertio 

----------------------------------------

version-check :: lsb_release  -a

-------------usb microphoneがくわしい------------------------------------

http://mukudori-noise.skr.jp/RaspberryPi2_2.html juliusも載っている お得サイト

https://picockpit.com/raspberry-pi/ja/%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE64%E3%83%93%E3%83%83%E3%83%88%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A4%E3%81%AE%E8%B3%AA%E5%95%8F%E3%81%AB%E3%81%8A%E7%AD%94%E3%81%88%E3%81%97/#How_to_check_if_my_Raspberry_Pi_OS_is_64_bit

2023年7月5日水曜日

NRF24L01(arduino,pico/w)

 ---------------------------nrf on arduino---------------------------

無線アダプタはVCCをアルディーノの5Vをもちいる 出力MAXでつかうこと 速度も変換する命令があるげ

ちなみに通信速度は、radio.setDataRate(RF24_250KBPS); or radio.setDataRate(2);
RF24_1MBPS or 0 (デフォルト)RF24_2MBPS or 1  のようです。  吉野さんより
https://burariweb.info/electronic-work/arduino-wireless-communication-module-nrf24l01.html#nRF24L01-2 で出力MAXで成功 atmega168とnanoの組み合わせをやるには上記ライブラリがインストできんかった (arduinoIDEのためかもしれんが、詳細は不要) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 以下はMIRF仕様
nRF24L01モジュールで無線通信 | なんでも独り言 (ehbtj.com)
MISO12
MOSI11
SCK13
CE8 (default)
CSN7 (default)
GitHub - aaronds/arduino-nrf24l01: An Arduino port of the http://www.tinkerer.eu/AVRLib/nRF24L01 library. この中のMirfディレクトリをzipしてIDEにライブラリ導入 ---------------mirf-- server.ino --------------------- #include <SPI.h>
#include <Mirf.h>
#include <nRF24l01.h> // このlをLにせんとだめ、上のライブラリがそうなっていた
#include <MirfHardwareSpiDriver.h>
const int buttonPin = 2;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"serv1");
Mirf.payload = sizeof(unsigned long);
Mirf.config();
Serial.println("Listening...");
}
void loop() {
const byte buttonOpen = 10;
const byte buttonClose = 20;
byte sendData[Mirf.payload]; // 最大32bit, byteの行列なので要素数は4
if (!Mirf.isSending() && Mirf.dataReady()) {
Serial.println("Got packet");
Mirf.getData(sendData); // 適当な信号を受信
Mirf.setTADDR((byte *)"clie1");
int val = digitalRead(buttonPin);
if (val == HIGH) { // スイッチを押さなければ"10"を送信
sendData[0] = buttonOpen;
} else { // スイッチを押せば"20"を送信
sendData[0] = buttonClose;
}
Mirf.send(sendData);
Serial.println("Reply sent.");
}
}

-----------mirf---- client.ino --------------------------------------------------------

#include <SPI.h>
#include <Mirf.h>
// #include <nRF2410l.h> // see server.ino これもLに訂正すること
#include <MirfHardwareSpiDriver.h>
const int ledPin = 2;
void setup(){
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"clie1");
Mirf.payload = sizeof(unsigned long);
Mirf.config();
Serial.println("Beginning ... ");
}
void loop(){
const byte buttonOpen = 10;
const byte buttonClose = 20;
unsigned long time = millis();
byte recvData[Mirf.payload]; // 最大32bit, byteの行列なので要素数は4
Mirf.setTADDR((byte *)"serv1");
Mirf.send(recvData); // 適当な信号を送信
while(Mirf.isSending()) {
}
while (!Mirf.dataReady()) {
if ((millis() - time) > 1000 ) {
Serial.println("Timeout on response from server!");
return;
}
}
Mirf.getData(recvData);
if (recvData[0] == buttonOpen) { // スイッチを押していない情報であれば
digitalWrite(ledPin, LOW);
} else { // スイッチを押した情報であれば
digitalWrite(ledPin, HIGH);
}
Serial.print("recvData: ");
for (int i = 0;i < Mirf.payload;i++) {
Serial.print(recvData[i]);
Serial.print(" ");
}
Serial.println();
delay(100);
} ------------------------------------------------------------------

Raspberry Pi Pico with nRF24L01 using MicroPython - Beky Electronics :: good code

How to easily connect a NRF24L01+ transceiver to your Raspberry Pi Pico - 

micropython/drivers/nrf24l01/nrf24l01.py at v1.19 · micropython/micropython · GitHub

micropython/drivers/nrf24l01/nrf24l01test.py at v1.19 · micropython/micropython · GitHub

(なお、rp2用のConfigを追加する必要があった pico/picow 共通)

を参考にしたがspi(0)の設定がうまくいかんかった 手持の

picoでmachine.SPI(0)をしらべ nrf24l01test.pyのplatform設定で

spi:0,miso:16,mosi:19,sck:18,scn:14,ce:17 

nrf24l01.pyのSPEEDを250Kにあわせてmaster(),slave()のピンポンに成功した!

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

先日おくったファイルでnrf24l01test.pyのusys.platform設定のrpのところがspi(0)の設定になっているのですが、どうもうまくいかず手持のラズピコのreplでimport machime\n machine.SPI(0)とするとmiso:16,mosi:19,sck:18となっておりusys.platformをそうすると成功しました!esp32をmicropython化して、nrf2401test.pyの設定どうりにやってだめなら、上記の方法でspi(0)をしらべ設定しなおせばいいと思います 吉野さんへ

その後picow-brokenでは上記のSPI情報がでるが、うまくいかんかった

picow-normalではSPI情報がちがっており、そのとうりにtest.pyを変更して成功した!