製作モジュール一覧

ラベル Raspberry Pi の投稿を表示しています。 すべての投稿を表示
ラベル Raspberry Pi の投稿を表示しています。 すべての投稿を表示

2022年12月3日土曜日

Raspberry Pi 覚書

Raspberry Piを使っていく上でのメモです。徐々に追加する予定です。

使用環境
  • Raspberry Pi 3 Model B V1.2
  • HDMIモニタ
  • USBキーボード(無線)
  • USBマウス(無線)


Raspberry Piを背面にマウントできるタイプのHDMIモニタを使用しています。

キーボードとマウスは中華製の安物ですが、USBドングル一つで無線接続できるのでUSBポートの節約になります。

ネットワークにWifiを使えば、必要なケーブルは電源用のUSBケーブル1本のみとなります。

Raspberry Pi 初期設定


OSインストール


Raspberry Pi Imagerを入手

SDカードを読み書きできるPCにRaspberry Pi Imagerをインストール。

Raspberry Pi Imagerを起動。
  • OS: Raspberry Pi OS (32-bit)
  • ストレージ: SDドライブを選択
  • 書き込む

Raspberry PiのSDカードドライブにOSを書き込んだSDカードを挿入して起動。

SSHの設定


「スタート」→「設定」→「Raspberry Piの設定」
「インターフェイス」→「SSH」: ON →「OK」


VNCの設定


VNCを使うとGUIでリモート操作が可能になる。

PCのVNC ViewerでRaspberry Piに接続しているようす

「スタート」→「設定」→「Raspberry Piの設定」
「インターフェイス」→「VNC」: ON →「OK」

VNC ViewerでPCから接続。

参考
Interface 2021年9月号 104p  「特設2 第2章 ラズベリー・パイ4/3B/3B+のセットアップ」

LAMPのインストール


以下の順にインストールします。
  • Apache2
  • PHP7
  • MySQL(MariaDB)
  • phpMyAdmin

Raspberry Pi OSのバージョン 

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.15.76-v7+ #1597 SMP Fri Nov 4 12:13:17 GMT 2022 armv7l GNU/Linux

Apache2のインストール


パッケージのアップデート
sudo apt update
sudo apt upgrade

Apache2のインストール
sudo apt install apache2

Apache2が起動しているか確認
ps agx | grep apache

WebブラウザでApache2に接続。
http://127.0.0.1/

ユーザーpiがhtmlを編集できるようにwww-dataグループを作り所有権を変更。
sudo usermod -a -G www-data pi
sudo chown -R -f www-data:www-data /var/www/html
sudo chmod -R g+w /var/www/html

ログアウトしてログインし直す。

デフォルトWebページを編集
nano /var/www/html/index.html

PHP7のインストール

PHP7のインストール
sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mbstring php7.4-mysql php7.4-curl php7.4-gd php7.4-zip

テスト用のPHPファイルを作成
nano /var/www/html/example.php

nanoでテキストを編集
<?php
phpinfo();
?>

動作確認
http://localhost/example.php

MySQLのインストール


参考「Pi My Life Up:  Setup a Raspberry Pi MYSQL 」

パッケージのアップデート
sudo apt update
sudo apt upgrade

MySQLのインストール
sudo apt install mariadb-server

MySQLのセキュリティ設定
sudo mysql_secure_installation
すべて「Y」を選択する。

mysql_secure_installationで表示されるメッセージ (DeepLで和訳)

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

注:このスクリプトのすべての部分を実行することは、すべてのMariaDBサーバーに推奨されます。
      サーバで使用することを推奨します。 各ステップを注意深く読んでください!

In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here.

MariaDBにログインしてセキュリティを確保するためには、rootユーザーの現在のパスワードが必要です。MariaDBをインストールしたばかりで、まだrootパスワードを設定していない場合は、ここでEnterキーを押すだけでよいでしょう。

Enter current password for root (enter for none): 

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

