wonderCodeの日記

プログラミングの覚え書き

ESPr® Developer 32の開発環境構築

開発環境

必要なもの

  • ESPr® Developer 32
    スイッチサイエンスのESP-WROOM-32搭載開発ボード
  • ピンヘッダ 20P x 2
  • 幅が広いブレッドボード
    ESPr® Developer 32 は幅が広い。
    普通のブレッドボードだと幅が足りず、両側から配線を引き出せない。
  • セラミックコンデンサ 0.1μF x 2
    スケッチのアップロードが自動でできなかったため追加
  • その他
    はんだごて、はんだ、ジャンパ線、USBケーブルは適宜用意

経緯

Arduino互換機?は、動かないとかトラブルがあったら嫌だなということで、
とりあえず純正品を使っていました。
ArduinoiPhoneでやり取りしたいということになってくると、
BluetoothWiFiが必要になってくるが、Arduinoには搭載されていない。
ESP32は、BluetoothWiFi搭載されていて、
割とメジャーな感じだったので、導入に踏み切りました。

開発環境構築手順

1. ピンヘッダをはんだづけ
合計40ヶ所、頑張ってはんだづけしましょう。
今回は、ピンヘッダ未実装の開発ボードを使用しましたが、
ピンヘッダ実装済のを購入すれば、はんだづけは不要です。

2. USB-シリアル変換IC(FT231XS)ドライバ
Espressifの開発ボードとは、シリアル変換ICの種類が違うので注意。
ESPr® Developer 32で必要なのは、以下のドライバです。
USB-シリアル変換IC(FT231XS)ドライバダウンロード先
ごちゃごちゃしていて分かりにくいのですが、
VCP DriversのMac OS X10.15 and macOS 11用をダウンロードして、インストールします。

USB-シリアル変換IC FT231XSドライバダウンロード
USB-シリアル変換IC FT231XSドライバダウンロード

3. 追加のボードマネージャのURLを追加
Arduino IDE(1.8.13を使用)はインストール済とします。
Arduino->Preferencesと選択して、以下のURLを追加します。
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

4. ボードマネージャでesp32をインストール
ツール->ボード->ボードマネージャーで、esp32を検索して、
esp32(バージョン2.0.1)をインストール。
ボードは、ESP32 Arduino->ESP32 Dev Moduleを選択。

5. シリアルポートで、「cu.usbserial-D309D3VH」を選択
ESPr® Developer 32とMacをUSBで接続後、
ツール->シリアルポートで、「cu.usbserial-D309D3VH」を選択します。

6. スケッチをマイコンボードに書き込み
後は適当なスケッチを用意して、マイコンボードに書き込むだけです。
ESP-WROOM-32のセットアップについてから引用

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println("Hello World.");
  delay(10000); 
}

7.スケッチの書き込みに失敗する場合
Connecting......と表示されている時に、FLASHと書かれている方のボタンを押しっぱなしにしてください。 とりあえずはこれで書き込みできるはずです。

8.Arduinoと同様に自動で書き込みをする場合
スケッチを書き込む際、ESP32を書き込みモードで起動する必要があります。
自動でモードが切り替わる仕組みは、搭載されているのですが、
環境によっては、EN端子がHighになるタイミングが早すぎるようです。
ESPr® Developer 32 回路図
回路図を見ると、ENとGNDの間に0.01μFのコンデンサ(C6)が入れられていますが、これではまだ足りないようです。
いろいろ試してみた結果、0.1μFのコンデンサ2つ追加で落ち着きました。

コンデンサ追加回路図
コンデンサ追加回路図

9. 考察
当初の懸念通り、ドライバのインストールや自動書き込みで手こずったので、BluetoothWiFiが不要な人は、純正のArduinoの方が無難です。

Arduinoでソフトウェアシリアル通信

千石電商さんで、面白そうな部品を見つけたので、購入してみました。

UARTをBluetooth通信に変換する部品。

