技適新着 ESP-12F

気になった新着製品の紹介です。

ESP-12F

https://lang-ship.com/giteki/detail.php?typeName=ESP-12F

詳細不明ですが、ESP-12FなのでESP8266を使った小型モジュールだと思います。

上記は技適通っていないやつですが、こんな感じのやつですよね?

Pinmicro株式会社は通信関係の商品を取り扱っているので、通信モジュールだと思いますが、検索しても情報がないので、現状不明です。

ESP32をPlatformIO上でJTAG(FT232H)デバッグする

環境

OS:Windows10

MacでもLinuxでも動くと思います。

エディター:Visual Studio Code

無料版を利用。

開発環境:PlatformIO

Microsoft純正のArduino開発用プラグインはArduino IDEをコマンドラインで呼び出しているだけですが、PlatformIOは内部にコンパイラからデバッガーまで内包しています。Windows上でOpenOCDを利用したデバッグ環境を構築するのはかなり大変なので助かります。

ESP32がなにもしなくてもすぐに開発出来る点が非常に便利!

JTAG:CJMCU-232H

「Adafruit FT232H Breakout」あたりがたぶんベースで、ちょびっとピン配置が違います。外国サイトで買うと1000円以下で手に入ると思います。

ESP32:ESP32 devkit

技適マーク付きのESP32ボードであれば大抵大丈夫だと思いますが、ENピンが出ている必要があります。

上記みたいにたまーに、ENピンがないボードがあるので注意しましょう。

事前準備(自動書き込み)

私のESP32ボードはWindows上だと自動書き込みができないので、ENとGNDの間に適当なサイズのコンデンサを追加します。

自動書き込みができる環境の人は必要ありません。ターゲットのプログラムを転送して実行できることを確認してください。

ドライバ更新

Zadigを利用してドライバをWinUSBに更新します。更新したあとにUSBを抜き出しして新しいドライバを読み込ませます。

結線

FT232HESP32
AD0GPIO13
AD1GPIO12
AD2GPIO15
AD3GPIO14
AC1EN

必要な結線は上記5本です。ENは結線なしで、リセットのタイミングで自分で押しても動きましたが、結線をおすすめします。

platformio.iniの更新

[env:esp32doit-devkit-v1]
platform = espressif32
board = esp32doit-devkit-v1
framework = arduino
debug_tool = minimodule

最後の行に「debug_tool = minimodule」を追記します。だた、minimoduleはFT2232Hを搭載しており、今回使うのはもう少し安いFT232Hですので、修正が必要です。

機能的にはほとんど同じチップですが、FT2232HはシリアルやJTAGが2chあるのに対してFT232Hは1chしか利用できません。

FT2232Hだと1chをJTAGにして、2chをシリアルに設定してプログラム転送とJTAGデバッグを同時に実施することが可能です。

USBでプログラムを転送できるESP32 devkitを使う限りはFT232Hでもいいですが、思ったより値段差はありません。FT2232Hの方が2列ピンヘッダーなのでブレッドボードだと使いにくいですが、メスケーブルとかで引き回せば大丈夫かな?

minimoduleの設定変更

デフォルトだと「FT2232H MiniModule」という名前のデバイスをデバッグで利用しようとします。なので今回利用するボードに書き換える必要があります。

%HOMEPATH%.platformio\packages\tool-openocd-esp32\share\openocd\scripts\interface\ftdi\minimodule.cfg

上記が設定ファイルなので、内部を書き換えます。

#
# FTDI MiniModule
#
# http://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_FT2232H_Mini_Module.pdf
#

interface ftdi
ftdi_device_desc "FT2232H MiniModule"
ftdi_vid_pid 0x0403 0x6010

# Every pin set as high impedance except TCK, TDI, TDO and TMS
ftdi_layout_init 0x0008 0x000b

# nSRST defined on pin CN2-13 of the MiniModule (pin ADBUS5 [AD5] on the FT2232H chip)
# This choice is arbitrary. Use other GPIO pin if desired.
ftdi_layout_signal nSRST -data 0x0020 -oe 0x0020

デフォルトがこんな感じです。書き換える場所はデバイスの名前とvid、pidです。

Zadigの画面を参考にしてデバイス名を「Single RS232-HS」にして、pidを6014に変更します。

#
# FTDI MiniModule
#
# http://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_FT2232H_Mini_Module.pdf
#

interface ftdi
#ftdi_device_desc "FT2232H MiniModule"
ftdi_device_desc "Single RS232-HS"
#ftdi_vid_pid 0x0403 0x6010
ftdi_vid_pid 0x0403 0x6014

# Every pin set as high impedance except TCK, TDI, TDO and TMS
ftdi_layout_init 0x0008 0x000b

# nSRST defined on pin CN2-13 of the MiniModule (pin ADBUS5 [AD5] on the FT2232H chip)
# This choice is arbitrary. Use other GPIO pin if desired.
ftdi_layout_signal nSRST -data 0x0020 -oe 0x0020

変更後のファイルが上記です。変更したらVisual Studio Codeを再起動して、設定をリロードしてください。

デバッグ(F5)

止まりました! そして変数が見えます。ただ最初にアカウント作って、PlatformIOにログインしていないとデバッグ機能が利用できません!

あと、きれいにソースコードの場所で停止しなかったり、不安定です。ブレークポイントを消したり追加したりすると止まってくれる率があがります。

個人的には使わないかな。。。シリアルコンソールに出力とかしたほうが楽な気がします。

