HOME | Raspberry Pi | 時事 | ビジネス書籍紹介 | 2022-12-01 (Thu) Today's Access : 130 Total : 559805. Since 10 Sep. 2019

Raspberry Pi Zero 2W 小道具
2022.02.22


YouTube でも紹介しています。画像をクリックすると再生できます。

今回はRaspberry Pi Zero 2 W に4ポートUSBハブを取付け、電源にはモバイルバッテリーを使ってみました。また、ATtiny開発ボードも試してみました。

まずは、Raspberry Pi Zero 2 W ですが、USB端子に頻繁に抜き差ししているとヘタりそうなので、4ポート USB 2.0 Type-A ハブを取り付けました。

■Zero4U

●電源モード: バスパワー/セルフパワー
●USB 2.0、1.0対応
●動作電圧: 5 V
●定格電流: 1 mA 以下
●最大出力電流: 2 A 全ポート合計@セルフパワーモード、500 mA 全ポート合計@バスパワーモード

Zero4U は、Raspberry Pi Zero V1.3 と Zero 2 W で動作します。V1.2以前のバージョンでは利用できません。

Zero背面のテストパッドにコンタクトプローブで接触するため、はんだ付けは不要です。


Zero4U のパッケージは販売元により若干の違いがあるようです。 実際に、Zero W で利用する場合、Wi-Fiの影響で不安定になることがあるため、フェライトコアリング付属の商品を選びましょう。

周辺機器をUSBケーブルでUSB端子に接続して、PlatformIOで、接続状況を表示させてみました。

$ pio device list
/dev/ttyUSB1
------------
Hardware ID: USB VID:PID=1A86:7523 LOCATION=1-1.2
Description: USB2.0-Serial

/dev/ttyUSB0
------------
Hardware ID: USB VID:PID=1A86:7523 LOCATION=1-1.3
Description: USB Serial

/dev/ttyAMA0
------------
Hardware ID: 3f201000.serial
Description: ttyAMA0
次に電源として、モバイルバッテリーを使用しました。

■cheero Canvas 3200mAh IoT 機器対応

ワンボードコンピューターは非常に微弱な電流で動作する状態があるため一般的なモバイルバッテリーでは保護機能が働き、電力供給を止めてしまいます。
この商品は電源オンすれば電力供給し続けることができます。

よく見かける商品はホワイトですが、cheero の直販サイトでは、ブラックも入手可能です。

次は、ATtiny13, ATtiny25, ATtiny45 ATtiny85 対応 Arduino 互換開発ボードです。

■ATtiny Arduino compatible development Board


tindieストアで販売されている、MCUdudeデザインのArduino互換開発ボードです。 ATtiny13, ATtiny25, ATtiny45 ATtiny85 に対応しています。
こちらの商品はノルウェーから発送されます。

Ref.ATtiny Arduino compatible development board

Features
●USB・シリアル変換チップ CH330N 搭載
ラズベリーパイでは普通に認識されますが、Windowsパソコンなどでは対応するドライバがないかもしれません。

●ピン配置、オス・メス両方を備えているので便利です。
D0  5 TX  MOSI PB0
D1  6 RX  MISO PB1
D2  7 A1  SCK  PB2
D3  2 A3  CLK  PB3
D4  3 A2    PB4
RST  1     PB5
VIN  8     VCC
5V        
3.3V       
3.3V       
GND  4 GND   
GND        
POT        

●ISP端子:ファームウェア書き込みとフューズ設定用
ArduinoをISPとして使用する場合

※Uno と Nano では、ICSPピンの向きが異なります

Dev Board Arduino
MISO ←→ MISO
VCC ←→ VCC
SCK ←→ SCK
MOSI ←→ MOSI
RESET/td> ←→ D10
GND ←→ GND

●2.1mm電源入力ジャック / 駆動電圧選択用ジャンパー
電源ジャックは、6.5~12Vに対応しています。ジャンパーピンは5V/3.3V駆動選択用です。
5V駆動のArduino ISPで、ATtinyにコードを書き込むときは、5Vを選択します。

●オンボード16MHz発振子の有効/無効化
ATtiny13にはクリスタルドライバーが内蔵されていないので、外部発振子を使用したくないときは、物理的に回路を遮断するために、ジャンパーピンを外します。


●オンボード可変抵抗器
アナログ入力端子用の参照用可変抵抗です


それでは、開発ボードに付属の ATtiny13A を使ってみます。

