2020年01月


*設定済みRaspberryPi3のイメージ(donkey3_1_tf1_13_1.zip)は、Raspbian Liteが元なので
 デスクトップ環境がありませんでした。
 ちょっとしたファイル操作などが不便でした。
 そこで、デスクトップ環境を簡単にインストール方法を調べてみました。

下記コマンドで、PIXEL GUIをインストール出来ました。

$sudo apt-get install --no-install-recommends xserver-xorg
$sudo apt-get install --no-install-recommends xinit
$sudo apt-get install raspberrypi-ui-mods
$sudo reboot 0

但し、日本語フォントやVNC、テキストエデッタが、このままだと出来ないので、追加設定が必要です。

Raspberry Pi (donkeycar3) に Python3.8.1 をインストール
2020年1月28日時点

$ python3 -V
Python 3.7.3
これを3.8.1にしたいと思います。

 

最初にコンパイルに必要になるライブラリをインストールします。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install libffi-dev libssl-dev openssl

次にソースコードのダウンロード

$ wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz

コンパイルしていきます。

$ tar zxvf Python-3.8.1.tgz
$ cd Python-3.8.1
$ ./configure
$ make
$ sudo make install
エラー無くインストールできたらバージョンを確認します。

$ python3 -V
Python 3.8.1
 

続いてpipのアップデートを行います。

$ sudo pip3 install --upgrade pip
$ pip3 --version
pip 20.0.2 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

注)仮想環境では、まだ3.7.3のままでした。後日解明したいと思います。

ドンキーカーで動画を作成するために RASPI 3B に FFmpeg 4.x.x をインストールしました。

①インストール前に、アップデートを実行しておきます。

$ sudo apt update
$ sudo apt upgrade

②FFmpegを入手します。

$ cd ~
$ git clone https://github.com/FFmpeg/FFmpeg.git

③オプション設定を変更します。

$ cd FFmpeg
$ ./configure -–enable-gpl  --enable-nonfree -–enable-omx -–enable-omx-rpi

④コンパイルします。

$ make(非常に時間がかかります)

⑤インストールします。

$ sudo make install


*これでインストール完了です。


自動走行するラジコンカー DonkeyCar 3 を作成途中ですの備忘録を順次残しておきます。

参考URL:FaBo DonkeyCar Docs(1.DonkeyCar3の構築)


1.まずラズパイのイメージを作成します。
 すでにDonkeyCar3の入ったイメージファイルを下記よりダウンロードします。 
  donkey3_1_tf1_13_1.zip 

 ①ダウンロードしたをRaspberry Piのイメージを解凍し、microSDカードに焼き込みます。
 ②焼き込みが、終わったら、一回抜いて、再度挿入し、下記の内容のWiFi設定ファイル 「wpa_supplicant.conf」をテキストエデッタで作成しセーブします。


country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="your network name" <---ここにSSID
    psk="your password"       <---ここにパスワード
    scan_ssid=1
}

 ③出来たら、SDカードをDonkeyCarのRaspPi3に挿入し、電源をOnにします。
 ④PCよりssh pi@donkeypi.localで繋ぎます。IPアドレスが分かれば、IPアドレスでもOK
 ⑤パスワードは、「raspberry」です。

ーーーー次回



*ATOM & ATOM liteが到着しました。重さは、ATOM 7g lite 5gで小さくて軽いです。
 因みにM5StickCは15gでした。
 
atom

 動画は、IDEにてボードは、M5StickCでAdafruit NeoPixelのデモを書き込んでみました。


https://www.facebook.com/yoshito.hashiguchi/videos/pcb.463929294285763/1841414682656515/?type=3&theater&ifg=1




*TJBotに、ダッシュボード パレットを追加して、LEDやサーボモーター
 音声合成に画像認識を制御できるように追加してみました。

1.ブラウザの画面


tjbot01

2.フローの流れ


tjbot020





*VNCで接続するためにRaspberryPiの解像度を変更するには

1.ディスクトップにて
 *いちごマーク-->設定-->Raspberry Pi の設定-->システム-->解像度の設定 

vnc


