3DSの連射機を作ってみた やっすいやつやん

Nintendo 3DSでボタンを連打したいときってありますよね。ドラクエのカジノのスロットとかドラクエのカジノのスロットとか。Youtubeとか見ているとLEGOとかモーターの回転とかで連打するように工夫している方もいらっしゃるようですが、ここで解説するのはアマゾンで買えるやっすいソレノイドを使ったバージョンっていう感じのものです。他に使ってる材料もそこらへんに転がっているものばかりなので皆さんも興味を持っていただけたら参考にしてください。

ソレノイドって何?
↑こんなやつです。
ソレノイドとは、電気を流すと中の棒が動く電磁石を利用した電気部品で、これを使って電気をオン・オフして中の棒を動かし、それでボタンを連打しようという魂胆。
実際に私が買ったソレノイドはアマゾンで317円。安い!

とりあえず、動画にしてみたので、ここに貼っておきます。ソレノイドの動きがどんなもんかわかるかと。。。

電気のオン・オフを自動でやらせたいので、こちらもアマゾンで格安で手に入るArduino Nano互換品を使用します。

↑こんな感じのです。これもアマゾンで400円前後

 

では実際に回路を考えてみます。

考えてみました…。

上記回路図のコメント
・電源はACアダプタでとる
・ソレノイドの定格が12V1Aなのでそれ相当のACアダプタを用意
(こっそり言うと、そんなACアダプタないよって人は昔の重いトランスタイプのACアダプタなら表示以上の電流が出たりするのでそういうのを使うのも手かもです)
・回路図ではトランジスタを使っていますが、FETやフォトカプラのほうが良いかもしれません。今回は、とりあえずそこらへんにあって使えそうなものを採用しました。

実際に部品を用意して基板にハンダしてみました。

続いてArduinoのプログラムを書いて行きます。
Arduinoの開発環境は公式ページから無料でダウンロードできますし、ブラウザ上で開発するWEB EDITORもあります。

