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用のロボットカーですね~
電子工作から遠ざかっていたので、リハビリを兼ねて遊ぼうと思います(*´ω`*)
先にネタバレですが Zorin OS でFlathub(Flatpak)版の Visual Studio Code を使ってしまったために
ハマってしまいました。公式サイトからダウンロードしてインストールすることで解決しました。
以下、その状況についてのメモです。
Zorin OSを本格的に使おうと
Visual Studio Codeをインストールし、Raspberry Pi PicoをSDKを使う環境構築を行いました。
「Getting started with Raspberry Pi Pico」に従って環境構築を行ったのですが
debugprobeで書き込み・デバッグでエラーが発生して利用出来ません。
Windows 11環境、Ubuntu 22.04環境では出来たので結線は問題ないはずです。
Ubuntuと同じようにすればできるはずなのですが..
openocd が libftdi1.so.2 などのダイナミックリンクライブラリが見えていないようです。
インストールしているのにおかしい..
同じことを外部のターミナルにコピペして実行すると書込が出来ました。
「なんか、vscode上のターミナルの環境おかしい?」
Visual Studio Codeのターミナル上で色々と操作して調べていくと色々と疑問が湧いてきました。
「外部のターミナルとシステム周りのディレクトリ構成が違う!」
「コンテナ?、まるで仮想システムだか別のOS使っているような感じがする」
インストールしたVisual Studio Codeを調べると「Flathub」というリポジトリ版のようで、
Visual Studio Code Flatpak というバージョンでした。
Visual Studio Code Flatpak に掲載の説明を読むとやっと原因が理解できました。
Fatoack 版、ようするに仮想システム上で動いているのね..
その仮想システムで動くvscodeのターミナルは、サンドボックスで動作していて、
ホスト側のOS周りのシステムは切り離されてるため、ドライバー類をインストールしても見えなかったんですね〜
仮想システムは変更不可、書込禁止。
ユーザーホームはホストと同じところが見えているようです。
通常のアプリであれば、仮想システム上で動いていても問題ないのですが、
組み込み系の開発では、色々とドライバー類を使うので厄介です。
ということで、Visual Studio Code の公式サイト から直接ダウンロードしてインストールしたところ、
すんなりと動作しました。
Zorin OS は「ソフトウェア」というアプリ管理ソフトで、cchrome、Microsofut Edge、GitHubなど
Ubuntuではちょっとインストールが面倒くさいアプリも検索して簡単にインストールできるのですが、
組み込み系、開発系は気をつけてインストールした方が良さそうです。
備考メモ
・debugprobeを利用できるようにする際の追加インストールメモ
sudo apt install python3 git tar build-essential
sudo gpasswd -a ユーザ dialout
sudo apt install gdb-multiarch
sudo apt install libftdi1-2 libhidapi-hidraw0
以前、豊四季Tiny BASICやArduinoで漢字の表示、日本語文字を扱えるようにしていたのですが、
日本語の入力にはホストコンピュータが必要でした。
組込み系単体で「日本語入力をやってみたい」と思い、
とりあえず、ちびちびと調査・実装を行い、
MicroPython版のSKK日本語変換ライブラリを実装してみました。
お試し実装版は今年の6月に公開したのですが、処理速度的に問題ないようです。
メモリーの消費を抑えるため当然、辞書ファイルはフラッシュメモリ上の配置しています。
(本家Pythonの辞書型使えばらくちんなのですが、MicroPythonではメモリーが、メモリーが..
MicroPythonで辞書型のイメージで、メモリー消費を気にせず、
実体はフラッシュメモリ利用のデータ操作が出来るモジュールは思案中)
辞書の検索に本当はハッシュ探索を使いたかったのですが、色々とマンドクサそうなので
実装が簡単な二分探索としました。
まあ、辞書が6万件でも最悪16回の比較処理で済むので良しとしましょう。
これをArduino環境(C・C++)に移植作業を進める予定です。
・Raspberry Pi Pico MicroPython用 SKK日本語変換ライブラリpyskk
https://github.com/Tamakichi/pico_MicroPython_skk
先日修正版を公開した「Raspberry Pi Pico MicroPython用の美咲フォントライブラリ」を使って、
MAX7219を使ったLEDドットマトリックスモジュールで日本語表示を試してみました。
MAX7219ベースのLEDドットマトリックスの利用については、文献1が大変参考になりました.. 感謝(*´ω`*)
MAX7219の制御についてては文献2のMike Causerさんが公開しているライブラリを利用しました.. 公開に感謝(*´ω`*)
この実装にあたり、参考にした文献
・文献1.証券所のティッカーみたいな細長い電光掲示板を作る話—MAX7219モジュールとRaspberry Pi Pico (rp2040)とMicrPython
・文献2.micropython-max7219
・文献3.MicroPython libraries framebuf — frame buffer manipulation
「Raspberry Pi Pico MicroPython用の美咲フォントライブラリ」 の最新版では、半角と全角文字を混ぜて表示できます。
半角文字は横4ドットで処理しています。とりあえずは、使えそうかな.. (*´ω`*)
文献3のmicropython-max7219 ライブラリでも半角英数字テキストのスクロール表示メッセージは可能なのですが、
フォントの切り替え不可で、美咲フォントを利用した日本語フォントの表示には対応していません。
そこで、micropython-max7219の Matrix8x8の派生クラスを作成して美咲フォントで日本語表示できるようにしてみました。
MessageBoardクラスを作成しました。
以下は、そのクラス実装のmessageboard.pyとサンプルプログラムのsample_scroll_text.pyです。
ライブラリmax7219.py、messageboard.pyは、pico内にdeviceフォルダを作ってその中に保存します。
ラズパイpicoのmicroPython環境、実現レベルでいい感じと再認識しました(*´ω`*)
ハードウェア構成、結線については文献1、2を参照願います。
pico用に作成しましたが、他の環境でも比較的簡単に移植できると思います。
教育漢字だけだとやはり、ちょっとした文書を表示しようと思うと豆腐(□=教育漢字以外)が表示されてしまいます。
picoでは、フラッシュメモリに余裕があるので全フォント搭載でも問題ないと思うので、対応しようかな..
前回投稿「美咲フォントの調査(メモ その1)」を元に、
Raspberry Pi Pico MicroPython用の美咲フォントライブラリを修正しました。
更新
・Raspberry Pi Pico MicroPython用美咲フォントライブラリ
https://github.com/Tamakichi/pico_MicroPython_misakifont
このライブラリに作成にあたり、美咲フォントのBDF形式からPython用のフォントデータ(タプル形式)への変換は、
Pythonでプログラムを組んで生成しました。
BDF Parserという、BDFファイルをお手軽に操作できるライブラリを利用したのですが、
かなり高機能で、今後もBDFファイルを使う場合には利用しようかと思います。
BDF Parser の利用方法の解説は少ないので、個人のメモとして、今後いくつか記述したいと思います。
「Raspberry Pi Pico MicroPython用美咲フォントライブラリ」は、もともとは2012年の美咲フォント 初版をベースにしていたのですが、
初版のBDFはJISコードベースで、それを強引に ユニコードに変換したのでいくつか不具合やバグが混入していました。
今回の修正で、解消できたかと思います(*´ω`*)
本ライブラリは、「教育漢字」に絞っているのですが、フォントデータの生成はPythonでツールを作成したので、
比較的簡単にフォントの追加や別のフォント(BDF形式)の利用にも対応可能です。
ツールについては、別途公開したいと思います。
先行してPython用ライブラリを更新したのですが、Arduino版についても近日中に公開いたします。
Seeed Studio XIAO RP2040、MicroPythonを使うにおいて、お手軽で使い勝手が良いです。
Type-Cのコネクタで耐久性もよさそうです。リセットボタンもあります。
■ ボードに関する情報
PlatformSeeed Studio XIAOSeeed Studio XIAO RP2040Overview
秋月電子でも入手出来ます。
秋月電子 - Seeed XIAO RP2040

