X



トップページ電気・電子
231コメント141KB
RISC-VマイコンK210搭載『Sipeed MAix』『M5StickV』
0001774ワット発電中さん
垢版 |
2019/11/12(火) 07:52:44.62ID:QKqsideH
今、話題のRISC-Vコア、AIアクセラレータKPU内蔵マイコンK210搭載
Sipeed MAix、M5StickVの話題を扱います

64bit 400MHz RV64GCのRISC-Vコアを2コア搭載
RV64GCなので単精度、倍精度浮動小数点演算もOK
AIアクセラレータのKPU内蔵
MicroPython環境のMaixPyやArduino IDEでの開発が可能です
0068774ワット発電中さん
垢版 |
2020/01/03(金) 10:43:10.43ID:VxkzvV7l
追記
import Maix
Maix.utils.gc_heap_size(600000)
とヒープサイズを設定後、反映されるのはハードリセットした後です
ソフトリセットでは反映されません
0069774ワット発電中さん
垢版 |
2020/01/03(金) 10:51:44.36ID:VxkzvV7l
import Maix
Maix.utils.gc_heap_size(3000000)
までは成功しました

import Maix
Maix.utils.gc_heap_size(4000000)
ではMaixPyが起動しなくなりました

失敗するとMaixPyが起動しなくなるので
空のmaixpy_spiffs.imgが作成できない人は真似しないでください
0070774ワット発電中さん
垢版 |
2020/01/03(金) 11:52:45.08ID:VxkzvV7l
gen_spiffs_image.pyはもともとはflash上のファイルイメージを作成するためのもののようです
tools/spiffsにfsディレクトリを作成してその中にファイルを入れるとfsディレクトリ以下のファイルの
flash書き込み用のイメージが作成されるようです

紹介動画(アニメーションGIF画像)
https://cdn.sipeed.com/pack_spiffs_ops.gif
0071774ワット発電中さん
垢版 |
2020/01/09(木) 22:42:18.37ID:3Sceyj5N
Sipeed Longan Nano、やっと中華USB Blasterでuploadとdebugができるようになったけど、
あんまり早くない・・・

> ** Programming Started **
> auto erase enabled
> wrote 87040 bytes from file .pio\build\sipeed-longan-nano\firmware.elf in 103.054993s (0.825 KiB/s)
> ** Programming Finished **
> ** Verify Started **
> verified 86224 bytes in 73.658226s (1.143 KiB/s)
> ** Verified OK **
0072774ワット発電中さん
垢版 |
2020/01/10(金) 04:48:22.30ID:kxIDyPCI
Sipeed Longan NanoはメーカーがSipeedというだけでMaixシリーズとは全然別物だからね
Arduinoの環境も整備されてるとはいいがたいしMaixPyも使えないし
0073774ワット発電中さん
垢版 |
2020/01/18(土) 20:32:23.23ID:KxK7Cp1t
Maixduinoで>>55のPCA9685モジュールのPWMでLチカをしてみました

SCL、SDAを3.3KΩでプルアップしてモジュールにつなぎます
VCCにMaixduinoの3.3V、GNDにMaixduinoのGNDをつなぎます
LEDはシンク接続で16個つないでみました
(抵抗は1KΩを使いました)

今回はMaixPyから使ってみます

MicroPython用のPCA9685モジュール用のドライバーソフトが
adafruitから出てるようですのでそれをそのまま使います
https://github.com/adafruit/micropython-adafruit-pca9685

adafruitのドライバソフトの中のpca9685.pyを
uPyLoaderでMaixシリーズやM5StickVに転送してください

uPyLoader
https://github.com/BetaRavener/uPyLoader/releases

テストサンプルはこんな感じです
(このサンプルではLEDはシンク接続を想定してます)

https://pastebin.com/7XqWVcXn
M5StickVでは
i2c = I2C(I2C.I2C0, freq=400000, scl=30, sda=31)
pca9685_01 = PCA9685(i2c, 0x40)
のscl=30、sda=31の部分をscl=34、sda=35もしくはscl=35、sda=34に変更してください

PCA9685のI2Cアドレスは自分ものにあわせて適宜変えてください
(デフォルトでは0x40です)
0074774ワット発電中さん
垢版 |
2020/01/19(日) 06:31:36.64ID:CdSEQA/j
SPI接続の温度センサーADT7310用の>>63のプログラムを改良してみました

https://pastebin.com/YFgCeRUJ
0075774ワット発電中さん
垢版 |
2020/02/01(土) 11:13:05.83ID:Xt1JOYYm
MaixduinoでMaixPyで気温、気圧、湿度センサーのBME280を使ってみました

BME280モジュールはスイッチサイエンスや秋月で売ってます

https://www.switch-science.com/catalog/2236/
https://akizukidenshi.com/catalog/g/gK-09421/