その他のJTAGボード

FT2232H

FT232HよりはFT2232Hの方がメジャーなので情報がある気がします。パソコンでI2CとかSPI通信をする際にも利用できるはずです。

Olimex ARM-USB-TINY-H

Amazonには高いものしかないですが、5000円前後で購入できるJTAGです。中身は
FTD2232みたいなので、箱とケーブルが付属している感じでしょうか?

参考ページ

VSCode+PlatformIOを使ったESP32のデバッグ開発環境

https://qiita.com/nishinohi/items/d1c1a517f26394c492c3

上記に大体くわしく書いてあります! FT2232H MiniModuleを利用する場合にはこのページを見たほうが適していると思います。

オフィシャルのデバッグ方法解説ページ

Get started with Arduino and ESP32-DevKitC: debugging and unit testing

使い方はこちらがわかりやすかったです。

オフィシャルのMini-Module解説ページ

Mini-Module FT2232H

ドライバーの入れ方へのリンクや、ピンアサイン、対応しているボードなどの情報があります。

ESP32とFT232H配線

First dabblings with ESP32 FT232H JTAG and VisualGDB

わかりやすい図がありました。

技適検索のRSS対応をしてみた

https://lang-ship.com/giteki/

上記で公開している技適データベースの検索システムですが、キーワード検索での新着メールとか作りたかったんですが、メール送信は面倒なのでRSS対応をしてみました。

サンプルURL

新着全件

https://lang-ship.com/giteki/rss.php

特定会社のみ

https://lang-ship.com/giteki/rss.php?name=Espressif+Systems

https://lang-ship.com/giteki/rss.php?name=Shenzhen+Mingzhan

キーワード検索

https://lang-ship.com/giteki/rss.php?fullText=LORA

特定無線設備の種別

https://lang-ship.com/giteki/search.php?radioEquipmentCode=第2条第8号に規定する特定無線設備

条件絞り込み方法

検索画面の結果のところにRSSへのリンクがあるので、そのURLをRSSリーダーに登録すれば新着確認ができると思います!

注意事項

技適データベースは実際の申請から一ヶ月ぐらい遅れて登録されますので、年月日をRSSのpubDateに入れると、古いデータは表示されない場合がありそうなので、入力していません。技適データベースが更新されたタイミングの日付がRSSリーダーによっては表示されると思います。

ちなみにデータベースは毎日朝に更新していますので、それほど更新日時に遅延はないと思います。

M5Stickって日本で使えるの?

M5Stackの新作で、本体が黄色のものはM5StickCって名前です。

小型で腕時計みたいに使えて、 バッテリー内蔵でカラー液晶とボタンがある。Groveコネクタもあるのでちょっとしたセンサーをつなげるのにものすごい使いやすそうです。

少し前に1ドルでキャンペーンやっていましたが、ちょっと見送ってしまいました。

(2019/06/04)スイッチサイエンスさんで取扱い開始しました!
https://www.switch-science.com/catalog/5517/

技適(MIC)は準備中らしい

結論からいうとたぶん2019年4月15日現在だと技適通ってないです。
→取得したようです! 現在テスト販売中なので一般販売はもう少し先かな?

取得したみたいですが、まだ技適は公開されていないみたいですね。

FCCの状況

https://fccid.io/2AN3W

多分上記に増えるはず。ボード自体はESP32-PICOなので、モジュールでの申請はできなくて商品単位での申請になると思います。

技適の状況

https://lang-ship.com/giteki/search.php?name=Shenzhen%20Mingzhan%20Information%20Technology%20Co.,%20Ltd.

たぶんFCCで取得してから、相互認証を使って技適にもってくると思うので、FCCに追加するまで待ちましょう。

その他の商品は?

M5Stack

こちらは「M5Stack-CORE」として技適取得しています。なのでFireみたいな派生製品も技適対象っぽいです。

https://lang-ship.com/giteki/detail.php?number=211-171004

M5CAMERA

こちらは商品として技適取得しています。しかし、FCC IDを見ると「2AC7Z-ESP32WROVER」となっていて、これはESP32-WROVERのモジュールですね。最初はこのモジュール使っていなかったみたいですが、途中でこのモジュールに変更してFCCをパスしたみたいです。

古いバージョンはESP32-WROVERのモジュールじゃないので日本で利用できないので注意してください。あと日本も独自で取得しなくて、ESP32-WROVERの技適番号書けばよかった気もします、、、

https://lang-ship.com/giteki/detail.php?typeName=M5CAMERA001

まとめ

現在まだ日本で使えないみたいですが、実はこの記事みたいにいろんなところで調べなくても簡単に日本で使えるか分かる方法があります。

スイッチサイエンスさんで取扱がないものは、たぶん技適に通っていません!

2019年版 超入門の電子工作で必要な道具一覧

なるべく有名な商品を列挙しています。選び方の基準も記述していますので、必要に応じて安いものも選んでみてください。

Arduino UNOキット

Arduino UNOと実験用部品キットです。このキットをベースにして、必要なものを買い足すのがおすすめです。

  • 日本語マニュアル
  • Arduino UNO
  • ブレッドボード
  • 電源モジュール
  • ジャンパーワイヤ
  • 抵抗
  • 発光ダイオード
  • フルカラーLED
  • 整流ダイオード
  • フォトレジスタ
  • トランジスタ
  • サーミスタ
  • ボタン
  • ポテンショメータ
  • ジョイスティック
  • 距離センサー
  • 温度、湿度センサー
  • ティルトスイッチ
  • リモコン
  • 赤外線リモコン受信モジュール
  • 7セグメントディスプレイ
  • LCDディスプレイ
  • 圧電ブザー
  • 電子ブザー
  • ステッピングモーター
  • ステッピングモータードライバー
  • サーボモーター
  • モーター
  • リレー