rootのパスワードを設定するか、unix_socketを使用することで、誰も適切な権限なしにMariaDBのrootユーザーにログインすることができないようにすることができます。

あなたは既にrootアカウントを保護しているので、安全に'n'と答えることができます。

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

すでにrootアカウントは保護されていますので、安心して「n」とお答えください。

Change the root password? [Y/n] Y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them.  This is intended only for testing, and to make the installation go a bit smoother.  You should remove them before moving into a production environment.

デフォルトでは、MariaDBのインストールには匿名ユーザーがあり、誰でもユーザーアカウントを作成することなくMariaDBにログインすることができるようになっています。 これはテスト用で、インストールを少しスムーズにするためだけです。 本番環境に移行する前に削除しておく必要があります。

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This ensures that someone cannot guess at the root password from the network.

通常、rootは「localhost」からの接続のみを許可されるべきです。 これにより、誰かがネットワークからrootのパスワードを推測することができないようにします。

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can access.  This is also intended only for testing, and should be removed before moving into a production environment.

デフォルトでは、MariaDBには誰でもアクセスできる'test'という名前のデータベースが付属しています。 これもテスト用であり、本番環境に移行する前に削除してください。

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

権限テーブルを再ロードすることで、これまでに行ったすべての変更が直ちに有効になります。

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB installation should now be secure.

Thanks for using MariaDB!

すべて完了  上記の手順がすべて完了したら、MariaDBのインストールは安全なものになるはずです。

MariaDBを使用していただきありがとうございます。

MySQLサーバーへのアクセス
sudo mysql -u root -p

SQLのテスト
CREATE DATABASE exampledb;
CREATE USER 'pi'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON exampledb.* TO 'pi'@'localhost';
FLUSH PRIVILEGES;
quit;

PHP MySQLコネクタのインストール
sudo apt install php-mysql

phpMyAdminのインストール



パッケージのアップデート
sudo apt update
sudo apt upgrade

PHPMyAdminのインストール
sudo apt install phpmyadmin
webサーバ→apache2を選択
dbconfig-commonで設定しますか?→はい
phpmyadmin 用の MySQL アプリケーションパスワード:→パスワードを入力

rootはPHPMyAdminで禁止されているのでユーザーを作成しすべてのアクセスを許可する。
sudo mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'pi'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
quit;

Apacheの設定
sudo nano /etc/apache2/apache2.conf

最下行に次の一行を追加
Include /etc/phpmyadmin/apache.conf

Apacheを再起動
sudo service apache2 restart

PHPMyAdminにアクセス
http://127.0.0.1/phpmyadmin

IPアドレスは次のコマンドで確認
hostname -I

Raspberry PiでphpMyAdminを実行しているようす

phpMyAdminのドキュメント

2017年11月26日日曜日

Raspberry Pi 3とCortex-M7のNucleo F767ZIの浮動小数点演算を比較

Nucleo用にmbedで書いたプログラムとほぼおなじものをRaspberry Pi3用にC++で書いて比較してみた。

Nucleo用プログラム (mbed)
https://os.mbed.com/users/ryood/code/FloatingPointTest/ Revison:1

Raspberry Pi 3用プログラム <floating_point_test.cc>

#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdint.h>

#define LOOP_N  (10000)

float buffer[LOOP_N];

clock_t start;

void floatTest()
{
    // divf
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = (float)i / LOOP_N;
    }
    int elapse = clock() - start;
    printf("divf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
    
    // sinf
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = sinf((float)i / LOOP_N);
    }
    elapse = clock() - start;
    printf("sinf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);

    // cosf
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = cosf((float)i / LOOP_N);
    }
    elapse = clock() - start;
    printf("cosf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);

    // expf
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = expf((float)i / LOOP_N);
    }
    elapse = clock() - start;
    printf("expf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
    
    // logf
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = logf((float)i / LOOP_N);
    }
    elapse = clock() - start;
    printf("logf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
    
    // sqrtf
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = sqrtf((float)i / LOOP_N);
    }
    elapse = clock() - start;
    printf("sqrtf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);      
}

