HOME | Raspberry Pi | ビジネス書籍紹介 | 2021-09-19 (Sun) Today's Access : 110 Total : 354104. Since 10 Sep. 2019

2020.08.03 Seeeduino XIAO 2021.07.14更新

YouTubeでポイントを説明しています。画像をクリックすると再生できます。

今回は、Seeeduino XIAO に、I2CによりAHT10温湿度センサーモジュールを、SPIによりTFTディスプレイを接続してみます。
Seeeduino XIAOはCPUにARMR CortexR-M0+ 32bit 48MHzを採用し、256KB Flashと32KB SRAMを搭載したマイクロコントローラー(SAMD21G18)です。 大きさは、Seeeduinoシリーズ最小の20x17.5mmです。

【更新情報】
2021/03/11 PlatformIO 5.1.0 におけるビルド

■仕様 Seeeduino XIAO と Arduino Nano 比較
Seeeduino XIAOArduino Nano
CPUARM Cortex-M0+ 32bit 48MHz
(SAMD21G18)
Atmel ATmega328P 8bit 16MHz
Flash Memory256KB32KB
SRAM32KB2KB
Digital I/O11 pins14 pins
Analog I/O11 pins8 pins
interfaceI2C,SPI,UARTI2C,SPI,UART
USBType-CType-B
動作電圧3.3V5V
Size20×17.543.2×17.8mm
Ref.https://wiki.seeedstudio.com/Seeeduino-XIAO/#features

ピン上の UART は USB 経由のシリアルとは別物で、Serial1 で操作が可能です。
Seeeduino XIAO はリセットボタンがありません。基板上に二つのリセット用ランドをショートすることでリセットできます。
表面の5V.3.3Vは入出力兼用、背面には電源Pad 5V(VIN)が付いています。
具体的なピン番号は、SAMD 系 Arduino と同様に variant.h/variant.cpp に記述されています。

■開発環境

パソコンから、TeraTeamでラズパイにSSH接続、ラズパイでビルドしたコードを、XIAO に転送します。 ラズパイのディストリビューションは、Raspbian Stretch、開発環境に platformio を使用しています。
→ Ref.Arduino開発環境構築 PlatformIO

$ platformio device list
/dev/ttyACM0
------------
Hardware ID: USB VID:PID=2886:802F SER=4B54E41B2D9D708 LOCATION=1-1:1.0
Description: Seeed femto M0

/dev/ttyAMA0
------------
Hardware ID: 20201000.serial
Description: ttyAMA0

$ platformio boards "Seeeduino"
Platform: atmelavr
==============================================================
ID         MCU         Frequency    Flash    RAM    Name
---------  ----------  -----------  -------  -----  ---------
seeeduino  ATMEGA328P  16MHz        31.50KB  2KB    Seeeduino

Platform: atmelsam
====================================================================
ID                MCU        Frequency Flash RAM  Name
----------------- ---------- --------- ----- ---- ------------------
seeed_femto       SAMD21G18A 48MHz     256KB 32KB Seeeduino Femto M0
seeeduino_lorawan SAMD21G18A 48MHz     256KB 32KB Seeeduino LoRaWAN
seeed_xiao        SAMD21G18A 48MHz     256KB 32KB Seeeduino XIAO
seeed_zero        SAMD21G18A 48MHz     256KB 32KB Seeeduino Zero
■プロジェクトの作成
$ mkdir -p ~/xiao
$ cd ~/xiao
$ platformio init -b seeed_xiao

$ vi platformio.ini
[env:seeed_xiao]
platform = atmelsam
board = seeed_xiao
framework = arduino
 ↓追記
; change microcontroller
board_build.mcu = samd21g18a

; change MCU frequency
board_build.f_cpu = 48000000L

upload_protocol = sam-ba

Ref.https://docs.platformio.org/en/latest/boards/atmelsam/seeed_xiao.html

■ビルドテスト:Lチカ

