投稿

6月, 2019の投稿を表示しています

雑草対策大作戦進行中

イメージ
さて、庭の雑草をどうしようか。いつもの悩みですな。当初は健康的に庭仕事と思っていたのだが、庭仕事をなめていました。汗だくに軽く熱中症で頭痛。グロッキー状態。 つう事で草刈機をつくろうと思います。写真は手作り穴開け機。中国から送ってきたモーターでつくったものですが。当面そのような作業は無いので庭の雑草退治大作戦に抜てきします。 結論、モーターはパワー不足。もっと大きなものじゃなきゃだめ。スチール皿に草刈り用のロープを通して回したが、12Vのスピードでは草は刈れない。絡まって芯に巻き付いてモーターの安全装置が働いて(ポリスイッチ?)ストップ。20Vくらいまで回転数を上げると草も刈れるのだが、モーターの負荷が大きいのか熱が出てくる。しばらくすると安全装置が働く。 樹脂製の草刈刃を ゲットしたので二回りほど大きなモーターに取り付けて再挑戦していますかね。

ESP-WROOM-02を使おうか?

ん〜ATMEGA328P-PUを使うのもイイのだが、ESP-WROOM-02が何個か余っているはずなのでそれを使おうか?それともまずはATMEGA328P-PUで仕上げまで行って、第二弾でESP-WROOM-02で遊ぶか。 あれこれ進まない作業の言い訳を並べてみる。

Arduinoのマイコンを小さくしたい。

イメージ
ん~9956byteか~。ATMEGA328P-PU(arduinoUNO)と同じマイコン石じゃなきゃ焼けない容量。てかまだまだ余裕か。でもあと2000byte減らせられればAttiny85に焼けるんだけどな~。8本脚だけれど、小さなサイズが魅力なんだよなー。 あと2割の減量か~。無理かな??? ? ? ? あれ?Attiny85を2個使てもATMEGA328P-PUよりコンパクトだよな~。マイコンで関数を分配しあって、戻り値を共有できないか?int型の配列をもう一つのマイコンに納めてその中でシャッフルさせて、タイムショックばりの今何曲目的な問い合わせに対し答えを返す。いや直接DFPlayerMiniに働きかけてもらえばそれでいいかも。 あ~だめだ眠たい。今日は降参だわ~。

myMP3Playerがでけた。

イメージ
てか、DFPlayerMiniなんですがね。シリアルで1曲再生を送る。alduinoで曲数分の整数を配列化して、配列要素をシャッフルで混ぜ、1番めの数字を16進数に変換してシリアルでDFPlayerMini(以下DF)に1曲再生指示で送る。再生が終わったかはDFのBUSY PINを参照すればOK。再生されていないことを確認して次の曲の番号を16進数に変換…。の繰り返し。 全曲シャッフル機能がついたDFでなぜそんなことを?となるのだが、DFのシャッフルには癖がある。1曲目は必ずSDに入った順番リストの最初の曲が再生される。1曲飛ばせば解決する問題だろうと飛ばした次の曲は、シャッフルじゃなく2番目に保存した曲だったり。つまりシャッフルリストの参照での曲飛ばしではなく、SDに入った順番リストを参照している感じ。で、MyShuffleをつくる最大の理由は、一度曲を飛ばすとシャッフルには戻ってこずに、そこから先のSDに入った順に再生してしまうこと(1~2度の経験なのでちゃんと確認していません。たまたまかも!?)。いくら安価なPlayerとは言っても、これは譲れない。無いなら作ってしまえ~! いや~これ楽しいは!だってねAlduinoだから結果がすぐに確認できるんですよ。C言語だからネットでの情報が豊富だし、なにより1コインで中国から郵便で届くのがイイ(半月~1か月かかるけど)。留守のときでもポストに入っている手軽さ(ハンコも求められない。最近のアマゾンはそうなの?)。だからと言って制御が簡単な訳でもない。C言語での配列のシャッフル。16進数に変換してシリアルを送信っていう事もなかなか敷居が高い。シリアルはPCとDFヘ2系統必要だったりとそれなりの壁が用意されている。さらにハードの癖も絡んでくるので、すんなりとはいかない。MP3という音楽好きな若者に対するアピール度も含めて、ま~教材にはこれ以上ない優秀さ! まだ問題は残っている。曲替わりの時に次曲を認識しきれないまま(DFの準備が整わない?)、次の曲に移ってしまう感じ。ひどいときには5曲ほど連続でその症状が出るとこがある。たぶん私のプログラムの問題だと思う。もしタイムオーバー的な問題なら試してみたいアイデアがある。アイデアがどう結果に出るのか?結果が楽しみである。  で、そろそろパッケージを考える。ボタ...

