ESP32 の紹介

ESP32

2017年に日本でも発売されるようになった マイコン向けCPU です
ESP-ROOM-32 CPU概観
有名な Arduino の後継に位置づけられますが
後述のようにパワーアップしています
ESP32-DevKitC
半年ほどすると 図のような完成キットも発売され 通常こちらを使います
PC接続するための 電源 兼 USBシリアル通信用 microUSB端子 が付いてます
リセットスイッチ や 起動モード選択スイッチ も表面に実装されています

ESP-WROOM-32 と ESP-WROOM-02 比較
ESP-WROOM-32 ESP-WROOM-02
CPU Tensilica LX6(32bit)
160MHz/240MHz
デュアルコア
Tensilica LX106(32bit)
80MHz/160MHz
シングルコア
メモリ RAM:520KiB
フラッシュROM:4MB
RAM:80KiB
フラッシュROM:2MB/4MB
無線LAN 802.11b/g/n/d/e/i/k/r
2.4GHz帯
WPA/WPA2/WPA2-Enterprise/WPS
AES/RSA/ECC/SHA
802.11b/g/n
2.4GHz帯
WPA/WPA2
WEP/TKIP/AES
Bluetooth v4.2 なし
プロトコル IPv4/IPv6/SSL
TCP/UDP/HTTP/FTP/MQTT
IPv4
TCP/UDP/HTTP/FTP
インターフェース I2C/I2S
SPI/UART
PWM
GPIO
SDIO
ADC 10bit
I2C/I2S
IrDA
PWM
GPIO
SDIO
ADC 10bit

能力的には 1990年前半の家庭用PCクラスです

ESP32マイコンを製作する

2017年の初旬は CPU単体でしか売られていなかったので
少なくとも USBシリアルコンバータ を別途調達してきて
マイコンの形にすることが必要です

丁度公式サイトで サンプル回路図 が公開されていて
秋葉原で部品を揃えれば作れそうだったので試してみました
ESP32-WROOM-32 パッケージ
実際買った ESP-WROOM-32がこれ
ちゃんと日本で使える技適マーク付き 当時 700円 今 550円 くらいで安い
L型2列ピンヘッダ
これが今回の秘密兵器 L型2列ピンヘッダ
CPUパッケージのピッチが 1.27mm ですが これを一般的な 2.54mm の
ブレッドボードや回路基板に挿せるようにするために配置変換させます
ピンヘッダ ピンソケット
ピンヘッダの L字の部分をペンチで加工します
加工時の安定性確保のために 2列ピンソケットに挿した状態で 曲げていきます
ピンヘッダ加工中
加工中を横からみたところ ピンヘッダの上の段と下の段 が交互に
半ピッチずつずれて折り重なるようにします 上下段で 1.27mm ピッチになります
こうやって合計 38ピン 分の L型2列ピンヘッダを作ります
ESP32-WROOM-32 + L型2列ピンヘッダ はんだ付け前
ピンヘッダ と ESP-WROOM-32 を はんだ付けする直前の状態
このように L型ピンヘッダを一旦 基盤に挿し込んで固定します
ESP-WROOM-32 をピン間に挟み込んで固定します

ピッチが合っていることを十分確認してから はんだ付けします
はんだの載りを良くするためフラックスも塗った方がよいです
CPUを熱で壊さないように冷ましながら はんだ付けします

マイコン化する

CPU部分は ユニバーサル基盤にはんだ付けられるようになりました
残り Arduino相当にするために必要なのは

  • GPIO各ポートの ピンソケット
  • 安定電源を供給するレギュレータ
  • USBシリアル
カテゴリー: IoT

Auraboxで遊ぶ

Auraboxの改造

まだ具体的な機能追加などできてませんが Aurabox の改造をしてみたレポートです

Auraboxパッケージ
Aurabox本体外観
Auraboxとは 主要機能としては Bluetoothスピーカですが
ところがもう一歩進んでいて「攻めた」機能を持っています

スマートフォンと連動しプログラマブルな表示ができる LEDディスプレイ
マイク や 温度センサ や バッテリなど独自の作り込みが行われています
Aurabox梱包内容
パッケージの中身です 黒で統一されています
化粧箱もがっちりとした強度で 実はこちらも気に入っています

中にマイコンが入っていて IoTデバイスとしての使い方もできるのでは? と思い立ち
中身の調査をすることにしました
Auraboxのカバーを外したところ
まず本体を覆っているゴムのような材質のカバーを慎重に取り外し
Auraboxの内部に迫る
プラスチックケースをこじ開けます スイッチ類のところからが比較的開けやすいです
左下の丸いものは実は マイクで間違ってドライバを突っ込んで壊してしまいました
Auraboxを開けたところ
何とか開きました 基盤 大きなスピーカ バッテリが見えます
Auraboxが 2つに割れたところ
バッテリ や スピーカ に接続しているケーブルを外しました
ここから部品構成を確認していこうと思います
Auraboxインターフェース部分
Auraboxのインターフェース部分です
操作用のスイッチと 左下に(壊してしまいましたが)スピーカ そして
スイッチの上に見える突起は温度センサでしょう
Auraboxディスプレイ背面基盤
ディスプレイの丁度背面にあたる部分の基盤です ICが4つくらい見えます
中央のは STM8 と刻印されています LEDディスプレイ制御用の 8bitマイコンですね
残りの 3つは型番を調べたところ LEDコントローラです
Auraboxメイン基盤
Auraboxのメイン基盤です
特に左側の青い基盤はマイコンとなっていて 3つの大きな ICが載ってます
写真中央右の大きめのICは オーディオアンプです
写真右のチップは 電源制御関連と思われます
ICの刻印をネットで調べながら 次の構成が見えてきました