ざっくり、上記のようなものが入っています。個別に揃えるよりかなり安くなります。電子工作の入門書などを購入しても、部品を揃えるのが非常に難しいので、部品と入門書相当のマニュアルがセットになっているこちらをおすすめします。

テスター(マルチメーター)

なんでもいいので、1台持っていたほうがいいです。回路がうまく動いているときには必要ありませんが、動かない場合の調査には必要になります。

高いものと安いものの差は、測定精度と耐久度です。安いものは5Vが4.9Vみたいな測定になったりしますが、多くの場合そこまでの精度は必要ありません。ほとんどが導通しているかの確認ぐらいにしか使いません。

リード線などが安いものは断線しやすいので、壊れやすいので本体にぐるぐる回して収納しておくのはやめましょう。最初は安くて携帯しやすいタイプの方がいいと思います。

はんだこてセット

最初はあまり使わないと思いますが、一本持っていたほうがいいと思います。白光のFX600が定番ですがセットで揃えるとすこし高いです。gootの電子工作用はんだこてセットは必要なものがセットになっていて、便利です。はんだこて自体は値段相応なので、温まるまで時間がかかります。

中国メーカーのセットは箱とかテスターとかまでセットになったものあります。最初はこれらのセットでもいいのかもしれません。

個人的には上記のヒートクリップが細かい固定に便利なので、持っていない場合には追加で購入をおすすめします。

はんだこてはダイソーでも買えますが、温まるまで時間がかかるのであまりおすすめしません。セラミックヒーターで温度調整ができるものがおすすめです。高いものは小手先の実際の温度設定ができますが、海外メーカーの千円台のものは弱、中、強と温度ではなく温める強さだけの調整になります。高いもののほうが、簡単できれいにハンダ付けができますが、安くても慣れればなんとかなります。

基礎的な部品の本

できれば基礎を本で勉強したほうがいいと思います。何か作ってみようって本ではなく、基礎的な部品の解説をしている本から入ったほうがいいです。

「電子部品ハンドブック」は元になったホームページがありますので、そちらで勉強してもいいかもしれません。

基本的な工具

  • ラジオペンチ
  • ニッパー
  • ドライバー
  • ピンセット
  • ヤスリ
  • ハサミ
  • カッターナイフ

このへんは100円ショップで揃えるのがいいと思います。ただしドライバーセットだけはもうちょっといいやつのほうが使いやすいです。

その他追加部品

Arduino UNOキットに含まれていない部品は個別に買い揃える必要があります。過去に購入したものを簡単に列挙します。

ミニブレッドボード

実験でいろいろな回路を作りますが、ブレッドボードが1つしかないと残しておくことができません。最初は小さいサイズしか使わないので、複数あるとかなり便利です。

Arduino UNO以外のESP32などの小さいボードを使うときにもあると便利です。

コンデンサ

セットにはコンデンサが入っていません。小さいセラミックコンデンサと、大きめの電解コンデンサのセットがあると便利かもしれませんが、、、実際のところモジュールを組み合わせて電子工作をすると、なくてもどうにかなることが多いです。

ノイズ対策などで必要になりますが、パソコンの前だけで動かすんであれば、誤作動してもリセットすればなんとかなります。

また、Amazonプライム以外の商品は中国からの発送になるので、到着まで2週間から4週間はかかります。必要になってからプライムで購入するのがおすすめですが、とりあえず必要になるかわからないが購入しておく手もあります。

定番IC

書籍などで作ってみたい回路を探し、定番の回路を作ってみるのもおすすめです。オペアンプやタイマー、ANDやORなどのロジックICなどが入門として扱いやすいです。

各種モジュール

SDカードや時計、カラー液晶にGPSや脈拍計、カメラなどいろいろなモジュールがありますので興味があるものを使ってみるといいと思います。

キットを組み立てる

いろいろなキットがありますので、気になったものを組み立ててみて、その後にどんな部品がどのように組み合わさって動いているのかを勉強することができます。

その他の部品

上記に代表的な部品の一覧がありますので、参考にしてください。

ESP32-PICO-KITを調べる

なにか新しいボードないかなと技適を調べていたら1月にEspressif SystemsがESP32-PICO-KITで技適を取得していました。

https://lang-ship.com/giteki/detail.php?typeName=ESP32-PICO-KIT

技適の添付ファイルに上記の写真がありました。むむっ、チップにはシールドされていないのか。。。商品自体は知っていたけれど、技適マークがないのでスルーしていました。

これって日本で使えるのか?

Amazonの商品

んー、技適の番号がやっぱり表示されていない。今回はモジュールじゃなくて、KIT全体での技適なんでpicoで使われているESP32-PICO-D4モジュールを使っているだけじゃだめなんですよね。

これとかはシールドされているけれど、アンテナ外付けなんでたぶん技適取らないでしょう。

技適番号で検索

https://www.mouser.com/PCN/Espressif_Systems_Packaging_Changes_to_Espressif_Modules.pdf

上記のPDFが引っかかった。

ラベルデザイン発見!

でもこれ張り付いている商品検索しても出てこない、、、箱に貼り付けているのか?