$ vi src/led.ino
#define TX_PIN 11
#define RX_PIN 12

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(TX_PIN,      OUTPUT);
  pinMode(RX_PIN,      OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);
  delay(500);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(500);
  digitalWrite(TX_PIN, LOW);
  delay(500);
  digitalWrite(TX_PIN, HIGH);
  delay(500);
  digitalWrite(RX_PIN, LOW);
  delay(500);
  digitalWrite(RX_PIN, HIGH);
  delay(500);
}
【XIAOのLED】
[P]緑色:電源ONで点灯
[L]黄色:デジタル13番(LED_BUILTIN)出力で点灯/消灯
[R]青色:UART-RX通信受信時点灯/デジタル12番(PIN_LED2)出力で点灯/消灯
[T]青色:UART-TX通信の送信時に点灯/デジタル11番(PIN_LED3)出力で点灯/消灯
Arduinoとは逆に、デジタル11-13番出力は"LOW"で点灯し、"HIGH"で消灯します。
デジタル11-13番出力はLEDのみでピン接続はありません。

$ pio run
Processing seeed_xiao (platform: atmelsam; board: seeed_xiao; framework: arduino)
---------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelsam/seeed_xiao.html
PLATFORM: Atmel SAM 4.5.1 > Seeeduino XIAO
HARDWARE: SAMD21G18A 48MHz, 32KB RAM, 256KB Flash
DEBUG: Current (atmel-ice) External (atmel-ice, blackmagic, jlink)
PACKAGES:
- framework-arduino-samd-seeed 1.7.6
- framework-cmsis 1.40500.0 (4.5.0)
- framework-cmsis-atmel 1.2.0
- toolchain-gccarmnoneeabi 1.70201.0 (7.2.1)
...................
Compiling .pio/build/seeed_xiao/FrameworkArduino/IPAddress.cpp.o
/home/pi/.platformio/packages/framework-arduino-samd-seeed/cores/arduino/IPAddress.cpp: In member function 'virtual size_t IPAddress::printTo(Print&) const':
/home/pi/.platformio/packages/framework-arduino-samd-seeed/cores/arduino/IPAddress.cpp:122:1: internal compiler error: Illegal instruction
}
^
コンパイルエラーで処理が中断します。

PlatformIO, version 3.7.0以降の注意点

$ platformio --version
PlatformIO, version 4.3.4

コンパイルエラーは、Platformio 3.7.0以降に導入された新しい toolchain に起因しています。
通常は、platformio.ini のプラットフォームをロールバックすると解決します。

$ vi platformio.ini
platform = atmelsam
  ↓変更
platform = atmelsam@3.6.1

Ref.PlatformIO Community

しかし、古いプラットフォームに戻すと、xiao に対応していません。

$ platformio run
.... Error: Unknown board ID 'seeed_xiao'

そこで、ロールバックせずに、xiao用のjsonファイルを書き換えます。

$ platformio upgrade
You're up-to-date!
PlatformIO 4.3.4 is currently the newest version available.

PlatformIOのボード情報を更新します。
$ platformio platform update
Platform Atmel AVR -------- Updating atmelavr @ 2.2.0 [Up-to-date] Updating toolchain-atmelavr @ 1.50400.190710 [Up-to-date] Updating framework-arduino-avr-minicore @ 2.0.5 [Up-to-date] Updating framework-arduino-avr @ 5.0.0 [Up-to-date] Updating tool-avrdude @ 1.60300.200527 [Up-to-date] Platform Atmel SAM -------- Updating atmelsam @ 4.5.1 [Up-to-date] Updating tool-bossac @ 1.10700.190624 [Up-to-date] Updating framework-arduino-samd-seeed @ 1.7.6 [Up-to-date] Updating framework-cmsis-atmel @ 1.2.0 [Up-to-date] Updating tool-avrdude @ 1.60300.200527 [Up-to-date] Updating toolchain-gccarmnoneeabi @ 1.70201.0 [Up-to-date] Updating framework-cmsis @ 1.40500.0 [Up-to-date] Platform Atmel SAM -------- Updating atmelsam @ 3.6.1 [Detached] Updating tool-avrdude @ 1.60300.200527 [Up-to-date] Updating tool-bossac @ 1.10700.190624 [Up-to-date] Platform Espressif 32 -------- Updating espressif32 @ 1.12.4 [Up-to-date] Updating framework-arduinoespressif32 @ 3.10004.200129 [Up-to-date] Updating tool-esptoolpy @ 1.20600.0 [Up-to-date]
$ vi ~/.platformio/platforms/atmelsam/platform.json
   "toolchain-gccarmnoneeabi": {
      "type": "toolchain",
      "version": "~1.70201.0"
           ↓変更
      "version": ">=1.40803.0,<1.40805.0"
    },