BME280はSPIとI2Cを選べるのですがI2Cで接続での使用です


https://github.com/SWITCHSCIENCE/BME280
今回はここにあるスイッチサイエンスのPython用のサンプルコードを改変して
MaixPyで使えるようにしてみました

気温、気圧、湿度をSerialに表示するだけのプログラムです
改変したコードはこちらです
https://pastebin.com/QyV9qssY

i2c_addressにはBME280のアドレスを入れます(デフォルトは0x76)
M5StickVでもSCL=34 SDA=35もしくはSCL=35 SDA=34にすればおそらく使えると思います
0076774ワット発電中さん
垢版 |
2020/02/01(土) 20:09:36.66ID:Xt1JOYYm
MaixduinoでMaixPyでATD7410の温度センサーモジュールを使ってみました


秋月で税込み500円で売ってます
http://akizukidenshi.com/catalog/g/gM-06675/


気温を5秒おきにシリアルに表示するだけのプログラムです
https://pastebin.com/ButCuNtx

M5StickVの人は74行目のscl=30, sda=31のところを
scl=34, sda=35もしくはscl=35, sda=34に変更すれば使えると思われます


気温を5秒おきにLCDにも表示するバージョンです
https://pastebin.com/QbbdwtU6

LCD表示バージョンはMaixシリーズでしか使えないと思われます
0077774ワット発電中さん
垢版 |
2020/02/01(土) 21:10:57.94ID:Xt1JOYYm
新しい仲間ができたようです

UnitV AI Camera
https://www.switch-science.com/catalog/6212/
税込単価 2,145 円

> M5StickVとの大きな違いは液晶やバッテリー、ジャイロセンサが非搭載になり、
> 小型軽量になった点です。
> M5StickCと組み合わせることで、そのあたりを補完してお使いいただくことが可能です。
>
> Sipeed社の協力により、K210用のMicroPython環境であるMaixPyで開発が可能です。
> カメラには高感度なOmniVision社製OV2640イメージセンサ(2メガピクセル)を搭載しています。
0080774ワット発電中さん
垢版 |
2020/02/01(土) 22:17:49.98ID:Xt1JOYYm
>>78
MaixPyからWiFi使うならMaixduinoがいいですね
SPI接続ですし、安定して使えます
ただし、ArduinoからはオンボードのWiFiは使えないです
Arduinoから使う場合は外付けでESP8266をUARTでつなげば使えます

Maixduinoで注意が必要なのはJTAG用のピンが出てない点です
MaixBitならJTAG用のピンが出てるのでFT2232H MINI MODULEをつなぐことで
PlatformIOでCやC++でデバッグができるようになります
まあ、デバッグ機能は必要ない人も多いでしょうが
0083774ワット発電中さん
垢版 |
2020/02/01(土) 22:49:27.57ID:Xt1JOYYm
あと、MaixPyでWiFiの関数はこれだけです
サーバの機能はありません
version -- <function>
adc -- <function>
scan -- <function>
connect -- <function>
disconnect -- <function>
isconnected -- <function>
ifconfig -- <function>
ping -- <function>

サンプルはここです
https://github.com/sipeed/MaixPy_scripts/tree/master/network
demo_esp32と書かれてるのがMaixduino用のWiFiのサンプルプログラムです
0084774ワット発電中さん
垢版 |
2020/02/02(日) 13:04:51.61ID:ubTg3l+W
>>77のUnitV AI CameraのカメラはOV2640か
Maixduinoと同じやつだね
M5StickVみたいにMaixPyのみでArduinoは使えないのかな?
0086774ワット発電中さん
垢版 |
2020/02/02(日) 13:16:36.17ID:ubTg3l+W
K210搭載のモジュールはRAMが6MBもあるので
MicroPythonやるなら最適だと思うけどね
MicroPythonのMaixPyが使えるんだから
0087774ワット発電中さん
垢版 |
2020/02/02(日) 17:03:04.83ID:Q9Ayv7mC
>>83
ありがとう。
そこは見つけてた。
MAix Dockやbitのモジュールセットは技適の関係でおおっぴらに売れないだろうけど、もしかしたらってのがありました。
M5StackV+が出てくれば手っ取り早くて良いんですけどね。
0098774ワット発電中さん
垢版 |
2020/02/09(日) 02:36:46.20ID:8pfKKO4u
Maixduinoなら東京ラジオデパート3FのShigezoneで3300円で売ってたよ
Maix Goは売り切れってなってた
0100774ワット発電中さん
垢版 |
2020/02/09(日) 08:54:40.61ID:4TKlsJn4
sipeedは製造は深センでやってるのかな?
だと品薄になりそう。
とりあえずMaix bitとMaixduinoは1台ずつ入手済みだから暫くは問題無いけど。
0101774ワット発電中さん
垢版 |
2020/02/09(日) 09:45:34.06ID:8pfKKO4u
スイッチサイエンスでSipeed RISC-Vデバッガ売ってたんだね
安かったので買ってしまった
やっぱりJTAGピンが外に出てないMaixduinoでは使えない模様
ESP32で使う方法を見つけたからいいけど

