2. Atsushi Morimoto @74th
● Mobility Technologies所属
Working at Mobility Technologies, Co., Ltd.
● AIよりのサーバサイドエンジニア
Server-side engineer for AI product
タクシー乗務員支援サービスを開発
I'm developing taxi crew support service.
● 著書 books
技術書典3~11参加
published at Japanese tech fun book markets "Gijutsushoten(TechBookFest)”
Visual Studio Code Practical Guide
? Mobility Technologies Co., Ltd.
3. タクシー車内の機器(システム構成の一例)
Taxi equipment i(an example)
宣伝/ Mobility Technologies では車載IoT開発をやってます
We are developing in-vehicle IoT
3
Wi-Fi
Direct
Taxi Meter
Mobile Printer
後部座席タブレット
Backseat tablet
乗務員端末
Tablet for a driver
決済機
online payment
外部デバイス
Other Devices
車両信号
Connecting to
vehicle
DRIVE CHART
(Intelligent Drive Recorder)
BLEロガー
BLE logger
位置情報収集基盤
Vehicle Locations
Collection System
4G
? Mobility Technologies Co., Ltd.
5. 目次Agenda
● Arduino と、私の Arduino 歴Arduino and my Arduino history
● PlatformIO とは What is PlatformIO?
● PlarformIOを使った開発Development with PlarformIO
○ Raspberry Pi PICO を開発開始!Started developing with Raspberry Pi PICO!
○ RGB LEDのライブラリを追加!Added RGB LED library!
○ ESP32 でIoTアプリに変更!Change to an IoT app with ESP32!
○ ESP32 をデバッグ実行!Run ESP32 in debugger!
○ Unit TestやってみようLet's try Unit Test!
● まとめSummary
6. 目次Agenda
● Arduino と、私の Arduino 歴Arduino and my Arduino history
● PlatformIO とは What is PlatformIO?
● PlarformIOを使った開発Development with PlarformIO
○ Raspberry Pi PICO を開発開始!Started developing with Raspberry Pi PICO!
○ RGB LEDのライブラリを追加!Added RGB LED library!
○ ESP32 でIoTアプリに変更!Change to an IoT app with ESP32!
○ ESP32 をデバッグ実行!Run ESP32 in debugger!
○ Unit TestやってみようLet's try Unit Test!
● まとめSummary
7. Arduino UNO, Nano, Mini
(ATMega 328P)
Pro Micro
(ATMega 32u4)
DigiSpark
(ATTiny 85)
Arduino Nano Every
(ATMega 4809)
M5Stack Core2, Stick C
(ESP32) ESP32 DevKit C STM32
Raspberry Pi
PICO
8. Arduinoとは how about Arduino
● ワンボードマイコンを簡単に開発できるフレームワーク
A framework for easy development of one-board microcontrollers.
○ マイコンの差分を吸収して、マイコンの知識がなくても簡単に実装できる
Absorbs the differences in microcontrollers and it is easy to implement even without knowledge
of microcontrollers.
● USBで繋ぐだけでプログラムの書き換えができる
The program can be rewritten just by connecting it via USB.
○ 市販のはそれができるブートローダーが書き込まれている
Arduino microcontrollers on the market have a bootloader.
● 1ファイルのソースコードで完結するので、コピペで動く
A single ?le of source code is all that is needed, so you can work it with just copy and paste.
● 開発環境もArduino IDEでワンストップ
The Arduino IDE is also a one-stop development environment.
● オープンソースハードウェアとして、入手しやすい
As open source hardware, it is easy to obtain.
9. Arduino で動くコードCode that works on Arduino
ジョイスティックモジュール
Joystick Module
850円
https://akizukidenshi.com/catalog/g/gM-08763/
Raspberry Pi PICO
550円
https://www.marutsu.co.jp/pc/i/2194960/
10. Arduino で動くコード
Code that works on Arduino
setup()で、各PINの役割を設定
Set up the role of each PINs in setup().
ジョイスティックのアナログ値読み取り
Joystick analog value reading
LEDをON/OFFする
Controlling LEDs
シリアル出力
Console output
実処理はloop()に記述
The actual process is
described in loop().
13. パルスオキシメーターPulse oximeter(M5 Stick C)
※医療機器にはなりません This is not a medical device.
https://attosci.hatenablog.com/entry/index.php/2020/04/26/m5stackc-pulseoximeter/
M5Stack用心拍センサユニットHeart
Rate Unit for M5 Stack
1,310円
https://www.switch-science.com/catalog/5695/
M5 Stick C
2,398円
https://www.switch-science.com/catalog/6350/
EOLですが、後継商品 M5 Stick C Plusがあります
EOL, but there is a successor product, M5 Stick C Plus
16. Arduino IDEで辛いところThe hard part of Arduino IDE
● コード補完が効かないCode completion doesn't work..
● 1ファイルで完結して、ライブラリに分割しにくい
Complete in one ?le and dif?cult to split into libraries.
● Unit TestとかできないCannot do Unit Test
● デバッグ実行できないCannot run in debugger.
※Eclipse Theta(VS Code OSSのfork)ベースのArduino IDE 2.0(現在ベータ)で
コード補完、デバッグ実行はできるようになります
With Arduino IDE 2.0 (currently in beta) based on Eclipse Theta (fork of VS Code OSS)
code completion and running in debugger will be available.
17. 目次Agenda
● Arduino と、私の Arduino 歴Arduino and my Arduino history
● PlatformIO とは What is PlatformIO?
● PlarformIOを使った開発Development with PlarformIO
○ Raspberry Pi PICO を開発開始!Started developing with Raspberry Pi PICO!
○ RGB LEDのライブラリを追加!Added RGB LED library!
○ ESP32 でIoTアプリに変更!Change to an IoT app with ESP32!
○ ESP32 をデバッグ実行!Run ESP32 in debugger!
○ Unit TestやってみようLet's try Unit Test!
● まとめSummary
19. PlatformIOとはWhat is PlatformIO?
● VS Codeの拡張機能として提供
Provided as an extension to VS Code.
● プラットフォームを選ぶだけで、
マイコン開発に必要なソフトウェアを自動インストール
The software required for microcontroller development can be installed automatically by only selecting a platform.
● コード補完が効くCode completion(C++)
● ライブラリの自動インストール(とそのコード補完)
Automatic installation of libraries (and their code completion).
● デバッグ実行Debug run
● Unit Test
● 静的解析Static analysis
20. 目次Agenda
● Arduino と、私の Arduino 歴Arduino and my Arduino history
● PlatformIO とは What is PlatformIO?
● PlarformIOを使った開発Development with PlarformIO
○ Raspberry Pi PICO を開発開始!Started developing with Raspberry Pi PICO!
○ RGB LEDのライブラリを追加!Added RGB LED library!
○ ESP32 でIoTアプリに変更!Change to an IoT app with ESP32!
○ ESP32 をデバッグ実行!Run ESP32 in debugger!
○ Unit TestやってみようLet's try Unit Test!
● まとめSummary
21. 目次Agenda
● Arduino と、私の Arduino 歴Arduino and my Arduino history
● PlatformIO とは What is PlatformIO?
● PlarformIOを使った開発Development with PlarformIO
○ Raspberry Pi PICO を開発開始!Started developing with Raspberry Pi PICO!
○ RGB LEDのライブラリを追加!Added RGB LED library!
○ ESP32 でIoTアプリに変更!Change to an IoT app with ESP32!
○ ESP32 をデバッグ実行!Run ESP32 in debugger!
○ Unit TestやってみようLet's try Unit Test!
● まとめSummary
29. 目次Agenda
● Arduino と、私の Arduino 歴Arduino and my Arduino history
● PlatformIO とは What is PlatformIO?
● PlarformIOを使った開発Development with PlarformIO
○ Raspberry Pi PICO を開発開始!Started developing with Raspberry Pi PICO!
○ RGB LEDのライブラリを追加!Added RGB LED library!
○ ESP32 でIoTアプリに変更!Change to an IoT app with ESP32!
○ ESP32 をデバッグ実行!Run ESP32 in debugger!
○ Unit TestやってみようLet's try Unit Test!
● まとめSummary
30. RGB LEDを追加Add RGB LED
RGB LEDには共通仕様があり、
NeoPixel というライブラリで
動かせる
Some RGB LEDs can be used with the NeoPixel library.
マイコン内蔵RGBLEDモジュール(WS2812)
RGB LED module with built-in microcontroller
70円
https://akizukidenshi.com/catalog/g/gM-08414/
31. RGB LEDを追加Add RGB LED
RGB LEDには共通仕様があり、
NeoPixel というライブラリで
動かせる
Some RGB LEDs can be used with the NeoPixel library.
マイコン内蔵RGBLEDモジュール(WS2812)
RGB LED module with built-in microcontroller
70円
https://akizukidenshi.com/catalog/g/gM-08414/
34. 目次Agenda
● Arduino と、私の Arduino 歴Arduino and my Arduino history
● PlatformIO とは What is PlatformIO?
● PlarformIOを使った開発Development with PlarformIO
○ Raspberry Pi PICO を開発開始!Started developing with Raspberry Pi PICO!
○ RGB LEDのライブラリを追加!Added RGB LED library!
○ ESP32 でIoTアプリに変更!Change to an IoT app with ESP32!
○ ESP32 をデバッグ実行!Run ESP32 in debugger!
○ Unit TestやってみようLet's try Unit Test!
● まとめSummary
35. ESP32マイコン
● WiFI、Bluetooth搭載
Equipped with WiFI and Bluetooth.
● マイコンが技適取得済み
Microcontroller has been approved for Japanese wireless
regulations “Giteki”.
● 安いLow cost
○ 公式開発ボード Of?cialDevBoard 1,230円
○ 秋月の開発ボード 730円
Akidsuki Dev Board
※Akidsuki is the most famous shop
for DIY electronic parts
○ マイコン単体 microcontroller 360円
● 市場在庫潤沢(電子工作用途、2021/11現在)
Suf?cient market stock (as of Nov. 2021 for DIY Electronics)
● 発売元がArduino対応を提供
of?cially Arduino support
● MicroPythonも公式サポート
MicroPython is also supported
● 2コア 2 cores 公式開発ボード https://akizukidenshi.com/catalog/g/gM-15673/
秋月の開発ボード https://akizukidenshi.com/catalog/g/gK-16108/
マイコン単体 https://akizukidenshi.com/catalog/g/gM-15675/
41. 目次Agenda
● Arduino と、私の Arduino 歴Arduino and my Arduino history
● PlatformIO とは What is PlatformIO?
● PlarformIOを使った開発Development with PlarformIO
○ Raspberry Pi PICO を開発開始!Started developing with Raspberry Pi PICO!
○ RGB LEDのライブラリを追加!Added RGB LED library!
○ ESP32 でIoTアプリに変更!Change to an IoT app with ESP32!
○ ESP32 をデバッグ実行!Run ESP32 in debugger!
○ Unit TestやってみようLet's try Unit Test!
● まとめSummary
42. ESP32をデバッグ実行しよう
Let's run ESP32 in debugger
ESP32はJTAGという規格に対応
ESP32 supports JTAG for debugging
FT232HLで、安価に、
デバッガとして使える
The FT232HL can be used as an inexpensive JTAG debugger.
デバッグ時の設定は
vscode/launch.json ではなく
platformio.ini に記述
The con?guration for debugging is not in vscode/launch.json,
but in platformio.ini
FT232HL ハイスピードUSBシリアル変換モジュール
FT232HL High speed USB Serial Converter Module
1,200円
https://akizukidenshi.com/catalog/g/gK-06503/
44. デバッグ実行できると言ってもDebugging difficulties
● ファームウェアのサイズ増大Increased size of ?rmware.
● かなり遅くて繰り返し実行しづらいIt is too slow to run repeatedly.
● GPIOポートが兼用で、特定GPIOが使えなくなる
Some GPIO ports are used for debugging.
● ツールが必要Required additional tools
○ Raspberry PI Pico : Picoprobe
(※PlatformIO非対応 PlatformIO does not supported)
○ ESP32 : JTAG
(※M5Stackは必要ポートが空いていないので不可)
M5Stack can't be debugged because the required port is not available.
○ STM32 : J-Link
○ ATMega328P : debugWire
○ ATMega4048 : EDBG
45. VS Codeでのマイコンのデバッグの詳しい仕方は
For a detailed explanation of running microcontrollers in debugger with VS Code, see this (but Japanese only).
https://74th.booth.pm/items/3338895
Advanced debugging with VS Code 2nd Edition
(Japanese book)
46. 目次Agenda
● Arduino と、私の Arduino 歴Arduino and my Arduino history
● PlatformIO とは What is PlatformIO?
● PlarformIOを使った開発Development with PlarformIO
○ Raspberry Pi PICO を開発開始!Started developing with Raspberry Pi PICO!
○ RGB LEDのライブラリを追加!Added RGB LED library!
○ ESP32 でIoTアプリに変更!Change to an IoT app with ESP32!
○ ESP32 をデバッグ実行!Run ESP32 in debugger!
○ Unit TestやってみようLet's try Unit Test!
● まとめSummary
47. Unit TestをしようLet's start Unit Testing
● マイコン上でUnit Testが実行できるUnit Test can be run on a microcontroller.
○ Unity Test Framework
● PC上でも実行できるCan be run on a PC
● テスト対象は lib/ ディレクトリ下のライブラリ
The test targets are libraries under the lib/ directory
50. 私はほとんど活用できていない…… I have barely scratched the surface
● ArduinoFake.h で Arduino.h のカバーが不十分
I think that ArduinoFake.h is inadequate to cover the scope of Arduino.h.
○ ESP32専用ライブラリはない(WiFi.hとか)
No ESP32-speci?c library (like WiFi.h)
● マイコンへの入力がない範囲しか検証できない
I can only verify tests that have no input to the microcontroller.
○ ボタンが押されているかとか、アナログ入力とか分岐できない
Can not test branching for button presses, analog inputs, etc.
● Arduinoに依存しないコードのテストであれば、
PlatformIOで実行する必要はない。
I thought that if the test does not depend on Arduino, it does not need to test on PlatformIO.
● デバッグ実行できない
Cannot run in debugger
51. 目次Agenda
● Arduino と、私の Arduino 歴Arduino and my Arduino history
● PlatformIO とは What is PlatformIO?
● PlarformIOを使った開発Development with PlarformIO
○ Raspberry Pi PICO を開発開始!Started developing with Raspberry Pi PICO!
○ RGB LEDのライブラリを追加!Added RGB LED library!
○ ESP32 でIoTアプリに変更!Change to an IoT app with ESP32!
○ ESP32 をデバッグ実行!Run ESP32 in debugger!
○ Unit TestやってみようLet's try Unit Test!
● まとめSummary
52. まとめSummary
● Arduinoで、マイコン開発を簡単に
Arduino makes microcontroller development easy.
● PlatformIO で、シュッと開発
Speed up your development with PlatformIO.
○ 環境構築 Building the environment
○ ライブラリの管理と、インストール
Library management and installtion
○ デバッグ実行Run in debugger
○ Unit Test
● Raspberry Pi PICOも良いけど、
ネットに繋ぎたくなったら ESP32 !
Raspberry Pi PICO is good, but if you want to connect to the internet,
ESP32 is better!
ArduinoとPlatformIOでIoTを楽しもう!
Let's enjoy IoT with Arduino and PlatformIO!