ボードの構成
ピンレイアウト
ボード上にはオリジナル版にはない「USER LED」と「RGB LED(NeoPixcel)」が搭載されており、
ボードだけで、ちょっとした実験が出来ます。
利用するにあたり、公式サイトで回路図をチェックしてみました。
■ USER LED
IO25、IO16、IO17に割り付けられており、共通アノードに3.3Vが供給されています。
アクティブLOW(ポートがLOWで点灯、HIGHで消灯)のようです。
このため、ボードの起動後の初期状態では USER LEDが点灯するようです。
■RGB LED(NeoPixcel)
NeoPixcelのDINにNEOPIX、VCCにNEO_PWR が割り付けられています。
下のRP2040周りの回路図をみるとNEOPIXはGPIO12、NEO_PWRはGPIO11が割り付けられているのが分かりました。
電源供給もGPIOピンから行っているようです。
■USER LED とRGB LED(NeoPixcel)と制御
ピンの割り付けが分かったので、MicroPythonにて操作してみました。
とりあえず、こんな感じでLEDを操作出来ました。
Raspberry Pi PicoのMicroPythonは、かなりイケていることが分かり、
Arduino用のフォントライブラリを移植してみました。
■Raspberry Pi Pico MicroPython用のマルチフォントライブラリ
https://github.com/Tamakichi/pico_MicroPython_Multifont
Arduino用漢字フォントライブラリ SDカード版からの移植なのです。
MicroPythonでは、フラッシュメモリ上にファイルを置いて読み書き出来るので、サックっと移植出来ました。
動作確認(使い物ものになるか)として、
・16x16ドットマトリックのNeoPixcel
・OLEDディスプレイ SSD1306(I2C接続 128x64ドット)
で遊んでみました。
■16x16ドットマトリックのNeoPixcelで日本語表示(sample_mfont_neopixel.py)