$ pio run
Processing seeed_xiao (board: seeed_xiao; platform: atmelsam; framework: arduino)
----------------------------------------------------------------------------
PackageManager: Installing toolchain-gccarmnoneeabi @ >=1.40803.0,<1.40805.0
PLATFORM: Atmel SAM 4.5.1 > Seeeduino XIAO
HARDWARE: SAMD21G18A 48MHz, 32KB RAM, 256KB Flash
DEBUG: Current (atmel-ice) External (atmel-ice, blackmagic, jlink)
PACKAGES:
- framework-arduino-samd-seeed 1.7.6
- framework-cmsis 1.40500.0 (4.5.0)
- framework-cmsis-atmel 1.2.0
- toolchain-gccarmnoneeabi 1.40803.0 (4.8.3)

これで、無事コンパイルが完了します。

===========================================
PlatformIO 5.1.0 におけるビルド (2021/03/11追記)
環境設定ファイルが変更されています。
~/.platformio/platforms/atmelsam/platform.json
"packages": {
 "toolchain-gccarmnoneeabi": {
  "type": "toolchain",
  "owner": "platformio",
  "version": "~1.70201.0",
  "optionalVersions": [
   ">=1.40803.0,<1.40805.0",
   ">=1.60301.0,<1.80000.0",
   "~1.80201.0",
   "~1.90301.0"
  ]
 },

これにより、iniファイルでパッケージを指定することにより、toolchainを変更できます。
$ vi platformio.ini
[env:seeed_xiao]
platform = atmelsam
board = seeed_xiao
framework = arduino
platform_packages = toolchain-gccarmnoneeabi @ 1.40803.0
lib_deps =
 adafruit/Adafruit INA219@^1.1.0
 adafruit/Adafruit ST7735 and ST7789 Library@^1.6.0

Ref.PlatformIO Community
===========================================

$ pio run -t upload -t nobuild
Warning! Please install `99-platformio-udev.rules`.
Mode details: https://docs.platformio.org/en/latest/faq.html#platformio-udev-rules

Auto-detected: /dev/ttyACM0
Forcing reset using 1200bps open/close on port /dev/ttyACM0
Waiting for the new upload port...
scons: *** [upload] /sys/devices/platform/soc/20980000.usb/usb1/1-1/1-1:1.0/subsystem: No such file or directory
========== [FAILED] Took 18.01 seconds ===========

デバイス管理用のルールファイルを更新します。
$ curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/master/scripts/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
$ sudo service udev restart

$ platformio run -t upload -t nobuild


■シリアル通信

ラズパイ上のPlatformioデバイスモニターから打ち込んだ文字を、XIAOで受信し、受信文字をラズパイに返してみます。
$ vi serial.ino
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  if (Serial.available() > 0) {
    char c = Serial.read();
    Serial.println((char)c);
  }
}
$ platformio run -t upload

$ platformio device monitor -p /dev/ttyACM0 -b 9600

■I2C通信