■AVRマイコン ATTINY13A-PU
・電源電圧:1.8~5.5V ・電源電圧:1.8~5.5V ・入出力ピン最大出力電流:40mA ・最大消費電流:200mA ・コアサイズ:8bit ・クロック:20MHz ・プログラムメモリ:1kB ・EEPROM:64B ・RAM:64B ・GPIO:6pin ・ADC:4Ch ・タイマ:1Ch ・オシレータ:内蔵/外付 ・パッケージ:DIP8




◇フルカラーLチカ
Lチカでは芸がないので、フルカラーLEDを光らせてみます。 ただし、ATtiny13にはPWM端子が2個しかないので、R(赤)G(緑)のみを使用します。
自作のRGB DIP化基板です。 フルカラーRGB LEDの各RGB端子を330Ωの抵抗を介してDIP化しています。


左下がラズベリーパイの電源として使用するCheero Canvas、左上がRaspberry Pi Zero W 2、真ん中のブレッドボードがフルカラーRGB LED、 右側は、Arduino ISP として使用する、Arduino Uno互換びんぼうでいいの、真ん中の下がATtiny開発ボードです。

◇MicroCore + PlatformIO
$ mkdir ~/ATtiny13
$ cd ~/ATtiny13
$ pio init -b attiny13a
$ vi platformio.ini
[platformio]
default_envs = Upload_ISP ; Default build target

[env]
platform = atmelavr
framework = arduino
board = attiny13a
board_build.f_cpu = 9600000L
build_flags = 
build_unflags =
monitor_port = /dev/cu.usberserial*

[env:Upload_ISP]
upload_protocol = custom
upload_port = /dev/ttyUSB0
upload_speed = 9600
upload_flags =
  -C$PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf
  -p$BOARD_MCU
  -P$UPLOAD_PORT
  -b$UPLOAD_SPEED
  -cstk500v1
upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i

[env:set_fuses]
board_hardware.oscillator = internal
board_hardware.bod = 2.7v
board_hardware.eesave = yes
upload_protocol = stk500v1
upload_flags =
  -P/dev/ttyUSB0
  -B8
Ref.MicroCore + PlatformIO

開発環境に関して→ Arduino開発環境構築 PlatformIO
Arduino ISPに関して→ AVRマイコン ATTiny85

AVRツールをインストールしておきます
$ pio platform install atmelavr --with-package tool-avrdude
Tool Manager: toolchain-atmelavr @ 1.70300.191015 is already installed
Tool Manager: tool-avrdude @ 1.60300.200527 is already installed

サンプルプログラムを作成します。
$ vi src/rgb.ino
#define LED_PIN_R PB0
#define LED_PIN_G PB1
#define LED_PIN_B PB2
#define WAIT      3

uint_8 R, G, B;

void color(velocity):

	velocity = velocity % 255

	if (velocity < 85) {
		R = 255 - velocity * 3;
		G = 0;
		B = velocity * 3;
	} else if (velocity < 170 ) {
		velocity -= 85
		R = 0;
		G = velocity * 3;
		B = 255 - velocity * 3;
	} else {
		velocity -= 170
		R = velocity * 3;
		G = 255 - velocity * 3;
		B = 0;
	}

	analogWrite(LED_PIN_R, R);
	analogWrite(LED_PIN_G, G);
//	analogWrite(LED_PIN_B, B);
	delay(WAIT);
}

