Sipeed MAixの最近のブログ記事

Web Serial API + Sipeed Maix Bit-Mic(Maixduino)

Web Serial API を Sipeed Maix Bit-Mic(Maixduino) で試してみました。

本家サイトは、Getting started with the Web Serial API です。
こちらも参考にしました。
Web Serial API+ESP32(Arduino)研究 その1 シリアルコンソール

おんちゃんは、 Arduino を、Sipeed Maix Bit-Mic(Maixduino) にして、Edge からの出力を、 Sipeed Maix Bit-Mic の
LCD に表示してみようと思います。
これが、結構、トラブりました。

1. 問題点
1) Maixduino の Serial の受信バッファが、少ない(64 byte?)。
2) LCD への書き出しは、結構遅い。
上記2つの問題が関係して、Getting started with the Web Serial API のサンプルプログラムで、 Connection を実行した時の、
最初のデータが、LCD にちゃんと出てこない。
Serial の受信バッファを、512 byte 位に増やせれば、問題解決だが、ソースを見てみると ringBuffer を使っていて、
それから先は判らないので止めました。

2. 開発環境
1) PC側
Windows10 + Edge
Apache: Windows版 with SSL

2) ボード側
board:Sipeed Maix Bit-Mic
board 開発:Visual Studio Code + Platformio IDE
platform = kendryte210
board = sipeed-maix-bit-mic
framework = arduino

Sipeed MAix Bit with MIC Maixduino(Arduino) で マイクのお試し #2 です。

前回の、Sipeed MAix Bit with MIC Maixduino(Arduino) で マイクのお試し
では、 Arduino の loop() 処理の中から I2S の取り込みや、PC への Serial 送信だったので、
もしかしたら、 I2S の取りこぼしが出ていないか、心配でした。

今回は、I2S の DMA転送完了のイベント駆動での、I2S フレームの受信と、
別タスクでの、PC への Serial 通信を試してみました。

I2S のイベント受信のサンプルは、
github.com/kendryte/kendryte-standalone-demo/blob/develop/i2s_dma/main.c

マルチタスクのプログラムは、Maixduino(Arduino)  の中に、FreeRTOS が最初から入っているので、
それを利用します。

開発環境
OS: Windows10
Platform IO IDE(Visual Studio Code)
platforomio.ini
  platform = kendryte210
  board = sipeed-maix-bit-mic
  framework = arduino

※ UART1 に、別途 USB-Serial (FT232RL) を付けます。
Maix-Bit silk  |  k210 IO  |  USB-Serial (FT232RL)
    15  --  IO15 (tx)  -->  Rx
    17  --  IO17 (rx)  -->  Tx
     GND                  -->  GND
注)上記以外は、オープン
  USB-Serial VCC は結線しません。

Sipeed MAix Bit with MIC  Maixduino(Arduino) で マイクのお試しです。

Sipeed MAix Bit with MIC MaixPy で マイクのお試し #3
で、Python での限界を感じたので、今回は、Bit 側だけ、Maixduino(Arduino) で、
プログラムを書いてみました。

I2S のプログラムガイドは、https://github.com/kendryte/kendryte-doc-standalone-programming-guide/blob/master/en/I2S.md

開発環境
OS: Windows10
Platform IO IDE(Visual Studio Code)
platforomio.ini
  platform = kendryte210
  board = sipeed-maix-bit-mic
  framework = arduino

※ UART1 に、別途 USB-Serial (FT232RL) を付けます。
Maix-Bit silk  |  k210 IO  |  USB-Serial (FT232RL)
    15  --  IO15 (tx)  -->  Rx
    17  --  IO17 (rx)  -->  Tx
     GND                  -->  GND
注)上記以外は、オープン
  USB-Serial VCC は結線しません。

Sipeed MAix Bit with MIC MaixPy で マイクのお試し #3

Sipeed MAix Bit with MIC MaixPy で マイクのお試し #3 です。

前回、Sipeed MAix Bit with MIC MaixPy #2 で
バイナリーのまま、音データを送信してみましたが、Serial通信でのデータ抜けが結構ありました。
そこで、今回は、 #2 のプログラムにハンド・シェイクを組み込んでみました。

プロトコル
PC側                     |           Bit側
1) b's' 送信       ------>        b's' が来たら、音データ(1 CHUNK*2 バイト)をバイナリ送信
                        <------          音データ(バイナリ) + '\r\n' 送信
2) 最後が、'\r\n'
で無ければ、  b'r' ---->        b'r' であれば、先に送ったデータを再送
                        <------          前の音データ(バイナリ) + '\r\n' を再送
3) 最後が、'\r\n'
であれば、     b's' ---->        b's' であれば、次のデータを送信
                        <------          音データ(バイナリ) + '\r\n'  送信

この様な簡単なプロトコルです。
Serial 通信は、多分、全2重なので、送信と受信が同時に行えます。

Sipeed MAix Bit with MIC MaixPy で マイクのお試し #2

Sipeed MAix Bit with MIC MaixPy で マイクのお試し #2 です。

前回、Sipeed MAix Bit with MIC MaixPy  で
UART0 から、UART1に替えて、別途 USB-Serial (FT232RL) を付けて試してみました。