2.Raspberry Piには従来のBIOSがないため、通常BIOSを使用して保持および
 設定されるさまざまなシステム構成パラメーターは、「config.txt」という名前
 のテキストファイルに保存されます。

 ①解像度の設定(/boot/config.txtの編集)
 $ sudo nano /boot/config.txt

 ②編集内容
 ファイル内に以下の記述があるので修正します。
 hdmi_force_hotplug=1  <-- これの記述も

 hdmi_group=2
 hdmi_mode=51 <---自分の解像度に合わせて修正

 行頭の#はコメント行であるという意味なので、変更するときには#を削除するか、
 別の行でhdmi_groupとhdmi_modeを定義します。

 下記リンク先のhdmi_group=2の解像度一覧で確認できます。
  RPiconfig


・Raspberry Pi 3B/ZERO の カメラ で撮影した動画をブラウザで視る

下記は、node-redのダッシュボードにストリーム配信しています。
mjpgst



簡単に配信することが出来たので備忘録を書いておきます。

1.RASPIでの作業

 ①インストール(下記のコマンドを順次コピペして実行します)
 $ sudo apt-get install -y cmake libv4l-dev libjpeg-dev imagemagick
 $ git clone https://github.com/jacksonliam/mjpg-streamer.git
 $ cd mjpg-streamer/mjpg-streamer-experimental
 $ make

 ②動画の配信
 標準カメラの場合
  $ ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 30 -q 10"

 USBカメラの場合
  $ ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_uvc.so -r 800x600 -fps 30"

 ③配信を強制的に止める場合
 $ ps ax         <--プロセスIDを確認
 $ kill -9 1234  <-- -9は、強制終了

2.動画の受信
 ①ブラウザで http://[ラズパイのIP]:8080/ を開くだけです。

参考URL:Raspberry Pi 3 の標準カメラで撮影した動画をブラウザに配信する方法まとめ


3.MJPG Streamerが、起動しない時

pi@raspberrypi:~ $ ./msstart.sh
MJPG Streamer Version: git rev: 501f6362c5afddcfb41055f97ae484252c85c912
 i: fps.............: 30
+++++++++
 i: Starting Camera
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
error create camera

上記エラーで、MJPG Streamerが、起動できないときのチェック方法

①カメラが有効になっているか確認
$ sudo raspi-config
5 Interfacing Options => P1 Camera => Yes

②カメラを認識しているか確認

pi@raspberrypi:~ $ vcgencmd get_camera 
supported=1 detected=0 <-------------カメラを認識していない

pi@raspberrypi:~ $ ls -al /dev/video* <------ /dev/video0が無い
crw-rw----+ 1 root video 81, 0  1月 21 16:07 /dev/video10
crw-rw----+ 1 root video 81, 1  1月 21 16:07 /dev/video11
crw-rw----+ 1 root video 81, 2  1月 21 16:07 /dev/video12

調べた結果、カメラのコネクタが外れかかっていた。再度差し込み

pi@raspberrypi:~ $ vcgencmd get_camera
supported=1 detected=1 <-------------カメラを認識した

pi@raspberrypi:~ $ ls -al /dev/video*
crw-rw----+ 1 root video 81, 3  1月 21 16:27 /dev/video0 <------ /dev/video0が表示
crw-rw----+ 1 root video 81, 0  1月 21 16:27 /dev/video10
crw-rw----+ 1 root video 81, 1  1月 21 16:27 /dev/video11
crw-rw----+ 1 root video 81, 2  1月 21 16:27 /dev/video12

4.mjpg_streamer の起動用と停止用のシェルスクリプトを書いて簡単に実行できるにした。
 
 ①mjpg_streamer の起動シェル 「msstart.shの内容」

pi@raspberrypi:~ $ cat msstart.sh

#!/bin/sh
if pgrep mjpg_streamer > /dev/null
then
    echo "mjpg_streamer already running"
else
    cd mjpg-streamer/mjpg-streamer-experimental/
    ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -rot 270 -x 640 -y 480 -fps 30 -q 10"> /dev/null 2>&1&
    echo "mjpg_streamer started"
fi

 ②mjpg_streamer の停止シェル 「msstop.shの内容」

pi@raspberrypi:~ $ cat msstop.sh

#!/bin/sh
if pgrep mjpg_streamer
then
    kill $(pgrep mjpg_streamer) > /dev/null 2>&1
    echo "mjpg_streamer stopped"
else
    echo "mjpg_streamer not running"
fi

5.カメラの取り付け方により回転したいときのオプション 「-rot」
①ラズパイカメラのオプション指定(google 翻訳済み)