アメリカFCCを調べた

https://fccid.io/2AC7Z-ESP32PICOKIT

ラベルからFCCのIDがわかったので、この申請。FCC ID Labelを開いてみると、、、

そこに表示されるのか!

たしかに、いま販売されている商品の画像よくみるとFCC ID書かれていました。

FCCは入っていますが、技適マークはない。。。たぶんラベル変更のお知らせがあったので、もう少しすると技適付きの商品が出回ると思います。

いま購入すると古いのが来る可能性があるから、ちょっと怖いな、、、古いのきたら新しいラベルを自分で印刷して貼り付ければ大丈夫だったはず、、、→たまに技適シール送付してきて自分で貼り付けてって対応がありますが、シール貼り付け自体も業者がやらないとだめっぽいです。なので古いの来たら使えないっぽいです。

もう少し様子見かなー

Arduino for Visual Studio Code出力の文字化け対策

文字化け

普通に利用するとWindows上の場合、出力が文字化けしちゃいます。文字コードの問題だとは思うのですが、どうやっても化けたままなのでソースコードを覗いてみました。

原因

実行環境の文字コードからUTF-8に変換しようとしていたため。過去コードの9行目。

function spawn(command, outputChannel, args = [], options = {}) {
    return new Promise((resolve, reject) => {
        const stdout = "";
        const stderr = "";
        options.cwd = options.cwd || path.resolve(path.join(__dirname, ".."));
        const child = childProcess.spawn(command, args, options);
        let codepage = "65001";
        if (os.platform() === "win32") {
            codepage = childProcess.execSync("chcp").toString().split(":").pop().trim();
        }
        if (outputChannel) {
            child.stdout.on("data", (data) => {
                outputChannel.append(decodeData(data, codepage));
            });
            child.stderr.on("data", (data) => {
                outputChannel.append(decodeData(data, codepage));
            });
        }
        child.on("error", (error) => reject({ error, stderr, stdout }));
        child.on("exit", (code) => {
            if (code === 0) {
                resolve({ code, stdout, stderr });
            }
            else {
                reject({ code, stdout, stderr });
            }
        });
    });
}

C:\Users\%username%\.vscode\extensions\vsciot-vscode.vscode-arduino-0.2.25\out\src\common\util.js

上記コードにて文字コードをUTF-8に設定しようとしているが、Windows環境の場合、子プロセスの文字コードを取得し、その文字コードに上書きする設定が入っている。

ここの設定にてShift_JISからUTF-8に変換しようとしているが、実際の出力はUTF-8で、更に変換をしようとしておかしくなっているみたいです。

        if (os.platform() === "win32") {
            //codepage = childProcess.execSync("chcp").toString().split(":").pop().trim();
        }

なので該当部分をコメントアウトします。

修正結果

文字が正常に表示されました!

過去のチケットを見ていましたが、このへんはいろいろバタバタしているみたいでして、環境によって動きが違うみたいなので、コードに手を入れないと直らないみたいでした。

出力のエンコードをオプション化する提案などいろいろあったんですが、取り込まれていないようです。

電子工作用語の日本語・英語対応表

海外サイトで検索するときに困るので、作ってみました。どんどん増やしていくつもりです。

通販サイトでは検索しやすいようにいろいろな名前で呼ばれているので、なるべくwikipediaで検索できるものにしてあるつもりです。

