電光掲示板もどきプロジェクトは一応形になったので、渋々使用していたArduino IDEからSloeberへ移行してみようと思い立ちました。コンパイル時にArduino core for ESP32のファイルでコンパイルエラーが発生したのでひとまずほったらかしにしてたんですよね。
※SloeberとArduino-core-esp32のインストール方法については他所に情報がありますので割愛します。
ところで、windowsのホームディレクトリに日本語が含まれるていることに気が付かず、何気なくgithub経由でArduino core for ESP32をSloeberに適用したところ、日本語を含むパスのおかげでコンパイルエラーになったことに業を煮やし、Linux Mintに移行しました。
というわけで、以下の情報は
OS:Linux mint 19.1 Tessa
Sloeber:ver4.3.1
Arduino core for ESP32:ver1.0.2
であることを念頭に置いてください。
2019年8月20日火曜日
2019年7月18日木曜日
Arduino+74HC595+8×8nマトリクスLED(8.3)
3.RTC(Real Time Clock)がない
単純なうっかりで、ハードウェア的に時刻を保持する仕組みを作っていませんでした。こういう場合にはRTCモジュールを使って、コイン電池でバックアップすると完璧らしいです。
しかしながら、WiFiを介してインターネットにつながるんだから、NTPで時刻取得しちゃえばいいじゃない、ということで以下のリンクを参考にNTPで取得した時刻を文字列にする関数をこさえました。
Arduinoで遊ぶページ -SimpleTime
数時間使用したときにどれくらいズレがあるのか、ということについては未確認です。基本的に時計的に常時使う感じではなくて、気が向いたときに起動する、外出するときは電源切る、という運用ですので、起動時にNTPから時刻が取得できれば気になるズレは生じません。スクロール表示する以上は必然的に表示時に秒レベルでずれてしまいます(^^;;
time.hをインクルードするとNTP周りの実装が使えるようになるのですが、先に挙げたリンクを読んだ限りでは、getLocalTime()の度にgetConfig()で指定したNTPサーバーにリクエストが飛ぶのか、といったあたりがよくわかりません。
Arduino にしても Arduino Core for ESP32 にしても何かやろうとしていることが明確なら、まず使えそうな標準ライブラリなり外部ライブラリを探すことから始めると効率が良いですね。ライブラリ自体に豊富なサンプルがついてきますし、多分作例もググれば誰か作って公開してくれているとおもいます(笑)
1.データどこから取得する?
2.データの取得と解析はどうする?
3.RTCないけどどうする <--- 今ここ
Arduino+74HC595+8×8nマトリクスLED(8.2)
2.駅別時刻表をHTTP経由で取得・解析する
マイコンのメモリは限られていますので、大規模な文字列解析はやらないほうがよさそうです。そこで、LAN上にWEBサーバーを立ててCGIを利用することにしました。①公式サイトのデータ取得→時刻表データファイルを作成するスクリプトと、②時刻表データファイル→直近1列車を表示するスクリプトがあれば要件を満たせます。
スクリプトを分割したおかげで、それぞれの機能のみ考えればよいのでコーディングも楽になりました。時刻表のデータそのものの更新頻度はせいぜいダイヤ改正ごと、つまり長期に渡って更新されないので①については、都度手動で取得・整形する形でもなんとかなります。
ESP32からは②直近1列車表示スクリプトからHTTPでゲットする形なので、固定の形式で取得できることが保証され、名鉄公式サイトが大規模改修したとしてもESP32側の解析ロジックを書き直す必要がなくなります。
①・②とも20年くらい前に遊んでいたperlで書くことにしました。当時はperlのcgiでBBS作るの流行りましたね。perlで作る掲示板なんて本まで出版されたような記憶が。
とはいえ、ど忘れしていて別の言語で書いても良かったんではないかと後悔(^^;;
今時の動的htmlってどんな言語を使うのかしら?
Arduino+74HC595+8×8nマトリクスLED(8.1)
1.名鉄公式サイトにAPIが存在しない
駅すぱ〜とに代表される時刻(というより乗り換え)検索系サービスと公共交通機関が契約、そのサービスのAPIを利用して公式サイトを構成している様な雰囲気なので、当然お金が絡みます。APIがあるはずだけど先の理由で公開されていない、と判断しました。名鉄の場合は駅探というサービスが挟まっています。法的にはグレーですが、商用利用ではなく個人で閉じた利用ですので大丈夫でしょう。
Arduino+74HC595+8×8nマトリクスLED(8.0)
電光掲示板もどきプロジェクトの状況です。
さんざん同じネタで引っ張っていますが、行側制御部の方式検討はひとまずおいておくとして、ソフトウェア側を作り込むことにしました。
またLEDマトリクスで遊び始めた頃より、WiFi経由で最寄り駅の直近の列車を表示したいという願望がありましたので、Arduino に追加する WiFiモジュールを検討していたところ、ESP32というマイコンといいますかWiFiチップといいますか、多機能なものがあり、Arduino IDEで開発できることからESP32 DevKitC を 秋月さんから入手して、こちらに移行してしまうことにしました。
さんざん同じネタで引っ張っていますが、行側制御部の方式検討はひとまずおいておくとして、ソフトウェア側を作り込むことにしました。
またLEDマトリクスで遊び始めた頃より、WiFi経由で最寄り駅の直近の列車を表示したいという願望がありましたので、Arduino に追加する WiFiモジュールを検討していたところ、ESP32というマイコンといいますかWiFiチップといいますか、多機能なものがあり、Arduino IDEで開発できることからESP32 DevKitC を 秋月さんから入手して、こちらに移行してしまうことにしました。
2019年6月17日月曜日
Arduino+74HC595+8×8nマトリクスLED(6.5)
「行側制御にシフトレジスタ使うのもったいなくね?」問題の第五回です。
手持ちのICで行側制御(スキャン側)ロジック(仮)を作成して動作させてみたところ、ラッチクロックを拾ってスキャン対象自動進段するという主要な機能は実現できていましたが、クリア時の挙動に問題があることが発覚しました。
手持ちのICで行側制御(スキャン側)ロジック(仮)を作成して動作させてみたところ、ラッチクロックを拾ってスキャン対象自動進段するという主要な機能は実現できていましたが、クリア時の挙動に問題があることが発覚しました。
2019年6月16日日曜日
Arduino+74HC595+8×8nマトリクスLED(6.4)
「行側制御にシフトレジスタ使うのもったいなくね?」問題の第四回です。
前回はデコーダとシンクドライバの間にNORゲートを挟む方向で実装しようかな、というところまででした。
それはそうと、きちんとロジックおよびIC間の連携をチェックしていないので、簡単にシフトレジスタ+カウンタ+デコーダを接続し、シフトレジスタとデコーダの出力にLEDバーをつないで出力の様子をチェックすることにしました。
前回はデコーダとシンクドライバの間にNORゲートを挟む方向で実装しようかな、というところまででした。
それはそうと、きちんとロジックおよびIC間の連携をチェックしていないので、簡単にシフトレジスタ+カウンタ+デコーダを接続し、シフトレジスタとデコーダの出力にLEDバーをつないで出力の様子をチェックすることにしました。
2019年6月15日土曜日
Arduino+74HC595+8×8nマトリクスLED(6.3)
「行側制御にシフトレジスタ使うのもったいなくね?」問題の第三回です。
前回(6.2)の末尾【今後の展開】に書いた、負論理出力でシンクドライバIC的な増幅ってどうやるの?の調査をしてみました。
前回(6.2)の末尾【今後の展開】に書いた、負論理出力でシンクドライバIC的な増幅ってどうやるの?の調査をしてみました。
手っ取り早くGoogle先生に質問するのが定番ですので「74HC138 LEDマトリクス」とベタに尋ねたところ、色々と答えてくれました。
何かしらのマイコンと74HC138を使ってLEDマトリクスを駆動する場合、74HC138をスキャン側に使い、マイコンのIOピンでパターンを指定することになります。
74HC138は3to8デコーダで、8つある出力ピンのうち入力された3bitに対応するピンを選択するという機能になりますので、当然パターン選択はできませんからスキャン側にしか使えません。
74HC138は3to8デコーダで、8つある出力ピンのうち入力された3bitに対応するピンを選択するという機能になりますので、当然パターン選択はできませんからスキャン側にしか使えません。
主に画像を見ながら興味を引いたものについて実際にリンク先の記事など読んでみる、という手法で色々と探って以下の解決策が有望な感じ。できれば手持ちのシンクドライバ(TBD60283)を使えたらいいな~。
【解決策その1:74HC138の代わりに74HC238を使用する】
74HC238というロジックICがありまして、機能的には74HC138と同じ3to8ラインデコーダなのですが、出力が反転・つまり正論理になっています。これを使えばシンクドライバのTBD60283を駆動できます。なんだか一番手っ取り早そうな解決策です。
【解決策その2:74HC138の出力にNORゲートを接続する】
74HC138は負論理出力ですので、GNDとのNotORをとれば74HC138の出力がLOWの時にHIGHにすることができます。ということはNORゲート(74HC02)を接続して出力をシンクドライバに接続すれば、その1と同じことができます。
【解決策その3:74HC138の出力にMOSFETを接続する】
そもそもMOSFETが何者なのかよくわからないのですが、トランジスタと同じような増幅作用を持つ代物のようです。※自分の知識不足ですので、この解決策は採用しないことにします。
【解決策その4:74HC138の出力にトランジスタを接続する】
まず検討すべき方策がこれで、適合するトランジスタはいくつかあるようです。しかしながらハンダ付け箇所がIC利用の場合よりも8か所余分に増えるので面倒くさい、という理由で採用しません(笑)
手持ちの74HC138を使うとすれば、その2:NORゲートを使うの一択ですね。
来月は74HC02を調達することにしよう。
【参考】
32x16 LED Matrix Panel and Arduino 4953って多分MOSFETだよね?
【いろいろとヤバそうなモノ】
16×128 LED dot matrix screen 74HC138に全部直結しちゃって大丈夫なの?
Drawing on 8x32 LED matrix with 74HC154 74HC154は4to16デコーダですのでこれ動かねーわ(笑)
2019年6月13日木曜日
Arduino+74HC595+8×8nマトリクスLED(7)
ケーブルの量が多くなりLEDマトリクスを整列させることが難しくなってきました。
そこでLEDマトリクスを基板に固定してしまうことにしました。
オーソドックスなヘッダピンを使ってコネクタを作ることにしたのですが、作業中に無理そうなことが発覚して、急遽手持ちにあったL字のヘッダピンを使ってマトリクス側にコネクタを作ることになりました。この辺は電子工作の経験不足がモロに露呈した形になりました(^^;;
裏側でマトリクスのピンを曲げたうえ、ヘッダピンとマトリクスのピンの隙間は半田ブリッジでつなげるという力業でねじ伏せました。動かせれば勝ち(^^;;
それから在庫していたL字のヘッダピンがちょうどマトリクス3個分だったため、1個分未実装となっています。しかし今月の予算は使い切ったので、筐体ともども来月持越しです。
全体を接続してみたのですが、ケーブル長をもっと余裕持たせたほうがよかったかな、と今更思いました。きちんと検討してから作れよ、という指摘があるでしょうが、まったくごもっとも。
まぁ、この通り動作はします。マトリクスとその制御、とっても楽しいですね。専用ドライバをググるより先にシフトレジスタとかデコーダが掛かってしまったので、ずいぶん面倒くさい展開になりましたが、こちらのほうが断然面白いんじゃなかろうか。制御方式もまだまだ向上の余地があるので骨の髄までしゃぶれそうなプロジェクトになりつつあります。
【問題点】
全体のボリュームが予想よりずっと大きいので、筐体を大げさなものにしないと収まりません。たかだか2.5cm角のマトリクス4個に、ATX電源くらいの筐体を用意する必要がありそう。自分で言うのもなんですがアホっぽい(笑)
もう一点。
この基板の行スキャン制御側は、制御基板の方で一つのシンクドライバに接続されています。ということは、この基板で行側の端子をそれぞれまとめてしまえば、行スキャン制御部との接続ケーブルは一つで済んでしまいます。なんというポカをやらかしてしまったのでしょう(^^;;
まぁまだまだど素人ですから、この辺は知識と経験則でカバーできないのです。しょうがないしょうがない。
そこでLEDマトリクスを基板に固定してしまうことにしました。
裏側でマトリクスのピンを曲げたうえ、ヘッダピンとマトリクスのピンの隙間は半田ブリッジでつなげるという力業でねじ伏せました。動かせれば勝ち(^^;;
それから在庫していたL字のヘッダピンがちょうどマトリクス3個分だったため、1個分未実装となっています。しかし今月の予算は使い切ったので、筐体ともども来月持越しです。
全体を接続してみたのですが、ケーブル長をもっと余裕持たせたほうがよかったかな、と今更思いました。きちんと検討してから作れよ、という指摘があるでしょうが、まったくごもっとも。
まぁ、この通り動作はします。マトリクスとその制御、とっても楽しいですね。専用ドライバをググるより先にシフトレジスタとかデコーダが掛かってしまったので、ずいぶん面倒くさい展開になりましたが、こちらのほうが断然面白いんじゃなかろうか。制御方式もまだまだ向上の余地があるので骨の髄までしゃぶれそうなプロジェクトになりつつあります。
【問題点】
全体のボリュームが予想よりずっと大きいので、筐体を大げさなものにしないと収まりません。たかだか2.5cm角のマトリクス4個に、ATX電源くらいの筐体を用意する必要がありそう。自分で言うのもなんですがアホっぽい(笑)
もう一点。
この基板の行スキャン制御側は、制御基板の方で一つのシンクドライバに接続されています。ということは、この基板で行側の端子をそれぞれまとめてしまえば、行スキャン制御部との接続ケーブルは一つで済んでしまいます。なんというポカをやらかしてしまったのでしょう(^^;;
まぁまだまだど素人ですから、この辺は知識と経験則でカバーできないのです。しょうがないしょうがない。
2019年6月12日水曜日
Arduino+74HC595+8×8nマトリクスLED(6.2)
「行側制御にシフトレジスタ使うのもったいなくね?」問題の第二回です。
前回(6.1)は74HC4040の動作確認でしたが、今回は74HC4040を二段接続して、その後ろに74HC138をつないで行スキャンっぽい動作が可能かどうか実験していきます。
前回(6.1)は74HC4040の動作確認でしたが、今回は74HC4040を二段接続して、その後ろに74HC138をつないで行スキャンっぽい動作が可能かどうか実験していきます。
2019年6月10日月曜日
Arduino+74HC595+8×8nマトリクスLED(6.1)
今回はメインテーマであるなんちゃって電光掲示板プロジェクトから少し脱線して、サブテーマ的な「行側制御にシフトレジスタ使うのもったいなくね?」問題について検討します。
なにかしらのカウンタがあれば、そこにパルスを送るだけで代替できるはず。そうすれば制御用の8bitデータ送出を丸々削ることができます。将来的にマトリクスを追加した場合にも、マトリクスの駆動限界ごとに制御用8bitの送出を挟む必要がある、というプログラミング上の問題も解消します。
【問題点の確認】
今回のなんちゃって掲示板プロジェクトは行側カソードのカソードコモンLEDマトリクスを使用していますので、ダイナミック制御時のスキャンは行側で実施しています。スキャンそのものは対象行(1行)を順次切り替えるだけですので、わざわざ8bitのパターン表現を送るのは大げさなのではないか、と考えました。なにかしらのカウンタがあれば、そこにパルスを送るだけで代替できるはず。そうすれば制御用の8bitデータ送出を丸々削ることができます。将来的にマトリクスを追加した場合にも、マトリクスの駆動限界ごとに制御用8bitの送出を挟む必要がある、というプログラミング上の問題も解消します。
Arduino+74HC595+8×8nマトリクスLED(6)
列側制御基板が二枚完成しましたので、行側制御基板に手を付けることにしました。
こちらは回路そのものは単純なので割とさっくり作業が完了しました。
というわけで、接続ケーブルをこしらえてArduinoと各制御基板を接続しました。
ケーブルのわさっと感が凄い(^^;;
ケーブルを作る時に気が回らなかったのですが結構捻じれていて、せっかく足をつけたのにケーブルのねじれに負けて基板が浮いてしまっています…
電気的に接続できていればノープロブレム(笑)ですので、動作確認をしてみました。
例によってマトリクス裏にカッターナイフの替え刃ケースを突っ込んで、無理やり整列させています。
※動画では右から2つ目のマトリクスの最下段が光っていませんが、単にコネクタの接触不良でした。
各基板の機能には問題がないようですね。ハンダ付けの量も配線量も電子工作初心者にはキツい規模でしたが、これで一段落ということでホッとしました。
ここで、製作途中でふと思った「行側制御にシフトレジスタ使うのもったいなくね?」問題を解決するいい機会だと思いまして、少し検討をしてみることにしました。
切りがいいので続きは次回に。
こちらは回路そのものは単純なので割とさっくり作業が完了しました。
というわけで、接続ケーブルをこしらえてArduinoと各制御基板を接続しました。
ケーブルのわさっと感が凄い(^^;;
ケーブルを作る時に気が回らなかったのですが結構捻じれていて、せっかく足をつけたのにケーブルのねじれに負けて基板が浮いてしまっています…
電気的に接続できていればノープロブレム(笑)ですので、動作確認をしてみました。
例によってマトリクス裏にカッターナイフの替え刃ケースを突っ込んで、無理やり整列させています。
各基板の機能には問題がないようですね。ハンダ付けの量も配線量も電子工作初心者にはキツい規模でしたが、これで一段落ということでホッとしました。
ここで、製作途中でふと思った「行側制御にシフトレジスタ使うのもったいなくね?」問題を解決するいい機会だと思いまして、少し検討をしてみることにしました。
切りがいいので続きは次回に。
2019年6月6日木曜日
Arduino+74HC595+8×8nマトリクスLED(5)
列パターン送出用基板が一枚完成しましたので、同じ結線で出来る列パターン送出用基板の二枚目を作成することにしました。
一気に作り上げるのではなく、数回に分けてチマチマと作ってみました。
このほうが作業の集中力が続くようで、割とすんなり作成できました。
二枚目なので作業のやり方がある程度わかっていることも大きいですね。
完成したところでテスター当てて導通チェックした後、前回作っておいた接続ケーブルでその他の機能部と接続して動作確認。まぁ当然さくっと動きましたとさ(^^)
とりあえず行側スキャン用基板の製作が残っていますね。完成が見えてきたので頑張ろうっと。
一気に作り上げるのではなく、数回に分けてチマチマと作ってみました。
このほうが作業の集中力が続くようで、割とすんなり作成できました。
二枚目なので作業のやり方がある程度わかっていることも大きいですね。
完成したところでテスター当てて導通チェックした後、前回作っておいた接続ケーブルでその他の機能部と接続して動作確認。まぁ当然さくっと動きましたとさ(^^)
とりあえず行側スキャン用基板の製作が残っていますね。完成が見えてきたので頑張ろうっと。
2019年6月1日土曜日
Arduino+74HC595+8×8nマトリクスLED(4)
現時点では二枚目の列パターン送出用基板を作成している最中でまだ3割くらいの進捗であります。
それはそれとして。
列パターン送出用基板の一枚目を適当にチェックして、一応すべてのデータ送出ピンが機能していることは確認したのですが、すべてをつないだ状態でのテストをしていません。
どことなく不安になりましたので、各制御部とマトリクスをつなぐ接続用ケーブルを作成することにしました。
今回は2.54㎜ピッチのヘッダピンとのコネクタになりますので、QIコネクタ(2550コネクタ)を使います。使用した部品は以下の通り
・QIコネクタ-メス 100本入り ×1 →秋月:C-12327
・コネクタ用ハウジング-8P ×8 →秋月:C-12157
・AWG24相当ビニールより線 1m×10色入り ×1 →秋月:P-10672
コネクタをビニール線に圧着してハウジングに収めればいいのですが、なにぶん数が多いので圧着工具を買っておきました。
・ENGINEER:PA-20
コネクタと圧着作業についてはデジットというショップさんのブログに良記事がありましたので、そちらを参照してください。
→【Tips】電子工作でよく使う『QIコネクタ』の圧着方法
※個人的にはめんどくさかったので被覆との圧着も1.6でやりました。
出来上がったケーブルはこんな感じ。
マトリクス刻印側(上左)、マトリクス無印側(上右)、列制御基板側(下右)、行制御基板側(下左)へそれぞれ接続します。
※コネクタに収める際の混乱を避けるため列側をカラフルにして、行側は赤黒2色としました。
同じものをもう一つ作って全体をつないでみました。ただし、行制御基板はまだ作成していないのでそれ相当の回路をブレッドボードに組んであります。
なにかしら箱に収める段になったらマトリクスは一旦基板に取り付けた後、基板と箱を固定する形にしたほうが構造的に良いような気がするのですが、現時点では箱がないのでそのままピンとコネクタを接続しました。
各制御部とマトリクスのフリーダムなピンアサインを接続ケーブルで吸収してあるのでそのまま接続できるのは大きなメリットですね。それでも配線がかなりカオスになっていますが(^^;;
動作の方はこの通り問題なし。
さっさと残りを作っていかないといけませんね。はぁ…
それはそれとして。
列パターン送出用基板の一枚目を適当にチェックして、一応すべてのデータ送出ピンが機能していることは確認したのですが、すべてをつないだ状態でのテストをしていません。
どことなく不安になりましたので、各制御部とマトリクスをつなぐ接続用ケーブルを作成することにしました。
今回は2.54㎜ピッチのヘッダピンとのコネクタになりますので、QIコネクタ(2550コネクタ)を使います。使用した部品は以下の通り
・QIコネクタ-メス 100本入り ×1 →秋月:C-12327
・コネクタ用ハウジング-8P ×8 →秋月:C-12157
・AWG24相当ビニールより線 1m×10色入り ×1 →秋月:P-10672
コネクタをビニール線に圧着してハウジングに収めればいいのですが、なにぶん数が多いので圧着工具を買っておきました。
・ENGINEER:PA-20
コネクタと圧着作業についてはデジットというショップさんのブログに良記事がありましたので、そちらを参照してください。
→【Tips】電子工作でよく使う『QIコネクタ』の圧着方法
※個人的にはめんどくさかったので被覆との圧着も1.6でやりました。
出来上がったケーブルはこんな感じ。
マトリクス刻印側(上左)、マトリクス無印側(上右)、列制御基板側(下右)、行制御基板側(下左)へそれぞれ接続します。
※コネクタに収める際の混乱を避けるため列側をカラフルにして、行側は赤黒2色としました。
同じものをもう一つ作って全体をつないでみました。ただし、行制御基板はまだ作成していないのでそれ相当の回路をブレッドボードに組んであります。
なにかしら箱に収める段になったらマトリクスは一旦基板に取り付けた後、基板と箱を固定する形にしたほうが構造的に良いような気がするのですが、現時点では箱がないのでそのままピンとコネクタを接続しました。
各制御部とマトリクスのフリーダムなピンアサインを接続ケーブルで吸収してあるのでそのまま接続できるのは大きなメリットですね。それでも配線がかなりカオスになっていますが(^^;;
動作の方はこの通り問題なし。
さっさと残りを作っていかないといけませんね。はぁ…
2019年5月27日月曜日
Arduino+74HC595+8×8nマトリクスLED(3)
Fritzingにて実装の検討。
あれこれパターンをこねくり回して結線できそうで、かつ拡張できそうな感じで基板分割したものが出来上がりました。
基板分割は
1.外部からのデータ入力および行スキャン制御部
2.列点灯パターン送出部
3.LEDマトリクス固定部
という感じにしました。秋月のC基板を使うことにしたのですが、自分の技量と相談し、2がシフトレジスタ2つと抵抗16本その他配線を考えると、これ以上詰め込むのは現時点では無理があります。
検討が終わったので早速実装してみました。今回は2から始めました。同じものを二枚作る必要があり、先行試作のような感じで自分の技量で作れるかどうかの確認も兼ねています。
Fritzingのおかげで作業の全体像が一応みえてますので、作成した基板ビューを見つつはんだ付け。どの部品からつけるか、線材をどのように差し込んでどれと結線するか、といった実際の作業の段取りは、まだまだ経験不足ですね。結局5時間ほどかかってしまいました。
各コネクタは上の8ピン×2がマトリクス用(左からQ7~Q1)、左右の4ピンがシフトレジスタ信号(上からSRCLR、SER、SRCLK、RCLK)、左右の2ピンが電源用(上からGND、VCC)となっています。この基板を足していくことで、1枚当たりマトリクスを二つ増やせる、という目論見になっています。ただ、今回は全てユニバーサル基板で作成しますが、大量にマトリクスつかうぞ、となったらこの作業量を毎回行うのはできる限り避けたい。パーツ付けてはんだ付けだけで済むようにできるなら是非そうしたいです。
列パターン送出用基板は同一のものを複数使うので、この基板だけでも基板作成サービスに発注するのが現実的ですね。
一応ブレットボードに作ってあった1.行スキャン制御部相当がありましたので、ピン一つ一つあたって動作確認しておきました。一応それっぽく動くようなので、2をもう一つと3を作成しなければ。
また、それぞれの基板を結ぶ接続線を圧着工具で大量につくらねばなりません。
これからが大変ですね…
あれこれパターンをこねくり回して結線できそうで、かつ拡張できそうな感じで基板分割したものが出来上がりました。
基板分割は
1.外部からのデータ入力および行スキャン制御部
2.列点灯パターン送出部
3.LEDマトリクス固定部
という感じにしました。秋月のC基板を使うことにしたのですが、自分の技量と相談し、2がシフトレジスタ2つと抵抗16本その他配線を考えると、これ以上詰め込むのは現時点では無理があります。
検討が終わったので早速実装してみました。今回は2から始めました。同じものを二枚作る必要があり、先行試作のような感じで自分の技量で作れるかどうかの確認も兼ねています。
Fritzingのおかげで作業の全体像が一応みえてますので、作成した基板ビューを見つつはんだ付け。どの部品からつけるか、線材をどのように差し込んでどれと結線するか、といった実際の作業の段取りは、まだまだ経験不足ですね。結局5時間ほどかかってしまいました。
各コネクタは上の8ピン×2がマトリクス用(左からQ7~Q1)、左右の4ピンがシフトレジスタ信号(上からSRCLR、SER、SRCLK、RCLK)、左右の2ピンが電源用(上からGND、VCC)となっています。この基板を足していくことで、1枚当たりマトリクスを二つ増やせる、という目論見になっています。ただ、今回は全てユニバーサル基板で作成しますが、大量にマトリクスつかうぞ、となったらこの作業量を毎回行うのはできる限り避けたい。パーツ付けてはんだ付けだけで済むようにできるなら是非そうしたいです。
列パターン送出用基板は同一のものを複数使うので、この基板だけでも基板作成サービスに発注するのが現実的ですね。
一応ブレットボードに作ってあった1.行スキャン制御部相当がありましたので、ピン一つ一つあたって動作確認しておきました。一応それっぽく動くようなので、2をもう一つと3を作成しなければ。
また、それぞれの基板を結ぶ接続線を圧着工具で大量につくらねばなりません。
これからが大変ですね…
2019年5月25日土曜日
Arduino+74HC595+8×8nマトリクスLED(2)
FritzingとかいうCADを使ってみることにして、8*8LEDマトリクスを3個使った電光掲示板(仮)の回路図というよりも概略図っぽいものを書いてみました。
トランジスタアレイ(TBD62083APG)については標準のダーリントンドライバで代用、ドットマトリクスは公式フォーラムで行側カソードのものを見つけピン配置も一致していたので代用しました。
保護抵抗は適当に330Ωを突っ込んであります。
トランジスタアレイ(TBD62083APG)については標準のダーリントンドライバで代用、ドットマトリクスは公式フォーラムで行側カソードのものを見つけピン配置も一致していたので代用しました。
保護抵抗は適当に330Ωを突っ込んであります。
2019年5月21日火曜日
Arduino+74HC595+8×8nマトリクスLED(1)
なんとなくではあるものの、マトリクス1つならばスクロールもできるようになったので、マトリクスと74HC595(秋月のSN74HC595N)をもう一つ足して8×16で遊んでみることに。
【参考文献】
全ての発端。マトリクスとシフトレジスター。これがいいんです。
https://hadatti.files.wordpress.com/2012/02/8x8matrix_logic_circuit.jpg
ドットマトリクスのピン配置(たまたま同じ型番使ってる方発見。データシートだけではどこが一番ピンかわかんねーんですわ)
http://akagi13213.hatenablog.com/entry/2017/10/22/224406
8*8ドットマトリクス用美咲フォント(これがなければウンザリするほどフォントを手打ちしなきゃいけません。素晴らしいものを公開してくださってありがとう。感謝感激)
http://nuneno.cocolog-nifty.com/blog/2016/03/arduino-e818.html
トランジスタアレイについては、どこのサイトで知ったか忘れました。Arduino直でマトリクス制御しているサイトで、8個分の電流をArduinoの入出力ピンで受け取るとやばいよ!回避するにはトランジスタアレイをつかうんやで、という表記をみたもので…
なぜか各ページのプログラムは参考にせず、自力で書きました(笑)
ただしフォント周りはライブラリになっていたのでさくっと使わせていただきましたよ。
【参考文献】
全ての発端。マトリクスとシフトレジスター。これがいいんです。
https://hadatti.files.wordpress.com/2012/02/8x8matrix_logic_circuit.jpg
ドットマトリクスのピン配置(たまたま同じ型番使ってる方発見。データシートだけではどこが一番ピンかわかんねーんですわ)
http://akagi13213.hatenablog.com/entry/2017/10/22/224406
8*8ドットマトリクス用美咲フォント(これがなければウンザリするほどフォントを手打ちしなきゃいけません。素晴らしいものを公開してくださってありがとう。感謝感激)
http://nuneno.cocolog-nifty.com/blog/2016/03/arduino-e818.html
トランジスタアレイについては、どこのサイトで知ったか忘れました。Arduino直でマトリクス制御しているサイトで、8個分の電流をArduinoの入出力ピンで受け取るとやばいよ!回避するにはトランジスタアレイをつかうんやで、という表記をみたもので…
なぜか各ページのプログラムは参考にせず、自力で書きました(笑)
ただしフォント周りはライブラリになっていたのでさくっと使わせていただきましたよ。
2019年5月14日火曜日
Arduino始めました。
いまさらですが、Arduinoを始めてみました。
この日記では、個人的な覚書に終始して、具体的なプログラムとか回路とかには触れないつもりです。あしからず。
某キャットアイの某キネティックなテールライトのような、ブレーキ掛けたっぽい挙動の時に明るく光るテールライトを作る、という目標を立てました。一応ですよ、一応。
で、初心者はどちらかというと回路とプログラミングのお勉強を兼ねたLEDチカチカということになっています。1本から複数本へと順調にレベルアップし、複数桁の7セグへと順当進化しました。ダイナミック点灯なる概念が出てきてなんとかクリアしたのですが、Arduinoからの信号線が大量に出ていくことになりますね。7セグ(実は小数点込で8セグ)と3桁ですので8+3=11本の信号線が必要になりますが、桁増やしていくといずれArduinoのピンが足りなくなる、機能を維持しつつ減らすことできないの?という疑問が。
調べてみるとまず3to8ラインデコーダという、3ビットを10進数0~7へ置き換えるIC(74HC138)を発見。これを使うとそれなりに信号線が削減できてご満悦、とはならず、原理的に複数セグメントを同時に選択することができないので、せいぜい表示桁の切り替え側に使うことぐらいしかできませんでした。それでも8桁ダイナミック点灯時は、桁切り替えの制御ピンは8本からそれぞれのビット用と制御用の計4本に半減できるのですが。
7セグの制御方法はそれなりに把握したので、次は8×8LEDマトリクスで電光掲示板をば。
これ8行×8列のLEDで構成されていて、8桁7セグと制御方法が似通っているんですね。
こうなると信号線を極力減らしたいということで、調べてみるとシフトレジスタ(SN74HC595N)というICがヒット。これはシリアルでビット列を投げると0~7のピンでそれぞれのビットに対応するものを個別にON/OFFできるというもの。(素直にパラレルに変換って書けばいいのに)
これを使えば同期用信号線と込々で3本ないし4本で制御できます。しかもこのIC自体を直列につないでいくと制御できるピン数が増えていくので願ったりかなったりです。
LED8本接続して使い方を実験してそれなりに把握しました。
これでLEDマトリクスもなんとか制御できそうだ、ということで入手してみると、LEDの配置とピン配置の対応がぐちゃぐちゃになっていました…なにこれ頭悪いorz
フォントを作って表示する関係で、できればシフトレジスタに投げるビット列はマトリックス内のLEDの配置に合わせたものにしたい、のですが…
このぐちゃぐちゃ問題、巷ではどう解決しているんでしょうね?ネット上の作例あたってみても、ぐちゃぐちゃ問題の解決方法はなんか触れられていないような気がするんです。
この日記では、個人的な覚書に終始して、具体的なプログラムとか回路とかには触れないつもりです。あしからず。
某キャットアイの某キネティックなテールライトのような、ブレーキ掛けたっぽい挙動の時に明るく光るテールライトを作る、という目標を立てました。一応ですよ、一応。
で、初心者はどちらかというと回路とプログラミングのお勉強を兼ねたLEDチカチカということになっています。1本から複数本へと順調にレベルアップし、複数桁の7セグへと順当進化しました。ダイナミック点灯なる概念が出てきてなんとかクリアしたのですが、Arduinoからの信号線が大量に出ていくことになりますね。7セグ(実は小数点込で8セグ)と3桁ですので8+3=11本の信号線が必要になりますが、桁増やしていくといずれArduinoのピンが足りなくなる、機能を維持しつつ減らすことできないの?という疑問が。
調べてみるとまず3to8ラインデコーダという、3ビットを10進数0~7へ置き換えるIC(74HC138)を発見。これを使うとそれなりに信号線が削減できてご満悦、とはならず、原理的に複数セグメントを同時に選択することができないので、せいぜい表示桁の切り替え側に使うことぐらいしかできませんでした。それでも8桁ダイナミック点灯時は、桁切り替えの制御ピンは8本からそれぞれのビット用と制御用の計4本に半減できるのですが。
7セグの制御方法はそれなりに把握したので、次は8×8LEDマトリクスで電光掲示板をば。
これ8行×8列のLEDで構成されていて、8桁7セグと制御方法が似通っているんですね。
こうなると信号線を極力減らしたいということで、調べてみるとシフトレジスタ(SN74HC595N)というICがヒット。これはシリアルでビット列を投げると0~7のピンでそれぞれのビットに対応するものを個別にON/OFFできるというもの。(素直にパラレルに変換って書けばいいのに)
これを使えば同期用信号線と込々で3本ないし4本で制御できます。しかもこのIC自体を直列につないでいくと制御できるピン数が増えていくので願ったりかなったりです。
LED8本接続して使い方を実験してそれなりに把握しました。
これでLEDマトリクスもなんとか制御できそうだ、ということで入手してみると、LEDの配置とピン配置の対応がぐちゃぐちゃになっていました…なにこれ頭悪いorz
フォントを作って表示する関係で、できればシフトレジスタに投げるビット列はマトリックス内のLEDの配置に合わせたものにしたい、のですが…
このぐちゃぐちゃ問題、巷ではどう解決しているんでしょうね?ネット上の作例あたってみても、ぐちゃぐちゃ問題の解決方法はなんか触れられていないような気がするんです。
登録:
投稿 (Atom)
ESP32 Devkit C での疑問点
前回の投稿から放置状態にあった当ブログですが、再び何かしら作ろうということで、スマートコンセントもどきに取り組んでいます。 回路なども一応動作するものができたのですが、ブレッドボードから移行するために基板に用意しておいたピンソケットにESP32を取り付けたところ、なぜか動作しま...

-
なんとなくではあるものの、マトリクス1つならばスクロールもできるようになったので、マトリクスと74HC595(秋月の SN74HC595N )をもう一つ足して8×16で遊んでみることに。 【参考文献】 全ての発端。マトリクスとシフトレジスター。これがいいんです。 https...
-
今回はメインテーマであるなんちゃって電光掲示板プロジェクトから少し脱線して、サブテーマ的な「行側制御にシフトレジスタ使うのもったいなくね?」問題について検討します。 【問題点の確認】 今回のなんちゃって掲示板プロジェクトは行側カソードのカソードコモンLEDマトリクスを使用...