実験室 » Arduino » この記事

ここ最近やってみた工作の練習(4)

ロボット工作でいずれ何かに応用できるのを期待してこのごろ演習をした内容(4)。

 

前回行き詰まっていたところをひつこく調べてみました。

 

やっぱり、記事の指定する8ビット双方向ロジックレベル変換モジュール FXMA108(秋月電子の通販コード(M-04522))を使うと、
ソフトシリアルが出てこなかったので(外すと出てくる)、以前DSPラジオを作る時にアマゾンで買っておいて余った(HiLetgo IIC I2C ロジック レベル 変換 双方向モジュール 5V Arduinoに対応)中華ロジック変換モジュールでやってみました。

 

下の写真の構成で、記事のとおり

 

20171124a

 

(Arduinoと数百円のWi-Fiモジュールで爆安IoTをはじめよう)
https://ics.media/entry/10457

 

LEDのオンオフの切り替えが出来ました。

 

(備忘録)アルディーノからでたRXとTXは、WROOMで受ける時、逆にしないといけない。RX->TX、TX->RX。クロス接続になる。

ここ最近やってみた工作の練習(3)

ロボット工作でいずれ何かに応用できるのを期待してこのごろ演習をした内容(3)。

 

2.ArduinoからESP-WROOM-02(Wifiモジュール)のシリアル通信を経由して、サーバーにデータを書き込む練習。
BlueToothでのシリアル通信は、以前できたので、今回はWifiで接続実験を練習しました。いずれ、Unity+Wifi+Arduinoの組み合わせで何か作りたいものです。が、今は単体の練習をしないとね。

 

最初は、こちらの記事で練習していたんですが、

 

(Arduinoと数百円のWi-Fiモジュールで爆安IoTをはじめよう)
https://ics.media/entry/10457

 

3ページ目の、ATコマンドで通信速度を設定のところで行き詰まってしまいました。(ノД`)シクシク
どうも指定されている[8ビット双方向ロジックレベル変換モジュール FXMA108]のところで、コケたらしくて、指定通りにしても「goodnight moon!」のまま先に進みませんでした。ソフトウェアシリアルのオブジェクトmySerialの出力をリード線で、0,1ピンに入れてあげると、アルディーノのシリアルモニタに値が出てくるので、オブジェクトは出来ているのが確認できますが、Wifiモジュールに届いていないみたいです。これに関しては、またのちのち調べることにしようかと思います。

 

で、わからんものはわからんので、もうちょっと簡潔に実験してるところを探してみたら、「おもちゃラボ」にいい塩梅に実験記事が載っていたのでそちらをやってみました。これはほぼうまくいったので、興味があったら皆さんもやってみると面白いかと思います。

 

(【Arduino】ESP-WROOM-02( ESP8266 )を使ってWifiで無線通信する )
http://nn-hokuson.hatenablog.com/entry/2017/04/09/091148

 

ロジックボード無しでやると、記事の「ESP-WROOM-02の通信速度を9600bpsまで下げる必要があります」というところの処理部分も引っかかること無くクリアできました。(mySerialが取得できてて、”Hellow, world?”が出力される)

 

20171123_w400h300

 

(´・ω・`)ただー、最後のtest.phpの中で、5行目$filenameってありますが、これでデータファイル開けるものなのでしょうか?自分はなんかうまくいかないので、別の変数を起こして、

 

$readfile = ‘data.txt';
のようにして、

 

$contents = fread($fp, filesize($readfile));

 

と書き換えて、期待する動きになりましたが。うーん?

ここ最近やってみた工作の練習(2)

ロボット工作で(?)いずれ何かに応用できるのを期待してこのごろ演習をした内容(2)。

 

gccをPCに入れてみました。今やVisualStudioで、まとめてなんでもやってくれて便利なのでいらないといえばいらないのかもしれないですが。基礎をやっておくのはいいことだと思いましたので。

 

参考は、こちら

 

(Cプログラミングを用いた数値計算のページ)
http://sa.eei.eng.osaka-u.ac.jp/tatsumi/tani_prog/HOWTOprogC/split.htm

 

阪大の研究室のページなのかな。この中の記事の分割コンパイルのところを読んで練習しました。末尾の#ifdef,#defin,externの使い方の解説はとてもわかり易かったので、理解の整理に役立ちました。