Auraboxの 代表的なIC構成
AK1050 安凱微電子(ANYKA)製 ARM926EJ-Sプロセッサ
ARMv5TE(32bitARM+16bitThumb) 192KRAM
STM8S003K3 STM8 8bitCPU
25Q16CS1G 2MB Flashメモリ
MBI501* LEDコントローラ 2つ
MBI502* LEDコントローラ
HT6818 3.3W Ultra Low-EMI Anti-Clipping ステレオD級オーディオアンプ
MT5036 6.6A 800kHz 96%変換効率 バッテリコントローラ
REALTEK8761AT Bluetooth2.1~4.0LE UART制御コントローラ

ほとんど中国製の部品で作られています
Aurabox取り付け部品
今回写真の部品を取り付けました
壊してしまったマイクとシリアル用のコネクタです
シリアル用のコネクタは Auraboxのフラッシュメモリを直接外から読み書きできるよう
外出しするためのものです フラッシュメモリを書き換えられれば自由に制御できるかなと…
Auraboxの フラッシュメモリに配線
フラッシュメモリに線をはんだ付けして外だしします 写真の右の方です
Aurabox改造完了
こうしてどうにか マイクを交換し シリアルコネクタを取り付けました
Aurabox動作チェック
一応元の機能のまま Auraboxは動作しています
フラッシュメモリのデータ吸い出しなどは まだできていません (2017-12)

GitHubには こんなプロジェクト も見つけられます
時間を見つけて試してみたいですね

Raspberry Pi関連

Raspberry Piで IoT開発

関連記事: デジタル関連写真
関連記事: IoT関連写真

最近 IoT関連がマイブームです
Raspberry Pi関連のブログも書いていきます

Raspberry Pi 3 Model B+ と PiSTARTER

昔 BASIC に慣れ親しんだ思い出もあって PiSTARTERを購入しました
また併せて Raspberry Pi 3 ModelB+ も購入しました
ModelB に比べて若干パワーアップしています
PiSTARTER と RaspberryPi3ModelB+
秋葉原の TSUKUMOで購入 パッケージにも TSUKUMOロゴがプリントされてます
TSUKUMO独占販売の形です
RaspberryPi3ModelB+ 基板
Raspberry Pi 3 ModelB+ の基板です
左上ベリーロゴの付いた部分は無線モジュールで IEEE802.11ac対応 目立つデザインになりました
CPU最高速度が1.2GHzから1.4GHz へ イーサネットもファストイーサからギガビットイーサになり
全体的にパワーアップしています
PiSTARTER 開封状況
PiSTARTERパッケージの内容です
イメージキャラのイラストは 確か「べーしっ君」
PiSTARTERのソフトは microSDカードに入っていて RaspbianOS込みです
PiSTARTERの初回起動の際シリアル番号が求められます シリアルは同梱の許諾書に書かれてます

BASICは プログラムの入門に最適ですが RaspberryPi3とセットで買うと 1万円くらいで
子供の財布にはやっぱり厳しいかな

X68000風 RaspberryPiケース

Raspberry Pi用のケースです 伝説のパソコン X68000 のデザインです
秋葉原の BEEPや TSUKUMOで手に入ります 3000円くらいです
ミニチュアケース HELMETS X68000 for RaspberryPi 2/3
X68000のエミュレータを入れれば完璧ですね
デカシールというのも ガンプラ世代として懐かしい限り

Raspberry Pi 2 Model B

ラズパイ! Raspberry Pi をついに買いました (2016年9月)
Raspberry Pi 2 Model B 1
Raspberry Pi 2 Model B です
あとケースや 追加の USB-LAN USB-WiFi あと OS入れるために 32GBの microSDHCカード
Raspberry Pi 2 Model B 1
本体+ケース+メモリ で合計 12000円くらいでした
10年前は この 1/5くらいの性能の小型Linuxが 5倍くらいの値段だったことを考えると
ここ数年のモバイル性能の伸びのすごさが実感できます
Raspberry Pi 2 Model B 3
組み立ての状況です
ファン付きのケースで ファンへの電源供給に写真位置の GPIO 3.5Vを使ってます
Raspberry Pi 2 Model B 4
利用状況です モバイルバッテリで給電しています
Raspberry Pi 3になると性能向上してますが モバイルバッテリだと供給不足になるようなので
外での利用を想定するなら Raspberry Pi 2 がちょうどよいのではないでしょうか
OSは Raspbianという Linuxディストリビューションを使っていますが
IoT版 Windowsも無償利用可能です