$ ./mjpg_streamer -i "input_raspicam.so --help"

 -------------------------------------------------- -------------
 入力プラグインのヘルプ..:raspicam入力プラグイン
 -------------------------------------------------- -------------
 次のパラメーターをこのプラグインに渡すことができます。

 [-fps | --framerate] ...:ビデオフレームレートの設定、デフォルトは5フレーム/秒
 [-x | --width] ........:フレームキャプチャの幅、デフォルトは640
 [-y | --height] ........:フレームキャプチャの高さ、デフォルトは480
 [-quality] .............:JPEG品質を0〜100に設定、デフォルトは85
 [-usestills] ...........:ビデオモードの代わりに静止モードを使用します
 [-preview] .............:全画面プレビューを有効にします
 [-timestamp] ...........:各フレームのタイムスタンプを取得します

 -sh:画像の鮮明度を設定します(-100〜100)
 -co:画像のコントラストを設定します(-100〜100)
 -br:画像の明るさを設定します(0〜100)
 -sa:画像の彩度を設定します(-100〜100)
 -ISO:キャプチャISOを設定します
 -vs:ビデオの安定化をオンにします
 -ev:EV補正を設定します
 -ex:露出モードを設定します(raspistill notesを参照)
 -awb:AWBモードを設定します(raspistill notesを参照)
 -ifx:画像効果を設定します(raspistill notesを参照)
 -cfx:色効果の設定(U:V)
 -mm:メータリングモードを設定します(raspistill notesを参照)
 -rot:画像の回転を設定します(0-359)
 -stats:各画像の画像統計を計算します(-usestillsのノイズを減らします)
 -drc:ダイナミックレンジ補正レベル(raspistill notesを参照)
 -hf:水平反転を設定します
 -vf:垂直フリップを設定します
 -------------------------------------------------- -------------


②WEBカメラのオプション指定(google 翻訳済み)
 
$ ./mjpg_streamer -i "input_uvc.so --help"

 -------------------------------------------------- -------------
 入力プラグインのヘルプ..:UVC webcam grabber
 -------------------------------------------------- -------------
 次のパラメーターをこのプラグインに渡すことができます。

 [-d | --device] .......:開くビデオデバイス(カメラ)
 [-r | --resolution] ...:ビデオデバイスの解像度、
                          次の文字列のいずれかです。
                          QQVGA QCIF CGA QVGA CIF PAL
                          VGA SVGA XGA HD SXGA UXGA
                          FHD
                          または次のようなカスタム値
                          例:640x480
 [-f | --fps] ..........:1秒あたりのフレーム数
                          (カメラは異なる値に強制される場合があります)
 [-q | --quality] .>....:JPEGエンコーディングの品質を設定します
 [-m | --minimum_size]> .:この制限よりも小さいフレームをドロップします。便利です
                          ウェブカメラが小さなサイズのガベージフレームを生成する場合
                          低照度条件下で発生する可能性があります
 [-e | --every_frame] ..:番号付き以外のすべてのフレームをドロップします
 [-n | --no_dynctrl] ...:Linux-UVCドライバーのdynctrlを初期化しません
 [-l | --led] ..........:LEDを「オン」、「オフ」に切り替え、「点滅」または終了させます
                          値「auto」を使用するドライバー次第
 [-t | --tvnorm] ......:TV-Norm pal、ntscまたはsecamを設定します
 [-u | --uyvy] ........:UYVY形式を使用、デフォルト:MJPEG(より多くのCPUパワーを使用)
 [-y | --yuv] ........:YUV形式を使用、デフォルト:MJPEG(より多くのCPUパワーを使用)
 [-fourcc] ............:FOURCCコーデック「argopt」を使用します。
                          現在サポートされているコーデックは次のとおりです。RGBP
 [-timestamp] ..........:フレームタイムスタンプにシステム時間を入力します
 [-softfps] ............:このfpsを試行して達成するためにフレームをドロップします
                          f音を避けるために、カメラを最大fpsに設定します
 [-timeout] ............:デバイスクエリのタイムアウト(秒)
 [-dv_timings] .........:DVタイミングクエリとイベント処理を有効にします
 -------------------------------------------------- -------------

 オプションのパラメーター(すべてのカメラでサポートされているわけではありません):

 [-br] .................:画像の明るさを設定します(自動または整数)
 [-co] .................:画像のコントラストを設定します(整数)
 [-sh] .................:画像の鮮明度を設定します(整数)
 [-sa] .................:画像の彩度を設定します(整数)
 [-cb] .................:カラーバランスの設定(自動または整数)
 [-wb] .................:ホワイトバランスの設定(自動または整数)
 [-ex] .................:露出を設定します(自動、シャッター優先、絞り優先、または整数)
 [-bk] .................:逆光補正の設定(整数)
 [-rot] ................:画像の回転を設定します(0-359)
 [-hf] .................:水平反転を設定(true / false)
 [-vf] .................:垂直フリップの設定(true / false)
 [-pl] .................:電力線フィルターの設定(無効、50hz、60hz、自動)
 [-gain] ...............:ゲインの設定(自動または整数)
 [-cagc] ...............:クロマゲインコントロールの設定(自動または整数)
 -------------------------------------------------- -------------


