ラズピコにWiiヌンチャクとOLEDを付けてみました。
Raspberry pi picoにWiiヌンチャクを繋ぎ、Micro Pythonで動かしてみました。
Micro Pythonの勉強にと色々繋いで遊んでいます。
Wiiヌンチャクにはシロヌンチャクとクロヌンチャクの2種類が有り、これらはデータ読み書きのアドレスが異なります。
中には、クロヌンチャクでもシロヌンチャクと同じアドレスの物があり、パソコンに繋いでみないと外観では判りません。
Wiiヌンチャクの中古品がメルカリに安く出品されていて幾つか購入したが、真のクロヌンチャクに上手く当たりません。
何年も前からArduinoやESPマイコンにヌンチャクを使ってますが、ラズピコのメモリーとシロヌンチャクのアドレスが
何処かで干渉するのか挙動がおかしく、試行錯誤してるのですが未だ解決に至っていません。

配線図
仮にLEDを取り付けて出力の状態が見れます。応用次第で面白い使い方が出来ると思います。
OLEDにジョイスティックの値とZとCのボタン情報も表示しました。
プログラムを少し変更すればサーボモータのコントロールが簡単に出来ます。
これまではライブラリーなしでヌンチャクを使っていますが、今回のMicro Pythonにはドイツのkfrickeさんが、
GitHubに公開されているnunchuck.pyが使い易かったので利用させて頂きました。 参考にして下さい。
URL:https://github.com/kfricke/micropython-nunchuck/blob/master/nunchuck.py

動画をご覧下さい。
皆さまの参考になれば幸いです。
by Paradise
Micro Pythonの勉強にと色々繋いで遊んでいます。
Wiiヌンチャクにはシロヌンチャクとクロヌンチャクの2種類が有り、これらはデータ読み書きのアドレスが異なります。
中には、クロヌンチャクでもシロヌンチャクと同じアドレスの物があり、パソコンに繋いでみないと外観では判りません。
Wiiヌンチャクの中古品がメルカリに安く出品されていて幾つか購入したが、真のクロヌンチャクに上手く当たりません。
何年も前からArduinoやESPマイコンにヌンチャクを使ってますが、ラズピコのメモリーとシロヌンチャクのアドレスが
何処かで干渉するのか挙動がおかしく、試行錯誤してるのですが未だ解決に至っていません。

配線図
仮にLEDを取り付けて出力の状態が見れます。応用次第で面白い使い方が出来ると思います。
OLEDにジョイスティックの値とZとCのボタン情報も表示しました。
プログラムを少し変更すればサーボモータのコントロールが簡単に出来ます。
これまではライブラリーなしでヌンチャクを使っていますが、今回のMicro Pythonにはドイツのkfrickeさんが、
GitHubに公開されているnunchuck.pyが使い易かったので利用させて頂きました。 参考にして下さい。
URL:https://github.com/kfricke/micropython-nunchuck/blob/master/nunchuck.py

動画をご覧下さい。
皆さまの参考になれば幸いです。
by Paradise
スポンサーサイト
Raspberry pi Pico ゲームの紹介
自作ゲームではありませんが、面白いゲームに出会えたので紹介します。
ケンケンさんがホームページに公開されたRaspberry pi Picoによる液晶ゲームの紹介です。
URL:http://www.ze.em-net.ne.jp/~kenken/picogames/index.html
興味のある方は、上記のURLを参照して下さい。プログラムはC++で作成されていますが、
直ぐに使える実行型ファイル及びソースファイルも公開されています。
ゲームの種類は5種類で画像の箱入り娘の他、昔懐かしいパックマン、テトリス、インベーダーゲーム、
ペグソリテアが公開されています。

私もホームページを始めた頃にVBで作った箱入り娘のゲームを公開してたことが有り、懐かしくゲームを
楽しみました。
皆さまの参考になれば幸いです。
by Paradise
ケンケンさんがホームページに公開されたRaspberry pi Picoによる液晶ゲームの紹介です。
URL:http://www.ze.em-net.ne.jp/~kenken/picogames/index.html
興味のある方は、上記のURLを参照して下さい。プログラムはC++で作成されていますが、
直ぐに使える実行型ファイル及びソースファイルも公開されています。
ゲームの種類は5種類で画像の箱入り娘の他、昔懐かしいパックマン、テトリス、インベーダーゲーム、
ペグソリテアが公開されています。