使ってるチップはFT2232Dで秋月のFT2232Dモジュールより安いね
0103774ワット発電中さん
垢版 |
2020/02/09(日) 10:22:12.74ID:8pfKKO4u
MaixduinoのArduinoのI2CのライブラリのWire.endTransmission()だけど
Wire.endTransmission(false);
とsendStopにfalseを指定してもきちんと働いてないようです

温度センサーモジュールのADT7410で、0x00以外のレジスタの値を読み出せない
ESP32とArduino Pro miniの互換機で試したところ正常に読み出せました

ライブラリのWire.cppを見てみたところ
TwoWire::endTransmission(bool sendStop)から
TwoWire::writeTransmission()とTwoWire::readTransmission()を呼び出してるようですが
この2つの関数でsendStopが無視されてる模様
0104774ワット発電中さん
垢版 |
2020/02/09(日) 12:50:42.77ID:8pfKKO4u
自己レスです

kendryte-standalone-sdkのi2c_recv_dataを直接呼び出すことで解決しました

インクルードファイルは
#include <kendryte-standalone-sdk/lib/drivers/include/i2c.h>

int i2c_recv_data(i2c_device_number_t i2c_num, const uint8_t *send_buf, size_t send_buf_len, uint8_t *receive_buf,
size_t receive_buf_len)

i2c_numがI2CのBus番号
WireがI2C_DEVICE_0、Wire1がI2C_DEVICE_1、Wire2がI2C_DEVICE_2で
i2c_device_number_tでキャストしてあげないとエラーが出る
send_bufにi2cデバイスの読み取りたいレジスタのアドレスを格納
send_buf_lenがsend_bufのデータの大きさ
receive_bufで読み込むバッファを指定
receive_buf_lenでreceive_bufの大きさを指定

ATD7410のステータスレジスタを読み込む例はこんな感じ
uint8_t status_reg;
uint8_t reg_addr = 0x02;
i2c_recv_data((i2c_device_number_t)I2C_DEVICE_0, &reg_addr, 1, &status_reg, 1);
0105774ワット発電中さん
垢版 |
2020/02/09(日) 12:58:14.53ID:8pfKKO4u
Arduinoからi2c_recv_data()を使うときは特に初期は必要ないようです
(おそらく、Wireのライブラリの方で初期化してる)
レジスタの内容を読み込みたい時だけ直接i2c_recv_data()を呼び出せばいいようです
0106774ワット発電中さん
垢版 |
2020/02/10(月) 08:06:51.29ID:k864Uy1H
上の例ではプログラムの先の方で
同じI2Cデバイス宛てにWire.endTransmission()を呼んでたので
初期化しなくてもよかったようです
I2Cデバイスへの初めての読み込みでi2c_recv_dataを使う場合や
アドレスの違うI2Cデバイスへの読み込みでi2c_recv_dataを使う場合は
初期化をしてI2Cデバイスのアドレスを設定する必要があるようです

初期化は下記関数を使います
i2c_init(i2c_device_number_t i2c_num, uint32_t slave_address, uint32_t address_width,
uint32_t i2c_clk);

ここで
i2c_numがI2CのBus番号
WireがI2C_DEVICE_0、Wire1がI2C_DEVICE_1、Wire2がI2C_DEVICE_2で
i2c_device_number_tでキャストしてあげないとエラーが出る
slave_addressがI2Cデバイスのアドレス
address_widthがI2Cデバイスのアドレス幅で7bitもしくは10bitどちらかを指定するようです
i2c_clkがI2Cのクロック周波数です