I2Cで繋いだ温湿度センサー測定モジュールから温度・湿度を取得してみます。
AHT10 高精度デジタル温湿度センサー
測定モジュール
・Interface:I2C
・動作電圧:1.8-6.0V
・湿度精度:標準±2%
・湿度分解能:0.024%
・温度精度:標準±0.3℃

 XIAO  - AHT10
A4/SDA - SDA
A5/SCK - SCL
GND  - GND
3.3V - Vin


https://github.com/adafruit/Adafruit_AHTX0 から
・Adafruit_AHTX0.cpp
・Adafruit_AHTX0.h
・adafruit_aht_test.ino
をダウンロードして、~/xiao/src に配置します。
$ vi src/adafruit_aht_test.ino
#include <Adafruit_AHTX0.h>

Adafruit_AHTX0 aht;

void setup() {
  Serial.begin(115200);
  if (!aht.begin()) {
    Serial.println("Could not find AHT? Check wiring");
    while (1) delay(10);
  }
}

void loop() {
  sensors_event_t humidity, temp;
  aht.getEvent(&humidity, &temp);
  Serial.print(temp.temperature);
  Serial.print("℃ ");
  Serial.print(humidity.relative_humidity);
  Serial.println("%");
  delay(500);
}
$ pio run
src/Adafruit_AHTX0.h:22:37: fatal error: Adafruit_BusIO_Register.h: No such file or directory

$ platformio lib search "header:Adafruit_BusIO_Register.h"
Adafruit BusIO
==============
#ID: 6214
This is a library for abstracting away UART, I2C and SPI interfacing

$ platformio lib install 6214

$ vi platformio.ini
lib_deps =
  6214
同様に
$ platformio lib search "header:Adafruit_Sensor.h"
Adafruit Unified Sensor
=======================
#ID: 31
Required for all Adafruit Unified Sensor based libraries. A unified sensor abstraction layer used by many Adafruit sensor libraries.

$ platformio lib install 31
$ vi platformio.ini
lib_deps =
  6214
  31
$ pio run -t upload

$ platformio device monitor -p /dev/ttyACM0 -b 115200
30.19℃ 64.41%
30.19℃ 64.41%
30.19℃ 64.39%
30.19℃ 64.42%
30.19℃ 64.40%

■SPI通信

0.96inch TFT-LCD Module
Matrix Size:80*160
Interface:SPI
Driver IC:ST7735
Working Power Supply:3.3V

 XIAO  - TFT DISPLAY
GND - [1]GND
3.3V - [2]VCC
SCK[D8] - [3]SCL:SPI clock line
MOSI[D10] - [4]SDA:SPI data line
[D2] - [5]RES:Reset interface
[D3] - [6]DC:SPI data / command selection
[D1] - [7]CS:Chipselect
 - [8]BLK:Backlight control

$ vi src/ST7735.ino
#include <Adafruit_AHTX0.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define TFT_CS    1
#define TFT_RST   2
#define TFT_DC    3
#define TFT_SCLK  8
#define TFT_MOSI 10

#define BLACK   ST7735_WHITE
#define CYAN    ST7735_BLUE
#define ORANGE  ST7735_ORANGE

Adafruit_AHTX0  aht;
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI,
TFT_SCLK, TFT_RST);

void setup(void) {

  if (! aht.begin()) {
    Serial.println("Could not find AHT? Check wiring");
    while (1) delay(10);
  }
  tft.initR(INITR_MINI160x80);

  tft.setTextWrap(false);
  tft.setRotation(3);
}

void loop() {

  sensors_event_t humidity, temp;
  aht.getEvent(&humidity, &temp);

  tft.fillScreen(BLACK);
  tft.setCursor(5, 30);
  tft.setTextSize(2);

  tft.setTextColor(ORANGE);
  tft.print(temp.temperature);
  tft.print("C ");

  tft.setTextColor(CYAN);
  tft.print(humidity.relative_humidity);
  tft.println("%");

  delay(1000);
}
$ pio run

$ platformio lib search "header:Adafruit_GFX.h"
Adafruit GFX Library
====================
#ID: 13
Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from. Install this library in addition to the display library for your hardware.
.....