私もホームページを始めた頃にVBで作った箱入り娘のゲームを公開してたことが有り、懐かしくゲームを
楽しみました。
皆さまの参考になれば幸いです。
by Paradise
ラズパイPicoに2.4インチTFTモニターを繋ぐ
AdafruitのILI9341libraryを使い、スケッチ例からgraphicstestを試しました。
先ずは動画をご覧下さい。
SPI接続の配線図を示します。
正しくボードが選択され、必要なライブラリがインストールされていれば、下記の接続にて問題なく動作します。

ラズパイPicoでTFTモニターを使うための準備(ArduinoIDEの設定)
ArduinoIDEがインストールされていることを前提に進めます。 尚、現在ArduinoIDEはVer.1.8.15が最新です。
1)ボードマネージャにRaspberry pi Picoをインストール
①ArduinoIDEを開き、「ツール」「ボード”・・・”」「ボードマネージャ」と順にクリックします。
②ボードマネージャが開いたら検索窓に”pico”と入力すると下図のように表示します。
表示された中のArduinoI Mbed OS RP2040 Boardsをインストールします。

2)Adafruitライブラリのインストール
①Adafruit GFX libralyのインストール: ArduinoIDEを開き、「スケッチ」「ライブラリをインクルード」
「ライブラリーを管理」と順にクリックすると下図のようなライブラリマネージャが開きます。
ここで、検索窓にAdafruit GFX libralyと入力し、表示された中から目的のライブラリをインストールします。

②Adafruit ILI9341のインストール:次に、同じ画面でAdafruit ILI9341を検索してAdafruit ILI9341をインストールします。

3)AdafruitのILI9341のサンプルプログラム"graphicstestを試す。
AruduinoIDEから「ファイル」「スケッチ例」と順にクリックしてリストからAdafruit ILI9341フォルダーを開き、
その中からgraphicstestを選択すると下図のようなスケッチが開きます。

ラズパイPicoを使うためにスケッチを少し変更します。
上画像の赤線で記した部分を変更します。(行番号が少し違うかも知れません)
①22,23行目の前に//を挿入します。
②26行目 Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);の前に//を挿入します。
③27行目にAdafruit_ILI9341 tft = Adafruit_ILI9341(13, 15, 11, 10, 14, 12);を追加します。(GPIO12の結線は不要)
補足:GPIOピンの設定はこの例に限らず、他のピン配置でも可能です。
()内の番号がラズパイPicoの使用するGPIO番号となり、下行の(TFT_CS~TFT_MISO)に相当します。
29行目//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);
以上にて変更が完了です。後は、コンパイルして書き込むだけですが、大事な注意ポイントがあります。 それは、
最初にスケッチを書き込む時は必ず、マイコンボードのブートスイッチを押しながらUSBケーブルを差し込むことです。
一度この操作をすると次回からは他のAruduinoボードと同様に書き込みが出来ます。 また、シリアルポート番号が
例、COM8(Rspberry Pi Pico)などと表示されます。
あとがき
1年ほど前、このTFTモニターを買った時にESP32を使ってAdafruit_ILI9341の"graphicstest"をテスト済みでした。
今回、ラズパイPico入手を機会に、お蔵入りしていたモニターを動かすことにしました。
最初にMicro Pythonの勉強にと別のサンプルプログラムを試しましたが、描画が今一だったのでArduinoIDEを
使って"graphicstest"を試すことにしました。
しかし、SPI接続のGPIOがMicro Pythonの場合と異なり、後期高齢者には難解で数日間試行錯誤しましたが、
無事に描画が速くて綺麗な映像が観れて幸いでした。
皆さまの参考になれば幸いです。
by Paradise
先ずは動画をご覧下さい。
SPI接続の配線図を示します。
正しくボードが選択され、必要なライブラリがインストールされていれば、下記の接続にて問題なく動作します。

ラズパイPicoでTFTモニターを使うための準備(ArduinoIDEの設定)
ArduinoIDEがインストールされていることを前提に進めます。 尚、現在ArduinoIDEはVer.1.8.15が最新です。
1)ボードマネージャにRaspberry pi Picoをインストール
①ArduinoIDEを開き、「ツール」「ボード”・・・”」「ボードマネージャ」と順にクリックします。
②ボードマネージャが開いたら検索窓に”pico”と入力すると下図のように表示します。
表示された中のArduinoI Mbed OS RP2040 Boardsをインストールします。

2)Adafruitライブラリのインストール
①Adafruit GFX libralyのインストール: ArduinoIDEを開き、「スケッチ」「ライブラリをインクルード」
「ライブラリーを管理」と順にクリックすると下図のようなライブラリマネージャが開きます。
ここで、検索窓にAdafruit GFX libralyと入力し、表示された中から目的のライブラリをインストールします。