PiCamera利用状況
年末には Raspberry Pi専用カメラモジュールも買いました
Tensorflowで 画像認識の実験をするためです
PiCamera接続状況
専用カメラは Raspberry Pi の専用コネクタに接続します
CPUに直結しているようで 高解像度(808万画素)の動画や画像が撮影できます
低解像度でもよければ USBカメラが手軽に利用できます

IoT関連写真

IoT関連機器の購入製品を紹介していきます

関連記事: デジタル関連写真 関連記事: Raspberry Pi関連 Raspberry Pi関連情報はこちらに引っ越しました

RaspberryPi Zero用 照光スイッチ 拡張基盤

部屋の LED照明器具の明るさを制御してみたいと思い購入しました
RaspberryPi Zero用 照光スイッチ 拡張基盤 と Raspberry Pi Zero W です
XBee
まず Zeroですが OSの相性の問題か Jessie(2018-10以降)では I2Cインターフェースが
動かずうまく拡張基盤と通信できませんでした Jessie(2018-7)版では動作しました

制御対象の LEDは 12Vまでの 外部電源を利用可能となっています
0~255 の 256段階で明るさを指定できますが明るさの制御が PWM方式だからか
100とかの中間の段階を指定すると若干ノイズが聴こえるような

BLUENINJA

BLUENINJAという IoTセンサモジュールに挑戦中
BLUENINJA
BLUENINJA本体 と ブレークアウトボードつまり開発キットです
かなり小型のモジュールです Bluetoothで通信でき
9軸(加速度 角速度 地磁気) や 気圧などの環境情報を採取できます
開発環境は整って テストファームウエアをビルドできるところまで確認しました

XBeeモジュール

ZigBee通信規格のモジュール と USB変換器です
Arduinoのシリアルを無線化したりするのに使えます
XBee
XBeeモジュール自体も センサ測定情報を収集する簡単な機能を持っているようです

USB Wi-Fi

Raspberry Pi用に追加 無線LAN機器を買いました
これはお薦めです
AirStation N150 USB
AirStation N150 USB (WLI-UC-GNM2)
親機 つまり Wi-Fiアクセスポイント になれるのです
Wi-Fiモジュールで親機になれるのは 以外と少ないので親機モジュールが欲しい場合
結構探す必要がありますよ

2TB超過のハードディスクを扱う(GPT)

2TB以上のハードディスクを扱うには新しめのマザーボードが必要

Linuxでは 従来のfdiskでなく partedというツールを使ってパーティション設定する
とあったので partedをインストールしてみたがうまくいかない

# cat /proc/partitions
major minor  #blocks  name

   8        0  244198584 sda
   8        1   10485688 sda1
   8        2  233712864 sda2
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48 2930266584 sdd
   8       49 2147483647 sdd1
#
 

3TB HDDを partedでフォーマットしても
USBを挿し直すと sdd1が 2TBサイズと認識されてしまいます

2TB超過のHDDを扱うには parted以前にも必要な条件があります

検証システム
CPU AMD PhenomII X4 905e (2.5GHz 4コア)
マザーボード GA-880GM-USB3 (AMD880G+SB710)
メモリ 16GB
HDD WD30EZRX WD社製 Green 3TB (SATA 6Gbps)
センチュリー 裸族のお立ち台USB3.0 によるUSB接続
OS Gentoo-1.12.14 Linux-3.10.1 x86_64 UTF-8
コンパイラ gcc-4.5.2
Cライブラリ glibc-2.13

3TB以上の HDDを扱うには従来のMBR形式でなく
GPT形式でパーティション情報を扱う必要があります
下記が必要な条件です

その1 : UEFI対応マザーボード
GPT形式の内蔵ディスクから OSをブートするために必要
その2 : OSの対応
Windowsなら 64bit Vista以降が必要 Linuxならカーネルの設定が必要(下記参照)
その3 : GPTフォーマットツール
Linuxなら partedが必要

Linuxのカーネルに必要な設定は GUID Partition Supportです
Linux カーネル GUID Partition Support
USBディスクを挿し直すと パーティション情報が壊れていたのは
この設定が抜けていたためです

GPTが有効になった カーネルでは問題なく partedの設定も反映されました

# parted /dev/sdd
GNU Parted 3.1
/dev/sdd を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) rm 1
(parted) unit s
(parted) mkpart
パーティションの名前?  []? ext3
ファイルシステムの種類?  [ext2]? ext3
開始? 2048s
終了? 5860533101s
(parted) print
モデル: USB 3.0 LucidPort USB300 (scsi)
ディスク /dev/sdd: 5860533168s
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始   終了         サイズ       ファイルシステム  名前  フラグ
 1    2048s  5860533101s  5860531054s  ext3              ext3

(parted) quit
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
#
 

USB HDDを挿し直してもパーティションサイズは正しく認識されます

# cat /proc/partitions
major minor  #blocks  name

   8        0  244198584 sda
   8        1   10485688 sda1
   8        2  233712864 sda2
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48 2930266584 sdd
   8       49 2930265527 sdd1
#