ADT7410のI2Cアドレスが0x48だとすると初期化設定例は
i2c_init((i2c_device_number_t)I2C_DEVICE_0, 0x48, 7, Wire.getClock());
0107774ワット発電中さん
垢版 |
2020/02/16(日) 08:04:36.64ID:6TUPzqjA
中国の新型コロナ検出AIってK210かな?
学習はクラウド使ってそうだけど。
0108774ワット発電中さん
垢版 |
2020/03/09(月) 05:34:00.99ID:9wKrufsq
M5StickVとUNIT V
Groveポートが2つあればよかったのに
K210はFPIOAでピンの機能を自由に変更できるのがいいね
0109774ワット発電中さん
垢版 |
2020/03/09(月) 06:05:25.04ID:9wKrufsq
MaixPyはSSLを使えないことを除けばかなり高機能なMicroPython実装だね
大容量のRAMを活かした仮想フレームバッファで画像を楽に扱えるのがかなりいい
0110774ワット発電中さん
垢版 |
2020/03/15(日) 05:41:58.84ID:Gm3vCHEC
MicroPythonでグラフィックス扱うならMaixシリーズが一番いいみたい
本家MicroPythonやCircuitPythonのLCDライブラリはPythonで描画するので遅い
MicroPython lobo版はMicroPython自体がLCDに対応してるので対応するLCDを使うと速いが
MicroPython lobo版は直接LCDに描画するので仮想フレームバッファでイメージを扱えないし
ESP32と比べてMaixシリーズはMicroPythonでは6倍くらい速い
0111774ワット発電中さん
垢版 |
2020/03/26(木) 09:01:33.38ID:ToI4vXt0
Sipeed社は良い製品を作る
0112774ワット発電中さん
垢版 |
2020/04/18(土) 19:19:15.80ID:I/lCD19r
M5StickV手にいれたがセンサーのリセットでエラーが出る…ファーム書き換えたけど駄目だな
MaixPyでLCD、LEDを制御することはできたから単にカメラの不良かな。
最初にレンズが転がってたのが関係あんのかなあ
0113774ワット発電中さん
垢版 |
2020/04/19(日) 08:17:54.03ID:+GCyV03F
この手の製品は初期不良交換のみなので
初期不良ならすぐに購入したお店に連絡取った方がいいよ
0114774ワット発電中さん
垢版 |
2020/04/19(日) 09:53:16.35ID:+GCyV03F
>>38の部分で抜けてたのがあったので追記します
Humblesoft_GFX.cppの

元ファイルの41行目を変更
textsize_x, textsize_y);
の部分を下のように変更
textsize);

元ファイルの68行目を変更
textsize_x, textsize_y);
の部分を下のように変更
textsize);
0115774ワット発電中さん
垢版 |
2020/04/19(日) 10:35:16.10ID:+GCyV03F
追記
41行目、68行目というのは>>38の最後の部分を追記する前の行番号です
追記後の行番号は55行目、82行目になります
0116774ワット発電中さん
垢版 |
2020/04/19(日) 10:35:42.96ID:+GCyV03F
あとは、MaixduinoのライブラリのSipeed_ST7789.hとSipeed_ST7789.cppを
platformioのプロジェクトのsrcフォルダにコピーして名前を変更


>>38
>LCDドライバのSipeed_ST7789.hとSipeed_ST7789.cppを名前を変えてコピーして
>Adafruit_GFXからの継承ではなく、Humblesoft_GFXからの継承に改変

この部分は具体的に書くと下記のようになります


Sipeed_ST7789.hをHumblesoft_Sipeed_ST7789.hへ
Sipeed_ST7789.cppをHumblesoft_Sipeed_ST7789.cppへ


Humblesoft_Sipeed_ST7789.hの下記部分を変更
6行目の
#include <Adafruit_GFX.h>

この部分を下記のように変更
#include <Humblesoft_GFX.h>



48行目の
class Sipeed_ST7789 : public Adafruit_GFX{

この部分を下記のように変更
class Sipeed_ST7789 : public Humblesoft_GFX{
0117774ワット発電中さん
垢版 |
2020/04/19(日) 10:35:58.33ID:+GCyV03F
Humblesoft_Sipeed_ST7789.cppの下記部分を変更

この部分を
#include "Sipeed_ST7789.h"
#include "lcd.h"
#include "sysctl.h"
#include "utils.h"

下記のように変更
#include "Humblesoft_Sipeed_ST7789.h"
#include <lcd.h>
#include <sysctl.h>
#include <utils.h>

8行目の
:Adafruit_GFX(w,h),

の部分を下記のように変更
:Humblesoft_GFX(w,h),
0118774ワット発電中さん
垢版 |
2020/04/19(日) 10:43:35.51ID:+GCyV03F
使用するファイルは下記のようになります
全部、PlatformIOのプロジェクトのsrcに置きます

Bitmap.cpp
Bitmap.h
Humblesoft_GFX.h
Humblesoft_GFX.cpp
Fontx.h
Fontx.cpp
result.h
uni2sjis.h
uni2sjis.c
uni2sjis_tbl.c
Utf8Decoder.h
Utf8Decoder.cpp
Humblesoft_Sipeed_ST7789.h
Humblesoft_Sipeed_ST7789.cpp
main.cpp
0119774ワット発電中さん
垢版 |
2020/04/23(木) 15:55:48.71ID:vYxLxDSP
Sipeed MaixCube is a Fully Integrated AI Development Platform Powered by Kendryte K210 RISC-V SoC
https://www.cnx-software.com/2020/04/21/sipeed-maixcube-is-a-fully-integrated-ai-development-platform-powered-by-kendryte-k210-risc-v-soc/
https://www.cnx-software.com/wp-content/uploads/2020/04/Sipeed-Maixcube-768x336.jpg
https://www.cnx-software.com/wp-content/uploads/2020/04/MaixCube-All-in-one-K210-Development-Platform-768x594.jpg
0122774ワット発電中さん
垢版 |
2020/04/24(金) 00:55:02.65ID:ED6ESRz6
ピンが6本出てるからM5StickVより拡張性はあるっぽいね
I2CとSPI
SPIとUART
I2CとUART
なんて組み合わせが出来るんじゃない?
0123774ワット発電中さん
垢版 |
2020/04/24(金) 01:08:50.32ID:ED6ESRz6
Groveポートもあるのか
I2C、UART、SPIの組み合わせも出来るね

SPI-MODポートのIO6、IO7、IO8はESP8266と接続すること考えてそう
(IO6がRX、IO7がTX、IO8がESP8266のEN接続用)

Arduinoも使えればかなりいいね
0125774ワット発電中さん
垢版 |
2020/04/25(土) 15:11:58.29ID:YNeUPGGp
$24.9だから日本だと4000円くらいになっちゃうかもね
Shigezoneで扱いがあれば安く買えるかも
まだプレオーダーの段階なのでまだ先になるだろうけどね
0127774ワット発電中さん
垢版 |
2020/06/03(水) 16:21:56.07ID:wBlJe4uy
TTGO T-Watch K210 / K210 AIOT Watches Perform Face Detection with Kendryte K210 RISC-V Processor, ESP32 WiSoC
https://www.cnx-software.com/2020/06/03/ttgo-t-watch-k210-k210-aiot-watches-perform-face-detection-with-kendryte-k210-risc-v-processor-esp32-wisoc/
https://www.cnx-software.com/wp-content/uploads/2020/06/T-Watch-K210-AIOT-Pinout.jpg

