DSMainR5のOLEDの話 その2 [DSmainR5]
さて、だれも教えてくれなさそうなので、一昨年買ったAmazonで買ったOLED(1.3インチ)を使えるようにしていきたいと思います。
説明書はこちらのようです。
ということで、まずは、貧乏でいいのを組み立てて、I2Cでつないで。DSMainR5のスケッチをArduinoUnoとして、使ってみます。まあ、こうなります。
スケッチをいろいろにらめっこしたり、いろんなところのサンプルを見た後、よくわかりませんが、Yaasan様が言うように2ドットXがずれているだけかなあと思い、
OzOLED.cppのvoid OzOLED::setCursorXY(byte X, byte Y)関数の中身でXを指定している
sendCommand(0x00 + (8*X & 0x0F)); //set column lower address
sendCommand(0x10 + ((8*X>>4)&0x0F)); //set column higher address
→
sendCommand(0x00 + ((8*X+2) & 0x0F)); //set column lower address
sendCommand(0x10 + (((8*X+2)>>4)&0x0F)); //set column higher address
(18.08.12修正)
としたら、あっさり普通に表示されるようになりました。
深くは考えずにこれで解決とします。下記のようにちゃんと表示されています。
で、DSMainR5のNanoスケッチに入れて、ちゃんと表示されることを確認して、
ケースの前面を加工するために、どのくらいが表示領域かを確認するため、OLED表示を反転させます。
やり方は、
DSMeister.inoのvoid setup()関数内の
LCD.setNormalDisplay(); //Set display to Normal mode
→
LCD.setInverseDisplay();
と命令を差し替えます。
これに合わせて、ケースの加工のためにケースをマーキングしていきます。
で、ホットナイフで大まかに加工します。
OLEDで現物合わせし、もうちょっと加工します。
で、仮止め用に両面テープをOLEDに貼ります。
で、OLEDを前面ケースに貼って、お決まりのようにセメダインスーパーXを横から盛って、固まるまで数時間待ちます。
で、完成です。
まずは、OLEDを反転表示させたとき。
次に、通常表示。
表示窓は大きくなりましたが、個々の文字は小さくなりました。
文字をすべて16ポイントで表示するとかできたら、もっと見やすいですかねえ?
(そして文字数が少なくなって液晶と変わらなくなるとかいうオチ?)
なお、スマイラー様が1.3インチ用ケースをYaasan様が持っているんじゃないか?とコメントしてくれた時分、すでに、ケースは加工済みでした。
説明書はこちらのようです。
ということで、まずは、貧乏でいいのを組み立てて、I2Cでつないで。DSMainR5のスケッチをArduinoUnoとして、使ってみます。まあ、こうなります。
スケッチをいろいろにらめっこしたり、いろんなところのサンプルを見た後、よくわかりませんが、Yaasan様が言うように2ドットXがずれているだけかなあと思い、
OzOLED.cppのvoid OzOLED::setCursorXY(byte X, byte Y)関数の中身でXを指定している
sendCommand(0x00 + (8*X & 0x0F)); //set column lower address
sendCommand(0x10 + ((8*X>>4)&0x0F)); //set column higher address
→
sendCommand(0x00 + ((8*X+2) & 0x0F)); //set column lower address
sendCommand(0x10 + (((8*X+2)>>4)&0x0F)); //set column higher address
(18.08.12修正)
としたら、あっさり普通に表示されるようになりました。
深くは考えずにこれで解決とします。下記のようにちゃんと表示されています。
で、DSMainR5のNanoスケッチに入れて、ちゃんと表示されることを確認して、
ケースの前面を加工するために、どのくらいが表示領域かを確認するため、OLED表示を反転させます。
やり方は、
DSMeister.inoのvoid setup()関数内の
LCD.setNormalDisplay(); //Set display to Normal mode
→
LCD.setInverseDisplay();
と命令を差し替えます。
これに合わせて、ケースの加工のためにケースをマーキングしていきます。
で、ホットナイフで大まかに加工します。
OLEDで現物合わせし、もうちょっと加工します。
で、仮止め用に両面テープをOLEDに貼ります。
で、OLEDを前面ケースに貼って、お決まりのようにセメダインスーパーXを横から盛って、固まるまで数時間待ちます。
で、完成です。
まずは、OLEDを反転表示させたとき。
次に、通常表示。
表示窓は大きくなりましたが、個々の文字は小さくなりました。
文字をすべて16ポイントで表示するとかできたら、もっと見やすいですかねえ?
(そして文字数が少なくなって液晶と変わらなくなるとかいうオチ?)
なお、スマイラー様が1.3インチ用ケースをYaasan様が持っているんじゃないか?とコメントしてくれた時分、すでに、ケースは加工済みでした。
2018-01-14 20:27
コメント(0)
raspi zero wでカメラを動かしWifi経由で配信するメモ [その他]
へのへのもへじさんがやっているraspiでカメラを私もやりました。なんか、Linuxってわからないので、大変です。
私のほうは、Raspbian Jessie Liteというやつでやっています。
いろいろな人のページを見ましたが、以下の感じです。
Raspbian Jessie Liteをインストールします。
このページの右下のLiteのZIPファイルです。
で、SDカードをフォーマットします。
こちらのページのやつが公式だそうで、それでやります。
クイックフォーマットしておきました。
RaspberryのZIPファイルは解凍したらImgファイルなので、SDカードに展開しないとです。
win32diskimagerというソフトを使いました。
で、SDカードにIMGファイルを展開します。
私も、キーボードやディスプレーを使わない方法でインストールしました。
こちらのページを参考にします。
WindowsでSDカード内のconfig.txtとcmdline.txtを編集します。私はVisualStudioを使用しました。メモ帳だと、改行が変なので。
sshというファイルも作っておきます。(じゃないとTeraTermからの接続でエラーが出てつながらない。ここは、はまりました)
で、Windowsから通信するための怪しいドライバをいくつか入れて、SDカードをRaspiに挿して、起動します。
あとはTeratermもインストールしてRaspiと通信します。
パスワードはraspberryなのだがrasberryだと勘違いしていて、はまりました。
TeraTermでログイン出来たら、こちらのページを参考に、Wifiの設定をします。
wifiの設定まで終わったら、Wifi経由でTaraTermでつながるようになります。
で、
$ sudo apt-get update
$ sudo apt-get upgrade
とやって、とりあえずraspiの中身をなんとな最新にしておきます。これをやらないと、カメラの配信部分で、makeがうまくいきませんでした。
で、こちらのページを参考にカメラの設定をしますが、メニュー構造がかなり変わってしまっています。
私がやった感じでは、
$ sudo raspi-config
とやり、
5 interfacing option を選び
P1 CameraをYesにします。
で、再起動します。
次にこちらのページを参考に、カメラの配信の設定をします。
”配信方法1-mjpg-streamer"のところをそのままやっていきます。で、
注意ですが、git は最初インストールされていないので先に
$ sudo apt-get install git
とやってgitをインストールしないと引っかかります。
ここまでやったらmjpg-streamer-experimentalフォルダで
$ ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 1280 -y 720 -fps 30 -q 10"
とやれば、カメラから配信され、
PCのChromeブラウザで
http://XXX.XXX.XXX.XXX:8080/?action=stream
とやってやると、普通に動画は見れました。xxxはIPアドレス。
Androidのスマホからも普通にChromeで動画を見れました。
IPアドレスは
ifconfigのコマンドで見れます。
よくわかりませんが、さっきのこちらのページを参考にsambaを立ち上げておくと、
ブラウザから
http://raspberrypi:8080/?action=stream
で動画が見られるようになりましたが、なぜかは良くわかりません。
(その後また見れなくなったりでよくわからん)
なんか、この調子でいけば、Tomixのカメラカー状態まではできそうなことが分かりましたが、
これにDCCのギミックとかを入れていけるのか?、とかなり不安になる意味不明さです。
大体、インストールの手順が難しすぎる気がしますし。
で、まあ、単なるWebカメラですが、
このレイアウトの手前にRaspiZeroWを付けました。
カメラ自体はこんな感じで、USBも刺さっていますが、これは5V供給しているだけです。
で、まあ動画ですが、電車に載せないと、あまり面白くもなんともないですね・・・。
私のほうは、Raspbian Jessie Liteというやつでやっています。
いろいろな人のページを見ましたが、以下の感じです。
Raspbian Jessie Liteをインストールします。
このページの右下のLiteのZIPファイルです。
で、SDカードをフォーマットします。
こちらのページのやつが公式だそうで、それでやります。
クイックフォーマットしておきました。
RaspberryのZIPファイルは解凍したらImgファイルなので、SDカードに展開しないとです。
win32diskimagerというソフトを使いました。
で、SDカードにIMGファイルを展開します。
私も、キーボードやディスプレーを使わない方法でインストールしました。
こちらのページを参考にします。
WindowsでSDカード内のconfig.txtとcmdline.txtを編集します。私はVisualStudioを使用しました。メモ帳だと、改行が変なので。
sshというファイルも作っておきます。(じゃないとTeraTermからの接続でエラーが出てつながらない。ここは、はまりました)
で、Windowsから通信するための怪しいドライバをいくつか入れて、SDカードをRaspiに挿して、起動します。
あとはTeratermもインストールしてRaspiと通信します。
パスワードはraspberryなのだがrasberryだと勘違いしていて、はまりました。
TeraTermでログイン出来たら、こちらのページを参考に、Wifiの設定をします。
wifiの設定まで終わったら、Wifi経由でTaraTermでつながるようになります。
で、
$ sudo apt-get update
$ sudo apt-get upgrade
とやって、とりあえずraspiの中身をなんとな最新にしておきます。これをやらないと、カメラの配信部分で、makeがうまくいきませんでした。
で、こちらのページを参考にカメラの設定をしますが、メニュー構造がかなり変わってしまっています。
私がやった感じでは、
$ sudo raspi-config
とやり、
5 interfacing option を選び
P1 CameraをYesにします。
で、再起動します。
次にこちらのページを参考に、カメラの配信の設定をします。
”配信方法1-mjpg-streamer"のところをそのままやっていきます。で、
注意ですが、git は最初インストールされていないので先に
$ sudo apt-get install git
とやってgitをインストールしないと引っかかります。
ここまでやったらmjpg-streamer-experimentalフォルダで
$ ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 1280 -y 720 -fps 30 -q 10"
とやれば、カメラから配信され、
PCのChromeブラウザで
http://XXX.XXX.XXX.XXX:8080/?action=stream
とやってやると、普通に動画は見れました。xxxはIPアドレス。
Androidのスマホからも普通にChromeで動画を見れました。
IPアドレスは
ifconfigのコマンドで見れます。
よくわかりませんが、さっきのこちらのページを参考にsambaを立ち上げておくと、
ブラウザから
http://raspberrypi:8080/?action=stream
で動画が見られるようになりましたが、なぜかは良くわかりません。
(その後また見れなくなったりでよくわからん)
なんか、この調子でいけば、Tomixのカメラカー状態まではできそうなことが分かりましたが、
これにDCCのギミックとかを入れていけるのか?、とかなり不安になる意味不明さです。
大体、インストールの手順が難しすぎる気がしますし。
で、まあ、単なるWebカメラですが、
このレイアウトの手前にRaspiZeroWを付けました。
カメラ自体はこんな感じで、USBも刺さっていますが、これは5V供給しているだけです。
で、まあ動画ですが、電車に載せないと、あまり面白くもなんともないですね・・・。
2018-01-14 00:03
コメント(2)
DSMainR5のOLEDの話 [DSmainR5]
DSMainR5でOLED対応したとのことで、そういえばうちにも昔買ったOLEDあったなあと思いながら試してみました。(そして失敗しました。)
いちおう、その話をしておきます。
まずは、スケッチをダウンロードしてきて、R5用に
MSensor.cppの157行目を
aCurrent = (aCurrent * 125) / 427;
から
aCurrent = (aCurrent * 125) >> 8;
に変更します。
で、スケッチをNanoにして書き込みます。
ハードですが、改造前はバックライト付きLCDなので、こんな感じ。
前面パネルを外すと(ここまでが大変で、ボリュームを高級品にしていたせいで、つまみを取るのにインチサイズのアーレンキーが必要で、部屋中を探しまわって一時間浪費・・・。)
液晶が取れないように合成ゴム系接着剤で補強接着していました。
で、カッターで切って、爪で剥がして、きれいにしました。
そして、I2CのOLEDをはめて、12V電源を入れたら、こんな感じです。なんか、左側が切れていて、右側はバグっている・・・。
で、パネルにはめてみたら、こんな感じで、画面がはみ出ている!
改造されている方の記事を見ても、液晶の窓を加工したとの記述はない。ということで、秋月のOLEDを確認したら、0.96インチと書いてあり、なんか大きさが30mm角無い。私のを測ってみたら縦約35㎜角ぐらいあり、アマゾンでのお買い物履歴から確認したら、どうやら1.3インチの物を買っていたようです。
さて、画面の左端が切れてて、右端が白い原因でも探るか?と思ってデータシート眺めてみましたが、ちょっとわかりませんでした・・・。
いちおう、その話をしておきます。
まずは、スケッチをダウンロードしてきて、R5用に
MSensor.cppの157行目を
aCurrent = (aCurrent * 125) / 427;
から
aCurrent = (aCurrent * 125) >> 8;
に変更します。
で、スケッチをNanoにして書き込みます。
ハードですが、改造前はバックライト付きLCDなので、こんな感じ。
前面パネルを外すと(ここまでが大変で、ボリュームを高級品にしていたせいで、つまみを取るのにインチサイズのアーレンキーが必要で、部屋中を探しまわって一時間浪費・・・。)
液晶が取れないように合成ゴム系接着剤で補強接着していました。
で、カッターで切って、爪で剥がして、きれいにしました。
そして、I2CのOLEDをはめて、12V電源を入れたら、こんな感じです。なんか、左側が切れていて、右側はバグっている・・・。
で、パネルにはめてみたら、こんな感じで、画面がはみ出ている!
改造されている方の記事を見ても、液晶の窓を加工したとの記述はない。ということで、秋月のOLEDを確認したら、0.96インチと書いてあり、なんか大きさが30mm角無い。私のを測ってみたら縦約35㎜角ぐらいあり、アマゾンでのお買い物履歴から確認したら、どうやら1.3インチの物を買っていたようです。
さて、画面の左端が切れてて、右端が白い原因でも探るか?と思ってデータシート眺めてみましたが、ちょっとわかりませんでした・・・。
2018-01-13 13:59
コメント(4)
SmileDecoderR6n用の音(サウンドオプション) [ds-DCCデコーダ]
12月になごでん様からR6n用にスマイルデコーダのサウンドオプション使えるようにしたいとの話がありました。で、やっととりあえず作りました。
実験環境はこんな感じです。デコーダ開発ボードにアンプ基板386と秋月の大きなスピーカーをつないで実験です。なお、対策はしたのに、16kHzのピークが周波数解析で聞こえたので、ちょっとどうしようかという感じではあります。
動画はこんな感じです。
スケッチはこちらです。MP3V5_SO1でSOはSoundOptionの略です。
音ファイルは、スマイルデコーダのサウンドオプションあたりを眺めて作ってください。
音のスケッチへの統合は、VVVF_sound.cppの最初のあたりで、いまのところ4つ並べています。
を自分のオリジナルに差し替えれば自分の好きな音を鳴らせます。
ただし、容量はかなり小さいのでお気を付けください。
あと、サンプリング周波数は8kHzにしています。
227行目の
if(flg == 0x03) //4回に1回だけ値を変更32kHZ→8kHz
を
if(flg == 0x01)
とすると、16kHz
if(flg == 0x07)
にすると4kHzとかに変えられます。
ファンクションの割り当ては現在F3~F6としていますが、
MP3V5_SO1.inoの522行目の
VVVF_Cont(gFuncBits[3] | (gFuncBits[4] << 1) | (gFuncBits[5] << 2) | (gFuncBits[6] << 3));
を変えてやれば、ほかのファンクションに割り当てできます。
以上です。
実験環境はこんな感じです。デコーダ開発ボードにアンプ基板386と秋月の大きなスピーカーをつないで実験です。なお、対策はしたのに、16kHzのピークが周波数解析で聞こえたので、ちょっとどうしようかという感じではあります。
動画はこんな感じです。
スケッチはこちらです。MP3V5_SO1でSOはSoundOptionの略です。
音ファイルは、スマイルデコーダのサウンドオプションあたりを眺めて作ってください。
音のスケッチへの統合は、VVVF_sound.cppの最初のあたりで、いまのところ4つ並べています。
#include "E233_Alert1.h" #define WAV_DATA1 E233_alert1_data #define WAV_LENGTH1 E233_alert1_length
を自分のオリジナルに差し替えれば自分の好きな音を鳴らせます。
ただし、容量はかなり小さいのでお気を付けください。
あと、サンプリング周波数は8kHzにしています。
227行目の
if(flg == 0x03) //4回に1回だけ値を変更32kHZ→8kHz
を
if(flg == 0x01)
とすると、16kHz
if(flg == 0x07)
にすると4kHzとかに変えられます。
ファンクションの割り当ては現在F3~F6としていますが、
MP3V5_SO1.inoの522行目の
VVVF_Cont(gFuncBits[3] | (gFuncBits[4] << 1) | (gFuncBits[5] << 2) | (gFuncBits[6] << 3));
を変えてやれば、ほかのファンクションに割り当てできます。
以上です。
2018-01-06 15:43
コメント(2)
航空科学博物館に行った [その他]
昨日は子供と久しぶりに遠出しました。
成田空港の近くの航空科学博物館です。
外にこんな感じに飛行機が並んでて、中にはB747のエンジンとかが展示されていました。
なんか、どこかで見たミサイルの名前のような飛行機もありました。
懐かしのYS11です。昔、子供のころ離島に住んでいたこともあり、毎年これに乗って東京に出かけましたが、雲を通過するごとに激しく揺れるし、プロペラの音はうるさいし、スピードは遅いし、良くない思い出がいっぱいだったりします。とはいえ、とても懐かしいなあと思いながら写真をいっぱい撮っておきました。
館内はB747でいっぱいでしたが、着陸する飛行機にはB747はあまりありませんでした。一応大韓航空機が飛んできたので、撮っときました。
フライトレーダー24とかいうスマホのアプリで、全世界の飛行機の位置がリアルタイムで見られるので、次に着陸するのがどの飛行機で、どっちの滑走路というのが分かるので、とても便利です。そして、一日中見てても飽きません。電車でこういうのないのかなあと思います。
飛行機を押したり引っ張ったりする車は初めて間近で見ました。車高がとっても低かったです。
博物館よりも、近くのひこうきの丘のほうが間近で飛行機を見られました。
せっかくだからA380を見たかったです。(調べずに行ったので見られませんでした。)
成田空港の近くの航空科学博物館です。
外にこんな感じに飛行機が並んでて、中にはB747のエンジンとかが展示されていました。
なんか、どこかで見たミサイルの名前のような飛行機もありました。
懐かしのYS11です。昔、子供のころ離島に住んでいたこともあり、毎年これに乗って東京に出かけましたが、雲を通過するごとに激しく揺れるし、プロペラの音はうるさいし、スピードは遅いし、良くない思い出がいっぱいだったりします。とはいえ、とても懐かしいなあと思いながら写真をいっぱい撮っておきました。
館内はB747でいっぱいでしたが、着陸する飛行機にはB747はあまりありませんでした。一応大韓航空機が飛んできたので、撮っときました。
フライトレーダー24とかいうスマホのアプリで、全世界の飛行機の位置がリアルタイムで見られるので、次に着陸するのがどの飛行機で、どっちの滑走路というのが分かるので、とても便利です。そして、一日中見てても飽きません。電車でこういうのないのかなあと思います。
飛行機を押したり引っ張ったりする車は初めて間近で見ました。車高がとっても低かったです。
博物館よりも、近くのひこうきの丘のほうが間近で飛行機を見られました。
せっかくだからA380を見たかったです。(調べずに行ったので見られませんでした。)
2018-01-06 15:06
コメント(2)