眠っていた缶を掘り出す。

イメージ
眠っていた缶を掘り出す。ん~どうも世の中にはDIYで使う容器とか入れ物が足りない気がする。ま~てづくりなのだから写真のようなものを流用でもイイのかもしれないが、かならず誰かとかぶる。しかもかなりの高確率。ん~せっかくの一品なのに納得がいかない。 と言いつつも第1弾はこの缶に納めてみようかとちょっとワクワクもしています。

いつものドはまり。

イメージ
DFPlayerMiniでシャッフル再生させるプログラムもざっくりと骨格はできたのだが、細かい部分がずいぶん残っている。 今回はまったのは曲の番号指定の前半後半を分けるプログラム。例えば1250曲目の指定は12(の16進数)と50(の16進数)に分けてから指定するのだが、intで計算してdoubleの変数へ入れる部分を1行にまとめたのだが、型が違うためうまく代入できていないことにまったく気づかずに二夜にわたって格闘。 解決したので寝る。この部分の仕上げは明日にしよう!

焼き込みをスムーズに

イメージ
Arduinoの焼き込みをスムーズにするためのアイテムを買う。まー、このままではUNOで利用できない。ブレットボードに挿しての利用も、良く考えるとこのアイテムの意味を失うこういうだと気づく。なのでちゃんとUNOに挿さるようにハンダで加工しようと思う。

DFPlayerMiniとArduino

色々ろ忙しくて、すっかりご無沙汰でした。先日の続きを行おうとパソコンに向かうも、次のステップを忘れている。てか、前回の作業内容を忘れてるし。

士幌の森の中にあるレストラン ブーオ

イメージ
士幌町のレストラン ブーオが素敵すぎる。森の中に佇む感じがいい。 カレーライスもうまいわ。 庭の馬もかわいいわー。なでなでに夢中で写真を撮るのを忘れましたー。

StringだったりCharだったり

やっとこ実験成功。16進数の0x3e(例)とかいうテキスト型の数字を数値化するという問題をやっとこ理解することに成功ですな~。まーまだ実験ですがね。 String型の"0x"と乱数から16進数へたどりついた、例えば"3e"を連結。その後Char型に変換して"0x3e"という文字列ができる。これをsscanf()で数値化する。これでやっと仕込みができた感じになる。できたものをDFPlayerMiniに渡す。お~イイ感じ。 あー4桁対応させなきゃならないのか。楽しいことはまだ続く 。

テキストの16進数を数値に変換?

strtol() DFPlayerMiniで16進数を扱う必要がある。詳しくは説明しないが、上記でテキスト形式の16進数を数値化できるらしい。未確認です。 ここをクリアーできれば、残る課題は戻りの信号をシリアル通信でどう受け取るか。である。まー出来んだろう!?できなきゃ、再生中と待機中で変わるピンを監視するしかないかな。

旭川の定食屋さん すず

イメージ
旭川の食堂、スズ。美味い、安い、早い。30年ぶりに行ってきた。建物だけは新しいが、あとはそのままだ。いいわー。地元民お店。 写真のメニューの裏面にはラーメンが350円。客の多くが頼んでいる。あーチキンカツ定食を注文してから気づいた。ラーメンも美味そうだ!

モーターが届く

イメージ
中国から2個目のモーターが届く。あれ?1ヶ月待ちを覚悟していたので半月はスピーディと表現してもイイのではなかろうか。 芯が太い。ビクともしない。これはイイかもしれない。ズッシリと手に伝わる磁石の重たさが高性能を予感させる。よーし!テーブルソーをDIYするぞー!