種類日本語英語利用用途参考商品リンク
工具ラジオペンチNeedle-nose pliers細かいものを掴む。100円ショップのものでも問題ありません
工具ペンチLineman's pliers金属などを曲げる。100円ショップのものでも問題ありませんが、電子工作ではあまり使いません
工具ニッパーDiagonal pliers物を切る。明らかに硬いものを切る場合には刃先が痛むので100円ショップの物を使ったほうがいいです
工具圧着ペンチCrimping pliersケーブルに端子をつける。最初必要ないですが、買うのであればエンジニアのちゃんとしたものがおすすめ
工具プライヤSlip joint pliers物を掴む。100円ショップのものでも問題ありません
工具ウォーターポンププライヤーWater pump pliers大口径のものを掴む。電子工作では通常使いません。
工具ワイヤーストリッパーWire stripperケーブルの被覆をむく。あると便利ですが、最初は必要ないと思います
工具ドライバーScrewdriverネジを回す。100円ショップのものではなく、千円前後のセットの物がおすすめ
工具ピンセットTweezer細かい物を掴む。最初は100円ショップのもので問題ありません
工具ヤスリFile物を削る。最初は100円ショップのもので問題ありません。ケースを自作するようになったらいろいろな形を揃えましょう
工具ピンバイスPin Vise小さい穴をあける。最初必要ないですが、それほど高くないので買うのであれば少しいいドリルを買いましょう
工具グルーガンHot glue gun物を固定する。100円ショップのものでも問題ありません
工具ヒーティングガンHeat gun熱収縮チューブを使うとき、接着剤を剥がす
工具IC抜き工具IC extractorICを抜く。最初必要ないです
測定機材テスターMultitester電圧などを測る。ケーブルが邪魔になるので最初は小型で収納できるものがおすすめです。それほど高性能なものは最初必要ありません
測定機材マルチメーターMultimeterテスターと同じだが、高機能なものが多い
測定機材オシロスコープOscilloscope時系列で変化する電圧を測る。通常必要ないですが、買うなら帯域100M対応の物がおすすめ。もしくは数千円の簡易的なものをおもちゃにする
測定機材ロジックアナライザLogic analyzer通信信号を確認する。I2C通信などでうまく動かないときに利用するが、通常は必要ないです
測定機材シグナルジェネレータSignal generator特定周波数を発生させて、スピーカーなどの特性を確認する。通常必要ないです
測定機材ファンクションジェネレータFunction generator特定の通信信号を発生させて、回路を確認する。通常必要ないです
測定機材スペクトルアナライザSpectrum analyzer周波数別に信号強度を確認する。通常必要ないですがノイズなどの確認や無線を取り扱うときに必要になります
測定機材ノギスCalipers0.1mm単位で長さをはかる。最初は100円ショップのもので問題ありませんがデジタルのものは便利です
基板関係ユニバーサル基板Stripboardプロタイプの回路を作る。最初に設計をして必要なサイズの基板を用意する
基板関係ブレッドボードBreadboard一時的な回路を作る。大きめのものと、小さいものを複数持っていると便利です
基板関係単線ワイヤーSolid wireブレッドボード配線用。通常はジャンパーワイヤを利用するので使わなくてもよい
基板関係より線ワイヤーStranded wire通常の基板配線用。通常AWG24の太さを使い、電源はAWG20の太さがおすすめ
基板関係スズメッキ線Tin-plated wireユニバーサル基板の穴と穴の配線用。抵抗などの切り離した線でもよい
基板関係ジャンパーワイヤJump wireブレッドボード配線用。使い回すのでそれほど本数は必要ないが、一式持っていたほうがいい
基板関係ピンヘッダPin header基板間のコネクタ。モジュールに付属していることが多いが、安いので少し持っているとよい
基板関係みのむしクリップCrocodile clipテスターなどで一時的に接続する。最初必要ないが、あると便利
光学機材ルーペLoupe拡大して確認する。通常必要ないが、あると便利
光学機材ヘッドルーペHeadband Magnifier覗きながら作業を行う。通常必要ないが、あると便利
光学機材実体顕微鏡Stereo microscope覗きながらはんだ付けなどを行う。通常必要ないが、あると便利
はんだはんだSolder基板に部品を取り付ける。普通のはんだの方が安くて使いやすい。ヨーロッパには輸出できなくなる。100円ショップでも購入できるが、国産のもののほうが使いやすい
はんだ鉛フリーはんだLead-free solder環境負荷のある鉛が入っていないはんだ。使いにくいが環境負荷が少ない
はんだはんだペーストSolder paste小さい部品を取り付けるときに使うはんだ。通常必要ない
はんだはんだごてSoldering Ironはんだを取り付けるときのこて。温度調整機能付きをおすすめ。100円ショップのは温まるのに時間がかかる
はんだはんだごて台Soldering iron standはんだごてを置く台。なくてもいいが、あったほうが安全
はんだはんだステーションSoldering station高精度の温度調整が可能なはんだごて。通常必要ない
はんだはんだ吸い取り線Solder wickはんだを取り除くときに使う線。安いものなのではんだこてと一緒に揃えたい
はんだはんだ吸取器Desoldering pumpはんだを取り除くときに使う吸取器。最初は必要ない
はんだフラックスSoldering flux金属表面の汚れを除去してはんだしやすくする。はんだに含まれているが、つけにくいものや、一度つけたものを再度溶かす場合などにあると便利
はんだヒートクリップSoldering heat sinkはんだの熱が部品あたえる影響を軽減する。はんだ付けをするときに部品を固定するクリップとして非常に使いやすい。安いのではんだこてと一緒に揃えたい
部品抵抗Resistor電流を制限する部品。ある程度安いのでセットのものを一つ持っていると便利です
部品整流ダイオードDiode Rectifier電流を一方向に制限する部品。逆流防止に使う。最初は少し持っていれば間に合うはず
部品発光ダイオードLED光らせる場合に利用する部品。いろいろな色とサイズがあるので、セットを1つ持っていると便利
部品フルカラーLEDRGB LEDいろいろな色に光らせることができる部品。必要に応じて購入
部品フォトレジスタPhotoresistor明るさに応じて抵抗値が変わる部品。明るさセンサーなどに利用する
部品コンデンサCapacitor一時的に電気を貯める部品。ノイズ対策などに利用する。さまざまな容量の物があるので、セットを1つ持っていると便利です
部品発振器Oscillator電圧を与えると一定の周期波形を発生させる部品です。クロックなどとして利用します
部品共振器Resonator一定の周期波形を取り出す部品です。電波の中から特定の周波数を取り出すときなどに利用する
部品トランジスタTransistor小さい電流から、大きな電流に増幅するための部品。定番のセットをもっていると便利
部品電界効果トランジスタFET電圧により、電流を制御するための部品。一定の電圧をかけて定電流とし、発光ダイオードの電流制限などが可能
部品サイリスタThyristor発光ダイオードにゲート信号を追加し、ダイオードに流れる電流を制御できるようにしたものです
部品ステッピングモーターStepper Motor信号を入力すると一定角度だけ動くモーター。入力回数で細かく動作を制御することが可能。タイヤなどの高速で回転するものに利用する
部品ステッピングモータードライバーStepper Motor Driver通常制御用の信号からはモーターを動かすだけの電流が流れないので、外部電源を利用してモーターを動かすための部品。モーターとセットで購入するほうが無難です
部品サーボモーターServo Motor指定した角度に動かすことができるモーター。関節などの特定の角度に制御したい場合に利用する
部品圧電ブザーPassive Buzzer普通のスピーカーと同じく与えた音声信号に従って発音する部品
部品電子ブザーActive Buzzer電圧をかけている間、決まった音が発音する部品
部品ボタンButtonボタンで入力を行う部品。いろいろな種類があるので必要なものを利用する
部品ポテンショメータPotentiometer回すことで抵抗値が変わる部品。ボリュームなどとして利用。固定値の範囲や増減の仕方で種類がある
部品リモコンRemote主に赤外線を利用した発信装置。赤外線LEDを利用して自分で作ることもできる
部品赤外線リモコン受信モジュールIR Receiver赤外線を受信するフォトダイオード。反応する赤外線の周波数が決まっていますので、送信側と揃える必要があります
部品サーミスタThermistor温度変化によって抵抗値が変化する部品。温度センサーなどに利用する
部品リレーRelayON/OFFすることができるスイッチの部品。回路とは違う電圧をON/OFFすることができる
部品LCDディスプレイLCD Display文字や絵を表示する部品。ものによって文字だけのものや、カラー液晶などがあるので、適したものを利用する
部品電源モジュールPower Supply ModuleUSBや乾電池などから回路に必要な電圧を作成する部品
部品コイルCoil交流に対する抵抗となる部品です。高い周波数の電流を遮断するなどでノイズ対策などに利用します
その他万力Viseものを固定する。通常必要ないが、あると便利
その他安定化電源Regulated power supplyノイズの少ない安定した電源。通常必要ないが、回路が安定していない場合や、電池を使うのば面倒な場合に必要。国産のものは非常に高い。アルインコのは無線用なので、電流制限ができないのでおすすめしません。中国メーカーであれば一万円以下で購入可能。電流制御があるCCやCVと表記されているものがおすすめ
その他絶縁テープElectrical tape絶縁するときに使う主に黒いテープ。100円ショップのものでも良いが、時間がたつとベタつくので気をつける
その他カプトンテープKapton tape耐熱、絶縁性を持つポリイミドを使ったテープ。通常必要ないが、耐熱が必要な場所に利用する
その他マスキングテープMasking tape一時的に固定したり保護するときに使うテープ。傷防止や仮止めであると便利
その他自己融着テープSelf-amalgamating tape時間が経過してもベタつかない絶縁テープ。普通の絶縁テープよりおすすめ。100円ショップでも購入可能です
その他熱収縮チューブHeat-shrink tubing絶縁や保護するときに使う熱で収縮するチューブ。ケーブルの処理で利用するとかっこいいし、安全だが最初は必要ない。普通のドライヤーだと収縮しないのでヒーティングガンかはんだこてや火で炙るなど扱いにくい
その他結束バンドCable tie物を固定する。100円ショップのものでも問題ありません