②Adafruit ILI9341のインストール:次に、同じ画面でAdafruit ILI9341を検索してAdafruit ILI9341をインストールします。

3)AdafruitのILI9341のサンプルプログラム"graphicstestを試す。
AruduinoIDEから「ファイル」「スケッチ例」と順にクリックしてリストからAdafruit ILI9341フォルダーを開き、
その中からgraphicstestを選択すると下図のようなスケッチが開きます。

ラズパイPicoを使うためにスケッチを少し変更します。
上画像の赤線で記した部分を変更します。(行番号が少し違うかも知れません)
①22,23行目の前に//を挿入します。
②26行目 Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);の前に//を挿入します。
③27行目にAdafruit_ILI9341 tft = Adafruit_ILI9341(13, 15, 11, 10, 14, 12);を追加します。(GPIO12の結線は不要)
補足:GPIOピンの設定はこの例に限らず、他のピン配置でも可能です。
()内の番号がラズパイPicoの使用するGPIO番号となり、下行の(TFT_CS~TFT_MISO)に相当します。
29行目//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);
以上にて変更が完了です。後は、コンパイルして書き込むだけですが、大事な注意ポイントがあります。 それは、
最初にスケッチを書き込む時は必ず、マイコンボードのブートスイッチを押しながらUSBケーブルを差し込むことです。
一度この操作をすると次回からは他のAruduinoボードと同様に書き込みが出来ます。 また、シリアルポート番号が
例、COM8(Rspberry Pi Pico)などと表示されます。
あとがき
1年ほど前、このTFTモニターを買った時にESP32を使ってAdafruit_ILI9341の"graphicstest"をテスト済みでした。
今回、ラズパイPico入手を機会に、お蔵入りしていたモニターを動かすことにしました。
最初にMicro Pythonの勉強にと別のサンプルプログラムを試しましたが、描画が今一だったのでArduinoIDEを
使って"graphicstest"を試すことにしました。
しかし、SPI接続のGPIOがMicro Pythonの場合と異なり、後期高齢者には難解で数日間試行錯誤しましたが、
無事に描画が速くて綺麗な映像が観れて幸いでした。
皆さまの参考になれば幸いです。
by Paradise
ラズパイ Pico に気圧センサーを付けてみました。
ラズパイ Picoに気圧、温度、湿度が測れるBME280を取り付けて、OLED(ssd1306)に計測値を
表示させてみました。
動画をご覧下さい。
次回は、ラズパイPicoに2.4インチTFTモニターを繋ぐを掲載予定です。
皆さまの参考になれば幸いです。
表示させてみました。
動画をご覧下さい。
次回は、ラズパイPicoに2.4インチTFTモニターを繋ぐを掲載予定です。
皆さまの参考になれば幸いです。
マーブルロボットのコントロールボードをRaspberry pi Picoに置換
Raspberry pi Picoをマーブルロボットに使ってみました。
コントロールボードの置き換え
Raspberry pi PicoをArduinoIDEにてプログラミング。
先に掲載のSTM32を使ったマーブルロボットと併せてご覧下さい。

マーブルロボットに置き換えたコントロールボード

コントロール部の拡大画像
マイコンの大きさが、ほぼ同じだったので同じユニバーサル基板に組み込みました。

コントロール部の回路図
Picoには、自由に使えるADC入力がGP28、GP27、GP26の3チャンネルです。丁度マーブルロボットにマッチします。
注意:PicoのADCは16bit 0~65535の分解能ですが、他のArduinoボードと同様に10bit 0~1023を出力します。
このため、先に掲載のSTM32使用マーブルロボットのADCが12bitなのでソースコードを少し書き換える必要があります。

Raspberry pi PicoをArduinoIDEで使う準備
現在、ArduinoIDEはの最新バージョンが1.8.15です。古いバージョンをお使いの方は更新をお勧めします。
ここでは、Windows10を使った説明をしますが、ArduinoIDEがインストールされていることを前提とします。
ArduinoIDEにRaspberry pi Picoボードのインストール。
①通常「ファイル」「環境設定」と順に開き、追加のボードマネージャのURLを追加しますが、追加しなくてもOKでした。
②「ツール」「ボード」「ボードマネージャ」と順に開き、検索窓にpicoと入力して検索。
検索された中からArduino Mbed OS RP2040 Boardsを選択してインストールします。
注意:他にRaspberry pi Pico/RP2040等が検索されますが、上記のボードを選びます。
その理由は、I2CのWireライブラリーを変更せずに使えたのがArduino Mbed OS RP2040 Boardsだからです。
補足:I2Cが使えず、半日余し試行錯誤して解かった結果です。(SDA=GP6、SCL=GP7に接続すると使えます)。
以上の作業により、Raspberry pi PicoがArduinoIDEにてプログラミングが可能となります。