(さらに…)

ここ最近やってみた工作の練習(1)

ロボット工作でいずれ何かに応用できるのを期待してこのごろ演習をした内容(1)。

 

1.UnityとArduino間でのシリアル通信
Androidスマホから自走ロボに、ブルートゥースモジュール経由でシリアル通信してコマンドを送り込むというのは以前作ったもので一応出来たので、次はUnityアプリとArdunio間での通信ができたらいいなと思い、参考プログラムを練習しました。「おもちゃラボ」のこの記事の内容をやってみました。

 

(UnityでArduinoとシリアル通信をする )
http://nn-hokuson.hatenablog.com/entry/2016/07/26/205745

 

内容もシンプルだし、cdsセンサーが手元にあれば事足ります。記事の内容で特に行き詰まったところもなかったので、お薦めしたいです。

 

20171121_w400h300

DSPラジオを作ってみた

液晶にラジオ局の周波数を表示させるラジオを作りたいなと前から思っていまして、ネットでこれならなんとか出来そうだという例を見つけたので作ってみました。

 

ブレッドボード上では、それなりに鳴ってくれたのに気を良くしていつものようにユニバーサル基盤に移植したんですが、そこからが大変で、期待よりも低性能なラジオが出来上がりました。かなりがっかりです(´・ω・`)

 

20170915a

 

見切り発車でギリギリいっぱいに詰め込んだ結果、レイアウトに大幅な狂いがでて、箱が穴だらけになるとか満身創痍です。やっぱり初めてのは痛々しい。次回はもうちょっと手順を見直さないといけないと反省しました。もっともしばらく作りたくないですが…。

 

以下は、どこのサイトを参考にしたかとか作っていて、気づいたこととかの覚書です。

 

(さらに…)

最近作ったもの(2) -電子工作-

もう一つ作りました。

 

ずっと前に作った、アルディーノで制御する三輪ライントレース車をタンクタイプに改造して、AndoroidスマホとBlueTooth機器を使ってシリアル通信化しました。

 

20170614b

 

新たに購入した、タミヤのタンク基本セットとオプションのユニバーサル基板セットに2000円ぐらいかかっています。

 

BlueToothの部品は、「HC-06」になります。

 

前にも同じように、BlueToothモジュールを介してシリアル通信ができないものかとやった覚えがあるのですが、その時は失敗してます。今回は、いきなりアルディーノタンクにHC-06をのっけて実験するのは止めにして、以下のブログさんの記事を参考に前実験してみました。

 

[curious4dev ]
http://curious4dev.mydns.jp/post-1354/

 

シンプルに説明してくれているので、とてもわかり易くて助かりました。
で、下のような感じで真似をして…

 

20170614c

 

うまくいきました。うまくいったのでこちらのプログラムとライントレース用のプログラムを、組み合わせて走らせてみます。

 

取得したアスキー文字をswitch文で振り分けてあげればいいだけなので、一定速度で一定方向にただ動かすだけのシンプルなものなら、以下のコードで動きました。

 

[CMascot.h]

// スマホとブルートゥース(シリアル)通信で、やり取りするタンクプログラム[2017.06](完成版)

// Bluetooth通信ライブラリ
#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11);

void setup() {
  
  // [1] アルディーノ側初期設定
  Serial.begin(9600);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);   // アナログ値出力 (0~255 まで負の値不可)
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);   // アナログ値出力 (0~255 まで負の値不可)

  // [2] HC-06 側初期設定
  BT.begin(9600);
}

void loop() {
  // ローカル変数
  char a;  // 受信した値を格納(アルディーノのswitch文では、文字型も受付るが、'A'は、65と解釈されるので文字列の数値も値が'1'は49 '0'は48と解釈される)
  
  // Bluetooth 受信処理
  if (BT.available()) {
    a = (BT.read());

    // Case文
    switch(a){

/* TestCode
      case 48:
        BT.println("0 commaned about 48");
        break;
      case 49:
        BT.println("1 commaned about 49");
        break;
      case 1:
        BT.println("1 commaned about 1");
        break;
      case 0:
        BT.println("0 commaned about 0");
        break;        
*/


      case 49:  // 前進
              
        // 左モーター制御(正転)
        digitalWrite(7, HIGH);
        digitalWrite(8, LOW);
        analogWrite(9, 255);
        // 右モーター制御(正転)
        digitalWrite(4, HIGH);
        digitalWrite(5, LOW);
        analogWrite(6, 255);
 
        delay(10);
        BT.println("Foward Commanded!");
        break;
        
      case 50: // 後退 [moter(); 内で、左右モーターを逆転させ、かつ最大出力とする]

        // 左モーター制御(逆転)
        digitalWrite(7, LOW);
        digitalWrite(8, HIGH);
        analogWrite(9, 255);
        // 右モーター制御(逆転)
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        analogWrite(6, 255);
        
        delay(10);
        BT.println("Back Commanded!");
        break;
        
      case 51:  // 停止
      
        // 左モーター制御
        digitalWrite(7, LOW);
        digitalWrite(8, LOW);
        analogWrite(9, 0);
        // 右モーター制御
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        analogWrite(6, 0);

        delay(10);
        BT.println("Stop Commanded!");
        break;
        
      case 52:  // 前進しながら右旋回
      
        // 左モーター制御(正転)
        digitalWrite(7, HIGH);
        digitalWrite(8, LOW);
        analogWrite(9, 255);
        // 右モーター制御(正転)
        digitalWrite(4, HIGH);
        digitalWrite(5, LOW);
        analogWrite(6, 80);
            
        delay(10);
        BT.println("Foward and Right Commanded!");
        break;
        
      case 53:  // 前進しながら左旋回

        // 左モーター制御(正転)
        digitalWrite(7, HIGH);
        digitalWrite(8, LOW);
        analogWrite(9, 80);
        // 右モーター制御(正転)
        digitalWrite(4, HIGH);
        digitalWrite(5, LOW);
        analogWrite(6, 255);
        
        delay(10);
        BT.println("Foward and Left Commanded!");
        break;
        
      case 54:  // 信地旋回(右) [moter(); 内で、左モーターを正方向に。右モーターを逆方向にして、最大出力]

        // 左モーター制御(正転)
        digitalWrite(7, HIGH);
        digitalWrite(8, LOW);
        analogWrite(9, 255);
        // 右モーター制御(逆転)
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        analogWrite(6, 255);
    
        delay(10);
        BT.println("Rapid Right Commanded!");
        break;
        
      case 55:  // 信地旋回(左) [moter(); 内で、右モーターを正方向に。左モーターを逆方向にして、最大出力]

        // 左モーター制御(逆転)
        digitalWrite(7, LOW);
        digitalWrite(8, HIGH);
        analogWrite(9, 255);
        // 右モーター制御(正転)
        digitalWrite(4, HIGH);
        digitalWrite(5, LOW);
        analogWrite(6, 255);
    
        delay(10);
        BT.println("Rapid Left Commanded!");
        break;

      default:
        break; 
    }

  }
}




 

あんまり複雑なことは出来ません。動作を変えるのに、都度ターミナルからコマンドを送り込まないといけないので。ですが、プロトタイプとしてはこれでも十分ではないかと思います。

最近作ったもの(1) -電子工作-

電子工作の続き。

前に作った、ミニアンプは、ブレッドボード上に配置して動いたところで、うっちゃっておいたのですが、そのまま放置しておくとホコリがのったり場所とったりして困るので、ユニバーサル基板に移植して箱に収納しました。

 

20170614a

 

筐体に使ったのは、セリアで売ってる、「フタ付きケースCube」です。上部に蓋があるので、メンテナンスが楽なのと、半透明なので電源を入れたときに、基板上のLEDが点灯して、半スケルトンの箱の中から滲んで光ってるので都合がよろしいです。

 

20170614d

 

スピーカー部分は、秋月で100円で売ってる本体を、これもセリアで買ったブックスタンドに、ドリルで穴開けて、ネジ止めしたものをつけてます。これらをまとめてたもろもろをこれまたセリアで買った100円の収納ボックスにいれて、押し入れに収納しました。セリアさまさまです。

ステレオアンプの製作

電子工作は失敗から学べ!
後閑 哲也 (著)

 

に掲載されている作例を作成しました。今度は、5章の内容ですね。

 

材料費は、これも千円~二千円の範囲で収まりました(スピーカーはむき出し)。

 

今回も特に難しいところは無かったと思いますが、TDA7052Bの脚が付いてるDIPものを見つけられなかったので、変換基板と別々に買ってきて半田づけしました。大体の部品は、秋月とaitendで調達できたと思います(フィルムコンデンサはラジオ会館で買いました)。スピーカーは、秋月で指定の10Wのものが、セットで500円だったので買いました。aitendだと2つで700円ぐらいだったと思います。後で、むき出しのスピーカーを箱に収納することを考えているのなら、二千円ぐらいで対応するスピーカーボックスも売っていたので、その場合はaitendで買ったほうがいいかもしれませんね。

 

20161210b

 

前回作ったFMラジオを早速接続して聞きました。スピーカーはむき出しのままですが、結構大きな音も出ますし、これまた期待以上にいい感じです。キャプチャー写真の様に、ipodTouchなんかも接続できますね。単三電池4本で結構な音が出るのが素晴らしいです。アダプターに変えても使えるから実験だけでおしまいにするのはもったいない作例ですね。

 

また接続にAUXオーディオケーブルを使いますが、100円ショップのセリアで売っているのでそれを使っています。基板を収めるボックスなど結構使えるアイテムが多いので、便利ですね。百円ショップ。

ワンチップFMラジオの製作

電子工作は失敗から学べ!
後閑 哲也 (著)

 

に掲載されている作例を作成しました。

 

今回は、FMラジオを作成してみました。

 

写真はブレッドボードで作成したときのものになってます(そのあとユニバーサル基板に移しました)。

 

20161210a

 

材料費は大体千円~二千円ぐらいで収まります。

 

指定されている材料を集めて作ってみると、aitendで売っていた変換基板付きワンチップICの幅が一列分大きくて、P.103の実体配線図のままにというわけにはいきませんでした。また実体配線図のようにC3のコンデンサを配置したらうまく鳴らなくて、結局P.100の回路図に忠実に配置しなおしたら鳴ったと記憶してます(細々とトラぶってますので記憶も曖昧)。完成したものをイヤホンで聴いてみると、混線もしないし思っていた以上にいい感じで鳴ってくれました。

 

ブレッドボードで作るまでなら、指定部品をはめ込んでいくだけでできちゃうので楽かも。ただ、なんとなくできちゃうので原理の理解にはどうかな?と思いました。

 

選局したラジオ局名を液晶に表示するところまで出来れば、もっと面白いでしょうねヽ(´ー`)ノ