void doubleTest()
{
    // div
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = (double)i / LOOP_N;
    }
    int elapse = clock() - start;
    printf("div\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
    
    // sin
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = sin((double)i / LOOP_N);
    }
    elapse = clock() - start;
    printf("sin\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);

    // cos
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = cos((double)i / LOOP_N);
    }
    elapse = clock() - start;
    printf("cos\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);

    // exp
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = exp((double)i / LOOP_N);
    }
    elapse = clock() - start;
    printf("exp\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
    
    // log
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = log((double)i / LOOP_N);
    }
    elapse = clock() - start;
    printf("log\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
    
    // sqrt
    start = clock();
    for (int i = 0; i < LOOP_N; i++) {
        buffer[i] = sqrt((double)i / LOOP_N);
    }
    elapse = clock() - start;
    printf("sqrt\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);      
}

int main()
{
    printf("\nFloating Point Test\n");
    printf("CLOCKS_PER_SEC: %ld\n", CLOCKS_PER_SEC); 
    
    // 単精度浮動小数点演算
    printf("\nFloating Point Test\n");
    printf("float\n");
    printf("op\ttotal\t1-op\n");
    printf("-------------------------------\n");
    floatTest();
    
    // 倍精度浮動小数点演算
    printf("double\n");
    printf("op\ttotal\t1-op\n");
    printf("-------------------------------\n");
    doubleTest();
}


pi@raspberrypi:~ $ gcc -o floating_point_test -lm floating_point_test.cc

pi@raspberrypi:~ $ cat /etc/debian_version
8.0

Raspberry PiのプログラムはLinux上で実行しているのでNucleoの方が有利ですが、Raspberry PiをOSなし(ベアメタルと言うそうです)で動かすのはかなり難しいので、実用的な性能比較ということになると思います。

実行結果

Floating Point Test
CLOCKS_PER_SEC: 1000000

Floating Point Test
float
op      total   1-op
-------------------------------
divf    629     0.062900
sinf    2124    0.212400
cosf    2163    0.216300
expf    3632    0.363200
logf    2659    0.265900
sqrtf   3630    0.363000
double
op      total   1-op
-------------------------------
div     753     0.075300
sin     4805    0.480500
cos     4829    0.482900
exp     5356    0.535600
log     4408    0.440800
sqrt    4871    0.487100

※Raspberry Pi上では実行ごとに結果が異なる。



float型ではsqrtf()以外ではNucleo F767はRasPi3の約0.6倍の性能。なぜだかsqrtf()だけはNucleo F767の方が速い。

double型ではsqrt()以外はNucleo F767はRasPi3の約0.2倍~0.5倍の性能。これもsqrt()はNucleo F767の方が速い。

駆動クロックは

Nucleo F767ZI: 216MHz
Raspberry Pi 3: 1.2GHz

で約6倍差があるので、Cortex-M7のNucleo F767ZIは、まあまあ健闘していると思う。

Nucleo F767ZIの消費電流は98mAで(ボード上のJP5 IDDで測定)、Raspberry Pi 3よりかなり少ない。

2016年12月9日金曜日

Raspberry Pi 3とNucleo F401REでSPI通信させてみる。

Sparkfunのチュートリアルhttps://learn.sparkfun.com/tutorials/raspberry-pi-spi-and-i2c-tutorialを参考にした。

配線図




3.3V系同士なので信号レベルは気にせず接続できる。

Raspberry Pi 3B(Master)


Raspberry PiのOSはNOOBSで、SPI通信のライブラリにはWiringPiををインストールして使った。

sparkfunの記事にある通り、
>sudo raspi_config
で、SPIを有効化した。

spitest2.cpp

#include <iostream>
#include <errno.h>
#include <wiringPiSPI.h>
#include <unistd.h>

using namespace std;

static const int CHANNEL = 1;

int main()
{
   int fd, result;
   unsigned char buffer[100];

   cout << "Initializing" << endl ;

   fd = wiringPiSPISetup(CHANNEL, 500000);

   cout << "Init result: " << fd << endl;

   unsigned char cnt = 0;
   while (1) {
           buffer[0] = cnt;
           cnt++;
           result = wiringPiSPIDataRW(CHANNEL, buffer, 1);
           cout << "result: " << result << " recieve: " << int(buffer[0]) << endl;
           usleep(10000);       // wait 10ms
   }
}

オシロで信号を捕捉しやすくするために、while(1)の無限ループでSPI通信をさせたが、ラズパイのCPUが発熱してPCとのTCP/IP通信のエラーが発生したのでusleep()を使ってウェイトをかけるようにした。


コンパイル


>g++ spitest2.cpp -lwiringPi -o spitest2


Nucleo F401RE (Slave)


参考「Arduino UnoをSPI Master、Nucleo F401REをSPI Slaveにして通信してみる。

今回はタイミングがシビアではないのでprintfで受信結果を表示するようにした。

main.cpp

#include "mbed.h"

#include "SPISlave.h"


SPISlave SpiS(D11, D12, D13, A2);    // mosi, miso, sclk, ssel


int main()

{

    printf("*** SPI Test: Raspberry Pi 3:Master Nucleo:Slave ***\r\n");

   

    SpiS.format(8, 0);

    SpiS.frequency(500000);

   

    uint8_t cnt = 0;

    SpiS.reply(cnt);

    while (1) {

        if (SpiS.receive()) {

            int v = SpiS.read();

            printf("%d\r\n", v);

            SpiS.reply(cnt++);

        }

    }

}

実行


Raspberry Piで

./spitest2

とコマンドを打って実行すると、ラズパイ用のコンソールと、Nucleoからのシリアル出力用のコンソールから送受信結果が
出力される。



SPI信号波形


MOSI


ch1:MOSI ch2:SCK

MISO


ch1:MISO ch2:SCK

CS


ch1:CS ch2:SCK


MISOとMOSIは1kΩのRでプルダウンしているが、これを入れないとHi-Zになったとき(?)に信号波形が崩れるため。SCKとCSはプルダウンしなくても平気な感じだ。

MOSI(プルダウンなし)


MISO(プルダウンなし)


2016年8月7日日曜日

Raspberry Pi 3でPCM5102Aを使ってみる。

オーディオ用のDACを使ったファンクションジェネレータ」でI2S DACのPCM5102Aを使ったが、Raspberry PiでもPCM5102Aがよく使われているようなので動かしてみた。

volumio(0.976)のWebブラウザの設定画面でのPlayback OptionsでI2S DACをonにして 「Hifiberry DAC」を選択。(Rapsberry PiのRebootが必要)


GPIOヘッダのI2S関係のピン・アウト


16bit/44kHzのデータを再生してBCK、DOUT、LRCKが出力されるかオシロで確認



ch1:BCK ch2:LRCK


ch2:BCK ch2:DOUT

回路図(DATA SHEETより)

接続図


ブレッドボードで回路を組んでRaspberry Piにつなぐ前に、以前テストしたプログラムをPSoC 5 LPに書き込んで動作確認した。

参考:PSoC 5LP Prototyping KitでPCM5102Aを使ってみる。

↑このプログラムはDMAの扱いが雑で、片チャンネルの出力が変だが、PCM5102A周りの回路が動作するかどうかは確認できる。

PCM5102Aで直接ヘッドホンを駆動するのはムリがあるが、音は出た。

あっさり動いてくれてうれしいような、寂しいような。

メモ:


PCM5102Aは電源電圧によって出力が歪む様なので(参考:「PCM5102の出力にLPFをかける」)実作するとすれば電源はがんばる。

Volumio+デバイス・ドライバでプログラミングしなくても音楽を再生できそうなので、このあたりをもう少し調べてみる。

まあでも、LME49600を使ったヘッドホンアンプを作るのが先かな。

電源(3.3V)とGNDをショートさせるとRebootがかかる。要注意。

Raspberry Pi 3にVolumioをインストールしてみる。

トランジスタ技術2015年9月号を参考にしてRaspberry Pi 3にネットワーク・オーディオ用のLinuxのVolumioをインストールしてみた。

Raspbery Pi 3 MODEL B
Volumio 0.976 Released: Thu Jul 28 12:38:53 CEST 2016


ネットワーク設定


Raspberian(NOOBS)と違ってローカルのGUIがない(たぶん)のでWifiの設定がめんどくさい。我が家ではネットワークはWi-fiで運用していて、親機が1F、作業場が2Fなので簡単には有線でLANに接続できない。

LinuxでWi-fiの設定はやったことがないし、DHCPサーバが立ち上がっているLANでないと自力でネットワークの設定もしないといけないので、押入れをひっかきまわして、無線LAN子機のWL54SEを探し出して有線LAN環境を作った。

一旦有線でつながれば、PCのWebブラウザからhttp://volumio.localにアクセスすればWi-fiの設定もできた。

あとはWi-fi経由で使っていけばいいが、他のディストリビューションも試してみたいので、しばらく有線LAN環境は残しておくつもり。

SSH


いちいちモニターやキーボードをつなぐのもめんどくさいので、SSHでアクセスしてみたがrootでは入れないようだ。Web上の記事だとrootでOKの様だが。

/etc/passwdを見るとvolumioというuserがあったので

ID: volumio
PW: volumio

でSSHで接続できた。sudoも使えるようだ。

久しぶりにLinuxを使ったのでわからないことばかり(@@;

2016年8月3日水曜日

RaspPi3(ARM Cortex-A53)とNucleo-F401RE(Cortex-M4)の浮動小数点演算比較

Raspberry PiはCortex Aなので、その実力を見るために以前やったサイン波テーブルの生成をやってみた。

gen_sine_table.c

#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdint.h>

#define M_PI_f     (3.1415926f) /* pi float */
#define TABLE_LENGTH  (8192)

uint8_t waveTable_0[TABLE_LENGTH];

void genSineTable_double(uint8_t *table, int length)
{
    int i;

    int16_t v;
    int8_t* p8;
    for (i = 0; i < length / 2; i++) {
        v = (int16_t)(sin(2.0 * M_PI * i * 2 / length) * 32767);
        p8 = (int8_t *)&v;
        table[i*2] = *(p8+1);
        table[i*2+1] = *p8;
    }
}

void genSineTable_float(uint8_t *table, int length)
{
    int i;
    int16_t v;
    int8_t* p8;
    for (i = 0; i < length / 2; i++) {
        v = (int16_t)(sinf(2.0f * M_PI_f * i * 2 / length) * 32767);
        p8 = (int8_t *)&v;
        table[i*2] = *(p8+1);
        table[i*2+1] = *p8;
    }
}

int main()
{
    clock_t start;

    printf("CLOCKS_PER_SEC: %ld\n", CLOCKS_PER_SEC); 

    // 単精度浮動小数点演算 (with FPU)
    printf("start float: TABLE_SIZE:%d\r\n", TABLE_LENGTH);
    start = clock();
    genSineTable_float(waveTable_0, TABLE_LENGTH);
    printf("%d\r\n", clock() - start);

    // 倍精度浮動小数点演算
    printf("start double: TABLE_SIZE:%d\r\n", TABLE_LENGTH);
    start = clock();
    genSineTable_double(waveTable_0, TABLE_LENGTH);
    printf("%d\r\n", clock() - start);
}

pi@raspberrypi:~ $ gcc -o gen_sine_table -lm gen_sine_table.c

速度を上げる工夫は何もしていない。前回とほぼおなじプログラムをgccでコンパイルしただけ。バイトの入れ替えは__REV()関数を使ったほうが早そうだが、前回と同じく1byteずつ入れ替えた。

Linux上で動かしているので割り込みやらなんやらの影響(?)で実行するごとに値が変わる。適当に見繕って表にしてみた。


TABLE_LENGTH RasPi3 float (us) RasPi3 double (us) Nucleo float (us) RasPi3 float vs Nucleo float(us)
512 160 342 372 2.325
1024 273 454 743 2.721611722
2048 455 730 1486 3.265934066
4096 897 1378 2972 3.313266444
8192 1621 2691 5943 3.666255398


Nucleo F401は84MHz駆動で、RasPi3は1.2GHz駆動なのでもっと差がでても良さそうだが、いろいろなオーバーヘッドがあるのだろう。

8192バイトのサイン・テーブルをdouble型で生成しても3ms以下なので、ファンクションジェネレータとして使った場合、ロータリーエンコーダーをガチャガチャ回したタイミングで毎回波形テーブルを作ってもストレスは少なそうだ。専用機にしてしまうのはもったいないけど。

まじめにやるならスレッドの優先順位を上げたり、HWを使ったりとかいろいろ方法がありそう。

メモ:


Webを眺めていると、GPGPUで行列演算をされている方がいた。http://qiita.com/9_ties/items/15ab7fa198991a61a3a9

ARMのAとMはよく見るが、Rはあんまり見ない。どのへんで使われてるんだろう。

Raspberry Pi Zero($5 PC)なら安いし消費電力も小さいようなので、いろいろ使えるかな~。早く手軽に入手出来るようにならないかな。

2016年8月1日月曜日

Raspberry Pi 3でLチカをしてみる。

DCAボードが動作できたので、Raspberry Pi 3を買ってみた。

専用のケースが売っているが、Arduino的なボードでいつもやっているように


プラ製のスペーサーを使って床面に触れないようにしようと思っていたが、M3のねじが入らない(^q^;

Raspberry Piのボードデザインを確認するとφ2.75となっている。嫌がらせか(^q^;;;

M2.5ぐらいのねじとスペーサー買うかな~、いやでもホムセンで買うと結構割高だし素直にケース買っておけばよかったかなと思っていたが、秋月のポリカーボネートケースに入れてみたら、すんなり収まった。


USBコネクタと干渉してきっちり蓋が閉まらないが、使わないときの保護用と割り切る。

使うときは、蓋を台座にしてやればなんとかなる。


ケースは1000円ぐらいなので900円ぐらい節約できた。貧乏はつらい(TqT;


インストール


最初、製品に同梱のクイック・スタートの紙に書いてある通りSDカード(まっさらの状態)を挿して動作させると、HDMI経由のモニターに何も表示されなくてあせった。

OSがなくても何らかの表示はされるだろうという思い込みだ。Web上に日本語のインストール記事がたくさんあるのでSDカードにRaspbian(NOOBSのフル・バージョンの方)を書きこんで起動できた。

ふぅ。。。

HDMI経由のモニタとUSBキーボードとマウス(一度Windowsで認識させてやったLogicoolのUnify無線のやつでOKだった)をつないでローカルで起動できて、Wifiもルーターの指定をしてやると特にすることがない。

sshdも初期状態で動いているようで、何もしないでWindowsからTeraTermで接続できた。

<追記:2016.12.06>

Username::Password  pi::raspberry

</追記>

slackwareをフロッピーから起動して数日かけてWeb Serverを起動させていたことを思いだすと、今の子は恵まれてるなぁ(^q^;

Lチカ


ツールラボさんの記事FREE WINGさんの記事を参考にした。


C言語からGPIOを使うにはWiringPiというライブラリを使う。直にレジスタを叩くのはかなり面倒くさそうだが、いずれやらなければいけないかも?

とりあえずLEDはチカチカしたので、

SPI、I2C、I2Sあたりの使い方を調べるつもりだ。