$ platformio lib search "header:Adafruit_ST7735.h"
Adafruit ST7735 and ST7789 Library
==================================
#ID: 12
This is a library for the Adafruit ST7735 and ST7789 SPI displays.

$ platformio lib install 13
$ platformio lib install 12
$ vi platformio.ini
lib_deps =
  6214
  31
  13
  12


■参考文献
Seeeduino XIAO
コインサイズ Arduino互換機 Seeeduino XIAO を使ってみた
GitHub Adafruit-ST7735-Library
graphicstest.ino
Adafruit Mini TFT - 0.96" 160x80
Arduinoリファレンス TFT
TFT LCD(ST7735)モジュールに表示を行う

 Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
2019.12.13 モバイルバッテリーによる瞬間停電対策
2020.01.01 1280x800 HDMI MONITOR
2020.01.12 micro:bitをコマンドラインで使う
2020.02.04 サーマルプリンタを使う
2020.03.27 M5Stackキーボードを利用する
2020.04.10 電卓を制御して数字を表示する
2020.05.06 箱庭回路 蓄電&昇圧回路
2020.06.29 液晶キャラクターディスプレイLCD1602A
2020.08.03 Seeeduino XIAO
2020.08.09 LGT8F328P - Arduino clone
2020.09.18 電流計測モジュール INA219
2020.09.04 箱庭回路 センサーライト
2020.09.29 シガーライターIC s090c
2020.10.13 自動給水装置 LM393+NE555
2020.12.05 FM放送受信 TEA5767
2021.01.30 DVD Player LED
2021.02.16 癒しの電子回路
2021.03.06 疑似コンソール
2021.04.13 GPIO拡張
2021.08.08 電子ペーパー
2021.09.04 AVRマイコン・ATTiny85


ニーア オートマタ PLAY ARTS改 <ヨルハ 二号 B型 DX版> PVC製 塗装済み可動フィギュア
「NieR:Automata」より、ヨルハ二号B型こと2BがPLAY ARTS改に新たに登場! 高級感の感じられるコスチュームや髪の質感、洗練されたボディバランス、細かなデティールに至るまでこだわり抜かれた逸品。 DX版には通常版のラインナップに加え2Bの随行支援ユニット ポッド042などをはじめ“純白の美しい太刀"白の約定やエフェクトパーツ、自爆モードを再現できる換装用ボディパーツ、シーンに合わせて変えられる顔パーツ2種も付属する豪華な仕様に。 作中のあらゆるシーンを再現することが可能なファン必見の一品となっている。

DIPスイッチで動作電圧を3.3Vと5Vに切り替えられるUNO互換ボード
KEYESTUDIO Plus Board for Arduino UNO R3 with Type-C USB Cable, 3.3V 5V 1.5A Output Current, More Powerful Controller Board USB-シリアルチップ:CP2102 / 動作電圧:5Vまたは3.3V(DIPスイッチ制御)/ 外部電源:DC 6-15V(9V推奨)/ デジタルI / Oピン:14(D0〜D13)/ PWMチャネル:6(D3 D5 D6 D9 D10 D11)/ アナログ入力チャネル(ADC):8(A0-A7)/ DC出力機能の各I / Oポート:20 mA / 3.3Vポートの出力能力:50 mA / フラッシュメモリ:32 KB(うち0.5 KBはブートローダーによって使用されます)/ SRAM:2 KB(ATMEGA328P-AU)/ EEPROM:1 KB(ATMEGA328P-AU)/ クロック速度:16MHz / オンボードLEDピン:D13

エレクトロクッキー Leonardo R3 ATmega32u4 ボード DIY Arduino工作用 - ピンクエディション


Newtonライト2.0 ベイズ統計
ベイズ統計は,結果から原因を推定する統計学です。AIや医療などの幅広い分野で応用されています。その基礎となるのは18世紀に考えだされた「ベイズの定理」です。 この本では,ベイズ統計学のきほんをやさしく紹介していきます。

