ラベル Arduino の投稿を表示しています。 すべての投稿を表示
ラベル Arduino の投稿を表示しています。 すべての投稿を表示

2019年4月7日日曜日

Arduino:オリジナルキーボードを作ってみよう

前回sai2を使い始めたわけですが、むかーしお絵描きをしていたころと比べて隔世の感がありますね。
ちっさい(はがき大)のタブレットを使っているんですが、パソコンが昔に比べて高速になったこともあるのか、サイズをかなり大きく(4kくらい)とっても結構なめらかに描けるのは感激です。

まあ画力がついてこないわけですが・・・。

で、ちょっとイタズラがきをしてみていたのですが、sai2は特にパスツールの出来がスゴくイイ!と感じました。書いてからの編集機能も充実してますし!

だけど、ショートカットが結構めんどくさい。

そういえば以前のコレ(Arduino:DigiSpark(TINY85)を動かしてみる)が、ピン数は少ないもののUSBでHID動作?するらしくて、さらにコレ(Arduino:Wemos ESP32 Lolinを動かしてみる(途中))は結局良品がおっかけで送られてきたけど初期不良のものは修理できず、ディスプレイの死んだESP32という扱いで放り投げられている。
さらにさらに、Win95時代に買ったままもう何年つかってないかわからないUSBテンキーパッドがある。

これを

TINY85-(I2C)-Loliin-テンキー

でつないであげれば、オリジナルキーボードができてしまうのでは!?と考えました。

できあがったのがこちらになります。

テンキー部分解図。古いものは作りが正直で使いまわししやすくていいですな。
一番左のがキーマトリクスの電極シートがスペーサー入りで重なってるもの。
真ん中がシリコンゴム製のバネ相当のシート。
一番右がキー部分。プリンタで印刷したものをセロテープ+両面テープでキートップに。
キーマトリクスの上にあるのがLolin。3Dプリンタで基板ベースとカバーを作成。

TINY85の裏側に基板をピンヘッダをかませて固定。
TINY85の端子穴が2.54ピッチでキッチリつくられていたのでバッチリだった。

元々のキーマトリクスが7x6だったけどそんなにLolinに空きポートが無くて、複数ピンを共有にしたりして4x6マトリクスにまとめたけどキーがひとつだけNCになってしまったりしました。まあよし。
I2Cバスは、TINY85側が5Vなんで5Vでプルアップしています。Lolin側の3.3Vプルアップも生きたままだと思うけど、きっと大丈夫!(根拠なし)

ケーブル部は死んだUSBケーブルを流用。接続部はピンヘッダのオスとメス。電源はTINY85経由でひっぱったUSBの電源供給でLolin側もなんとか動いてくれているようです。

両方のソースも貼っとこうかと思いましたが、こんなアホな構成で作ろうと思う変態は自分だけだと思うのでやめときます。

2019年1月11日金曜日

Arduino:Wemos ESP32 Lolinを動かしてみる(途中)