どハマリ

イメージ
arduinoで10進数から16進数に変換してくれる関数があった。しかし0xが付かないかたちで戻ってくる。うーん。なのでテキストデータで0xがついた16進数を用意してからint形式に変換。しかし、どうやら例えば16進数の3eとかだとムリなご様子。mmm。お手上げ状態。チカラ技で0〜3,000(DFMiniの認識上限)の0x付きの16進数を配列にまとめていっこ一個比較するかー! そういう話を妻との朝飯の話題にしていると、「てかね、arduinoに頼ってねーで、法則を勉強して、法則をプログラムとして表現できるだろう」と妻が言う。ごもっともな意見、というか命令。 無いものは、つくるしかないよね〜。がはは、楽しいい。 結果はまた今度。

シャッフル検証中

イメージ
arduinoで配列の要素数を100個用意してシャッフル。同じシャッフル内容が出ないか監視してみる。pin0でrandomSeed()ってやつを設定する。よくわからないけれど、乱数が文字通りの乱れっぷりになるらしい。このなにもつながっていないpin0がいい具合に乱れているらしい。これがいつも同じ定数だと乱数の内容も毎回同じになり、結果シャッフルの内容も毎回同じになるという理屈らしい。 シャッフルの内容はイイ感じでシャッフルしている感じ。さてと配列のシャッフル機能はとりあえずここまでとして。え~16進数に移りますかね。arduinoって16進数の変換機能ってあるのかしら?あC言語か?

やっとこのシャッフル

イメージ
やっとこシャッフルが完成したのかも。loopの頭にシャッフルの関数を置いています。Cでのシャッフルははじめてです。JavaScriptと同じだろうよ!となめていましたがちょっとめんどかった。要素数が10個なら問題なさそう。各アクセスごとに違う順番になっております。これが数千という単位ならどうなんでしょうね?プログラムで2.5Kのメモリー消費です。 この時点でAttiny10aを使う夢は消えました。

DFPlayerMiniで自分でシャッフルか~進行中。

イメージ
DFの全シャッフルが今一つしっくりこない。曲飛ばして、シャッフルに戻ってこない。 ってことでシャッフルを組むことにする。まず配列。C言語の配列って要素数の削除ってないのかよ!初めて知った。っま、どうでもいい。で毎回変わるシャッフルを用意する。DFは曲を保存した順に数字でリスト化しているようなので、そのリストと配列シャフル数字をひも付けして曲をシャッフル順に選択!が目標。 楽しい。なんでこんなに遊べ500円以下なんだよ!

DFPlayerMiniとAttiny85のちょっとした特徴

イメージ
DFPlayerMiniにNEXTボタン機能を設けた。まー次の曲へ飛ぶのだが、データ上の次の曲に飛んでしまう。私としてはランダム演奏中はランダムリスト内の次の曲に飛んで欲しかった。 あと、Attiny85でもArduinoと同じ内部の抵抗を使ったプルアップ機能は有効だった。普段はHIGHでGNDに落としてLOWってやつね。 あとアナログ入力はpin3が使えた。しかし3と4はシリアルで使っているはずだけど、ボリューム抵抗を繋げて音量調整で使えた。シリアルピンを変えるべきか?ランダム演奏で次の曲へ送る場合は独自ランダムプログラムによるDFPlayerMiniへの問い合わせが不可欠だから、シリアルPin変えるか~。

私のMP3Player

イメージ
DFPlayerMiniをattiny85で制御。目標のSD内の全曲をシャッフル再生する!まではたどり着いた。てか1行の命令を出しただけ。今日は残りの足を有効活用するべくボリューム抵抗を付ける。たしかマイコンを始めたころに遊んだアナログ読みとりテクがあったな。これだとボリュームアップとダウンが一つのピンで済むから…。まーボタンにサイズ違いの抵抗をぶら下げて、それを2組ぶら下げるのと一緒だけどね。 DFの音量は0~30だったのでその30を定数とする。定数30をボリューム抵抗値(0~1023)とかけて、アナログリードの階調性能1023で割る。ただ、もっと便利な関数で比較できる1行があったはず。ま~イイけど。