TTGO T-Cameraを買った

ESP32でカメラがついているものがほしいなと思っていたら、あったので購入してみました。購入したのは送料無料だったBandgood.comで2,000円ぐらいです。オフィシャルの販売はAliExpressだと思いますが、単品で買うと送料が高いのでご注意を!

表にはカメラ(OV2640)と0.96インチ(128×64ドット)のOLED液晶(SSD1306)、モーションセンサー(AS312)と、環境センサー(BME280)が搭載されています。

ただし環境センサーのBME280はまともに動きません。なので現在販売されているものは最初からついていないみたいです。

裏側には技適マークのついているESP32-WROVER-Bが搭載。これ以外にもカメラデバイスはあるのですが、日本で使えるものは非常に少ないです。

上記とかが注意が必要で、技適がないので日本では利用できません。M5Cameraの方が複雑でこのボードはたぶん技適が通っていないバージョンです。。。

https://www.switch-science.com/catalog/5207/

スイッチサイエンスさんとかを見ると、ESP WROVERを積んでいますので日本で使えるのはケース付きの方です。

こっちは充電池も内蔵しているので、こっちのほうが良かったかも。。。ただ画面が無いので細かい確認はT-Cameraの方が便利な気がします。

動かしてみた

電源をいれるとアクセスポイントモードで起動しますので、TTGO-CAMERA-??:??というWi-fiに接続して、http://2.2.2.1に接続すると上記画面になります。

ボード上の液晶には、モーションセンサーに反応したかの表示と、IPアドレスが1画面目。2画面目には環境センサーのBME280の数値が表示されています。

ただし、私のボードではセンサーの値がデタラメで使い物になりませんでした。たぶん今から購入するとセンサーが無いバージョンが届くので、2画面目は何も表示されていないと思います、、、

自分でコンパイルする

https://github.com/Xinyuan-LilyGO/esp32-camera-bme280

上記からソースコードをダウンロードしてきます。

必要ライブラリを追加する

  • Adafruit_BME280_Library
  • Adafruit_Unified_Sensor
  • ESP8266_and_ESP32_Oled_Driver_for_SSD1306_display
  • OneButton

最終的に追加したのは上記4つです。ただし、BME280が搭載されていないボードか、ソースコードの変更が面倒な人は以下の2つだけ入れましょう。

  • ESP8266_and_ESP32_Oled_Driver_for_SSD1306_display
  • OneButton

プログラムを修正する(BME280を使う場合)

なんとそのままだとコンパイルエラーになります!

#define sensor_t    sensor_t_
#include <Adafruit_BME280.h>
#undef sensor_t