なんだこれすげえ安(ry

Wemos Lolin ESP32という感じの型番でAliexpressで売ってたコレなんですが、ESP32ベースで単色OLEDディスプレイ付きで1200円くらいなんですよ!(当時)

まあパチモンらしいんですけども。。。

ESP32ベースなのでWifiと接続できちゃいますし、ESP32には技適マーク付きで国内使用も問題なし!これはいい!ということで1個購入してみました。

例によっていろいろ先人の知恵を拝借するわけですが、結論から言うと残念ながらOLEDパネルの部分は初期不良で動作しなかったのです……。現在ショップに問い合わせ中なんですが、

私:すいません。先日購入したものが動かなかったのですがどうしたらいいですか?(ショップによって違うであろう対処方法について聞いたつもり)
店:写真撮って送ってください。
私:(外付けのOLEDを接続して、ESP32部分は動いているが、内臓のOLEDは動いていないことがわかる写真を送付)
店:なるほど。それで我々はどうしたらいいですか?
私:動作するものを送るか、返金処理してほしい。
店:(現状回答なし)←今ココ
というわけで、待ちの状態です。どうなるかなー。

で、上述の「外付けのOLEDを接続して動作確認」の部分ですが、最初は先日書いたUNO R3の時に使ったAdafruitのライブラリとテストプログラムを使ったんですが動かなかったのです。
で、まずは動くことを確認せねば、ということで、wemos とかでググりまして、
こちらのページにたどり着きました。
ここの情報で

  • ESP8266 Oled Driver for SSD1306 の中の SSD1306ClockDemo が使えそうなこと
  • 内蔵OLEDを制御しているI2Cピンアサインは SCL/SDA=IO4/IO5であること

を教えていただきましたので、ブレッドボードで信号を引き出して外付けのOLEDパネルに接続したところ、外付けは動いてるけど内蔵は動いていない、という状況が確認できた、ということになります。

さて、今後WemosでなくてもESP32+OLEDの組み合わせでモニターとして使っていきたいと思うと、どうにかして文字列を画面に表示できるようにしておきたいわけです。

で、Adafruitのライブラリは上記で失敗していますし、簡単にググったところによると最新のAdafruitのライブラリではディフォルトのI2Cポート以外に設定するのは難しい、みたいな記載を見つけました。

そこで調べを進めると、どうやらSSD1306のライブラリ自体で文字まで表示できる模様。

ああ、、、元ネタどこのページで拾ったのか忘れてしまった……。

ですが、結論としては、これで表示した文字って等幅フォントではなくプロポーショナルフォントだったんです。それってちょっと使いにくいような……。

ということで、Adafruitのライブラリを使えるようにする調査をもう少しまじめにやってみました。結論として、


  • Adafruit_SSD1306.hの↓の部分の修正(128_64をイキにする)


  • ssd1306_128x64_i2c.inoの修正
  1. (下の画像に入ってないけど)#define OLED_RESET 4→0
  2. (Wire.begin()→Wire.begin(5,4)
  3. display.begin(~,0x3D) → 0x3c) 


これで動きました!
スペシャルサンクス←ココ

ただ、どうもAdafruitのライブラリは、フォントをメインメモリ上に置いちゃうらしくてメインメモリを圧迫してしまう可能性があるので、これをSPIFFSに移動することはできないかなー、とか考えています。


2019年1月8日火曜日

Arduino:DigiSpark(TINY85)を動かしてみる

なんだこれアホみたいに安い


すごい小型ですごい安い。御覧の通りUSBに直で刺せるわけですよ。
なんか面白そう!(安いし)ということで、2個買いました。
で、動かそうとしたのですが、ちょっと変則的な感じで、OLEDの数倍苦労しました。

まずは、先人の知恵に乗っかるわけですが、この中にも紹介されている、digisparkのwikiを先に見たほうが結局いいかもしれません。

手順:(wikiにほぼ同じことが書いてあります)
  • IDE側で環境設定がまず必要です。こちらは上記サイトの通りで問題なし
ArduinoIDEを起動して、ファイル-環境設定-設定タブの「追加のボードマネージャのURL」に「http://digistump.com/package_digistump_index.json」を追加
  • 次に、ツール-ボード-ボードマネージャに入り、Digistump AVR Boards by Digistumpを探してインストールします
  • Arduinoが1.66以降の場合はドライバをダウンロードしてインストールする必要があります。そのドライバの場所や注意点などは、とても詳しいYoutubeのビデオがありますのでこれを是非見てください。Youtubeの自動翻訳、マジ神ですな。
  • ついにテストプログラム(wikiにあります)を書き込んで動かすわけですが、この基板の場合変態的な落とし穴があります。
  1. まず、基板をUSBから外します。(刺したままだと書き込めません)
  2. IDEの「書き込み」ボタンを押します。
  3. コンソール(ウィンドウ下部)に「今だ刺すのだ!」的なコメントが出るので、基板をUSBに刺します。
  4. 基板にソフトが書きこまれ、そのまま動き出します。
と、いう感じなのですが、上記サイトもwikiもここまでくればサクっと動いている一方で、私は書き込みボタンを押すとエラーが出てしまって「刺し込み待ち」の状態になってくれませんでした。デバイスドライバを削除して再インストールしたりもしてみたのですがダメ。

結論としては、ArduinoのIDEをいったん全て閉じ、もう一度起動してみたらすんなり動きました(基本すぎる)。

容量も小さいけどこの小ささは何か使えそうだなぁ。




ArduinoでOLEDディスプレイを動かしてみる

Aruduino UNO R3(相当品)
なんだこれすごい安い。

ということで買ってみました。
別に秋月電子で買ってあったOLEDディスプレイを動かしてみようと思います。

とはいえ、基本的には先人のあとをくっついて回ることにより、なんだこれレベルで動いてしまうわけですが、OLEDのライブラリのリビジョンが上がり、上記解説サイト様の懸念されている通りヘッダファイルをいじらないで動作できてしまいましたので、ポイントを備忘録代わりに書いておこうと思います。
上記解説サイト様の手順で行くと、

  • ライブラリの準備
  • Adafruit_SSD_1306のインストール
  • Adafruit-GFX-Libraryのインストール

までは同じです。

  • ライブラリのヘッダーファイルを編集

は、飛ばして、

  • スケッチ例の動作確認

の通りに、AdafruitSSD1306-ssd1306_128x64_i2cを開きましたら、

ここんとこ(黄色のとこ)のI2Cアドレスを、OLEDディスプレイの裏面の実装状況と、解説サイト様の「I2Cアドレスの確認」の項を参考に変更するだけです。
そしたらもう動いてしまいます。素敵。

あと注意点としては、USBバスパワーでUNO単体なら動きますが、こういった外部デバイスを動かす際は外部電源をつなぎましょう、ということでしょうか。

とりあえず今回はここまでです。




2018年12月16日日曜日

ESP32:開発環境構築と動作確認


ちょっとArduinoのESP32基板を動かす必要がありました。
以前仕事で環境構築からやったことがあったのですがすっかり忘れていたので備忘録代わりに書いておきたいと思います。

ESP32は、WifiとBluetoothが使えるArduinoのモジュールなんですが、開発キットという名前の基板は、PCにUSBケーブルで直結するだけで他の回路なんかが無くても動かすことができちゃうスグレモノなのです。技適も通ってますので国内使用も安心。

いくつかのメーカーで出していますが、入手しやすい以下のところのが安いしおすすめです。

秋月電子  お安い。メーカー純正品?
スイッチサイエンス 電源回路にいい部品が使われていて安定してる(らしい)

最近極端に安いのとか、ディスプレイ付きとか色々出てるっぽいですが、そのうち触っていきたいです。

mgo-tec電子工作様のHP
ここがとても参考になりました。
特に初回起動時に「無効なライブラリ~」と言われた場合の対処方法について。
具体的にはBluetoothとAzureIoTについてのライブラリはインストールされない場合があるので、その時には個別にGithubからとってきてインストールしなければならない、というところ。
(AzureIoTについては上記HPには記載がないが、同様の対処で問題ない模様)

XX-Prime様のHP
ウチの環境では問題なかったけど、書き込み時にBOOTスイッチを押しっぱなしにしないとダメな場合があるらしい。
動作確認もココのが何も外部デバイスがいらないので助かりました。

で、実は一番はまったのが、接続に使ったmicroUSBケーブルが「充電専用」のものだったこと。。。
最初から見えていたCOMポートはオンボードのもので、どうしてもプログラムが書き込めない!と泣いていたら天啓が来ました。