全点フル輝度で点灯すると、電力不足でリセットがかかったり動作不安定となります。
本格的に使うには、電源回りの補強が必要です。とりあえず、実験レベルでの動作確認です。
動いている様子
動画のデモでは12ドットフォントを指定して表示しています。
とりあえず、見た目上はまともに動いています。スクロールも滑らかです(*´ω`*)
これで、インタプリタ言語で処理しているかと思うと上出来ですね(^^♪
■OLEDディスプレイ SSD1306(I2C接続 128x64ドット) で日本語表示(sample_oled_mfont.py)
動いている様子
表示は1文字ずつディレイ(時間待ち)を入れて表示しています。
ディレイを抜いてフルスピードにしても表示は遅いです。
遅いI2C接続が足を引っ張っているというより、やはり処理的にちょっとキツイかな。
利用しているSSD1306ライブラリを見直せば何とかなるかもしれません。
メインのプログラムはこんな感じです
定数部分は、各自のご利用ボードに合わせて適宜変更して下さい。
サンプルプログラムでは、「後からインスタンス・メソッドの追加できるか?」を試してみたのですが、出来ますね。
| # SSD1306_I2Cに漢字表示インスタンス・メソッドの追加 SSD1306_I2C.drawText = drawText SSD1306_I2C.drawFont = drawFont3 SSD1306_I2C.newLine = newLine |
■まとめ
この記事でやっていることは、いままでArduinoでやってきたことなのですが、
MicroPythonでも、そこそこやれるようですね。しばらくはpicoで遊んでみます。
久しぶりのブログ更新です。
Pythonプログラミングのお勉強で、手持ちのRaspberry Pi picoのMicroPythonをいじってみたのですが、
インタプリタの処理と思えないほど、サクサクと動いてびっくりです。
8x8ドットNeoPixcelで文字表示をやって見たところ、難なく処理をこなしてくれました。
動いている様子
メインのそースはこんな感じです。
MicroPythonはコンパイル不要で、C言語よりもお手軽でいいですね(*´ω`*)
文字の表示には美咲フォントを利用しました。とりあえず、モジュール化してみました。
Arduino版を流用しました。
■ Raspberry Pi Pico MicroPython用美咲フォントライブラリ
https://github.com/Tamakichi/pico_MicroPython_misakifont
サンプルプログラムとして、ドットマトリックスのプログラムを添付しています。
Raspberry Pi PicoのMicroPythonには、NeoPixcelの制御を行うライブラリが組み込まれているので、
マトリック表示のためのライブラリ部のみを自作しています。
マトリック表示処理の要としては、マトリック表示では、縦・横の座標でピクセルを制御したいところ、
NeoPixcelのライブラリではのピクセルを0からの番号指定のため、
縦・横 指定 ⇒ 番号(0~)
の変換をするところですかね..
neomatrix.py:
# ドットマトリックス 指定座標ピクセル番号変換
def XYtoNo(self, x, y):
return self.width*y + x if y&1 else self.width*y + self.width-1 -x
縦yが奇数と偶数で横xの方向が異なります。
表示が鏡文字になったり、上下さかさまとなる製品の場合、この変換処理を修正すれば対処できると思います。
Raspberry Pi Picoには、USBホスト機能(USBデバイスを接続できる)があります。
早速動作確認してみました。
結果を先に述べると、利用出来ますね! よしよし (*´ω`*)
■ 利用したサンプルプログラム
pico-examples/usb/host/host_hid
上記のサンプルは、pico-exsamplesの一括コンパイル時にビルドされますが、
後々の調査・改造のため、今回はこれだけを取り出してビルドしました。
実験の様子
動作確認出力はPCとのUSB接続出来ないため、シリアルポート経由で行いました。
USB-UARTモジュールを利用し、picoへの5V電源供給もこのモジュールから行いました。
プログラムの書き込み後、マイクロUSBコネクタには変換ケーブルを接続してキーボードを接続しました。
picoへの5V供給は、40ピンのVBUSから行っています(写真の右側の赤線⇒VBUS、黒線⇒GND )。
これによりUSBデバイスへの5V供給を行うことが出来ます。
動作確認出力はシリアル通信 1ピンGP0(UART0 TX)、2ピンGP1(UART0 RX)を使っています。
実行結果
キーボード打ち込みを行うと、文字入力が出来ました。やったー!
このキーボード、IchigoJam Rでは利用出来なかったのですが、問題なさそうです。
ただし、利用したサンプルプログラムではUSキーボード配列用みたいなので、
日本語キーボード対応の調査が必要ですね。
また、キャプスロック等のキーボード上のLEDの点灯制御が出来ていないようなので、
これについても要調査です。
USBキーボードの利用については、何とかなりそうです。
ついでに、手持ちのワイアレスキーボードを試して見ましたが動きました。
スタンドアロンで稼働する豊四季タイニーBASICは実装出来そうですね。
次は、フラッシュメモリへのデータ保存について調べてみます。
その後は、自作ライブラリの実装&組み込み方法の調査かな..
Raspberry Pi Pico用のVGA出力ボード「Pimoroni Pico VGA Demo Base」入手しました。
Pimoroni Pico VGA Demo Base
海外からの入手です。送料は800円くらいでした。1週間ほどで到着しました。
amazon(jp)でも、扱っているようですが6,200円と割高ですね。
届いた製品
左側のユニバーサル基板は、一緒に注文したものです。
作りはしっかりしています。
裏の"海賊ロボ忍者さる"と海賊の顔絵、どこかで見覚えがありますねぇ.. 
ボード上にpicoを装着、特に問題なく乗せられました。 
スペーサー用のネジ穴径に若干問題あり。手持ちのスペーサーが付けられませんでした。
穴が3mmより小さい(2.8mmくらい?)です。
仕方なく、丸棒やすりと3mmドリルで穴を広げることにしました。
丸棒やすりでぐりぐりした後、3mmドリルが通るようにしました。
無事、スペーサーが装着出来ました。
準備OK! 早速サンプルプログラムを動かしてみます。
利用したライブラリ&サンプルプログラム
■ raspberrypi/pico-extras
https://github.com/raspberrypi/pico-extras
公式ライブラリですが、Pico SDKの追加ライブラリ的位置づけのようです。
■ raspberrypi/pico-playground
https://github.com/raspberrypi/pico-playground
pico-extrasを使ったサンプルプログラムです。
ビルドにはpico SDKも必要です。
ビルド
ビルド作業はコマンドプロンプト 「Developer Command Prompt for VS2019」上で行いました。
私の環境(Windows 10)では、"D:\Raspberry Pi Pico"にライブラリやサンプルプログラムを配置しています。
実行コマンド
D:
cd "D:\Raspberry Pi Pico"
git clone -b master https://github.com/raspberrypi/pico-extras
git clone -b master https://github.com/raspberrypi/pico-playground.git
setx PICO_EXTRAS_PATH "D:\Raspberry Pi Pico\pico-extras"
cd pico-playground
mkdir build
cd build
cmake -G "NMake Makefiles" -D"PICO_BOARD=vgaboard" ..
nmake
特につまずくことなく、ビルド出来ました。
サンプルプログラムの実行結果
いくつかのサンプルプログラムを書き込んで実行してみました。
ラズパイのあれが動くデモ、表示は綺麗でちらつき等は全く無いです。
ゲームの背景っぽいのがスクロールするサンプルプログラム
文字を表示するサンプルプログラム
思っていた以上に、表示が綺麗できっちりと表示が出来てます。
ゲームなんか実装出来そうですね。
表示系は、色々と出来そうです。後はキーボードやゲームパッドが使えると良いですね。。
調べてみます。
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モジュール ねこ ツール・フリーソフト パソコン・インターネット フォント プロジェクト・リポジトリ管理 メモ モバイル・携帯・デジカメ 家電 旅行・地域 日記・コラム・つぶやき 映画・テレビ 書籍・雑誌 表示器制御関連 通販
最近のコメント