・IBM Watson が提供するプログラム可能なボール紙ロボット TJBot を作ってみました。

 完成後の写真(左右逆となっている)

S__43261962


S__43261964


・下記URLに作り方が、出ています。

1.まず、厚紙の型を作る必要があったので、型のPDFデータをダウンロードします。
 ①原紙がB4の為、私の持っているA4プリンタで印刷できない事から、A4二枚に半分に
  分け、PDF出力後、A4の紙に印刷しました。
 ②それを写真の工作用紙に貼り付け、カッターでカットしていきました。
 ③カラー用紙の裏面に張り付けたため、完成時、逆の物となりました。

 100均Candoで購入

S__43261968

S__43261967


2.インストールガイドを参照しながらインストールしていきましたが、二年前のガイドだったので所々うまくインストール出来無かったので、ここに現時点でのやり方を書いておきます。
 ①まず、最新版のイメージをダウンロードし、SDカードに書き込みます。
 ②環境を日本語にし、WiFiに接続します。
 ③ガイド「3.4.4 OS と Node-RED の更新」 の手順通りOSをアップデートします。

 $ sudo apt-get update
 $ sudo apt-get upgrade
 $ sudo apt-get dist-upgrade
 $ update-nodejs-and-nodered <---が、うまくいかない。

 ④node-red関係のアップデートが、ガイドのやり方でうまくいかず、
  下記URLを参考に次のコマンドでアップデートしました。

  $ bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-
   package/master/resources/update-nodejs-and-nodered)
 
 ■参考URL:Raspberry Pi のNode-REDをアップデートorインストールする方法


 ⑤ガイド「3.5 Node-RED に必要なモジュールを追加する」
  をガイドにそって実行します。

    *コピペ用に記載します。
$sudo npm --unsafe-perm -g install node-red-node-watson node-red-contrib-camerapi
$sudo reboot 

 ⑥ガイド 「3.6 オーディオとカメラの設定」
  をガイドにそって実行します。

    *コピペ用に記載します。
$sudo nano /boot/config.txt
dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4

$amixer -D hw:1 sset Mic 100% 
$amixer -c0 sset PCM 100% unmute

 *オーディオの再生確認用
$speaker-test -t sine -f 600
$aplay /usr/share/sounds/alsa/Front_Center.wav

 *音が出なかった時など、下記を参考にしました。
   Raspberry Pi で再生と録音を行う


 ⑦ガイド「5. Watson とつないだフローを動かす」
  ここから、ガイドには、「ユーザー名」と「パスワード」を入力するように
  有りますが、IBM Cloud のダッシュボードの中に見つかりませんでした。
  色々試したところ、この二つは、ブランクで、APIKeyの入力が必要でした。
  これで、動くことが分かりました。

注)サンプルの中のvisual.json(画像認識)の顔認識でエラーが出て実行できません。
  原因は、 昨年途中からWatson VRの顔認証機能が廃止されたようです。

3.TJBotを電源ON(起動)した時や、リブートした時、node-redに接続するタイミング
 を把握するために、緑のLEDを点灯させ、IPアドレスをスピーカーから発生してくれ
 るようにしてみました。

 ①まず下記URLを参照して日本語音声合成をインストールする。

 ②次に下記シェルスクリプトを作成する。(コピペする)

pi@raspberrypi:~ $ sudo nano jtalk.sh

#!/bin/sh
TMP=/tmp/jsay.wav
echo "$1" | open_jtalk \
-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow $TMP && \
aplay --quiet $TMP
rm -f $TMP

 ③実行権を設定する。