参考資料:Raspberry pi Pico マーブルロボットのソースコード
先のSTM32 マーブルロボットの記事と併せてご覧下さい。
マニピュレータ設定用:MarbleRobot_Manipulator_pico.txt
Raspberry pi Pico マーブルロボット用:MarbleRobot_pico.txt
動画をご覧下さい。
皆さまの参考になれば幸いです。
by Paradise
コントロールボードの置き換え
Raspberry pi PicoをArduinoIDEにてプログラミング。
先に掲載のSTM32を使ったマーブルロボットと併せてご覧下さい。

マーブルロボットに置き換えたコントロールボード

コントロール部の拡大画像
マイコンの大きさが、ほぼ同じだったので同じユニバーサル基板に組み込みました。

コントロール部の回路図
Picoには、自由に使えるADC入力がGP28、GP27、GP26の3チャンネルです。丁度マーブルロボットにマッチします。
注意:PicoのADCは16bit 0~65535の分解能ですが、他のArduinoボードと同様に10bit 0~1023を出力します。
このため、先に掲載のSTM32使用マーブルロボットのADCが12bitなのでソースコードを少し書き換える必要があります。

Raspberry pi PicoをArduinoIDEで使う準備
現在、ArduinoIDEはの最新バージョンが1.8.15です。古いバージョンをお使いの方は更新をお勧めします。
ここでは、Windows10を使った説明をしますが、ArduinoIDEがインストールされていることを前提とします。
ArduinoIDEにRaspberry pi Picoボードのインストール。
①通常「ファイル」「環境設定」と順に開き、追加のボードマネージャのURLを追加しますが、追加しなくてもOKでした。
②「ツール」「ボード」「ボードマネージャ」と順に開き、検索窓にpicoと入力して検索。
検索された中からArduino Mbed OS RP2040 Boardsを選択してインストールします。
注意:他にRaspberry pi Pico/RP2040等が検索されますが、上記のボードを選びます。
その理由は、I2CのWireライブラリーを変更せずに使えたのがArduino Mbed OS RP2040 Boardsだからです。
補足:I2Cが使えず、半日余し試行錯誤して解かった結果です。(SDA=GP6、SCL=GP7に接続すると使えます)。
以上の作業により、Raspberry pi PicoがArduinoIDEにてプログラミングが可能となります。

参考資料:Raspberry pi Pico マーブルロボットのソースコード
先のSTM32 マーブルロボットの記事と併せてご覧下さい。
マニピュレータ設定用:MarbleRobot_Manipulator_pico.txt
Raspberry pi Pico マーブルロボット用:MarbleRobot_pico.txt
動画をご覧下さい。
皆さまの参考になれば幸いです。
by Paradise
1個550円のRaspberry pi Picoを使ってみました。
動画を追加しました。2021.06.02
ArduinoIDEを使ってサーボモータを動かし、OLED(ssd1306)にサーボ角度を表示します。
MicroPythonの勉強にとRaspberry pi Picoを購入しましたが!。
2021.06.01
不良品に当たる。
Picoが届いたので早速ボードにマイクロUSBケーブルを繋ぐが変な臭いがして電源ICが熱くなってきた!
間もなく電源IC(RT6150B)横の小さなリアクタンス(L1)が過電流により、破断して3.3Vが出なくなった。
(RT6150B:入力電圧1.8V~5.5Vの昇圧型スイッチング電源ICで入力電圧範囲が広く電池駆動が可能です)。
このまま、返品交換すれば良いのですが早く使いたいし、手続きが面倒なので自分で修理することにしました。

電源回路
下が電源回路です。ICの不具合で発熱してL1に負荷が掛かり、ヒューズ代わりに破壊してしまったようです。
そこで、基板からL1の残骸を綺麗に取り除き、細いリード線で2ターンコイルを作って半田付けすると3.3Vが
出ました。しかし、RT6150Bが発熱するので回路に手を加えず、電源ICの動作を止める3V3_EN端子をGNDに
接続して動作を停止しました。今後この基板をブレッドボード専用として使うので手持ちの3.3V出力の3端子
レギュレータを外付けして供給することにしました。(IN=VBAS端子、OUT=3V3(OUT)端子、GND=GND端子)
これにより、この基板が正常に動作してMicroPythonやArduinoIDEを使ったテストが出来ました。
尚、追加購入した2枚には、電源ICに発熱等の問題がなく正常に動作しています。