これを使えば、ArduinoiPhone間で通信できるらしいので、その検証を。

有線(USB接続)での通信は、MFi認証の関係で無理そうだなと思っていたところ見つけたのがこれです。

www.sengoku.co.jp

 

この部品をArduinoで使っている記事あるかも、と少し探してみたのですが見つけられず。

公式サイトのお世話になります。

learn.adafruit.com

 

HWフロー制御?とかもできるらしいのですが、シンプルに電源、GND、UARTの配線だけで済ませたかったので、この回路図に落ち着きました。HWフロー制御有だと信号線の数が倍ぐらいになります。

f:id:wonderCode:20211128182828p:plain

回路図

 

f:id:wonderCode:20211128194802j:plain

ArduinoにBLEを配線

Arduino側のソースは、Arduino Micro用スケッチ例に、「SoftwareSerialExample」というちょうど使えそうなソースがあったので、これを流用。

 

#include <SoftwareSerial.h>

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

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(57600);
  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(9600);
  mySerial.println("Hello, world?");
}

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

 

mySerial.begin(9600);」の周波数を9600に変更したぐらいで、後はそのまま。

iPhoneには以下のアプリをインストール。

Bluefruit Connect

Bluefruit Connect

  • Adafruit Industries
  • ユーティリティ
  • 無料

apps.apple.com

 

Arduinoにソースを書き込むと、MODEの方の赤色LEDが2回ずつ点滅。そして、Bluefruit Connectから「Adafruit Bluefruit LE」に接続を行うと、CONNの青色LEDが点灯。

これで準備完了。

Arduinoのシリアルモニタから送信すると、

f:id:wonderCode:20211128193718p:plain

Arduino シリアルモニタ

iPhone(Bluefruit Connect)に送信した文字が表示されます。

f:id:wonderCode:20211128193842p:plain

iPhone (Bluefruit Connect)

 

iPhoneからArduinoへの送信も可能です。

これでiPhoneを、Arduinoの入出力インターフェースとして使用可能ということがわかったので、いろいろできそうですね。

 

 

Android StudioからRaspberry PiのSubversionに接続する

環境

OSX 10.10.2

Android Studio 1.0.2

Linux raspberrypi 3.12.35+ #730 PREEMPT Fri Dec 19 18:31:24 GMT 2014 armv6l GNU/Linux

==========================================================================

まず、Rapberry PiにSubversionをインストールします。

ここのサイトが参考になりました。

Raspberry PiにSubversionをインストールする - あんちょこ

2箇所、読み替えました。

1.aptitudeはapt-getで実行(いつもapt-getでインストールしているので)

root@raspberrypi:~# apt-get install xinetd

root@raspberrypi:~# apt-get autoremove

root@raspberrypi:~# apt-get install subversion

autoremoveは、以下のパッケージが自動でインストールされましたが、もう必要とされていません。これを削除するには 'apt-get autoremove' を利用してください。

と出てきたので実行。出てこなければ不要です。

2.リポジトリ作るところは、その前で、ユーザーsvnsvn実行する設定にしているので、

rootではなく、svnユーザで実行(たぶん誤記)

root@raspberrypi:~# su svn
svn@raspberrypi:/root$ svnadmin create /opt/svn/
svn@raspberrypi:/root$ vi /opt/svn/conf/svnserve.conf
svn@raspberrypi:/root$ vi /opt/svn/conf/passwd

svn@raspberrypi:/root$ exit

root@raspberrypi:~# service xinetd restart

参考ブログのままだと権限で怒られます。

インストールされたSubversionのバージョンは、1.7.5でした。

pi@raspberrypi ~ $ svn --version --quiet
1.7.5

 

Android Studio側は、適当にプロジェクトを作っておいて、

とりあえず接続できるかチェック。

ツールバーVCS→Browse VCS Repository→Browse Subversion Repisitory

f:id:wonderCode:20150201172647p:plain

+ボタンを押して、リポジトリのURLを入力。

