Ardino/NUCLEO用シールド(Accessory ShieldのOLED)

先日のAccessory Shieldで、もうちょっと何とかならないかなと調べた続き。

別のモジュールが必要なBluetooth以外は、動作確認がほぼできている状態。
あいかわらずOLEDのみ表示されない。ひょっとして壊れてるのかと不安になる。


よく使うOLEDと違い4つの端子が出ているわけではなく、OLED本体のリボンケーブルが基板に直付けされている状態なので、これだけ外して確認するのも難しい。

しかし回路図を見ると特に複雑なことをしているわけではないので、これだったら標準のサンプルスケッチで試せるなと思った。
というわけで、Adafruit_SSD1306のサンプルスケッチ「ssd1306_128x64_i2c.ino」を開く。
修正はresetの番号。
 #define OLED_RESET     7 
あとはいつものI2Cのアドレス。今回も0x3Cにする。
 if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64 Serial.println(F("SSD1306 allocation failed")); 
(回路図見ても0x3C/0x7Dと両方書いてあって当てにならなかった。ので、実は両方やってみた結果)

これでコンパイルして転送。
でも
 display.cp437(true);         // Use full 256 char 'Code Page 437' font 
と、エラーが出た。
該当するフォント(キャラクターコード?)がないのか、そんな感じのエラーなのでもうちょい調べる必要がありそう。
しかしめんどくさいので、今回は手っ取り早くこの行だけコメントアウトしてしまった。
これでコンパイル成功。

 

すると無事にOLEDに文字や図形が表示された。
壊れてなかったんだな…。

しかも例の黄色と青のやつだったか…。
こっちのほうが安いからしかたない。画像表示させるには色の境界を考慮してデザインしないと。

 

一応、これでOLED自体は問題ないことがわかった。
他に考えられる原因は、Adafruit関連のライブラリが最近更新されているので、何かしらバージョンに合ってないことをやってる可能性もある。
なので今度はAdafruit_GFXライブラリを一度削除、最新版をインストールし直してみた。

(昨日はAdafruit_SSD1306ライブラリを入れ直したので)

そしてもう一度、Accessory Shieldのoledをコンパイルしてみたところ、無事表示された。

え、それだけ??という感じ。なんだ自分の環境が悪かっただけか…。

 

その後、他にAccessory Shieldを見つけたので、これをダウンロードして温度計とか表示させてみた。

 https://libstock.mikroe.com/projects/view/1502/waveshare-arduino-accessory-shield-demo

これも、そのままではOLEDは表示されなかったので、ちょっと修正した。

編集した12行目あたりを抜粋。

//Definitions for SSD1306 128x64 OLED Display
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET                            7
#define OLED_SA0                              8
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

それと下の方、アドレスを0x3Cにする。