AMスーパーラジオ作りその2

「トランジスターラジオ実践製作ガイド」(丹羽一夫著)に掲載されている、P.100の実用的なAMスーパーラジオを作ってみました。これも最初はIFTの正しい接続順の読み方を理解してなかったので挫折していたものですが、「子供の科学のラジオ(4)」の実線配置図と回路図を見比べてやっと理解できるようになりました。

 

(参照)http://www5a.biglobe.ne.jp/~toyoyasu/Radio_4.htm#40

 

左上から下へUの字を描くように、

 

1  6
 
2
 
3  4

 

素直にそのまま読み取ればいいのですね。横に倒れていても、倒して適用すればいいと。( ̄ω ̄) 

 

で、二番目に出来たのが下のイメージ。

 

box_2

 

今回は、前回のに懲りて、OSCコイルとか一切いじってません。買ってきたままのっけました。調整したのはバリコンのトリマぐらい。ちゃんと分離もいけてます。アースをつけてでの話ですが、NHK、NHK教育、ニッポン放送、文化放送の4局きれいに入ります。TBSも小さめな音ですが、入ってきますのでこれなら今回のはOKかという次第でした。

 

(追記1) AMラジオですが、手元にロッドアンテナがあったのでつけてみました。本来FMラジオに使うべきものなのは分かってたんですが挿してみたかった(そして後悔しました)。

 

(追記2) バーアンテナとバリコンをぐりぐりいじっていたら、一時、ラジオNIKKEI第一と第二を受信できるようになりました。たまたま短波ラジオのバンドを拾えるようになっただけなんでしょうが、それまで短波ラジオはとても難しいものだと思っていましたので、実はそんなにハードル高く無いとか???

1 / 512345