- Raspberry PiでADS1115を使う
Raspberry PiでADS1115を使う
I2CアドレスはADDR端子の配線で設定する。
ADS1115 I2C Address
ADDR pin connection
I2C address
GND
0x48
VDD
0x49
SDA
0x4A
SCL
0x4B
使用したI2Cチャネルは1。
ADS1115 Register
Pointer
Description
0x00
Conversion Register : AD変換結果
0x01
Config Register : 設定
ADS1115のレジスタデータはBig Endianだが、pigpio の I2CライブラリはSMBusベースなので Little Endianである。よって上位バイトと下位バイトを入れ替える必要がある。
Config Register 0x01
Bit
Field
Set
Description
15
OS
0
No efect
14:12
MUX
0b100
Input single end AIN0
11:9
PGA[2:0:
0b001
Full Scale 4.096V
8
MODE
0
Continuous-conversion mode
7:5
DR
0b010
Speed 32 Sample/s
4
COMP_MODE
0
Normal ...
- Raspberry Pi Pico – Picoprobe
Raspberry Pi Pico w/picoprobe
目的
Raspberry Pi Picoのソフトウェアを開発するため書き込みとデバッグを行う環境をセットアップする。HostはM1 Mac。MacからPicoprobeへはUSBで接続し、PicoprobeからターゲットpicoへはSWDで接続する。
構成
flowchart LR
subgraph M1 Mac w/vscode
gdb
...
- Benchmark M1 processor
Benchmark
自分が管理しているPCで計算処理のベンチマークを実施した。実行サンプルはnumpyで作成した4.5M要素の演算と探索を行いコンター図を出力するプログラムである。
1位
MacBook Pro 2021
Apple M1 Pro RAM 32GB
ARM64
計算時間 2 min 56 s
2位
MacBook Pro 2021
Apple M1 Pro RAM 32GB
Rosetta
計算時間 4 min 46 s
3位
Windows10 desktop 2020
Xeon 4GHz RAM 32GB
計算時間 5 min 11 s
4位
Windows10 note 2020
Core i5 ...
- Raspberry Pi Cmd Launcher
Raspberry Pi Cmd Launcher
Raspberry Piにキャラクタ液晶とプッシュスイッチを組み合わせてランチャーを製作する。
スイッチは左ボタンと右ボタンとエンターボタンの3つとする。液晶に表示されたメニューから左右ボタンで希望のコマンドを選択しエンターボタンで実行する。ユーザフィードバックはピエゾ素子で音を発生。
Hardware
液晶はi2c接続の2行8桁のものを使用する。秋月電子で販売中のバスリピーター付きのLCD(AQM0802A)。
スイッチは小さなプッシュ型でエンターボタンは少し大きめのものを選んだ。家庭内在庫品だ。
graph LR
subgraph Raspberry Pi
i2c
pwm
...
- CAN通信アダプタ Raspberry Pi zero W
CAN network adapter
Raspberry Pi zero を使用したCAN通信が可能なアダプタ。PCに接続して使用する。ケースはFRISK。本家フォーラムの記事を参考に製作した。2021年8月に製作した記録。
参考記事
CAN bus on raspberry pi with MCP2515
CAN bus communication to and from a Pi
Block diagram
Hardware plan
操作盤のMac/PCとラズパイはUSB接続。ラズパイへの電源供給を兼ねる。ラズパイとCANコントローラはSPI接続。
graph LR
pc
...
- Raspberry Pi 可変抵抗器の接続と読み込み
Raspberry Pi and Variable-Resistor
Plan
ADコンバータを使わずにRasPiに可変抵抗器(ボリューム)を接続してアナログ的な指示を入力する。変換速度の制約がないのでコンデンサへ充電させ充電時間を測定することで可変抵抗器の抵抗値をパルス幅へ変換する。遅いけどいいのだ。
Schematic
最小限の構成を考える。GPIO5から充放電パルス波形を出力しGPIO6に時定数だけ遅れたパルスを入力する。
Simulation
期待通り動作するかLTspiceで事前にシミュレーションする。
Symbol
Discription
V1
充放電タイミングを生成GPIO出力
V2
ロジック電源3.3V
Q1
充電用トランジスタスイッチ
Q2
放電用トランジスタスイッチ
Q3
GPIO入力信号整形用トランジスタ
R2
外付け可変抵抗器
C1
時定数を決めるコンデンサ
Simulation result
Green: GPIO出力充放電タイミングパルス電圧
Blue: 時定数決定用コンデンサ端子電圧
Red: GPIO入力電圧
Green波形の立下りからRed波形の立下りまでの時間を測定しパルス幅とする。
Conversion characteristics
可変抵抗器の値を変化させシミュレーションしパルス幅を記録する。
横軸: パルス幅
縦軸: 可変抵抗器の抵抗値
実装は実機にてパルス幅を測定し変換テーブルか近似式を作成して利用する。
Sample software
可変抵抗の値に応じてターミナルにテキストでゲージを表示するサンプル。
#!/usr/bin/python3
import time
import pigpio
pi = pigpio.pi()
pi.set_mode(5, pigpio.OUTPUT)
pi.set_mode(6, pigpio.INPUT)
pi.set_pull_up_down(6, pigpio.PUD_UP)
pi.set_PWM_range(5, 100) # gpio,
pi.set_PWM_frequency(5, 10) # ...
- Raspberry Pi に Beep音を実装する
Beep sound on Raspberry Pi
ラズパイにBeep音を実装したい。起動完了やアラート発生時にピッ・プーーと鳴らすのだ。
Hardware
Hardware PWMを利用した実装例です。
Schematic
BOM
Name
Type
Spec.
Piezo sounder
Murata PKM13EPYH4000-A0
Dia.13mm, t6.9mm, 30Vp-p max.
Transister
Rohm DTC143E
NPN Digital Tr. Rb=4.7kΩ, Rbe=4.7kΩ
Resister
Carbon film
10kΩ 0.1W
Software
Hardware PWMを利用した実装例です。
Source code
python3 PIGPIOモジュールを使用しました。beep(0) でピポッです。
これから動作確認します。(^^;)
import pigpio
BEEP_PORT = 13
BEEP_DUTY = 500000
pi = pigpio.pi()
def beep(pattern_id=0):
...
- Raspberry Pi 液晶モニタ電源スイッチ
液晶モニタに電源スイッチを追加
Raspberry Pi に接続しているNTSC液晶モニタの電源を手動でオンオフしたい。液晶の発熱がなかなかなので不要な時はモニターをオフしたい。最初はソフトウェアでNTSC信号を操作することを考えたのだがオフはできるたがオンができずに諦めた。というわけでハードウェア実装です。
スイッチは市販のタッチセンサ基板を利用した(左)。基板に設けられたパッドを切断してリード線を接続した。(右)
リード線をケース外部に露出するネジへ接続する。ワニ口クリップを使用したのでどこでもスイッチになる。
Schematic
TTP223は初期出力レベル(H/L)と動作(モーメンタリ/トグル)を選べるので、初期値Hレベルのトグル動作として設定した。電源投入直後は液晶はオン、タッチスイッチを触ると液晶オフ、再度触ると液晶オン。
Movie
動作の様子です。
Movie
- Raspberry Pi 電源スイッチ
Power on/Shutdown switch
Concept
1つのトグルスイッチでRaspberry Pi の電源をオン/オフしたい。スイッチをオンすると即時起動し、オフした場合は即時に電源を切断せずにshutdownコマンドが完了するのを待機する仕組みを作成しよう。電源を自己保持するためMOSFETを設けて電源スイッチとGPIO27のORをとりMOSFETをオンすることで実現する。
Structure
graph LR
user((User))
tgl
out
soft((Software))
pwr
...