上記のAdafruit_BME280.hの中で読み込まれているAdafruit_Sensor.hがsensor_tを定義しているのですが、esp_camera.hの中でも定義されているのでエラーになってしまいます。

そのため、上記のようにAdafruit_BME280.hの中のsensor_t構造体を別名に避難してから、消します。Adafruit_BME280.hの中にあるAdafruit_Sensor.hの読み込みを消してもいいのですが、ライブラリに手を入れるのは嫌なので、上記のような黒魔術で乗り切ります。

#define ENABLE_BME280

あと、デフォルトですとBME280を使わないように上記の行がコメントアウトしてあったので、有効にします。

プログラムを修正する(BME280を使わない場合)

//#include <Adafruit_BME280.h>

上記の行をコメントアウトします。ENABLE_BME280は最初からコメントアウトされていますが、上記のライブラリ読み込みでエラーが出るので、消しちゃいます。

Wi-fiに接続させる

デフォルトだとアクセスポイントモードになるので、ちょっとしたテストには便利ですが実際使う場合には他のWi-fiルーターとかに接続したほうが便利です。

//#define SOFTAP_MODE       //The comment will be connected to the specified ssid

上記をコメントアウトして、アクセスポイントモードを無効にします。

#define WIFI_SSID   "your wifi ssid"
#define WIFI_PASSWD "you wifi password"

上記の2行を接続したいWi-fiの情報に変更します。これで接続できるはずです。

まとめ

とりあえず動かすことができました。

が、、、記事を書くために写真とか見ていたら違和感を発見!
買ったのフィッシュアイレンズの方なのに、送られてきたのが安い方のノーマルレンズだった。

箱には鱼眼って書いてあるのにー。

(追記)その後メールのやり取りを経て、返金されました! 最初はポイントをくれると言っていましたが、Bandgood.comポイントってほとんどの商品で使えないので嫌だといったら、返金になりました。戻ってきたお金でまた何か買う予定です。

USB直挿しマイコン Digispark(ATTINY85)

ちょっと気になったので購入してみました。

Digisparkとは?

超小型のATTINY85を利用したArduinoマイコンです。USBに直接刺さるタイプと、ケーブル接続のタイプがあります。

Windows環境での使い方

Arduino IDEでボード追加

http://digistump.com/package_digistump_index.json をArduino IDEの環境設定の「追加のボードマネージャーのURL」に追加します。

Digistump AVR Boardsをインストールします。

パソコンにドライバをインストール

Arduino IDEの環境設定から、赤枠で囲まれたリンクをクリックします。フォルダが開きますので、「packages」「digistump」「tools」「micronucleus」「2.0a4」と開いていき、ドライバーが入っているフォルダまで移動します。

上記のinstall.exeを実行することで適切なドライバーが入るはずです。

Lチカしてみる

スケッチ例の「Digispark_Examples/Start」がLチカのサンプルです。

上記を実行してから、60秒以内にDigisparkを差し込むことでプログラムが転送されます。リセット機能がないので、強制的に抜き差しをしてリセットする必要があります。

プログラムはシンプルですね。LEDはモデルによってどこについているのかが違うようでして、私のものはpin1に接続していました。

電源確認用のLEDは常時ついていますので、もう一つのLEDが点滅するはずです。

HIDマウスにしてみる

このDigisparkはパソコン上からHIDデバイスとして認識させることができます。そのためマウスやキーボードとして見えるデバイスを簡単に作ることが可能です。

上記が「DigisparkMouse/Mouse」のスケッチ例です。

これを実行するとマウスとして認識して、自動的に動きます。外部からの入力によって動作を変えたり、スクリーンセイバーが動かないように定期的にマウスを震わせることなどができます。

パソコンとのシリアル通信

「DigisparkCDC」というサンプルがあるのですが、ちゃんと動かないと思いますので、現在非推奨になっています。

現在は「DigisparkUSB」を使ってください。こちらは仮想USBなので直接シリアルポートと認識されません。RubyとかPythonだと簡単にアクセスできるのですが、Windowsから使うのは結構面倒です。

https://github.com/digistump/DigisparkExamplePrograms/tree/master/Python/DigiUSB

上記にLinux、Mac、Windowsで使えるサンプルプログラムがありますので、それを実行して通信を試すことが可能です。

個人的にはちょっと面倒なので、シリアル通信をするのであれば他の小型ボードでいいんじゃないかなと思います。HIDデバイスとしてパソコンを制御したいとかの場合には安いので便利そうなんですけれどね。

スケッチ例を調べてみた