pi@raspberrypi:~ $ sudo chmod +x jtalk.sh

 ④次にIPアドレスを取得し、音声案内と緑のLEDを点灯させる下記、
  自動実行シェルスクリプトを作成する。

pi@raspberrypi:~ $ sudo nano autorun.sh

#!/bin/sh
ipadd=""
while [ "$ipadd" = "" ]
do
    ipadd=`ip a show wlan0 | grep "inet " | cut -f6 -d ' ' | cut -d '/' -f1`
    wait 1
done
gpio -g mode 23 out
gpio -g write 23 1
rtn=`/home/pi/jtalk.sh IPアドレスは${ipadd}です`


 ⑤実行権を設定する。
pi@raspberrypi:~ $ sudo chmod +x autorun.sh


 ⑥最後に、起動時に自動実行するように「/etc/rc.local」の「exit 0」の前に追記する。

pi@raspberrypi:~ $ sudo nano /etc/rc.local

#!/bin/sh -e
.
.
sh /home/pi/autorun.sh & <---この行を追記する。

exit 0

 以上で起動時にIPアドレスを教えてくれる。


4.これから、色々プログラムして行きたいと思います。

 以上

・Pch パワーMOSFET (2SJ334) を使って 暗くなるとスイッチが入る ハイサイド・スイッチ を作ってみた。

 *一応仕様としては、5V~24V 5A程度と考えています。
 *2SJ334の規格は、60V 30A

①回路図を下記に示します。
mosfetsw
②タッパーの中に組み入れてみました。

mosfet

・I2C Wemos D1 mini Motor Shield 使かってみた

・ESP32 (M5Stack) で 安価な I2C モータードライバ を使ってみました。
 *Wemos D1 mini Motor Shield (i2c interface, TB6612 based) 


msr1


1.安価なのは良いのですが、そのままではM5STACKで認識しない事がわかりました。
 よって、Motor Shieldのファームウェアの再プログラミングが、必要な事が分かりました。

 次からの説明は、Windows10 x64で実行した物です。

2.最初に下記より書き込みツールをダウンロードします。
 STシリアルブートローダーを使用したSTM32用のオープンソースフラッシュプログラム
 (stm32flash.exe)

3.次にバイナリファイルを下記よりダウンロードします。
 *書き換えにより、アドレス設定用のランドは、無効となります。
 標準のものは、I2Cアドレスが、「0x30」に固定の為、複数枚使う場合は、アドレスごと(アドレス0x2d、0x2e、0x2f、0x30)にコンパイルされたファームウェアが、必要です。
 下記は、4つの異なるアドレスのファームウェアファイルを含んだzipファイルです。
https://github.com/pbugalski/wemos_motor_shield/files/1434679/motor_shield_XX_bin.zip

4.2,3のファイルを同じフォルダに解凍、展開しておきます。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2019/12/19  10:26             3,116 motor_shield.bin
2017/11/02  00:39             3,104 motor_shield_2D.bin
2017/11/02  00:39             3,104 motor_shield_2E.bin
2017/11/02  00:39             3,104 motor_shield_2F.bin
2017/11/02  00:39             3,104 motor_shield_30.bin
2016/02/11  23:44               280 README.txt
2016/02/11  22:04            13,265 stm32flash-manual.pdf
2016/02/10  17:14           252,776 stm32flash.exe
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

5.Motor Shield に書き込むための前準備をします。
 ① Wemos D1 Miniを使う場合

 ①-1  空のスケッチをD1 Miniにアップロードします。これにより、シリアルデータがUSBポートからMotor Shield に、D1 Miniを経由して渡されます。

空のスケッチ:
//------------------------------------------------------------------------
void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:
}
//------------------------------------------------------------------------

 ①-2 D1 Miniとの結線
 *下記の写真のように結線します。
 *Motor Shield を書き込みモードにするためにRTSは、3vに結線します。

S__43188227


 ② USB-SERIALインターフェースを使う場合
 
 *下記の写真のように結線します。
 *Motor Shield を書き込みモードにするためにRTSは、3vに結線します。

S__43196430


参考:Motor Shield Rev.1.0.0 回路図
motorshieldRev1

 
 ③次のコマンドを実行します。
  重要:COM6を自分のCOMポート番号に置き換えて下さい。 
  *COMポートをデバイスマネージャにて確認