遊びのAttiny85+DFPlayerMini

イメージ
仕事で覚えたAttiny85(以下85)とDFPlayerMini(以下DF)のコンビがなかなかいい感じで遊べる予感。いやー何てったて制御が楽チンなんですよね。DFが抱えている制御用予約番号をシリアルで送るだけ。機能も豊富なんですよね。例えば全データシャッフルも1行だけの手軽さ。わざわざ曲数をフォルダーおきに問合せて集合に入れて、シャッフルとかヤラなくていいんですな。スゴイやつです。 悩ましいのはシリアルで85のピンが2本使うためVCC、GND、リセットと合わせると残りのピンは3本だけ。ボリュームupとdwnと曲飛ばし。 あっ、そういえばアナログを読む方式の、抵抗値の違いで一つのピンで複数の機能を使いわける方法があったっけ。どうやるんだ?

DFPlayerMiniとArduinoと、なんかのセンサー

イメージ
あら、面白い。効果音という発想はなかった。 DFPlayerMiniとArduinoとなんだ?傾きセンサー?おもちゃの拳銃か?入力Pin別に音データをひもづけか~。ちょっと影響されそうだわ。

こんな感じ。

イメージ
ボタンは音声を切り替えるための手動用。なので撤去。 ハンダは行わない。ただ何かで抑えなきゃハズレちゃうな。 このまま箱にいれよう。コードは余長を取って箱内で固定だな。 UNOが余っちゃったな。ま~開発用に会社に常備しましょう。てか収めるものとしてAttiny85よりUNOの方が説得力あるのな~。手を抜いたと思われるのだろうな~きっと。

G+

イメージ
とか とか とか などなど色々G+でひとり遊んでいたのですが、どうも引越し先が定まらない。フェイスブックとインスタグラムは意味もなく避けている状態。ツイッターのアカウントは放置状態。なんとか言うサービスに手を出すもすぐに飽きてしまってお試し失敗状態。 結局このブログで日記をつくることにする。しばらくはここでひとり遊びだな。

焼き焼き作業

イメージ
Attiny85と13を焼く環境はいつものArduinoUNOです。前はブレットボードを利用していましたが、なんども抜き差ししているうちに接触が悪くなります。その内、高確率で焼き込み失敗を招くようになります。そうなるとプログラムで失敗し、焼き込みでも失敗という二重苦に襲われてしまいます。いずれリズムを崩し、やる気すら失います。 写真は、そうならないための工夫です。Attinyの8本足用です。先日の音声案内ですらおそらく100回程度は抜き差しを繰り返していたとおもわれます。(一晩に10回×1週間+土日のα) 100円程度の手作り道具ですがお値段以上の働きをしてくれます。

Attiny85でDFPlayerMini

イメージ
やっとでけた。Attiny85でDFPlayerMiniのシリアルコントロール。タイマーにてこずる。てかAttniy85におけるTimerOneってバクってない?0.5秒ピッチしか使えねーかも!?まー使えないより全然イイけれど、強電側から無電圧信号を頂けるのでタイマーは無しでよくなった。さらにコンセント電源のOnOffも強電側でコントロールしてくれるって~ので、マイコンの強みでそれがすなわち音声案内の自動でOnOffってことですな。 ハマりにはまったのはAttiny85でのシリアルをどうするか?ってところね。ハードのシリアル機能は無いのだからソフトシリアルになるんでしょうけれど、これがよくわからない。ちゃんとシリアルが機能しているのか確認したくても85だけじゃ無理。なのでUSBシリアル変換モジュールでパソコンとつなげてシリアルの動きを監視。げげげ、動きがまったくない。どうやら1MHzの内部クロックではシリアルが動いてくれないみたい。内部クロックを8MHzに変更。これでやっとシリアルと仲良くなれた。あとはArduinoのDFPlayerMiniのページにあるスケッチを理解すれば吉ですな。 これでUnoバージョンとAttiny85バージョンの2パターンを用意でけた。