※ UART1 に、別途 USB-Serial (FT232RL) を付ける。
Maix-Bit silk  |  k210 IO  |  USB-Serial (FT232RL)
    15  --  IO15 (tx)  -->  Rx
    17  --  IO17 (rx)  -->  Tx
     GND                  -->  GND
注)上記以外は、オープン
  USB-Serial VCC は結線しません。

Serialの速度は、460800 まで上げる事は出来ましたが、PCから出てくる音は、
余り変わりないので、今回は、Bit の I2S で取り込んだRAW データを ASCII に変換する事なく、
バイナリーのまま PCへ送ってみる事にしました。


よりシンプルにを基本に、データ長は固定長なので、簡単なアルゴリズムで改造してみました。

アルゴリズム
送りて(Bit):
  音データ(16bit * Sample Point のバイナリデータ) の後ろに、\r\n の 2バイトを付加する。
  CHUNK*2+2 の固定長データ

受けて(Windows10 PC)
  ・Serial.read() で、受信データ長=CHUNK*2+2 で受信する。
    受信したデータの末尾に、\r\n があれば、 OKデータとします。
  ・OK でなければ、
    Serial.readline() で次の \r\n 迄、受信して、上記処理へ戻ります。
  ・OKデータ であれば、マイクへ末尾の \r\n を除いたデータを出力します。
    最初の処理へ戻ります。

Sipeed MAix Bit with MIC MaixPy で マイクのお試し

Sipeed MAix Bit with MIC MaixPy  で マイク入力の確認が出来たので、
PC へ Serial で送れないか試してみました。

PC: Windows10

Sipeed MAix Bit with MIC を PC に USB接続して、TTL-Serialでデータの受信をします。

PC 側は、Python で serial で RAWデータを受信して、pyaudio.PyAudio() で、
PCのスピーカーへ音を出してみます。

Sipeed MAix MaixPy で FFT と マイク入力の確認

Sipeed MAix Bit with MIC MaixPy  で FFT と マイク入力の確認をしてみました。

Sipeed MAix Bit with MIC は、マイク と FFT(Fast Fourier Transformation) が内臓されているとの事なので、
それの確認のサンプルプログラムが、出ていたので早速確認してみました。

要は、Sipeed MAix Bit with MIC の内臓マイクから音を拾って、それを、内臓 FFT でフーリエ変換をして、音スペクトグラムを、LCD に表示します。

FFTに関しては、FFTの基礎と音響・振動測定への応用
が参考になります。

テスト環境
OS : Windows10
MaixPy(MicroPython) : maixpy_v0.3.2_no_lvgl.bin または、 maixpy_v0.3.2_full.bin

Sipeed MAix MaixPy YOLO-V2 学習モデル作成

Sipeed MAix MaixPy YOLO-V2 学習モデル作成で、
アライグマのObject Detection Model の作成が出ていたので、
試してみました。

https://homemadegarbage.com/ai02
https://www.hackster.io/dmitrywat/object-detection-with-sipeed-maix-boards-kendryte-k210-421d55

何とか、model.tflite から model.kmodel を作成して、マイクロSDカードに入れて、いざ、
Sipeed MAix Bit で、 MaixPy IDE から racoon_detector.py 実行した所、エラーになりました。

ValueError: [MAIXPY]kpu: load error -1

Sipeed MAix Bit Arduino FreeRTOS プログラム

Sipeed MAix Bit Arduino(MAixduino) FreeRTOS プログラムも試してみました。

framework-maixduino の中に、FreeRTOS も入っているようなので、
C:\Users\xxx\.platformio\packages\framework-maixduino\cores\arduinno\kendryte-standalone-sdk\lib\freetos\include\FreeRTOS.h

ESP32 Arduino での FreeRTOS のサンプルを参考に作ってみました。
https://kerikeri.top/posts/2017-06-24-esp32-dual-core/
https://docs.aws.amazon.com/ja_jp/freertos-kernel/latest/dg/task-management.html

1. 開発環境
Board: Sipeed MAix Bit (with mic)
Windows10
Visaul Studio Code / PlatformIO IDE
Arudino(MAixDuino)

2. Platformio IDE の設定
platformio.ini
[env:sipeed-maix-bit-mic]
platform = kendryte210
board = sipeed-maix-bit-mic
framework = arduino

Sipeed MAix Bit Arduino Dual Task program

Sipeed MAix Bit の kendryte-standalone-sdk で Dual core task のサンプルが、
C:\Users\xxx\.platformio\packages\framework-kendryte-standalone-sdk\src\hello_world\main.c にあったので、
MAixDuino(Arduino) でも出来るか確認してみました。

注) framework-maixduino の中にも、 kendryte-standalone-sdk が組み込まれているみたいです。
C:\Users\xxx\.platformio\packages\framework-maixduino\cores\arduino\kendryte-standalone-sdk

1. 開発環境
Board: Sipeed MAix Bit (with mic)
Windows10
Visaul Studio Code / PlatformIO IDE
Arudino(MAixDuino)

2. Platformio IDE の設定
platformio.ini
[env:sipeed-maix-bit-mic]
platform = kendryte210
board = sipeed-maix-bit-mic
framework = arduino

このアーカイブについて

このページには、過去に書かれたブログ記事のうちSipeed MAixカテゴリに属しているものが含まれています。

前のカテゴリはRaspberry Piです。

次のカテゴリはStereo Cameraです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