激安$3以下のebayで買ったArduino nanoを動かす

激安ArduinoNanoをなんとか動かしたメモ

ebayで最近よく物を買っています。Arudinoなんかですと国内で買う価格の半額どころか10分の1くらいの値段で手に入ります。

しかし、互換チップなどを使っているのでドライバーを入れたり色々面倒なことが起きたりします。

今回、購入したこちらのArudino uno ですが一筋縄ではいきませんでしたのでその対応のメモです。

環境

PC: Mac OS X 10.11
IDE: Arduino IDE 1.6.11

ch340gドライバ

こちらのUSBドライバは格安の互換品らしく、ドライバーを別途入れてやらないとPCからは認識できません。この辺りの手順は色々なところに書かれていますので、このあたりを参考にドライバー追加します。

IDE

ドライバを追加し、Arduino Nano をPCに接続してやります。自分の場合はMACなのでポートはArduinoIDEからは

/dev/cu.wchusbserial1420

というデバイスで認識されますので、ポートをこちらに接続してやります。

Blinkプログラムの書き込み

USBを接続し、ファイルメニューからスケッチの例ー01.BasicーBlinkを開いてやります。
ツールのボードをArduino Nano にし、プロセッサをATmega328、ポートは先ほどのポートをセットします。
そのまま、マイコンボードに書き込むを実行すると

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

このエラー。。。。。色々調べたのですが、ケーブルを入れさししろとか、リセットを押しながらケーブルを入れるとか。。。全く改善されません。

よーく見るとRXやLのLEDが電源をONにしても光っていないことに気づきました。

ブートローダを書き込む

どうやらブートローダが書き込まれていないのではという目星をつけて色々調べたところ、こちらにまさに解決方法が!

手順は以下に示しておきます

必要なもの

Arduino UNO
オスーメスのジャンパーピン

手順

STEP 1

  • Arduino UNOをPCに接続
  • ツールメニューのシリアルポートをArduino UNOのポートに
  • ツールメニューのボードをArduino UNOに
  • ファイルメニューのスケッチの例からArduino ISPを開く
  • マイコンボードに書き込むを実行
  • USBケーブルをはずしてPCからはずす

STEP 2

  • Arduino Nanoのジャンパーピン1からUNOのD12へ接続
  • Arduino Nanoのジャンパーピン2からUNOの5Vへ接続
  • Arduino Nanoのジャンパーピン3からUNOのD13へ接続
  • Arduino Nanoのジャンパーピン4からUNOのD11へ接続
  • Arduino Nanoのジャンパーピン5からUNOのD10へ接続
  • Arduino Nanoのジャンパーピン6からUNOのGNDへ接続

STEP 3

  • Arduino UNOをPCに接続
  • ツールメニューのシリアルポートをArduino UNOのポートに
  • ツールメニューのボードをArduino Nanoに
  • ツールメニューのプロセッサをATmega328に
  • ツールメニューの書き込み装置をArduino as ISPへ
  • ツールメニューのブートローダ書き込みを実行

これでブートローダが書き込まれて無事Arduino Nano のLのLEDが光ります。

STEP 4


ケーブルを全て外してArduino Nanoの動作確認をします

  • Arduino NanoをPCに接続
  • ツールメニューのシリアルポートをArduino Nanoのポートに
  • ツールメニューのボードをArduino Nanoに
  • ツールメニューのプロセッサをATmega328に
  • ツールメニューの書き込み装置をAVRISP mkIIに戻しておく(不要かも)
  • ファイルメニューからスケッチの例ー01.BasicーBlinkを開く
  • マイコンボードに書き込むを実行

これで無事にLチカができました

ESP-WROOM-02とArduino unoでWifi

Arduino UnoとWifiモジュールのESP-WROOM-02 DIP化キットをつないで通信をしてみます。

ESP-WROOM-02自体でもArduinoとしてプログラムを書き込んで使用できるようですが、ESP-WROOM-02に繋ぐためのUSBシリアル変換インターフェースを持っていないのでとりあえずArduinoと接続して使えるかどうか確認します。

使用する機器

回路

ArduinoとESP-WROOM-02を繋ぐ回路が必要なのですが、このDIP化キットとArduinoUnoをつないだ回路をWebで発見することが出来ず苦労しました。
このあたりこのあたり、あとこのページを参考にさせていただいて作成したのがこれ。

DSC_0250

プログラム

参考にしたサイトからこれを作成しました。

//https://ics.media/entry/10457/3
//http://okiraku-camera.tokyo/blog/?p=2873
/*
  Software serial multple serial test

 Receives from the hardware serial, sends to software serial.
 Receives from software serial, sends to hardware serial.

 The circuit:
 * RX is digital pin 10 (connect to TX of other device)
 * TX is digital pin 11 (connect to RX of other device)

 Note:
 Not all pins on the Mega and Mega 2560 support change interrupts,
 so only the following can be used for RX:
 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69

 Not all pins on the Leonardo and Micro support change interrupts,
 so only the following can be used for RX:
 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

 created back in the mists of time
 modified 25 May 2012
 by Tom Igoe
 based on Mikal Hart's example

 This example code is in the public domain.

 */
#include 

SoftwareSerial mySerial(11, 10); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(115200);
  mySerial.println("Hello, world?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    //Serial.println("mySerial avairable");
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    //Serial.println("Serial avairable");
    mySerial.write(Serial.read());
  }
}

実行

Arduino IDEからツール、シリアルモニタを開いて確認します

Goodnight moon!
Hello, world?

ERROR
HELO  # <- 入力

ERROR
AT     # <- 入力


OK
HELO   # <- 入力

ERROS

入力した文字がそのままエコーされています

まとめ

プログラムを実行しても Hello, Worldが返ってこなかったりし、いろいろ回路をいじったりしましたが、なぜこれで動くのかちょっとわかりませんが動くのでこれでよしとします。次は実際にWifi通信してみることにします