Freenove Mecanum ホイール カー キットを購入しました
「ロボット的なもの」をやりたいと思い、amazonを見ていると下記の製品を見つけてポチりました。
■ Freenove Mecanum ホイール カー キット Raspberry Pi Pico 用 (別売り)
Raspberry Pi Pico用のロボットカーですね~
電子工作から遠ざかっていたので、リハビリを兼ねて遊ぼうと思います(*´ω`*)
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
「ロボット的なもの」をやりたいと思い、amazonを見ていると下記の製品を見つけてポチりました。
■ Freenove Mecanum ホイール カー キット Raspberry Pi Pico 用 (別売り)
Raspberry Pi Pico用のロボットカーですね~
電子工作から遠ざかっていたので、リハビリを兼ねて遊ぼうと思います(*´ω`*)
Windows 11のArduino IDE 1.8.21/2.3.4ともに発生した現象です。
ここしばらくはまってしまいました。その対策のメモです。
(あくまでも、個人的な調査で保証のないた対応方法です)
Arduino STM32(Roger氏版)では、ツールチェーンの定義があいまいで、
ARM系の別のボート用パッケージ(Arduuino Uno R4など) をインストールしたりすると、
STM32のスケッチのコンパイル時に別のツールチェーンにてコンパイルされてしまうようです。
上の例ではSTM32環境では、arm-none-eabi-gcc 4.8.3-2014q1を利用していたのですが、
Arduino Uno R4のボード用のパッケージをインストールすると
arm-none-eabi-gcc-7-2017q4(gcc 7.2.1)が使われてしまっています。
調べると、Arduino STM32のボード関連の設定のhardware\Arduino_STM32\STM32F1\platform.txt の
ツールチェーンの設定と思われる個所が、
compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/
となっていて、これだと指定があいまいのようです。
C:\Users\user\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\ に
ある複数のツールチェーン環境がある場合(下の画像)には、
別のツールチェーンが選択されてしまうようです。
arm-none-eabi-gcc フォルダにツールチェーン環境が複数あると、フォルダ名の降順で選択されるのかな?
試しに、7-2017q4フォルダを一時的にゴミ箱に移動してコンパイルしたところ、
4.8.3-2014q1 の方を利用してくれました。
対策として、hardware\Arduino_STM32\STM32F1\platform.txt の compiler.path を
compiler.path={runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path}/bin/
とき修正することで、4.8.3-2014q1 の方を利用してくれました。
platform.txtの修正部分(抜粋)
| ・・・・・ # compiler variables # ---------------------- #compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/ compiler.path={runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path}/bin/ compiler.c.cmd=arm-none-eabi-gcc ・・・・・ |
ちなみにArduino Uno R4の場合、
\hardware\renesas_uno\1.3.2\boards.txt にツールチェーンの設定がしてあるようで、
| ・・・・・ minima.name=Arduino UNO R4 Minima minima.build.core=arduino minima.build.crossprefix=arm-none-eabi- minima.build.compiler_path={runtime.tools.arm-none-eabi-gcc-7-2017q4.path}/bin/ ・・・・・ |
となっていて、曖昧なく設定されているようです。
Arduino_Core_STM32の方も見てみましたが、曖昧なく設定されていました。
ArduinoのSTM32環境は、Roger氏版のメンテナンスがいまいちになってきており、
そろそろCore版の方に切り替えた方が良さそうですね。
開発環境として「Linux環境」もほしいと思い、使っていなかったパソコンにZorin OSをインストールしました。
使い勝手は、Office関連が使えない以外、Windowsと遜色ない感じですね〜
Arduino関連の環境を整備で、
純正のArduino UNOボードへのスケッチ書き込みは問題なかったのですが、
シリアルIFにCH340を使っている互換ボードが認識してくれません。
色と調べて、下記のサイトの記事を参考にして解決することが出来ました。情報公開に感謝(_ _)
・ServerCan.Net - Ubuntu 22.04でCH340 USBシリアルコンバータが使えない
しばらくは、Zorin OS上にて環境整備を行っていきます。
Arduino IDE 2.3.4の環境に Arduino STM32(rogerclarkmelbourne/Arduino_STM32) を導入して
スケッチをコンパイルして書き込もうとすると書き込み時にエラーが発生して書き込みできませんでした(>_<)
エラーメッセージは次のような感じです。
| maple_loader v0.1 Resetting to bootloader via DTR pulse # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000007110b5db, pid=11628, tid=15548 # # JRE version: OpenJDK Runtime Environment Corretto-21.0.5.11.1 (21.0.5+11) (build 21.0.5+11-LTS) # Java VM: OpenJDK 64-Bit Server VM Corretto-21.0.5.11.1 (21.0.5+11-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64) # Problematic frame: # C [jSSC-2.8_x86_64.dll+0xb5db] # # No core dump will be written. Minidumps are not enabled by default on client versions of Windows # # An error report file with more information is saved as: # C:\home\Arduino\hardware\Arduino_STM32\tools\win\hs_err_pid11628.log # # If you would like to submit a bug report, please visit: # https://github.com/corretto/corretto-21/issues/ # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # |
原因を調べると、Arduino STM32に付属しているJavaのWindows環境用シリアル通信モジュールjssc.jar が最新版のjavaに対して、
古すぎて動作しないようです。
確認すると11年前のライブラリです(-_-;)
下記のサイトからjsscを入手して、差し替えを行ったところ書き込めるようになりました(*´ω`*)
java-native/jssc https://github.com/java-native/jssc/releases
jssc-2.9.6.jar をダウンロードして、\hardware\Arduino_STM32\tools\win\lib\jssc.jar をjssc-2.9.6.jar に置き換えると
問題なく書き込み出来ました。
(追記)
Arduino IDE 1.8.X系はで、IDEにjavaが添付されているのでjavaのインストールは不要なのですが、
Arduino IDE 2.X系は添付されていないため、別途Javaのインストールが必要です。
今回の利用では、Open Java Development Kit (OpenJDK)であるAmazon Corretto 21を使っています。
Corretto 8だと、書き込みエラーを起こすことがあったのですが、Corretto 21だと安定しているようです。
以前、Micro Pytyhon用の SKK日本語変換ライブラリpyskk を作成したのですが、
Arduino Uno向けに移植してみました。
やっとそこそこ動作するプロトタイプ版が完成しました(*´ω`*)
UTF-8文字列処理、Pythonでは言語レベルでサポートしているので楽ちんでしたが、
C++だと、かなり面倒臭くて、移植に意外と手こずりました。
メモリー容量も制約もシビアで、性能を犠牲にしての実装となりました。
とりあえず、サンプルスケッチではシリアル通信にて対話的にローマ字入力して、
Arduino側にてローマ字=>ひらがな変換、漢字変換を行うことが出来ました。
漢字変換辞書は、SDカード上に配置しています。
用途は微妙ですが、Tiny BASIC単体での漢字入力が出来るようなったら良いなあと思います。
次のステップとしては、PS/2キーボードでスタンドアロンでの漢字入力と表示をトライしていと思います。
サンプルスケッチ
全ソースはこちら
・arduino_skk
https://github.com/Tamakichi/arduino_skk
「NeoPixel(WS2812B)の制御 その4」に関して質問がありました。
流通しているNeoPixelマトリックの配列には様々なタイプがあるようです。
そこで、前回のスケッチをもう少し見直して、 XYtoNo()関数の修正でレイアウトの差異を吸収できるよう、修正しました。
スクロール処理を行うNeoScroll()関数を、処理速度を少々犠牲にしてXYtoNo()を使って処理を行うようにしました。
試した感じでは、処理速度的には問題ないようです。
修正版
■ 修正の補足
NeoScroll()関数は、縦x横のドットデータを左に1ドットずらす処理を行っています。
従来版は速度重視のためmemmove()、memset()を使っていたのですが縦並びのLEDに対応出来ません。
そこで XYtoNo()を使てのデータ操作に修正しました。
これにより、XYtoNo()関数にてパネルのレイアウトに対応するだけで差異を吸収できます。
文字の縦の表示開始位置は、次の定数を変更することで調整出来ます。
#define Y_OFFSET 0 // フォントの縦先頭位置
ここで、「NeoPixel(WS2812B)の制御 その4」でZuhiさんがご質問されました、
横32ドットx縦8ドットで「パネルの左上起点に下上になっている」パネルについて対応してみましょう。
256個のLEDが数珠つなぎ(0~255)になっているのですが、並びは次の感じだと思われます。
左上が起点で↓向きでスタート、8個目で↑向きに折り返しで256個がつながっています。
上記において、任意の(x,y)の位置のLEDを操作するためには、そのLEDの先頭からの番号が必要となります。
計算式としては、次のようになります。
xが偶数の場合:
no = x * 8 + y
xが偶数の場合:
no = x * 8 -y + 8 -1
定数を踏まえると..
xが偶数の場合:
no = x * PXCEL_H + y
xが偶数の場合:
no = x * PXCEL_H -y + PXCEL_H - 1
となります。
修正版のスケッチをZuhiさんのパネルに対応する場合、以下の修正でいけると思います。
①定数の変更
#define PXCEL_W 32 // 横ピクセル数
#define PXCEL_H 8 // 縦ピクセル数
②XYtoNo()の変更
noを参考にして修正すると、関数内のreturn文を下記のように修正します
return x&1 ? x*PXCEL_H-y+PXCEL_H-1: x*PXCEL_H+y; // 左上起点下上方向並び
(※修正版にコメント化して記述しています)
横32ドットx縦8ドットパネルは所有していないので、動作確認出来ないのですが、たぶん大丈夫でしょう(;^_^
(うまくいかない場合、連絡ください)
遅ればせながらArduino UNO R4 WiFiの調査(-_-;) .. 随時追記します
文献調査
①Arduino UNO R4 WiFi
https://docs.arduino.cc/hardware/uno-r4-wifi/
まずは、本家のこの資料の参照がスタート地点でしょう..
ここを起点に、色々と調べることが出来ます
②Arduino UNO R4 WiFi - Product Reference Manual
https://docs.arduino.cc/resources/datasheets/ABX00087-datasheet.pdf
「このボードは何ぞや?」を知るために①のリンクからこの最初にこのPDFを読む..
③Arduino UNO R4 WiFi Cheat Sheet
https://docs.arduino.cc/tutorials/uno-r4-wifi/cheat-sheet/
A reference to all technical features on this board, with pointers to additional documents.
この資料が一番全体の機能や使いざっと把握できそうです
④Arduino Renesas fsp Boards(ArduinoCore-renesas)
https://github.com/arduino/ArduinoCore-renesas
Arduino UNO R4 WiFiのCoreおよびライブラリのソースを見るにはここ
さらにボード依存しない抽象層のAPIは以下
ArduinoCore-API
https://github.com/arduino/ArduinoCore-API
⑤Renesas Arm® Cortex-M MCU RA4M1
RA4M1 48MHz Arm® Cortex®-M4とLCDコントローラおよびHMI用静電容量式タッチセンサ搭載 32 ビットマイクロコントローラ
搭載マイコン RAM1の機能知るための公式サイト掲載情報、とりあえず下のマニュアルが日本語なので役立ちそう
Renesas RA4M1グループ ユーザーズマニュアル ハードウェア編
⑥トランジスタ技術 2024年 1月号 新生!Arduino Uno R4 本格派ルネサス版
とりあえず購入して積んでいました。今更ながら読んでみます..
・・・
Renesas RA4M1のブロック図
「Renesas RA4M1グループ ユーザーズマニュアル ハードウェア編」- 1. 概要 1.2 ブロック図より抜粋
・・・
用語関連
・FSP(Flexible Software Package)
ルネサスのArmマイコンRAファミリを用いた組込みシステム設計向けに、ユーザフレンドリでスケーラブル、
かつ高品質なソフトウェアを提供するために設計されたソフトウェアパッケージ。
「Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版」を更新しました。
ここ最近の調査をライブラリに反映しました。
・Arduino-misakiUTF16 Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版
https://github.com/Tamakichi/Arduino-misakiUTF16
おもな変更点
・ライブラリ形式(library format)をrev. 2.2に変更(以前はrev 1.x)
・美咲フォントの最新版 2021-05-05(美咲ゴシック第2)利用に変更
(以前は2012-06-03 正式公開初版を利用)
・isZenkaku()の追加
⇒ 半角(4ドット)・全角(8ドット)幅判定により半角文字を詰めて表示可能となりました
・いくつかの不具合対応(半角・全角変換ミスなど)
せっかくの機会なので、新Arduino Uno(Arduino Uno R4 WiFi)に搭載されているLEDマトリックスで、デモってみました。
Arduino Uno R4 WiFi搭載 LEDマトリックスで美咲フォント表示
動いている様子(Youtube ※BGMあり)
表示器がボート搭載だと、お手軽に利用できて良いですね~
プログラムソース
このサンプルプログラムは、ライブラリのサンプルプログラムとして添付しました。
参考にした文献
・Using the Arduino UNO R4 WiFi LED Matrix
https://docs.arduino.cc/tutorials/uno-r4-wifi/led-matrix/
公式サイトのLEDドットマトリックスを利用するための解説です。
利用するライブラリ及び、LEDドットマトリックスのフレームバッファの構造について説明されています。
今回作成したサンプルプログラムでは、フレームバッファにデータをセットして表示しています(setAt()関数)。
フレームバッファの構造は、横12ドットx縦8ドットの計96ドット分の96ビットをlong整数 32ビットx3個 に単純に詰めている感じです。
フレームバッファを直接いじれば、なんでも表示できそうですね
フレームバッファの左スクロールを実装しているscroll()関数、
汎用性のない、12x8ドット限定の力業実装で少々分かりにくいコードですが、
32ビットx3の配列をビットシフトでビットを左にずらしているのですが、その際に
①ビットシフト時の最上位ビットの欠落対策
②0~7行の右端ビットクリア、
③ワードをまたぐ行の左端ビットの処理
を行って補正してます。
ちょっとエレガントでないのでもう少し良い方法があるかもしれません
新Arduino Uno R4ボード、搭載マイコンがRenesas RA4M1(Arm Cortex-M4)に変更となりました。
このボードも発売直後に購入したものの、放置していました。やっと使い始めた感じです。
まだまだ、使いこなせてないので、ドキュメントをあさりつつ遊んで行きたいと思います。
こんな感じで、ライブラリ更新と少々の動作確認の上、公開いたしました。
Arduino用の美咲フォントライブラリの更新に伴い、Arduino用ライブラリ作成の再確認メモです。
(久しぶりのライブラリ作成・修正ですっかり忘れてました)
参考文献
・Arduino DOCS - Home/Learn/ Writing a Library for Arduino
https://docs.arduino.cc/learn/contributions/arduino-creating-library-guide/
ライブラリ作成の入門編的な資料です。
・Library specification
https://arduino.github.io/arduino-cli/0.36/library-specification/
ライブラリ作成に関する仕様です。
・KEI SAKAKI's PAGE. - Arduino開発環境用の「ライブラリ」を作成してみる
https://kei-sakaki.jp/2015/01/07/making-library-for-arduino-development-environment/
Arduino IDEのバージョン的に少々古い情報となりますが、大変参考になりました(情報公開に感謝♪
まずは、ディレクトリ構成に規約があります。
■ ライブラリのディレクトリ構成
・librarys\
ライブラリ格納ディレクトリ\
keywords.txt
library.properties
src\
ライブラリ用ヘッダーファイル
ライブラリ用ソースファイル
examples\
サンプルプログラム\
サンプルプログラムソースファイル
・・・
extras\ (オプション)
資料など
例:美咲フォントライブラリの例
librarys\
└─ misakiUTF16\
│ keywords.txt
│ library.properties
├─ examples\
│ ├─ aitendo_ht16k33
│ │ aitendo_ht16k33.ino
│ ├─ banner\
│ │ banner.ino
│ └─ misaki_tvout\
│ misaki_tvout.ino
└─ src\
misakiUTF16.cpp
misakiUTF16.h
misakiUTF16FontData.h
|
■keywords.txt の定義
name=misakiUTF16
version=1.2.0
author=Tamakichi
maintainer=Tamakichi
email=tamacat2014@gmail.com
sentence=Japanese font data and driver
paragraph=8x8dots Misaki font driver for Arduino Uno
category=Other
url=https://github.com/Tamakichi/Arduino-misakiUTF16
architectures=*
|
####################################### ####################################### ####################################### |
micro:bit(v1.5)で動作する「豊四季Tiny Basic for micro:bit」のマニュアルを更新しました。
今回の更新は、レイアウト不具合の修正のみです。
公開サイト
・豊四季Tiny Basic for micro:bit V0.08
https://github.com/Tamakichi/ttbasic_microbit
micro:bitといえば、V2.0がリリースされ、日本でもそろそろ販売開始です。
スイッチサイエンスさんのmicro:bitの商品ページでも、バージョンアップによる商品切り替えを掲示しています。
今、micro:bitを購入する場合は、バージョンの注意が必要ですね。
参考情報
・micro:bit のバージョンアップについて(仕様変更点等)
https://switch-education.com/2020/10/13/
V2.0では、スピーカーとマイクが付いた他、
フラッシュメモリが256kbから512kb、
SRAMが16kbから128kbに大幅に増えたようです。
豊四季Tiny Basicの実装においては、フラッシュメモリ、SRAMの容量不足で
無線通信に未対応でしたが、V2では乗せられるかもしれません。
3Dプリンタ Android arduino ARM AsciiDoc ATtiny13A AVR DiskStation DS216j ESP32・ESP8226 IchigoJam LAN-W300N/G8 Lenovo Miix 2 8 Linux LPC810 micro:bit MicroPython MINIX NEO X5 MSX・レトロPC MZK-SA300D PIC Propeller Python Qi (ワイヤレス給電)化 Raspberry Pi Raspberry Pi pico ReadyNAS duo v2 STM32 TinyBASIC TL-WR703N VFDモジュール ねこ ツール・フリーソフト パソコン・インターネット フォント プロジェクト・リポジトリ管理 メモ モバイル・携帯・デジカメ 家電 旅行・地域 日記・コラム・つぶやき 映画・テレビ 書籍・雑誌 表示器制御関連 通販
最近のコメント