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 | 256KB 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() { }