  AI Processor Kendryte K210 RISC-V Dualcore 64bit with FPU with 8MB SRAM
  Storage 16MB QSPI flash, MicroSD card socket
  Display I/F FPC connect for external display (not included)
  Camera 2MP OV2640 sensor
  Audio MAX98357A Audio codec; CVSD & SBC audio encoding
  Connectivity 2.4 GHz 802.11b/g/n WiFi 4 up to 150 Mbps, Bluetooth 4.2 BR/EDR and BLE
  Debugging USB-C port via CP2104
  Expansion
    UART, SPI, I2C, PWM, I2S
    I2C grove connector
    I/O Voltage 3.3V / 1.8V operation
  Misc Power and boot buttons; RTC
  Power Supply -5V DC/1A DC input; AXP202 PMIC
  Dimensions & Weight TBD
0128774ワット発電中さん
垢版 |
2020/06/03(水) 16:22:26.10ID:wBlJe4uy
age
0129774ワット発電中さん
垢版 |
2020/06/05(金) 14:15:18.31ID:5la78J+m
>>127
でもお高いんでしょう?
0130774ワット発電中さん
垢版 |
2020/06/22(月) 20:38:49.53ID:ibnC1bZx
MaixduinoでオンボードのESP32をArduinoから使えたので報告します

ライブラリはこれです
https://github.com/arduino-libraries/WiFiNINA

上記ライブラリと、Maixduinoのframework-maixduinoを一部改変します

framework-maixduinoの方は
PlatformIOの方は
C:\Users\ユーザ名\.platformio\packages\framework-maixduino\variants\sipeed_maixduino
Arduino IDEの方は
C:\Users\ユーザ名\AppData\Local\Arduino15\packages\Maixduino\hardware\k210\0.3.11\variants\sipeed_maixduino
ここのpins_arduino.hを一部改変します

74行目の
#define MD_PIN_MAP(fpio) (((fpio) < 17) ? _maixduino_pin_map[(fpio)] : (fpio))

static const uint8_t _maixduino_pin_map[17] = {4, 5, 21, 22, 23, 24, 32, 15, 14, 13, 12, 11, 10, 3, 31, 30, 16};

の部分を
#define MD_PIN_MAP(fpio) (((fpio) < 22) ? _maixduino_pin_map[(fpio)] : (fpio))

static const uint8_t _maixduino_pin_map[22] = {4, 5, 21, 22, 23, 24, 32, 15, 14, 13, 12, 11, 10, 3, 31, 30, 16, 8, 9, 25, 6, 7};

に改変
0131774ワット発電中さん
垢版 |
2020/06/22(月) 20:39:53.08ID:ibnC1bZx
続き


WiFiNINAのライブラリの方は
srcの中のutilityの中の52行の次の部分を
static uint8_t SLAVESELECT = 10; // ss
static uint8_t SLAVEREADY = 7; // handshake pin
static uint8_t SLAVERESET = 5; // reset pin

次のようにします

static uint8_t SLAVESELECT = 19; // ss pin 25
static uint8_t SLAVEREADY = 18; // pin 9 handshake pin
static uint8_t SLAVERESET = 17; // pin 8reset pin
static uint8_t NINA_GPIO0 = 18; // pin 9
#define PINS_COUNT 22

これだけです。
これでとりあえず、exampleのWiFiPingは成功しました
(PlatformIOだと先頭に下記内容を追加する必要があります)

#include <Arduino.h>
void printWiFiData();
void printCurrentNet();
void printMacAddress(byte mac[]);
0133774ワット発電中さん
垢版 |
2020/06/22(月) 21:02:06.13ID:ibnC1bZx
誤記がありました
改変するファイルのファイル名が抜けてました

正しくはこうです
WiFiNINAのライブラリの方は
srcの中のutilityの中のspi_drv.cppの52行の次の部分を
static uint8_t SLAVESELECT = 10; // ss
static uint8_t SLAVEREADY = 7; // handshake pin
static uint8_t SLAVERESET = 5; // reset pin

次のようにします

static uint8_t SLAVESELECT = 19; // ss pin 25
static uint8_t SLAVEREADY = 18; // pin 9 handshake pin
static uint8_t SLAVERESET = 17; // pin 8reset pin
static uint8_t NINA_GPIO0 = 18; // pin 9
#define PINS_COUNT 22
0134774ワット発電中さん
垢版 |
2020/06/23(火) 21:53:34.85ID:nqVjLTks
WiFiWebServerを試してみたところうまく動きませんでした
NINA_GPIO0がHIGHになってないとSpiDrv::available()で1を返さないので
WiFiServer.cppのWiFiServer::available()の中で呼ばれる
server_drv.cppの中のServerDrv::availServer(_sock)が
_sockの値を取得するまえにすぐに返ってきてしまいます

NINA_GPIO0はIO32(Maixduinoの6番目のピン)に割り当てみます
なので、srcの中のutilityの中の52行のspi_drv.cppの次の部分を
static uint8_t SLAVESELECT = 10; // ss
static uint8_t SLAVEREADY = 7; // handshake pin
static uint8_t SLAVERESET = 5; // reset pin
この部分はこうなります

static uint8_t SLAVESELECT = 19; // ss pin 25
static uint8_t SLAVEREADY = 18; // pin 9 handshake pin
static uint8_t SLAVERESET = 17; // pin 8reset pin
static uint8_t NINA_GPIO0 = 6; // pin 32
#define PINS_COUNT 22

次にsrcのutilityの中のspi_drv.cppの563行目を下記のように変更してください

int SpiDrv::available()
{
return (digitalRead(NINA_GPIO0) != LOW);
}
この部分を
int SpiDrv::available()
{
// return (digitalRead(NINA_GPIO0) != LOW);
return 1;
}
0135774ワット発電中さん
垢版 |
2020/06/23(火) 21:54:34.33ID:nqVjLTks
まとめると

WiFiNINAのライブラリはここ
https://github.com/arduino-libraries/WiFiNINA

Maixduinoで使えるように
上記ライブラリと、Maixduinoのframework-maixduinoを一部改変します

framework-maixduinoの方は
PlatformIOの方は
C:\Users\ユーザ名\.platformio\packages\framework-maixduino\variants\sipeed_maixduino
Arduino IDEの方は
C:\Users\ユーザ名\AppData\Local\Arduino15\packages\Maixduino\hardware\k210\0.3.11\variants\sipeed_maixduino
ここのpins_arduino.hを一部改変します

74行目の
#define MD_PIN_MAP(fpio) (((fpio) < 17) ? _maixduino_pin_map[(fpio)] : (fpio))

static const uint8_t _maixduino_pin_map[17] = {4, 5, 21, 22, 23, 24, 32, 15, 14, 13, 12, 11, 10, 3, 31, 30, 16};

の部分を
#define MD_PIN_MAP(fpio) (((fpio) < 22) ? _maixduino_pin_map[(fpio)] : (fpio))

static const uint8_t _maixduino_pin_map[22] = {4, 5, 21, 22, 23, 24, 32, 15, 14, 13, 12, 11, 10, 3, 31, 30, 16, 8, 9, 25, 6, 7};

に改変
0136774ワット発電中さん
垢版 |
2020/06/23(火) 21:55:04.09ID:nqVjLTks
続き

WiFiNINAのライブラリの方は下記のように改変します
NINA_GPIO0はIO32(Maixduinoの6番目のピン)に割り当てありますが適当な使ってないピンを割り当ててください
srcの中のutilityの中の52行のspi_drv.cppの次の部分を
static uint8_t SLAVESELECT = 10; // ss
static uint8_t SLAVEREADY = 7; // handshake pin
static uint8_t SLAVERESET = 5; // reset pin
この部分はこうなります

static uint8_t SLAVESELECT = 19; // ss pin 25
static uint8_t SLAVEREADY = 18; // pin 9 handshake pin
static uint8_t SLAVERESET = 17; // pin 8reset pin
static uint8_t NINA_GPIO0 = 6; // pin 32
#define PINS_COUNT 22

次にsrcのutilityの中のspi_drv.cppの563行目を下記のように変更してください

int SpiDrv::available()
{
return (digitalRead(NINA_GPIO0) != LOW);
}
この部分を
int SpiDrv::available()
{
// return (digitalRead(NINA_GPIO0) != LOW);
return 1;
}
0137774ワット発電中さん
垢版 |
2020/06/23(火) 21:59:58.58ID:nqVjLTks
https://github.com/arduino-libraries/WiFiNINA/blob/master/examples/WiFiUdpNtpClient/WiFiUdpNtpClient.ino

WiFiNINAのexampleのWiFiUdpNtpClientですが
129行目のsendNTPpacket関数の型がunsigned longなのにreturn文がないために
Maixduinoでは暴走してしまいます。
unsigned longではなくvoidにします

unsigned long sendNTPpacket(IPAddress& address) {

これを

void sendNTPpacket(IPAddress& address) {

にします
0138774ワット発電中さん
垢版 |
2020/06/24(水) 18:36:09.92ID:dOpT5/L4
K210だとリッチすぎ、GD32VF103だとプアすぎ
STM32F7とかSTM32F4クラスのRISC-Vマイコンが欲しい
0139774ワット発電中さん
垢版 |
2020/06/25(木) 07:04:34.51ID:JzIhqSS4
RISC-Vってあっちこっちから出てるけど、どのRISC-Vも同じコンパイラでコード生成できるもんなの?
0140774ワット発電中さん
垢版 |
2020/06/26(金) 04:48:40.29ID:LZTMupFO
ArduinoやPlatformIO使う分には勝手にgccのツールチェインが入るから
そのあたりは気にすることはないね
0143774ワット発電中さん
垢版 |
2020/06/26(金) 07:55:27.75ID:EhWT5Fr2
>>141,142
コアの計算能力はともかくメモリが少ない。RAMが16KBや20KBじゃ8/16bitマイコン並みだし
ROMも少ないしせっかくの32bitマイコンなのにマルチメディアデータを扱ったりするのが難しい
0145774ワット発電中さん
垢版 |
2020/06/28(日) 15:04:22.90ID:EJHUg9/I
>>144
K210はRISC-Vお試しとしてはありなんだろうけど結構電気食いというかラズパイzeroくらい電気いるように見える
組み込み制御向けのハイパフォーマンスマイコン・・STMならSTM32F7とかSTM32F4クラス、ルネエレならRX600やRX700クラス
というかこの辺と比較してみたい
0146774ワット発電中さん
垢版 |
2020/06/28(日) 15:48:23.85ID:vtJU8P9w
>>145
そこまで電気食わないよ
触っても全然熱くないというかほとんど温度上昇感じない
Cortex-M7が視野に入ってるならK210を使ってもいいはず
Cortex-M7を使ったTeensy 4.0なんてRaspberry Pi Zeroより速いんだから
0147774ワット発電中さん
垢版 |
2020/06/28(日) 15:52:16.34ID:vtJU8P9w
ちなみにMHzあたりの性能はK210よりCortex-M7の方が上
K210は64bitというだけでそこまでリッチなコアじゃないよ
Arduino計測すると性能的にはクロックも高くてMHzあたりの性能も高いTeensy 4.0の方が上
ただ、MicroPythonで計算するとK210の方が性能出るんだよね
0148774ワット発電中さん
垢版 |
2020/06/28(日) 16:33:31.51ID:vtJU8P9w
Teensy 4.0はNXP iMXRT1062というマイコン使っててCPUコアはCortex-M7の600MHz
0149774ワット発電中さん
垢版 |
2020/06/28(日) 17:10:26.47ID:vtJU8P9w
Dhrystone 2.1の結果はこんな感じ

Maixduino(K210 RISC-V RV64GC 400MHz)
Dhrystone/s : 1338079.0
DMIPS     : 761.5703
DMIPS/MHz  : 1.903926

Teensy 4.0(iMXRT1062 Cortex-M7 600MHz)
Dhrystone/s : 2690341.8
DMIPS     : 1531.2133
DMIPS/MHz  : 2.552022
0150774ワット発電中さん
垢版 |
2020/06/28(日) 19:11:19.70ID:EJHUg9/I
>>146-178
サンキュ。そうでもないのか。ググると出てきたデータシートを見てみたら
> 2.3 Power SuppliesSupply
> Core 0.9V VDD 0.9V Max 2000mA
とか書いてあったから結構食うのかと思った
買ってみるかなぁ・・・もっとも秋月は土日閉まっているから別のルートを考える必要があるが
0151774ワット発電中さん
垢版 |
2020/06/28(日) 19:49:46.61ID:vtJU8P9w
買うのか
STM32F7やRX700使うのかと思った

MaixduinoはWiFiが使える代わりにJTAGの端子が出てないのでデバッガが使えない
MaixbitならJTAGの端子は出てる

MaixbitやMaixduinoならShigezoneでも売ってるよ
https://www.shigezone.com/?product=maix-bit_set
5月30日から東京ラジオデパート3Fの店舗が再開してるらしい
土日は11:00からみたい
営業してるかどうか問い合わせてみたら?
0152774ワット発電中さん
垢版 |
2020/06/28(日) 21:31:31.26ID:EJHUg9/I
>>151
あくまで評価用だし
RX72Nはすでに買っている
STM32F7はどれにしようか迷い中

世の中ARMだらけだけどアセンブラも考慮するならRXは良くできていると思う
0153774ワット発電中さん
垢版 |
2020/06/29(月) 08:08:27.35ID:OLhfdQAp
K210について調べていたけどハードウェアマニュアル的な資料が見あたらない
割り込みやレジスタの使い方とか何処に書いてあるのだろうか。データシートも公式にはなさそうだし
まさか初期のSPRESENSEみたいにSDKを調べろと?
0156774ワット発電中さん
垢版 |
2020/06/30(火) 18:54:46.51ID:RxJbXPgH
>>155
マジか。となるとSDKにない使い方は難しいわけか
GD32VF103のマニュアルはそれなりに書いてあるようだ
うーむ、難しい・・
0158774ワット発電中さん
垢版 |
2020/06/30(火) 21:19:41.61ID:j/lrpME7
>>157
それは知っている。組み込みマイコンだからかフラッシュプログラマを作るための資料も用意されているようだ
個人的にGD32VF4とか出てきたらなかなかおもしろそう。ペリフェラルもいっぱいあるし
GD32VF103にSRAM外付けも考えたけどバーストモードがないみたいで断念(STM32F103にはある)
0160774ワット発電中さん
垢版 |
2020/08/25(火) 06:58:22.62ID:IDPQMyyU
Sipeed Maix Amigo is a Portable 64-bit RISC-V AI Development Kit with Display and Cameras
https://www.cnx-software.com/2020/08/24/sipeed-maix-amigo-portable-64-bit-risc-v-ai-development-kit-display-cameras/

https://www.cnx-software.com/wp-content/uploads/2020/08/Sipeed-Maix-Amigo.jpg

  SoC Kendryte K210 Dual-core 64-bit RISC-V (RV64GC) processor with FPU @ 400 MHz
     (overclockable to 500MHz),
     8MB SRAM,
     built-in AI accelerators for video and audio
  Storage 16MB Flash, MicroSD card slot up
  Display 3.5-inch TFT capacitive touch screen display with 480×320 resolution
  Camera
    VGA front-facing camera up to 30 fps (GC0328 sensor)
    VGA rear camera up to 60 fps (OV7740 sensor)
  Audio 6+1 microphone array
  USB 1x USB Type-C port for power and programming
  Expansion
    3x Grove ports with I2C, GPIO, etc…
    3x 8-pin SP-MOD headers with GPIOs, 3.3V, and GND signals;
     compatible with ESP-01 ESP8266 WiFi module, PSRAM modules, etc…
  Sensor Accelerometer
  Misc Reset button, 3x function buttons, 3x LEDs
  Battery 520 mAh Lithium battery
  Power Supply Via USB-C port
  Dimensions 104.3 x 63.3 x 16.5mm
0162774ワット発電中さん
垢版 |
2020/10/08(木) 22:13:49.93ID:OHqFEtj6
MaixduinoでArduinoでボードライブラリ0.3.11でカメラが使えない不具合について
別のスレでMaixduinoでカメラが使えないと指摘されたので
0.3.9と0.3.11のカメラのライブラリを比較したところ
Camera.h
79行目
virtual void setRotation(uint8_t rotation) = 0;
ここだけを中途半端にsetRotaionからsetRotationに修正してあってそれが原因でエラーが出てる模様


下記も修正するとうまくいく
Sipeed_OV2640.h
60行目
virtual void setRotaion(uint8_t rotation);
これを下記に修正
virtual void setRotation(uint8_t rotation);

Sipeed_OV2640.cpp
724行目
void Sipeed_OV2640::setRotaion(uint8_t rotation)
これを下記に修正
void Sipeed_OV2640::setRotation(uint8_t rotation)
0165774ワット発電中さん
垢版 |
2020/10/14(水) 13:08:07.96ID:D6Wnc/Bi
>>163
別スレでトラブっていた者です。
いろいろ試行錯誤したのですが、
結局のところライブラリ差替えだけではサンプルプログラムはまともには動かず、
結局OV2640のカメラを買って取り替えるはめになりました。
レスを投稿する


ニューススポーツなんでも実況