1>C:\motorshield\stm32flash-0.5-win64>stm32flash.exe COM6
*ボードを認識しているか確認します。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
stm32flash 0.5

http://stm32flash.sourceforge.net/

Interface serial_w32: 57600 8E1
Version      : 0x31
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0444 (STM32F03xx4/6)
- RAM        : 4KiB  (2048b reserved by bootloader)
- Flash      : 32KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 3KiB
-------------------------------------------------------------------------------------

2>C:\motorshield\stm32flash-0.5-win64>stm32flash.exe -k COM6
*これにより、シールドのロックが解除されます。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
stm32flash 0.5

http://stm32flash.sourceforge.net/

Interface serial_w32: 57600 8E1
Version      : 0x31
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0444 (STM32F03xx4/6)
- RAM        : 4KiB  (2048b reserved by bootloader)
- Flash      : 32KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 3KiB
Read-UnProtecting flash
Done.
-------------------------------------------------------------------------------------

3>C:\motorshield\stm32flash-0.5-win64>dir
*ファイル名の確認
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ドライブ C のボリューム ラベルは S3SDD00-960 です
 ボリューム シリアル番号は 44C7-1584 です

 C:\motorshield\stm32flash-0.5-win64 のディレクトリ

2020/01/04  13:17    <DIR>          .
2020/01/04  13:17    <DIR>          ..
2019/12/19  10:26             3,116 motor_shield.bin
2017/11/02  00:39             3,104 motor_shield_2D.bin
2017/11/02  00:39             3,104 motor_shield_2E.bin
2017/11/02  00:39             3,104 motor_shield_2F.bin
2017/11/02  00:39             3,104 motor_shield_30.bin
2016/02/11  23:44               280 README.txt
2016/02/11  22:04            13,265 stm32flash-manual.pdf
2016/02/10  17:14           252,776 stm32flash.exe
2020/01/04  13:17                56 wemos_motor_shield.txt
               9 個のファイル             281,909 バイト
               2 個のディレクトリ  492,288,159,744 バイトの空き領域
-------------------------------------------------------------------------------------

4>C:\motorshield\stm32flash-0.5-win64>stm32flash.exe -f -v -w motor_shield_2F.bin COM6
*ここで希望のI2cアドレスのファイルを、書き込みます(例では「0x2F」)。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
stm32flash 0.5

http://stm32flash.sourceforge.net/

Using Parser : Raw BINARY
Interface serial_w32: 57600 8E1
Version      : 0x31
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0444 (STM32F03xx4/6)
- RAM        : 4KiB  (2048b reserved by bootloader)
- Flash      : 32KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 3KiB
Write to memory
Erasing memory
Wrote and verified address 0x08000c20 (100.00%) Done.
-------------------------------------------------------------------------------------


6.書き込みが終わったら、配線をM5Stackに繋ぎ変え、I2Cで認識するか確認します。

*「0x2F」「0x30」として、認識しています。

S__43188229

確認用のスケッチ:
//------------------------------------------------------------------------

#include <M5Stack.h>

void setup() 
{
  M5.Lcd.begin();
  M5.Lcd.setRotation(1);
  M5.Lcd.fillScreen( BLACK );
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.setTextColor(YELLOW);  
  M5.Lcd.setTextSize(3);

  M5.Lcd.fillScreen( BLACK );
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.println("M5Stack I2C Tester");
    
  Wire.begin();

  delay(3000);
  M5.Lcd.fillScreen( BLACK );
}

int textColor=YELLOW;

void loop() 
{
  int address;
  int error;
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.println("scanning Address [HEX]");
  
  for(address = 1; address < 127; address++ ) 
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if(error==0)
    {
      M5.Lcd.print(address,HEX);M5.Lcd.print(" ");
    }
    else M5.Lcd.print(".");

    delay(10);
  }

  if(textColor==YELLOW) textColor=GREEN;
  else textColor=YELLOW;
  M5.Lcd.setTextColor(textColor,BLACK);
  delay(5000);  
}
//------------------------------------------------------------------------

 
7.ライブラリは、下記よりダウンロードします。
 Wemos D1ミニモーターシールド(i2cインターフェイス、TB6612ベース)用のArduinoライブラリ。

参考URL:モーターシールドの再プログラミング


↑このページのトップヘ