1.スタートメニューから、「設定 -> Raspberry Piの設定」をクリックします。 2.設定ツールが起動するので、「インターフェイス」タブを選択し、SSHの項目を有効にして「OK」をクリックする。 3.WindowsのコマンドプロンプトからSSH接続します。 ssh ラズパイのユーザ名@ラズパイのIPアドレス -p SSH用のポート RaspberryPiのパスワードが求められるので入力する。 ファイル転送する場合は、scpコマンドを使用する。 scp file.txt pi@192.168.0.1:subdirectory/ または、scp file.txt pi@raspberrypi.local:subdirectory/ ファイル転送やフォルダ同期などをGUIで簡単に行うには、WinSCPを使うと便利です。
●xrdpを使用する方法 ラズパイにxrdpをインストールし起動することで、Windows標準のリモートデスクトップ接続で使用することができる。 1.ラズパイがインターネットにつながるよう設定しておきます。 2.ターミナル(LXTerminal)を起動し、以下を実行します。 sudo apt-get install xrdp y/n が聞かれたら、y をタイプします。 sudo service xrdp restart 3.再起動します。 sudo shutdown -h now 4.Windowsパソコン側で、「リモートデスクトップ接続」を起動する。 5.「コンピューター(C):」の欄に、IP アドレスまたは、ホスト名を入力し、「接続」をクリックする。 6.username と password が求められるので入力する。 デスクトップ画面が表示されたら完了です。 ●VNCを使用する方法 ラズパイ側でVNCサーバーを実行し、クライアント側 (PCやスマートフォン)のVNC Viewerを使って接続し操作することができる。 1.スタートメニューから、「設定 -> Raspberry Piの設定」をクリックします。 2.設定ツールが起動するので、「インターフェイス」タブを選択し、VNCの項目を有効にして「OK」をクリックする。 3.デスクトップ右上にVNCサーバーのアイコンをクリックして正常に起動していることを確認する。 4.クライアント側にVNC Viewerのインストールしてラズパイに接続します。 ・画面解像度の設定 ラズパイはHDMIケーブルからディスプレイの解像度を取得しているため、ディスプレイなしで起動するとリモートからデスクトップ画面を表示できなかったり、画面が小さくなる問題が起きます。 画面解像度を指定することでリモートデスクトップ画面を表示できるように設定します。 1.スタートメニューから、「設定 -> Raspberry Piの設定」をクリックします。 2.設定ツールが起動するので、「ディスプレイ」タブを選択し、ヘッドレス解像度の選択ボックスで指定します。
| shutdown | システムのシャットダウン※スーパーユーザーのみ可 |
| reboot、poweroff | 一般ユーザーでのシステムの再起動、シャットダウン |
| ls | ファイルやディレクトリの情報表示 |
| pwd | 現在のディレクトリ |
| cd | ディレクトリの移動 |
| mkdir | フォルダを作成 |
| mv | ファイルやディレクトリの移動、 ファイル名変更やディレクトリ名変更 |
| cp | ファイルやディレクトリのコピー |
| rm | ファイルやディレクトリの削除 |
| cat | ファイルの中身をテキスト表示 |
| chmod | ファイルやディレクトリのアクセス権変更 |
| chown | ファイルの所有権を変更 |
| ps | プロセス情報表示 |
| pkill | アプリケーション名を指定してプロセス強制終了 |
| kill | PIDを指定して強制終了 |
| hostname | ホスト名やIPアドレスの表示 |
| nano | テキストエディタnanoで編集 |
| apt | パッケージの管理 |
| pip | Pythonで書かれたパッケージの管理 |
| wget | ファイルのダウンロード |
| tar | tar形式ファイルの解凍 |
| zip | zip形式で圧縮。解凍時はunzip |
| make | プログラムのコンパイル(ビルドとインストール) |
| passwd | ユーザーのパスワード変更 |
| find | 特定の文字列を含むファイルやディレクトリを探す |
| grep | 特定の文字を含む行を抽出 |
| more | 長いメッセージやテキストファイルを1画面ずつ表示。同様で高機能なlessもある |
| head、tail | メッセージやテキストファイルの最初または、最後を表示 |
| uname | システム情報を表示。-aで全ての情報表示 |
| echo | 引数の中身を標準出力 |
| expr | 計算式や論理式を評価する |
| | | パイプ。複数のコマンドを組み合わせるとき結果を渡す |
| ifconfig | ネットワーク設定を表示、変更 |
| htop | バックグラウンドタスクを表示 |
| startx | コマンドラインからGUI(Xウィンドウシステム)を起動 |
| sudo | スーパーユーザー権限でコマンド実行 |
| su | スーパーユーザーへ切替 |
| man | コマンドの説明を表示 |
| exit | シェル終了 |
| gpio readall | GPIOピン情報出力 |
| pinout | GPIO端子のピンレイアウトを表示 |
| sudo raspi-config | ラズパイ設定画面を開く |
| tvservice | HDMIディスプレイに関するコマンド。-sで画面解像度などステータス表示 |
↑↓ 過去のコマンドを呼び出す Tab コマンドの補完機能 Ctrl+A 行の先頭へカーソルを移動する Ctrl+C 実行処理を中断する Ctrl+D カーソル上にある文字列を1文字削除する Ctrl+E 行の最後へカーソルを移動する Ctrl+H カーソルの左側の文字列を1文字削除する Ctrl+L 画面をクリアして、現在の行だけを再表示する Ctrl+Q 画面への出力を再開する Ctrl+S 画面への出力を停止する Ctrl+Z 実行処理を一時停止する
1.エディタを起動してシェルスクリプトを作成 vi test.sh #!/usr/bin/bash シェルを指定 echo hello-world 標準出力 2.実行権限を付与 chmod 755 test.sh または、chmod +x test.sh 3.スクリプトの実行 ./test.sh
・コメント行 #
・マルチステートメント ;
・変数
変数の名前には半角英数字(a-z、A-Z、0-9)とアンダーバー(_)が使えます。
変数に値を与える時は=を前後空白なしで書きます。
文字列の場合は"を付けて囲みます。
変数にアクセスする時は変数名の前に$を付けます。または$付けて変数を{}で囲みます。
変数はunsetで削除、readonlyで変数の上書き/削除不可にします。
特殊文字(; | & ^ \ $ ? * < > ( ) [ ] { } # % = ` " ' ~ TAB SPACE NEWLINE)は、\バックスラッシュを付けて一文字単位で扱うか、'シングルクオーテーションを付けて囲む。
str="abc"
echo $str
read str キーボードから入力してstrに代入
・配列
ary=(item1 item2 item3 item4)
ary[0]="ITEM1"
ary[2]="ITEM3
ary[*]または、ary[@] 全てのアイテム
・算術演算子
+ - \* / % =
・比較演算子
== != -eq -ne -gt -lt -ge -le
・論理演算子
-a -o !
・メタキャラクタ(ワイルドカード、正規表現)
* 任意の0文字以上の文字列。例:111.txt、abc.txt のファイルは *.txt と表せる
? 任意の1文字の文字列。例:1.txt、a.txt のファイルは ?.txt と表せる。abc.txt のように1文字でない場合は合致せず
[ ] 任意の1文字の文字列。例:ab、ac、ad は a[bcd] と表せる。任意の1文字なので例えば abc には合致せず
{ } カンマで区切られた文字列。例:data1 と data2 は data{1,2} のように表せる
. カレントディレクトリを表す。( ピリオドを1回入力 )
.. 1つ上のディレクトリを表す。( ピリオドを2回入力 )
~ ホームディレクトリを表す。( チルダを入力 )
・if文
if [ 条件1 ]; then
コマンド1
elif [ 条件2 ]; then
コマンド2
else
コマンド3
fi
・case文
case 値 in
条件・値1 ) コマンド1 ;;
条件・値2 ) コマンド2 ;;
条件・値3 ) コマンド3 ;;
…
条件・値n ) コマンドn ;;
esac
・for文
for i in 0 1 2 3
do
echo $i
done
・while文
while [ "$str" = "" ]
do
read str
if [ "$str" = "end" ]; then
break
fi
done
※無限ループは、while :
continue ループの処理を中断して,ループの先頭に戻ります。
・until文
a=0
until [ ! $a -lt 5 ]
do
echo $a
a=`expr $a + 1`
done
・関数
MyFunction () {
echo "関数のechoです。"
}
#呼び出し
MyFunction
※return 関数から復帰
/sys/class/gpio/ 以下に値を書き込んだり、読み込んだりして GPIO にアクセスできる。
sudo echo 2 > /sys/class/gpio/export GPIO2の使用開始
sudo echo out > /sys/class/gpio/gpio2/direction GPIO2を出力設定
sudo echo 1 > /sys/class/gpio/gpio2/value GPIO2をHIGH
sudo echo 0 > /sys/class/gpio/gpio2/value GPIO2をLOW
sudo echo 2 > /sys/class/gpio/unexport GPIO2の使用停止
sudo echo 11 > /sys/class/gpio/export GPIO11の使用開始
sudo echo in > /sys/class/gpio/gpio11/direction GPIO11を出力設定
sudo cat /sys/class/gpio/gpio11/value GPIO11の値取得
0 GPIO11の値がLOW
1 GPIO11の値がHIGH
・スクリプト例
#!/bin/bash
# リレー回路テスト用に作成(2秒後に電源を切る)
gpio_number=25
echo "${gpio_number}" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio${gpio_number}/direction
echo "1" > /sys/class/gpio/gpio${gpio_number}/value
sleep 2
echo "0" > /sys/class/gpio/gpio${gpio_number}/value
echo "${gpio_number}" > /sys/class/gpio/unexport
実行する場合は、sudo bash onoff.sh
#!/usr/bin/env python3
# coding: utf-8
import RPi.GPIO as GPIO # RPi.GPIOモジュールを使用
# LEDとスイッチのGPIO番号
gpio_led = 17
gpio_sw = 5
# GPIO番号指定の準備
GPIO.setmode(GPIO.BCM) #BCMピン番号での指定
# LEDピンを出力に設定
GPIO.setup(gpio_led, GPIO.OUT)
# スイッチピンを入力、プルアップに設定
GPIO.setup(gpio_sw, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.output(gpio_led, 0) # LED消灯
sw = GPIO.input(gpio_sw) # スイッチの状態を取得
if 0==sw:
GPIO.output(gpio_led, 1) # LED点灯
# 後処理 GPIOを解放
GPIO.cleanup(gpio_led)
GPIO.cleanup(gpio_sw)
#!/usr/bin/env python3
import pigpio # pigpioモジュールを使用
# LEDとスイッチのGPIO番号
gpio_led = 17
gpio_sw = 5
# pigpioの準備
pi = pigpio.pi()
# LEDピンを出力に設定
pi.set_mode(gpio_led, pigpio.OUTPUT)
# スイッチピンを入力、プルアップに設定
pi.set_mode(gpio_sw, pigpio.INPUT)
pi.set_pull_up_down(gpio_sw, pigpio.PUD_UP)
# スイッチの状態を取得
sw = pi.read(gpio_sw)
if 0==sw: # スイッチが押されていた場合(ON)
pi.write(gpio_led, 1) # LED点灯
else: # スイッチが離されていた場合(OFF)
pi.write(gpio_led, 0) # LED消灯
# pigpioから切断
pi.stop()
| MCU(マイコン) | RP2040 |
| CPUコア | デュアルコア Arm Cortex-M0+プロセッサ、最大動作周波数 133MHz |
| RAM | 264KB SRAM |
| Flashメモリー | 2MB Quad-SPI |
| インターフェース・センサー | USB1.1microB×1(電源供給、データ通信(ホスト)、プログラム書込み(デバイス)) GPIOピン×26(デジタル専用×23、アナログ/デジタル×3) PIO×8(SDカードやVGAなどのI/Fをエミュレート可能) PWMチャンネル×16(A/Bチャンネル×8、Bは入力対応) 温度センサー×1、LED×1、3ピンARMシリアル ワイヤデバッグ(SWD)ポート×1 |
| 通信機能 | SPI×2、I2C×2、UART×2 |
| アナログ | ADC 12bit 500ksps×3 |
| タイマー | タイマー×1(アラーム×4、RealTimeCounter×1) |
| I/O電圧 | 3.3V |
| 電源 | 1.8V~5.5V |
| サイズ・重さ | 21×51.3×3.9mm 約3g |
| 動作環境条件 | -20℃~+85℃(+70℃以下を推奨) |
| 供給期間 | 2031年1月まで供給予定 |
●表面実装LED
GPIO25ピンに接続されている。
●内蔵温度センサー
ADCの4番目の入力の値が温度センサー出力の電圧値になります。
●表面実装LED点灯
import machine
led = machine.Pin(25,machine.Pin.OUT)
led.value(1)
●タイマー
import time
time.sleep(1) #1秒待機
time.sleep(0.5) #0.5秒待機
●Pico内蔵温度センサー
import machine, time
sensor_temp = machine.ADC(4)
f = 3.3 / 65535
while True:
reading = sensor_temp.read_u16() * f
temperature = 27 - (reading - 0.706)/0.001721
print(temperature)
time.sleep(1)
●UART
UART(0)、UART(1)が使用可能。
・デフォルトの通信設定
baudrate = 115200
parity = none
stopbit = 1
from machine import UART,Pin
UART(1, baudrate=9600, tx=Pin(8), rx=Pin(9)) #UART(1)9600bps pin=8,9で設定
from machine import UART
u = UART(0)
u.write('TEST Start\n\r') #送信
while True:
if u.any() > 0: #受信バイト数
u.write(u.read(1)) #受信、送信
●SDカード(SPI)
# Pico SD-Card
#SPI0_SCK GP6 SCK
#SPI0_TX GP7 MOSI
#SPI0_RX GP4 MISO
#SPI0_CSn GP5 CS
#+5V VSYS VCC
#GND GND GND
from machine import Pin, SPI
import os, sdcard
spi = SPI(0)
sd = sdcard.SDCard(spi, Pin(5))
os.mount(sd, '/sd')
os.chdir('sd')
os.listdir()
print(open('readme.txt').read())
●トリガー割り込み
import machine as m
import utime
sensor = m.Pin(28, m.Pin.IN, m.Pin.PULL_DOWN) #センサの接続ポート
led = m.Pin(25, m.Pin.OUT) #本体のLED
#センサが反応した時の処理
def sensor_callback(Pin):
led.value(1)
utime.sleep_ms(250)
led.value(0)
sensor.irq(trigger = m.Pin.IRQ_RISING, handler = sensor_callback) #トリガー割り込み
●表面実装LED(GP25)
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
●内蔵温度センサー
温度センサーのスケッチは、メニューから[ファイル | →「スケッチ例」→「rp2040」 にある 「Temperature」 を使います。
●UART
USB Serial
UART0 Serial1 デフォルト TX=GP0、RX=GP1
UART1 Serial2
●I2C
I2C0 Wire デフォルト SDA=GP4、SCL=GP5
I2C1 Wire1
Wire1.setSDA(8); //I2C1_SDA=GP8
Wire1.setSCL(9); //I2C1_SCL=GP9
Wire1.begin();
●SPI
SPI0 SPI
SPI1 SPI1
SPI.setSCK(2); //SPI0_SCX=GP2
SPI.setTX(3); //SPI0_TX=GP3
SPI.setRX(4); //SPI0_RX=GP4
SPI.setCS(5); //SPI0_CSn=GP5
SPI.begin();
●デュアルコア
earlephilhower版ボードライブラリを使用時のみ可能です。
//core0 処理
void setup() {
}
void loop() {
}
//core1 処理
void setup1() {
}
void loop1() {
}