f:id:wonderCode:20150201173619p:plain 

この時点でエラーが出る場合は、Raspberry Piを再起動してみてください。

 

新規プロジェクトをSubversionに登録する手順は、ここが参考になります

第28回 バージョン管理 ─Subversion連携とGoogle Code:Android Studio最速入門~効率的にコーディングするための使い方|gihyo.jp … 技術評論社

※注意事項

 Subversionの1.7を使用する際は、Android Studioに組み込まれている方のsvnを使う必要があるので、以下の設定を確認します。

ツールバーAndroid Studio→Preferences

f:id:wonderCode:20150201180251p:plain

左サイドバーVersion Control→Subversion

Use command line clientのチェックが外れていることを確認します。

f:id:wonderCode:20150201180349p:plain

チェックが外れていないと、Subversionに登録する際にエラーが出ます。

 起動時のPreferencesで設定しておくと良いでしょう。

 

後は、ツールバーVCS→Import into Version Control→Share Project (Subversion)で、

手順通りにすればOK。

f:id:wonderCode:20150201181630p:plain

Raspberry Pi を無線でつなぐ

 よくPCショップ等で、見かけるBUFFALOのWLI-UC-GNMを使用します。

大概の店で取り扱っていると思います。

f:id:wonderCode:20150126235826p:plain

 

これをRaspberry PiのUSB端子に突っ込んで、

$ sudo sh -c "wpa_passphrase ssid password >> /etc/wpa_supplicant/wpa_supplicant.conf"

 で、再起動すれば完了です。

ssidとpasswordは実際のものに置き換えてください。

ルータにシールで貼ってあったりします。

ssid→ネットワーク名

password→パスワード

 

やっていることは、wpa_passphrase ssid passwordの実行結果を、

/etc/wpa_supplicant/wpa_supplicant.conf"に追記。

なので、ssidとかpasswordを書損じた場合は、

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

で開いて、末尾の

network={
  ssid=“****”
  #psk=“*******”
  psk=***************************************
}

をddとかで消して、もう一度やり直して下さい。

一回目、なぜかパスワードをミスっていた。。。

 

つながらないときは、

ifconfigで無線LANアダプタにIPアドレス割り当てられているか、

iwlist wlan0 scan | grep ESSID で接続したいネットワーク名が表示されるか

など適当に調べてください。

 

Raspberry Pi 初期設定

さて、今回は、イメージファイルをMicroSDカードに書き込みます。

1.イメージファイルのダウンロード

ここからダウンロード。

Downloads | Raspberry Pi

f:id:wonderCode:20150125210410p:plain

RASPBIANのZIPをダウンロードします。

容量大きいので、ダウンロードに時間がかかります。 

ダウンロードが終わったら、ダブルクリックして解凍しておきます。

2.MicroSDカードに書き込み

 当方の環境は、Macなのでddコマンドで書き込みます。

Windowsの場合は、書き込み用のツールがあるのでそれを使うらしいです。

参考サイト

SD カードの準備 | OpenRTM-aist

 

作業の流れは、

1.MicroSDカードをMacと接続

2.dfコマンド実行して、アンマウント対象(MicroSDカード)を探す

3.MicroSDカードをアンマウント

4.ddコマンド実行してイメージファイル書き込み

$ df -k
Filesystem 1024-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk1 117293056 69695168 47341888 60% 17487790 11835472 60% /
devfs 192 192 0 100% 666 0 100% /dev
map -hosts 0 0 0 100% 0 0 100% /net
map auto_home 0 0 0 100% 0 0 100% /home
localhost:/VoVBmlyvUOOVNEJHbUrXJH 117293056 117293056 0 100% 0 0 100% /Volumes/MobileBackups
/dev/disk5s1 15175680 2432 15173248 1% 0 0 100% /Volumes/NO NAME
$ diskutil umount /Volumes/NO\ NAME/
Volume NO NAME on disk5s1 unmounted
$ sudo dd if=2014-12-24-wheezy-raspbian.img of=/dev/disk5 bs=1m
Password:
3125+0 records in
3125+0 records out
3276800000 bytes transferred in 2626.844135 secs (1247428 bytes/sec)