void setup(){ 

void loop(){
	i = 0;
	while(1) {
		color(i);
		if ((++i) == 255) i = 0;
	}
}
ビルド&アップロード
$ pio run -e Upload_ISP -t upload
PLATFORM: Atmel AVR (3.4.0) > ATtiny13A
HARDWARE: ATTINY13A 9MHz, 64B RAM, 1KB Flash
DEBUG: Current (simavr) On-board (simavr)
PACKAGES:
- framework-arduino-avr-microcore 2.1.0
- tool-avrdude 1.60300.200527 (6.3.0)
- toolchain-atmelavr 1.70300.191015 (7.3.0)
.....
RAM: [ ] 3.1% (used 2 bytes from 64 bytes)
Flash: [==== ] 36.7% (used 376 bytes from 1024 bytes)
.....
avrdude: 376 bytes of flash verified
avrdude: safemode: Fuses OK (E:FF, H:FF, L:6A)
avrdude done. Thank you.

ATtiny13 では、ビルドにmicrocoreパッケージが使用されるので、生成されるコードはコンパクトです。
Ref.MCUdude/MicroCore


LEDの色が変化していきます。

次に、シリアル通信を行ってみます。

開発ボードをUSBケーブルでラズベリーパイと接続しています。

ATtiny13は工場出荷時、クロックの8分周が有効になっているので、まずは、フューズビットを変更して無効にします。
$ ~/.platformio/packages/tool-avrdude/bin/avrdude -C ~/.platformio/packages/tool-avrdude/avrdude.conf -p attiny13 -P /dev/ttyUSB0 -b 9600 -c avrisp -U lfuse:w:0x7a:m

※動作クロック数とフューズビットの関係は下記の通りです。
AVR Hz Ex Hi Lo
ATtiny13A 1.2MHz - FF 6A
ATtiny13A 9.6MHz - FF 7A
ATtiny85 1MHz FF DF 62
ATtiny85 8MHz FF DF e2
ATtiny85 16MHz Fe DD e1
ATmega328P 1MHz FF D9 62
ATmega328P 8MHz FF D9 e2
ATmega88V 1MHz F9 DF 62
ATmega88V 8MHz F9 DF e2
Ref.AVRマイコンをPlatformIOで使う

また、ATtiny13用のビルドパッケージ MicroCore では、下記のシリアル通信速度をサポートしています。
ClockBaud rate
(External) 20 MHz115200
(External) 16 MHz115200
(External) 12 MHz115200
(External) 8 MHz115200
(External) 1 MHz19200
(Internal) 9.6 MHz115200
(Internal) 4.8 MHz57600
(Internal) 1.2 MHz19200
(Internal) 600 kHz9600
(Internal) 128 kHzNot supported

受信した文字列をそのまま送信元に返すプログラムを作ってみます。

$ vi src/uart.ino
void setup() {
	Serial.begin(115200);
}

void loop() {
	while (Serial.available())  {
		Serial.write(Serial.read());
		delay(50);
	}
}

$ pio run -e Upload_ISP -t upload
RAM: [ ] 0.0% (used 0 bytes from 64 bytes)
Flash: [= ] 13.7% (used 140 bytes from 1024 bytes)
.....
avrdude: 140 bytes of flash verified
avrdude: safemode: Fuses OK (E:FF, H:FF, L:7A)
avrdude done. Thank you.

デバイスモニター側から12345を送信すると 文字化けされて戻ってきました。
$ pio device monitor -p /dev/ttyUSB1 -b 115200
L&&?M?....

一旦、2本のUSBケーブルを抜いて、開発ボード側のUSBケーブルのみを接続しました。
$ pio device monitor -p /dev/ttyUSB0 -b 115200
12345
正常に通信できました。

開発ボードにジャンパーピンを挿して、オンボード16MHz発振子を有効にして再度試してみます。
$ pio device monitor -p /dev/ttyUSB0 -b 115200
12345
同様に正常に通信できました。

次に、UART接続を試してみます。 Raspberry PiのGPIOは3.3Vですので、開発ボードの駆動電圧選択を3.3Vに設定します。 ISPケーブルを外して、Raspberry PiとUART接続します。

$ pio device monitor -p /dev/ttyAMA0 -b 115200
12345
こちらも正常に通信できました。

最後にちょっとした応用として室温を測定してみましょう。

■温度センサーIC MCP9700A-E/TO

Microchip社の温度センサーICです。スケールファクタは10mV/℃ですのでオフセットの変更(+500mV)のみでLM35と置き換えが可能です。消費電流が6μAと小さい為、電池駆動のアプリケーションに最適です。
・電源電圧:2.3~5.5V
・出力タイプ:アナログ出力
・測定温度範囲:-40~125℃
・出力電圧:500mV/0℃
・スケールファクタ:10mV/℃
・精度:~±2℃/0~70℃ ~±4℃/-40~125℃
・消費電流:~6μA

MCP9700のVDD、GND間に0.1uFのバイパスコンデンサを入れました。

ATtinyへコードを書き込むために、駆動電圧選択を5Vに戻します。


$ vi src/mcp9700.ino
void setup() {
	Serial.begin(115200);
}

void loop() {
	while (Serial.available())  {
		int val = analogRead(A2)*3300/1024+150;
		Serial.print(val/10);
		Serial.print(".");
		Serial.println(val%10);
		delay(1000);
	}
}
浮動小数点演算を行うと、いきなりコードが大きくなりすぎて、フラッシュメモリー1Kバイトに収まらなくなるので整数演算にしています。
また、茣蓙を補正して、マイナス500mVのところをプラス150mVに変更しています。

$ pio run -e Upload_ISP -t upload
RAM: [ ] 0.0% (used 0 bytes from 64 bytes)
Flash: [====== ] 56.8% (used 582 bytes from 1024 bytes)
avrdude: 582 bytes of flash verified
avrdude: safemode: Fuses OK (E:FF, H:FF, L:7A)
avrdude done. Thank you

駆動電圧選択を3.3Vに戻して、UART接続します。


$ pio device monitor -p /dev/ttyAMA0 -b 115200
15.7
15.7
17.7
12.0
16.7

■参考文献
 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
2021.09.25 pH測定
2021.10.23 低周波発振回路
2021.11.06 増幅回路
2021.11.13 NTP時刻取得と活用
2021.11.27 GPS情報取得
2021.12.11 GR-KURUMI
2021.12.25 ATMEGA328P 3.3V/8MHz
2022.01.11 AS-289R2 プリンタシールド
2022.01.25 TM1637 & ATtiny85
2022.02.22 Raspberry Pi Zero 小道具
2022.03.01 ATTinyCore
2022.03.18 Adafruit QT Py + XIAO Expansion board
2022.07.31 サーマルプリンター番外編:通信筒
2022.09.03 l' art en circuit (回路でアート)


Interface 2022年12月号
◎実用レベルのデータ・サーバを個人で作れる時代 ☆特集 [AWS/ブロックチェーン/Docker]IoTデータ・サーバ入門
◎モニタリングはもちろん異常検知や画像認識,外部装置駆動まで!


日経Linux 2022年11月号
【特集1】「Ubuntu 22.04 LTS」リリースの今こそ! Windowsを捨てない!Linuxへの引っ越し術
【特集2】話題のChromeOS Flexなど8種を厳選! 軽量Linux TPO別 選択&活用術
【特集3】 Linuxで旧型PCを復活! ファンレスの静音・小型PC「Ubuntu Server 22.04 LTS」でオンラインストレージサーバー化
【特集4】 個人なら無料で使える! Red Hat Enterprise Linux 9を触ってみよう


トランジスタ技術 2022年11月号
★特集◎科学の魅力をとことん追求!計測,パワー応用技術 ☆実験サイエンス!超音波×エレキの世界


ラズパイマガジン2022年秋号
特集:5大人気ボード 電子工作超入門
「半導体不足で在庫が不足し、電子工作のボードがなかなか買えない…」。そんな今にふさわしい特集を企画しました。5種の人気ボードにすべて対応した電子工作の入門特集です。「GPIO」や「I2C」を使った電子パーツの制御方法は、どのボードでも同じです。手に入れられたボードを使って、今こそ電子工作を始めましょう。

地方で稼ぐ! ITエンジニアのすすめ
学歴、理系の知識、専門スキル……全部なくてもITエンジニアになれる! 地方でも高収入でやりがいをもって働ける!ITエンジニアの魅力を一挙大公開

ハッカーの学校 IoTハッキングの教科書
生活にとけこみ、家電機器を便利にするIoT技術。 Webカメラなど、便利の裏側に潜むセキュリティの危険性をハッキングで検証。 専門家がパケットキャプチャからハードウェアハッキングまで、その攻撃と防御を徹底解説。 本書は2018年7月に刊行された「ハッカーの学校IoTハッキングの教科書」に一部修正を加えた第2版です。

攻撃手法を学んで防御せよ! 押さえておくべきIoTハッキング
本書は、経済産業省から2021年4月にリリースされた、IoTセキュリティを対象とした『機器のサイバーセキュリティ確保のためのセキュリティ検証の手引き』の『別冊2 機器メーカに向けた脅威分析及びセキュリティ検証の解説書』をもとに、IoT機器の開発者や品質保証の担当者が、攻撃者の視点に立ってセキュリティ検証を実践するための手法を、事例とともに詳細に解説しました。

ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS… 全WEB媒体で効果バツグン! カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術

プログラマーは世界をどう見ているのか 西村博之著
イーロン・マスク(テスラ)、ジェフ・べゾス(Amazon)、ラリー・ペイジ(Google)…etc. 世界のトップはなぜプログラマーなのか?

Arduino Nano 33 IoT


サンハヤト モジュール MM-TXS01


ニーア オートマタ 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

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

白光(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®.