カテゴリスケッチ名対象内容
Adafruit_NeoPixelbuttoncyclerPINLEDのNeoPixel用
Adafruit_NeoPixeldigisparkPINLEDのNeoPixel用
Adafruit_NeoPixelsimplePINLEDのNeoPixel用
Adafruit_NeoPixelstrandtestPINLEDのNeoPixel用
DigisparkCDCCDC_LEDUSB非推奨のシリアル通信
DigisparkCDCEchoUSB非推奨のシリアル通信
DigisparkCDCPrintUSB非推奨のシリアル通信
DigisparkIRLibDigiIrDumpPIN赤外線(IR)用
DigisparkIRLibDigiIrRgbCtrlPIN赤外線(IR)用
DigisparkIRLibIRhashdecodePIN赤外線(IR)用
DigisparkIRLibIRrecordPIN赤外線(IR)用
DigisparkIRLibIRrecvDumpPIN赤外線(IR)用
DigisparkIRLibIRsendDemoPIN赤外線(IR)用
DigisparkIRLibIRsendJVCPIN赤外線(IR)用
DigisparkIRLibIRserial_remotePIN赤外線(IR)用
DigisparkIRLibIRservoPIN赤外線(IR)用
DigisparkIRLibSamsung36PIN赤外線(IR)用
DigisparkJoystickJoystickUSBHIDジョイスティック
DigisparkKeyboardKeyboardUSBHIDキーボード
DigisparkLCDBasicUsagePINI2C接続のLCD
DigisparkMouseMouseUSBHIDマウス
DigisparkOLEDDigisparkOLEDPINI2C接続のOLED
DigisparkRcSeqDigiRcSeqZodiacPINRCサーボシーケンス
DigisparkRcSeqMultiPosSwitchPINRCサーボシーケンス
DigisparkRcSeqOnePropTo5PINRCサーボシーケンス
DigisparkRcSeqRcSeqAdvancedDoorsPINRCサーボシーケンス
DigisparkRcSeqRcSeqDemoPINRCサーボシーケンス
DigisparkRcSeqRcSeqZodiacPINRCサーボシーケンス
DigisparkRcSeqUneVoieVers8PINRCサーボシーケンス
DigisparkRGBDigisparkRGBPINPWM出力(PB2)
DigisparkSoftRcPulseInSoftRcPulseInDebugPINpulseIn()関数のノンブロック版
DigisparkSoftRcPulseInSoftRcPulseInDemoPINpulseIn()関数のノンブロック版
DigisparkSoftRcPulseInSoftRcPulseInOutDemoPINpulseIn()関数のノンブロック版
DigisparkSoftRcPulseOutKnobPINパルス出力
DigisparkSoftRcPulseOutknob_moyenneePINパルス出力
DigisparkSoftRcPulseOutSerialServoPINパルス出力
DigisparkSoftRcPulseOutSoftRcPulseInOutDemoPINパルス出力
DigisparkSoftRcPulseOutSweepPINパルス出力
DigisparkSoftRcPulseOutSweepNoDelayPINパルス出力
DigisparkSoftRcPulseOutUsb2ServosPINパルス出力
DigisparkSoftSerialDigi_1io_SerialDbgPINシリアル通信
DigisparkSoftSerialSoftSerialExamplePINシリアル通信
DigisparkSoftSerialTwoPortReceivePINシリアル通信
DigisparkTinyPinChangeEdgePINPINの状態変更検知
DigisparkTinyPinChangeFallingEdgePINPINの状態変更検知
DigisparkTinyPinChangeRisingEdgePINPINの状態変更検知
DigisparkTinyPinChangeTinyRcScopePINPINの状態変更検知
DigisparkTinySoftPwmSoftPwm13PinsPINソフトウエアPWM
DigisparkTinySoftPwmTinySoftPwmDemoPINソフトウエアPWM
DigisparkUSBDigiBlinkUSBDigiUSB(仮想USB)
DigisparkUSBDigiScopeUSBDigiUSB(仮想USB)
DigisparkUSBDigiUSB2LCDUSBDigiUSB(仮想USB)
DigisparkUSBEchoUSBDigiUSB(仮想USB)
Digispark_ExamplesBasicRobot汎用サンプル
Digispark_ExamplesBT_BLE_Echo汎用サンプル
Digispark_ExamplesBT_or_BLERobot汎用サンプル
Digispark_ExamplesCharlieplex汎用サンプル
Digispark_ExamplesCharliePlexMarquee汎用サンプル
Digispark_ExamplesEEPROM汎用サンプル
Digispark_ExamplesExpander汎用サンプル
Digispark_ExamplesGPS汎用サンプル
Digispark_Examplesi2cScanner汎用サンプル
Digispark_ExamplesInfrared汎用サンプル
Digispark_ExamplesMeshGeneralExample汎用サンプル
Digispark_ExamplesMotorShield汎用サンプル
Digispark_ExamplesRfm12b汎用サンプル
Digispark_ExamplesStart汎用サンプル
Digispark_ExamplesWiFiClientGetExample汎用サンプル
Digispark_ExamplesWiFiClientPostExample汎用サンプル
Digispark_ExamplesWiFiServerExample汎用サンプル
Digispark_ExamplesWiFiServerRobot汎用サンプル
Digispark_Examples_9DOF_Shield汎用サンプル
NunchukArduinoNunchukDemoPINWii用ヌンチャック
NunchukDigisparkJoystickDemoPINWii用ヌンチャック
NunchukDigisparkUSBDemoPINWii用ヌンチャック
OneWireDigispark_ExamplePIN1-Wire通信用
RF24digispark_receivePINnRF24通信用
RF24digispark_sendPINnRF24通信用
SPIBarometricPressureSensorPINSPI通信用
SPIDigitalPotControlPINSPI通信用
WS2811digisparkPINWS2811 IC用(LED制御)

あまり情報がないので、スケッチ例を全部見てみました。結構関係なさそうなのも入っているので以下のスケッチ例だけ見ればいい気がします。

  • Digispark_Examples/Start
  • DigisparkMouse/Mouse
  • DigisparkKeyboard/Keyboard
  • DigisparkUSB/Echo

まとめ

スイッチを押したら特定の動作をするなどの、キーボードやマウス入力装置作成マイコンとしてはかなり優秀だと思います。

値段も安いので、一度触ってみてもいいのかな? ただちょっとでも面倒なことをやるのであれば、もっと普通のマイコンのほうが開発しやすいとは思います。