Interface 2021年10月号
☆特集:~ 格好良さアップ! 機能&信頼性アップ ! ~「 3Dプリンタ & メカ設計入門 」
☆特集2:Pico達人への道…「 C/C++でMicroPython拡張 」


トランジスタ技術 2021年9月号
☆特集:~ 直流・交流・非接触・センサ微小電流の測定ノウハウ ~「電流を正しく測る技術」

トランジスタ技術スペシャル 2021年7月号 宇宙ロケット開発入門
これから開発・活用が進むと期待されている宇宙空間への交通・物流インフラとして、小型・低価格ロケットが注目を集めています。本書では、基本構造から制御メカニズムまで、小型宇宙ロケット開発の基礎知識を実例を交えて解説します。

日経Linux 2021年9月号
【特集1】おうち時間をLinuxデスクトップで楽しむ! Linux環境を作るワザ
【特集2】徹底図解で丸わかり! 「WSL2」入門   Windows 11の新機能を速報!
【特集3】IT自動化ツール AnsibleでWeb導入を自動化
【特集4】ラズパイで楽しむLinuxライフ 「今、会議中」と家族に伝えるプレートをPythonで作ろう


ラズパイマガジン2021年秋号
特集1 サクッと動くパーツ&ライブラリ総覧
特集2 ArduinoライブラリでラズパイPicoを動かす
特集3 古いラズパイをフル活用! Node-REDで 楽しい電子工作
特集4 空気の汚れをラズパイで検知しよう
特集5 ラズパイで楽しむLinuxライフ
特集6 NVIDIAのAIボードが6000円台に!
特集7 M5StickCで始める電子工作 iPhoneからサーボモーターを制御しよう


トランジスタ技術スペシャル 2021年 4月号 No.154「達人への道 電子回路のツボ」
初学者が実用的な電子回路を設計できるようになるためのポイントをまとめました。学校の教科書だけではつかめない基本電子回路やOPアンプ/トランジスタの使い方の実際を、いろいろな視点から解説しています。


Raspberry Pi 3 Model B V1.2 (日本製) 国内正規代理店品
【仕様概要】CPU:ARM 1.2GHz 4コア、GPU:2コア 3D・動画支援、RAM:1GB、ネットワーク:LAN/Wi-Fi/Bluetooth、インターフェース:USB/HDMI/オーディオ/GPIO(UART/I2C/I2S/SPI...)。

ELEGOO Arduino用 Nanoボード V3.0 CH340/ATmega328P、Nano V3.0互換 (3)


ESPr Developer 32
スイッチサイエンス(Switch Science)

協和ハーモネット UL1007 AWG24 耐熱ビニル絶縁電線 リール巻 100m 黒


白光(HAKKO) ダイヤル式温度制御はんだ吸取器 ハンディタイプ FR301-81


サンハヤト TTW-203 テストワイヤ
ブレッドボードとスルーホール間の接続に便利なワイヤですブレッドボード用のオスピンと基板のスルーホール用のバネ性のある端子を組み合わせたテストワイヤです

無水エタノールP 500mlx2個パック(掃除)


ケイバ(KEIBA) マイクロニッパー MN-A04


熱収縮チューブφ1.5
印字無しで綺麗☆ シュリンクチューブ 絶縁チューブ 防水 高難燃性 収縮チューブ (2m, ブラック(黒))


サンハヤト SAD-101 ニューブレッドボード


白光(HAKKO) HEXSOL 巻はんだ 精密プリント基板用 150g FS402-02


【Amazon.co.jp限定】エーモン 電工ペンチ 全長約255mm (1452)


[Amazon限定ブランド]【指定第2類医薬品】PHARMA CHOICE 解熱鎮痛薬 解熱鎮痛錠IP 100錠


Copyright © 2011-2022 Sarako Tsukiyono All rights reserved®.