Raspberry pi picoの端子表
データーシートより抜粋

電源ユニットを外付けしたブレッドボード
下の画像ではテスト用に設けた2ターンループが撤去せずに残っています。また、3V3_ENとGND間のジャンパー線が
見えます。(画像は全てクリックすると拡大します)。3端子レギュレータユニットはアマゾンで10個500円ほどで購入。
皆さんは、ピンヘッダーを基板に半田付けする前にマイクロUSBケーブルを接続して電源ICに発熱が無いか確認され、
発熱が有る場合は不良品です。自分で修理せずに購入店に交換を申し込んで下さい。

初めてのMicroPythonとArduinoIDEのサポート
ライブラリーを使わずにMicroPythonを使ってサーボモータを複数同時に動かすことが出来ましたが、Arduinoに
慣れた後期高齢者の頑固頭にはハードルが高く、もっと勉強をしなければと思います。
このテスト中にArduinoIDEがRaspberry pi Picoをサポートされていることを知り、早速Servo.hを使ってテストした結果、
問題なく動作することが確認出来ました。先に掲載のMarble Robotのコントロール部をSTM32からPicoに置き換えて
動かしています。(但し、全てのArduino libraryがPicoに対応した訳ではなく、今後のバージョンアップが楽しみです)
以上、Raspberry pi picoを購入から5日間の出来事でした。
次回は、PicoのArduinoIDEプログラミングとPico on Marble Robotを掲載します。
皆さまの参考になれば幸いです。
by Paradise
ArduinoIDEを使ってサーボモータを動かし、OLED(ssd1306)にサーボ角度を表示します。
MicroPythonの勉強にとRaspberry pi Picoを購入しましたが!。
2021.06.01
不良品に当たる。
Picoが届いたので早速ボードにマイクロUSBケーブルを繋ぐが変な臭いがして電源ICが熱くなってきた!
間もなく電源IC(RT6150B)横の小さなリアクタンス(L1)が過電流により、破断して3.3Vが出なくなった。
(RT6150B:入力電圧1.8V~5.5Vの昇圧型スイッチング電源ICで入力電圧範囲が広く電池駆動が可能です)。
このまま、返品交換すれば良いのですが早く使いたいし、手続きが面倒なので自分で修理することにしました。

電源回路
下が電源回路です。ICの不具合で発熱してL1に負荷が掛かり、ヒューズ代わりに破壊してしまったようです。
そこで、基板からL1の残骸を綺麗に取り除き、細いリード線で2ターンコイルを作って半田付けすると3.3Vが
出ました。しかし、RT6150Bが発熱するので回路に手を加えず、電源ICの動作を止める3V3_EN端子をGNDに
接続して動作を停止しました。今後この基板をブレッドボード専用として使うので手持ちの3.3V出力の3端子
レギュレータを外付けして供給することにしました。(IN=VBAS端子、OUT=3V3(OUT)端子、GND=GND端子)
これにより、この基板が正常に動作してMicroPythonやArduinoIDEを使ったテストが出来ました。
尚、追加購入した2枚には、電源ICに発熱等の問題がなく正常に動作しています。

Raspberry pi picoの端子表
データーシートより抜粋

電源ユニットを外付けしたブレッドボード
下の画像ではテスト用に設けた2ターンループが撤去せずに残っています。また、3V3_ENとGND間のジャンパー線が
見えます。(画像は全てクリックすると拡大します)。3端子レギュレータユニットはアマゾンで10個500円ほどで購入。
皆さんは、ピンヘッダーを基板に半田付けする前にマイクロUSBケーブルを接続して電源ICに発熱が無いか確認され、
発熱が有る場合は不良品です。自分で修理せずに購入店に交換を申し込んで下さい。

初めてのMicroPythonとArduinoIDEのサポート
ライブラリーを使わずにMicroPythonを使ってサーボモータを複数同時に動かすことが出来ましたが、Arduinoに
慣れた後期高齢者の頑固頭にはハードルが高く、もっと勉強をしなければと思います。
このテスト中にArduinoIDEがRaspberry pi Picoをサポートされていることを知り、早速Servo.hを使ってテストした結果、
問題なく動作することが確認出来ました。先に掲載のMarble Robotのコントロール部をSTM32からPicoに置き換えて
動かしています。(但し、全てのArduino libraryがPicoに対応した訳ではなく、今後のバージョンアップが楽しみです)
以上、Raspberry pi picoを購入から5日間の出来事でした。
次回は、PicoのArduinoIDEプログラミングとPico on Marble Robotを掲載します。
皆さまの参考になれば幸いです。
by Paradise