void setup() 
{
unsigned char i = 0;
Serial.begin(9600);
Serial.flush();
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
oled.clearDisplay();

こんなもんだったかな。

日付と時間はずれてるけど、温度はちゃんと測定できてる。

とにかく古いスケッチとライブラリは、一度見直した方がいいという話でした。

Sponsered Link

Ardino/NUCLEO用シールド(Accessory Shield)

またAliExpressからの買い物メモ。

Ardino/NUCLEO用というか、NUCLEOボードで遊べないかと思ってシールドを購入した。

検索して目についた、waveshareのAccessory Shieldと、E-Paper_Shieldの二枚。

AliExpress.com Product - Accessory Shield Integrates XBee Interface 0.96inch OLED And Other Common Components Compatible with UNO Leonardo NUCLEO XNUCLEO

 

AliExpress.com Product - Universal e-Paper Driver Shield for NUCLEO/Ardino supports various Waveshare SPI e-Paper raw panels

しかしケーブル長くないか、これ。

E-Paper_Shieldは本体のみでE-Paperは付いてこなかったので、別のところから購入。

AliExpress.com Product - Waveshare 2.13 Inch Flexible E-Ink Screen Display Module e-Paper Panel Black White SPI Interface 212*104 DIY for Raspberry Pi

 

マニュアルやデータは公式サイトからダウンロードできる。

https://www.waveshare.com/wiki/E-Paper_Shield

https://www.waveshare.com/wiki/Accessory_Shield

 

とりあえず今回はAccessory Shieldを使ってみる。動作確認はArduinoで行った。

XNUCLEO用で使いたいんだけど、自分が持ってるボードはSTM8Sのみなので、ダウンロードしたデモのデータには対応していない。

なので久々に、普通のArduino(の、パチもん)を引っ張り出した。

 

まずはデモ用のスケッチのうち「oled.ino」をArduinoに書き込んで、エラーもなくOLEDに表示…されませんでした。

まあなんとなく、そんな気はしてた。うん。

それ以外のブザー、RGB LEDやLM75Bによる気温の測定も無事動いた。

なんでOLEDだけダメなんだろう。

 

気を取り直して、ちょっとだけoled.inoについて確認する。

ESP WemosのミニOELDのライブラリも引っ張ってきちゃってたので、普通のAdafruit_SSD1306を入れ直し。

今度は

#error ("Height incorrect, please fix Adafruit_SSD1306.h!");

で引っかかったのでファイルの内容を確認。

Adafruit_SSD1306.hを編集。

以下のコメントアウトを外す。

#define SSD1306_128_64 ///< DEPRECTAED: old way to specify 128x64 screen

他の「#define SSD1306…」の行はコメントアウト。

で、再コンパイルして書き込みし直したけど、今のところやっぱりダメだった。

 

他にエラーが何も出ないから、逆に困る。マニュアルにも詳しいことが載ってないし。

これも保留にしておきます。Arduinoで動かないんじゃXNUCLEOボードではもっと不安。

それでもって、E-Paper Shieldのほうはまた別途確認することにします。

Sponsered Link

UbuntuにArduino IDE(1.8.9)インストール

UbuntuにインストールしていたArduino IDEが、しばらくバージョンアップさせてなかったことに今さら気付いた。

現在のArduino IDEバージョンは1.8.9。

(Ubuntu側は安定の18.04)

またちょびっと引っかかるところがあったので、改めてインストールのおさらい。

 

自分の環境に合ったLinux 64bit版をダウンロード。

 https://www.arduino.cc/en/Main/Software

フォルダはダウンロードでもどこでも良いはずなんだけど、自分はユーザーのホームにそのまま置いた。

 

いつもはアイコンで解凍してたけど、今回はターミナルからコマンドで解凍。

なんでもいいけど、普段慣れてるtarで解凍した。

 $ tar Jxfv arduino-1.8.9-linux64.tar.xz

解凍したフォルダに移動。

 $ cd arduino-1.8.9

そしてインストール。

 $ ./install.sh

…ここでなんかエラーが出た。

一応最後に「done!」とは出てるので、インストールされてるような気もする。

なので、念のためsudoをつけてもう一度インストールしてみた。

 $ sudo ./install.sh

すると一番下のエラーが消えたけど、rmのエラー2つは出たままだった。

 

調べてみたらフォーラムにも記載があって、どうやら問題のないエラーメッセージらしい。

 https://forum.arduino.cc/index.php?topic=618505.0

確かに、Arduino IDEの起動は問題なく確認できた。

なのでこのまま使うことにします。

 

Linux用のインストーラはバージョンアップするたび、何かしら引っかかってしまうところがあるのが不思議。

あまり深く考えずにインストールしても問題なさそうだけど、やっぱり気になるところは避けて通りづらい。

このメモも、同じように引っかかった人の手助けになればと思います。

(解決策にはなってないが)

Sponsered Link

OTTOロボット再び

先日、一年ほど放置していたOTTOロボットを再び引っ張り出した。
(クリスマスが暇で…)

ホントはM5Stackで制御できないかと考えたんだけど、ESP32はServoのライブラリがない…わけじゃないけど、現状のには対応してないらしく、簡単には移植できそうになかった。
なので今回のところは素直にArduino Nanoを使う。

 

※余談だけど、別にライブラリはある。
 https://www.arduinolibraries.info/libraries/esp32-servo
すでに使ってる人もいたんで、いずれこれも実験したい。

 

以前OttoDIYの中でもLEDマトリクス付きのOttoPLUSを作ろうとして止まってたんだけど、一年以上経ってすっかり忘れたのでもう一度基本的なやつを3Dプリンタで出力し直した。
 https://github.com/OttoDIY/DIY/tree/master/3D%20print
さすがバージョン8までアップデートしてるだけあって、以前と比べてすごく組み立て易い。
3Dデータはオプションもダウンロードできる。今回は猫のお面を付けてみた。

 

自分が持ってるサーボモータは格安の怪しいSG90なので、できるだけ問題なさそうなのを選りすぐって、中央のポジションを確認してからArduinoに配線&ボディに組み込む。
Arduino IDEでサンプルスケッチをインストールして、動作確認もOK。


エラーが出なかったのは必要なライブラリまで全て揃ってくれてたおかげ。
現在はロボットの基本的な動きや音をOttoライブラリにまとめてある。
 https://github.com/OttoDIY/DIY/tree/master/libraries
インストールはマニュアル通りにmBlockを使っても大丈夫だった。
(多少問題もあったけど、別にまとめる予定)

 

以前は1〜2時間でロボットが作れるという触れ込みに「嘘付け!」と思ったけど、細かい点が改善されたおかげでパーツさえ揃えばホントに1時間で組み立てられると思う。
公式で売ってるものを買えばさらにきっちり作れるんだろうな。
未だにArduino Nanoを使ったガジェットなんてと思ってたけど、まだまだ遊べそうだ。

Sponsered Link

Arduino Nanoの書き込みエラー

かなり久々にArduino Nanoを引っ張り出してきたものの、ちょびっと引っかかった件をメモる。

 

その前にずっとM5Stackばかりいじってたので、ボードの選択を間違えててコンパイルできなかった。

すぐに気付いてボードにArduino Nanoを選択し、再度コンパイル。

その後本体にUSB接続して書き込もうとしたところ、何の呪いかエラーが出た。

 

エラー内容は
 avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
 avrdude: stk500_recv(): programmer is not responding

…を繰り返している。見たことないな、これ。

 

しかし検索するまでもなく、ツールのプロセッサの選択を見てすぐに気付いた。

プロセッサの選択肢が増えてる。

今まで「ATmega328P (Old Bootloader)」という選択肢はなかったので、これはArduino側がバージョンアップしたのだろうと思い、古いほうで書き込みしたところ、エラーが出なくなった。

 

これに付いては公式にも記載されている。NOTEのところ。

 https://www.arduino.cc/en/Guide/ArduinoNano

もうだいぶ前に更新されてたんだな。最近Arduino本体をいじることがなかったから、全然知らなかった。

日本語でもわかりやすく説明されているところがあった。こちらがおすすめ。

 http://www.umek.topaz.ne.jp/mameduino/tag/atmega328pold-bootloader/

 

で、プロセッサについてはすぐにわかったんだけど、なぜかUSBシリアルが増えてるのは未だに不明。

ちなみに接続してるPCはMac。

Arduino Nanoしか接続してないのに、シリアルポートの選択肢が増える。

とりあえず今までと同じ「/dev/cu.wchysbserial1430」を選択したら書き込めたので、問題ないんだけど気になる。

こっちは保留。

 

こまめに情報収集してないと、いろんなものがアップデートしてるのに気付かないんだよなあ。

新しく買ってまだ積んであるボードもたくさんだけど、冬休みにArduinoも見直してあげるとするか。

(問題は冬休みが超短いことだが…)

Sponsered Link