これまた、時間がかかります。40分ぐらい。

3.Raspberry Piの起動

あとは、何にも難しいことはないですね。

MicroSDカードをRaspberry Piに突っ込んで、

ACアダプタを接続、

HDMIケーブルでディスプレイに接続して、

キーボードを取り付けます。

電源ONで画面にごにょごにょ文字が出てこれば、OKです。

Raspberry Piには電源のスイッチはないので、

電源タップにスイッチがない場合は、ACアダプタ接続した時点で、

Raspberry Piに電源が入ります。

 

 しばらく待っていると、設定画面が出てきます。

f:id:wonderCode:20150125214207p:plain

設定するのは、1 Expand Filesystemで

 SDカードの容量分使えるようにして、

8 Advanced Optionでタイムゾーンとキーボードの設定ぐらいかな。

f:id:wonderCode:20150125214205p:plain

12 Change Timezone
[Asia]-[Tokyo]

13 Change Keyboard Layout Set the keyboard layout to match your keyboard

[Generic 105-key (Intl) PC]-[Japanese - Japanese (OADG 109A) ]

ほかに聞いてくるのは、とりあえずデフォルトで。

 

初期設定完了。

 

ちなみに、

$ sudo raspi-config

でもう一度この画面を呼び出せます。

  

Raspberry Pi モデルB+ 購入

Raspberry Pi モデルB+を買ってしまいました。

f:id:wonderCode:20150124204531p:plain

 

旧モデルに比べて、

  • USBが2→4
  • GPIOの端子数が増えた
  • SDカード→MicroSDカード

要するに、機器をたくさんつなげやすくなったので、

 Webカメラや、スピーカーや、LEDやらをつなげて遊ぼうと思っています。

 

プログラムは、CかJava辺りでと考えつつ、

SDカードにRaspbianのイメージファイルを書き込むかと思ったら、

カードリーダーがまさかの故障。。

 

ということで、明日、カードリーダー買ってきます。とほほ。

ついでにジャンパ線も(なぜかオスメスを間違えて買ってきたので)。

Sketch3を使ってみた

Mac用アプリ、Sketch3を物欲に負けて買ってしまいました。

Bohemian Coding - Sketch 3

 

イラストレータFireworks的に使えるソフトで、

前々から気になっていました。

 

まだ、ほとんど触れていないのですが、

おお!!と思った機能があったので紹介します。

 

iPhone向けのレイアウトをするときに、便利な機能です。

別途こちらのiPhoneアプリも必要になります。

iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 Sketch Mirror

このアプリは無料にして欲しかったな...

500円します。

 

手順は、

1.Sketch Mirrorアプリを起動する(iPhone側)

f:id:wonderCode:20140824125337p:plain

 

2.Sketch3の右上、Connectボタンを押す(Mac側)

f:id:wonderCode:20140824125559p:plain

 

3.Sketch3で編集中の画像が、iPhoneの画面に表示されます。

f:id:wonderCode:20140824125756j:plain

Sketch3で書いた、星マークが表示されています。

写真では伝えられませんが、Sketch3での編集がリアルタイムでiPhoneの画面に反映されます。

 

iPhoneの画面レイアウトは、PC画面上(シミュレータ)だけでしてしまうと、

いざ実機で試したときに、ちょっとボタンが小さいとかになりがち。

変更するたびに書き出してiPhone側に画像を転送するのも面倒。

変更がリアルタイムで反映されるのは、うれしい機能です。

 

今回は、WiFiで接続しましたが、USBでも接続可能、iPadにも対応しているそうです。

WiFiで接続する場合は、MaciPhoneは同じネットワーク上にいる必要があるのでご注意を。