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 | ←→ | 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
void color(uint8_t velocity) {
uint8_t R, G, B;
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()
{
uint8_t 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 では、下記のシリアル通信速度をサポートしています。
Clock | Baud rate |
(External) 20 MHz | 115200 |
(External) 16 MHz | 115200 |
(External) 12 MHz | 115200 |
(External) 8 MHz | 115200 |
(External) 1 MHz | 19200 |
(Internal) 9.6 MHz | 115200 |
(Internal) 4.8 MHz | 57600 |
(Internal) 1.2 MHz | 19200 |
(Internal) 600 kHz | 9600 |
(Internal) 128 kHz | Not 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プロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
Arduinoで学ぶ組込みシステム入門(第2版)
●Arduinoを使って組込みシステム開発を理解する
・ハードウェアやソフトウェアなどの基礎知識/
・設計から実装までを系統的に説明するモデルベース開発/
・Arduinoを用いた実際の開発例
最新 使える! MATLAB 第3版
◆◆すぐに「使える!」 全ページフルカラー!◆◆
・MATLAB R2022bに対応し、解説もより詳しく!/
・コマンド・スクリプトの例が豊富で、動かして学べる!/
・超基本から解説。これから使いはじめる人にぴったり!/
・全編フルカラー、スクリーンショットも豊富!
Amazon Web Services基礎からのネットワーク&サーバー構築改訂4版
1.システム構築をインフラから始めるには/
2.ネットワークを構築する/
3.サーバーを構築する/
4.Webサーバーソフトをインストールする/
5.HTTPの動きを確認する/
6.プライベートサブネットを構築する/
7.NATを構築する/
8.DBを用いたブログシステムの構築/
9.TCP/IPによる通信の仕組みを理解する
C言語は第二の母国語: 独学学生時代から企業内IT職人時代に培った、独立のための技術とノウハウ 平田豊著
学生時代から独学でプログラミングをはじめ、企業内でデバイスドライバを開発し、そして独立後もたくさんのアプリケーション開発や技術書制作に携わってきた著者。その筆者が大事に使い続ける「C言語」の“昔と今”について、気づいたことや役立つ知識、使ってきたツールなどについて、これまで記してきたことを整理してまとめました。
本書では、現役プログラマーだけでなく、これからプログラミングを学ぶ学生などにも有益な情報やノウハウを、筆者の経験を元に紹介しています。
1冊ですべて身につくJavaScript入門講座
・最初の一歩が踏み出せる! 初心者に寄り添うやさしい解説
・最新の技術が身につく! 今のJavaScriptの書き方・使い方
・絶対に知っておきたい! アニメーションとイベントの知識
・プログラミングの基本から実装方法まですべて学べる
図解! Git & GitHubのツボとコツがゼッタイにわかる本
ソフトウェア開発では欠かすことのできないGit、GitHub。
これからGit、GitHubを使いたいという入門者の方でも、実際に手を動かしながら使い方を学べます。
C自作の鉄則!2023 (日経BPパソコンベストムック)
メーカー製のパソコンはスペックが中途半端で、自分が本当に欲しい機種がない――。そう思っている人には、ぜひ自作パソコンをお薦めします。自作パソコンのパーツは進化が速く、しかも驚くほど種類が豊富。価格も性能も、幅広く用意されているため、満足度100%の“自分だけの1台”を手に入れることができます。
Interface 2023年6月号
特集:第1部 フィルタ設計 基礎の基礎/
第2部 係数アプリや波形観測アプリで合点!FIR&IIRフィルタ作り/
第3部 配布プリント基板で体験!マイコンで動くフィルタ作り
日経Linux 2023年5月号
【特集 1】 AI時代の最強フリーソフト ~ 25のやりたいを実現!
【特集 2】 AWS、Azureのうまみを無料で体感!面倒なことはクラウドに任せよう
【特集 3】 新しいRaspberry Pi Cameraで遊んでみよう
【特集 4】 Linuxで旧型PCを復活! 1kg切るモバイルPCを「ChromeOS Flex」でChromebook化
ラズパイマガジン2022年秋号
特集:5大人気ボード 電子工作超入門
「半導体不足で在庫が不足し、電子工作のボードがなかなか買えない…」。そんな今にふさわしい特集を企画しました。5種の人気ボードにすべて対応した電子工作の入門特集です。「GPIO」や「I2C」を使った電子パーツの制御方法は、どのボードでも同じです。手に入れられたボードを使って、今こそ電子工作を始めましょう。
地方で稼ぐ! ITエンジニアのすすめ
学歴、理系の知識、専門スキル……全部なくてもITエンジニアになれる!
地方でも高収入でやりがいをもって働ける!ITエンジニアの魅力を一挙大公開
Raspberry Piのはじめ方2022
本書は、ラズパイやPicoの買い方やインストール、初期設定といった基本から、サーバー、電子工作、IoT、AIといったラズパイならではの活用方法まで、1冊でお届けします。
ラズパイをこれから始める方向けに、全36ページの入門マンガ「女子高生とラズベリーパイ」も巻末に掲載。これを読むだけでラズパイがどんなものなのか、すぐに分かって触れるようになります。
ハッカーの学校 IoTハッキングの教科書
生活にとけこみ、家電機器を便利にするIoT技術。
Webカメラなど、便利の裏側に潜むセキュリティの危険性をハッキングで検証。
専門家がパケットキャプチャからハードウェアハッキングまで、その攻撃と防御を徹底解説。
本書は2018年7月に刊行された「ハッカーの学校IoTハッキングの教科書」に一部修正を加えた第2版です。
攻撃手法を学んで防御せよ! 押さえておくべきIoTハッキング
本書は、経済産業省から2021年4月にリリースされた、IoTセキュリティを対象とした『機器のサイバーセキュリティ確保のためのセキュリティ検証の手引き』の『別冊2 機器メーカに向けた脅威分析及びセキュリティ検証の解説書』をもとに、IoT機器の開発者や品質保証の担当者が、攻撃者の視点に立ってセキュリティ検証を実践するための手法を、事例とともに詳細に解説しました。
ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS…
全WEB媒体で効果バツグン!
カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術
プログラマーは世界をどう見ているのか 西村博之著
イーロン・マスク(テスラ)、ジェフ・べゾス(Amazon)、ラリー・ペイジ(Google)…etc.
世界のトップはなぜプログラマーなのか?
ニーア オートマタ PLAY ARTS改 <ヨルハ 二号 B型 DX版> PVC製 塗装済み可動フィギュア
「NieR:Automata」より、ヨルハ二号B型こと2BがPLAY ARTS改に新たに登場!
高級感の感じられるコスチュームや髪の質感、洗練されたボディバランス、細かなデティールに至るまでこだわり抜かれた逸品。
DX版には通常版のラインナップに加え2Bの随行支援ユニット ポッド042などをはじめ“純白の美しい太刀"白の約定やエフェクトパーツ、自爆モードを再現できる換装用ボディパーツ、シーンに合わせて変えられる顔パーツ2種も付属する豪華な仕様に。
作中のあらゆるシーンを再現することが可能なファン必見の一品となっている。
Newtonライト2.0 ベイズ統計
ベイズ統計は,結果から原因を推定する統計学です。AIや医療などの幅広い分野で応用されています。その基礎となるのは18世紀に考えだされた「ベイズの定理」です。
この本では,ベイズ統計学のきほんをやさしく紹介していきます。
白光(HAKKO) ダイヤル式温度制御はんだ吸取器 ハンディタイプ FR301-81
無水エタノールP 500mlx2個パック(掃除)
ケイバ(KEIBA) マイクロニッパー MN-A04
サンハヤト SAD-101 ニューブレッドボード
白光(HAKKO) HEXSOL 巻はんだ 精密プリント基板用 150g FS402-02
[Amazon限定ブランド]【指定第2類医薬品】PHARMA CHOICE 解熱鎮痛薬 解熱鎮痛錠IP 100錠
|