詳しくは、解説しているサイトが沢山あるのでググりましょう(๑´ڡ`๑)テヘペロ

それでは実際にArduino Nano(互換品)に書込んで見ます。以下のプログラムをArduino IDEにコピペしてコンパイル、書き込みをしてみてください。

//ソレノイド連射Arduino Nanoプログラム

int statusmode = 0; //0:連射OFF 1:連射ON
int swcount=0;      //SWのチャタリング防止用カウンタ

void setup() {
  // シリアルポートを9600bpsで初期化
  Serial.begin(9600);
  
  pinMode(2, OUTPUT);  //ソレノイドへ出力
  pinMode(12, INPUT);  //SW入力
  pinMode(13, OUTPUT); //LED出力
}

void loop() {
  int val ;
  int inputchar;

  //プッシュSW入力処理
  //プッシュSW入力トグルで切替え(連射中/停止中)
  if(digitalRead(12)==HIGH){
    swcount++;
  }else{
    swcount=0;  
  }
  if(swcount>100){
    swcount=0;      
    if(statusmode==0){ 
      statusmode=1;
    }else if(statusmode==1){ 
      statusmode=0;
    }
  }
 
  //SW入力以外にもパソコンから
  //USBシリアル通信で's'で連射開始、'f'で連射停止も可能
  inputchar = Serial.read();
  switch(inputchar){
    case 's'://start
      statusmode = 1;
      break;
    case 'f'://finish
      statusmode = 0;
      break;
  }

  // 半固定抵抗からの読込み値(連射の速度をアナログで変更)
  val = analogRead(0) ; 

  //ソレノイドのオン・オフ処理
  if(statusmode == 0){
    digitalWrite(13,LOW);
  }else if(statusmode == 1){
    digitalWrite(13,HIGH);  
    digitalWrite(2, HIGH);
    delay(100);
    digitalWrite(13,LOW);
    digitalWrite(2, LOW);
    delay(val);
  }
}
Share on FacebookShare on Google+Tweet about this on Twitter
It's only fair to share...

100円ショップのケースとユニバーサル基板の組み合わせが最強

100円ショップのダイソーで買った名刺サイズのケースがユニバーサル基板にぴったり。
ntp_clock01基板はネジなどで固定せずにコードフックのアームを90度くらいに開いて、そこに乗せるようにしました。こちらのコードフックも100円ショップで購入です。サイズはいろいろあるけど、この写真のは16個入りの極小タイプ。
ntp_clock02スポンジのクッションが付いているので大丈夫だとは思いますが、コードフックのベースになっている部分は金属なのでショートしないようになにか巻いておいたほうが安全かもしれません。

Share on FacebookShare on Google+Tweet about this on Twitter
It's only fair to share...

PICとWROOM-02でNTP機能付き時計を作ってみる

(最初にことわっておきますが、PICからWROOMへATコマンドを送って時刻を取得します。Arduinoでやるやり方ではないです。)

ntp_clock01PICマイコンとESP-WROOM-02で電波時計ならぬ、インターネットへ接続しNTPサーバから時刻を取得し自動で時刻修正する時計を作っていきたいと思います。早い話、電波時計のインターネット版だと思ってください。
夏休みの自由研究なんかにうってつけなんじゃないでしょうか?

概要:
・PICはPIC18F25K22-I/SPを使用
・ESP-WROOM-02は公式のNONOSファーム v1.5.4を使用
・プログラムを作って書込むのはPICだけ
・PICとWROOMの通信はUSARTでATコマンドを使用
・7セグをダイナミック点灯。7セグは秋月の[OSL40391-LG]を使用
・時計用のクロックは32.768kHz水晶発振子を使用
・1日に1回時刻を自動修正
・開発環境はMPLAB X v3.30, xc8 v1.3.7を使用

回路は以下の通り。
PicClock WROOM-02LED用の抵抗値は使用するLEDに合わせて適宜変えてください。

MPLAB X用プロジェクトファイル
ダウンロード:PIC18F25k22_WifiClock160622a.zip

このプログラムの改変は自由に行ってもらっても良いですが、再配布や直リンクは禁止とします。また、営利目的のための使用も禁止します。
このサイトへのリンクは歓迎です。

使い方:
①まずは、プログラムをご自分のWifi環境に書き換えてください。
変更する箇所はmain.cの冒頭のここの部分。
picclock_program書換えたらビルドしてPICに書込んでください。

②初回起動時はSW1またはSW2を押したまま電源を投入するとWifiアクセスポイントへ接続をここみます。LEDが点灯したらSWを離してください。
2回目以降の起動はSWを押しながらでなくても最後に接続したアクセスポイントをWROOMは覚えているので自動で接続します。
(Wifiアクセスポイントの設定は2つ登録でき、SW1を押しながらのときとSW2を押しながらのときで切り替えることが可能)

③LEDが点滅になると時刻を調整している最中です(約1分)。

④約1分後、LEDが消灯すれば調整は成功。LEDが点灯だと失敗です。

通常時のスイッチ操作について
SW1を押すと押している間、時刻表示から秒表示に切り替わります。
時刻表示中にSW2を押すと時刻を1分進めます。長く押すとどんどん進めます。
秒表示中にSW2を押すと現在の時刻のまま秒だけ0秒にします。

Share on FacebookShare on Google+Tweet about this on Twitter
It's only fair to share...

WROOM-02を最新ファームV1.5.4に更新してみる

前回の記事の通り、WROOM-02に書かれているファームウェアが古かったので新しいものを書き込んでみたいと思います。今回ここで行うのはATコマンドを使えるファームです。

では、最新版をダウンロードします。
(ファームは日々更新されています。さらに新しいバージョンが出ていたら適宜読み替えて行ってください)

●ファームウェアのデータ本体のダウンロード先は
http://www.espressif.com/en/support/download/sdks-demos

WROOM-02 ファーム最新版2016/06/12現在最新のESP8266 NONOS SDK V1.5.4をダウンロードしました。
ちなみにATコマンド対応のファームはNONOSというやつです。
最新版のリリースなどいろいろとフォーラム内でアナウンスされているので、詳しく知りたい人はそちらで確認してください。→ESPRESSIFのフォーラム

●書込みツール「ESP8266 Flash Download Tools v2.4」のダウンロードはココ
http://www.espressif.com/en/support/download/other-tools

firmware02追記:リンク先のサイトが更新されました。「ESP8266 Flash Download Tools v3.3.4」がリリースされたようですが、まだ試していません。

●資料のpdf「ESP8266 AT Instruction Set」もダウンロードしておきましょう
http://www.espressif.com/en/support/download/documents

firmware03↑下線の補足にあるようにダウンロードしたファームウェアバージョンに対応したpdf資料

●回路の修正「IO0をグランドに」
ファームウェアを書き換えるにはIO0をグランド側につなげてあげる必要があります。
WROOM-02ファームウェア書換え回路図

“WROOM-02を最新ファームV1.5.4に更新してみる” の続きを読む

Share on FacebookShare on Google+Tweet about this on Twitter
It's only fair to share...

WROOM-02と通信してみる


前回までで配線はできたので、今回は実際にソフトを使って通信してみます。一番オーソドックスなソフトでやっていきたいと思います。また、当サイトで解説しているのはWindowsでのやり方です。MacやLinuxはわからないのでスミマセン。

まず、通信用ソフトとして「TeraTerm」というフリーソフトをインストールします。
窓の杜 http://forest.watch.impress.co.jp/library/software/utf8teraterm/

teraterm01ここに書いてあるバージョンと違っても、そのときの最新版をダウンロードしてインストールすれば問題ないと思います。今回はv4.91をダウンロードしました。

インストールしてTeraTermを起動します。このときWROOMに3.3Vの電源はまだつなげないでおきます。
teraterm02シリアルのラジオボタンを選択して、接続するポートを選択します。人によってここの表示は違います。我が家の環境では、COM1がデスクトップPCの裏側についているシリアルポート。COM3がサンワサプライのUSBシリアル変換器。COM4がFT232RLのUSBシリアル変換モジュールでした。

teraterm03上部のメニューから設定→端末 を選んで送信コードをCR+LFにしOKを押します。

teraterm04さらに、設定→シリアルポートでボーレートを115200にしてOKを押します。

teraterm05aWROOMに3.3Vの電源をつなげてみます。文字化けした文字が流れ最後にreadyと表示されたら接続は成功です。readyが表示されないときはボーレートが違ってたり、違うCOMポートだったりするので設定を見直してください。

teraterm06aAT+GMR⏎
と入力してみます。するとWROOMに書かれているファームウェアのバージョンが表示されます。

今回の例では
AT version:0.40.0.0
SDK version:1.3.0
で、2015年の8月のバージョンだということがわかりました。
今となっては古いので次回はファームウェアの更新をしてみたいと思います。

Share on FacebookShare on Google+Tweet about this on Twitter
It's only fair to share...

WROOM-02とパソコンをつなげてみる

最近はやっているという噂の技適OKな格安WIFIモジュール「ESP-WROOM-02(以下WROOM)」を秋月で買ってみたのでちょこちょことこれについて書いてみたいと思います。

で、今回やってみたかったのはインターネットに接続して自動で時刻修正する7セグ時計です。
電子工作初心者なので成功するかどうかも未知数ですがお付き合いください。

パソコンとWROOMを接続してテストするには次の回路のように接続します。
WROOM-02回路図ざっくり「パソコン側○○へ」と書いてますが、USARTのシリアル通信ができればどんなんでもOKです。あと電源は3.3V 2.0AのACアダプタを使いました。WROOMにGNDピンが3つあるけど、内部でつながっているのでどれか1つで良いのでグランドにつなげてください。

パソコン側はいろんな方法があると思うけど、今回2つの方法で試してみました。どちらも秋月とかで簡単に手に入るので持ってない人は一緒に買うと良いかもです。
①FT232RLを使った仮想USBシリアル通信
②ADM3202ANを使ったRS-232Cレベル変換でシリアル通信

では①の方法で必要なのは
FT232RL USBシリアル変換モジュール
http://akizukidenshi.com/catalog/g/gK-01977/
たぶんこの方法が一番一般的だと思います。接続の回路図はさっきの回路図に追加して書くと次のような感じ。
WROOM-02回路図FT232RLパソコン側はUSBなのでどのパソコンでもOKですし、抵抗とかコンデンサとか使わなくても簡単に接続できるのでおススメです。950円出す価値はあります。ちなみにFT232RLの3V3OUTからUSBのバスパワーを3.3Vに変換した電源がでているから、わざわざACアダプタを使わなくても良いのでは?と思いますが、容量不足でファーム書込み中とかに落ちたりしたら厄介なのでおとなしく最初からACアダプタを使いました。グランドマークは全部同じ電位するためにケーブルやジャンパ線で結線してください。

②の方法で必要なのは
ADM3202AN
http://akizukidenshi.com/catalog/g/gI-03030/
ちょっと古いやり方ですがこちらも問題なくできました。
kairo01こちらも複数あるグランドマークは全部結線してください。
パソコン側はRS-232Cなのでちょっと古めのデスクトップPCを使っている人か、こんなような↓USBシリアル変換器をもっている人用になります。
USBシリアル変換器私はサンワサプライのこれを持っていたので使いました。
あと、RS-232Cの延長ケーブル使う場合はクロスとかストレートとかあるので注意してください。

それでは実際にパソコンを使って通信する方法は次の記事で。

Share on FacebookShare on Google+Tweet about this on Twitter
It's only fair to share...