2017年12月6日水曜日

An installation bcm2835 library in Raspberry Pi and testing spi program

Adafruit PiTFT3.5を間違えて購入してしまった。



もったいないので、ロボットの簡易的なディスプレーにしようと思い、サイトに書いてあるGPIOをつないだけど動かない。もちろん直付けすると動くけど、他のGPIOが使えなので、、、

<追記>
初稿を書いた後に、Pin1の3.3Vを接続したら、ディスプレーとして動きました。SPIの件は、変わらずですが、、、
ディスプレーとして動いたので良しとします。
デバイスファイルは、/dev/input/touchscreen以外にもあると思うけど、、、
いつかちゃんと確認するという事で、、、
</追記>

ということで、写真のように接続した時に、SPIちゃんと動いているのかしら
その為にSPIのテスト

(2) bcm2835 libraryのインストール(最新バージョンは都度確認)

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.52.tar.gz
./configure
make
sudo make install

(2) SPIのテスト

ls /dev/spi*
ls: cannot access /dev/spi*: No such file or directory

なぬ?

lsmod
.
.
snd                    68784  5 snd_timer,snd_bcm2835,snd_pcm
i2c_bcm2835             6433  0
spi_bcm2835             7424  0
bcm2835_gpiomem         3791  0
uio_pdrv_genirq         3718  0
.
.

cat t1.c

#include <bcm2835.h>
#include <stdio.h>
int main(int argc, char **argv)
{
    if (!bcm2835_init())
        return 1;
    bcm2835_spi_begin();
    bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);      // The default
    bcm2835_spi_setDataMode(BCM2835_SPI_MODE0);                   // The default
    bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_65536); // The default
    bcm2835_spi_chipSelect(BCM2835_SPI_CS0);                      // The default
    bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW);      // the default
    uint8_t send_data = 0x23;
    uint8_t read_data = bcm2835_spi_transfer(send_data);
    printf("Sent to SPI: 0x%02X. Read back from SPI: 0x%02X.\n", send_data, read_data);
    if (send_data != read_data)
      printf("Do you have the loopback from MOSI to MISO connected?\n");
    bcm2835_spi_end();
    bcm2835_close();
    return 0;
}

gcc -o t1 t1i.c -l bcm2835

./t1
Segmentation fault

だめだぁ、、、

(3) 直付け


ls /dev/spi*
ls: cannot access /dev/spi*: No such file or directory

あれ?
でも、PiTFT動いているし、、、???

./t1
Segmentation fault

ダメだぁ、、、

(4) SPI Off


sudo reboot

ハングアップしするので、電源Off-Onで再起動、、、

ところが、UIでるんだなぁ、、、(笑)

どうなっているのでしょうか?
何で、接続されているのかしら、、、
SPIではないのかしら、、、、

とっても、Peaceではない。

2017年12月4日月曜日

lighttpd 1.4.48 インストール

ロボットコントローラーには、lighttpdを使って

RDCSのRESTモドキや、ロボットのコントロールに活用している。

最新が、1.4.48 になっていたのでインストール

./configure
make
sudo make install

確認すると、

$ lighttpd -v
lighttpd/1.4.48 - a light and fast webserver

めでたし、めでたし、

Peace!!

2017年11月30日木曜日

OpenCV3.3.0 installation script

Movidius のインストールスクリプトの中にある
OpenCV3.3.0のスクリプト

このスクリプトは、便利なので自己メモとして、記録

Peace!!


#! /bin/bash

#test for python already installed for opencv
python3 -c "import cv2" > /dev/null 2>&1
if [ $? -eq 0 ] ;
then
        echo "";
        echo "OpenCV already setup for python";
        echo "";
        exit 0
fi;

## Install OpenCV
if [[ `lsb_release -d` =~ .*Raspbian.* ]]
then
        echo ""
        echo "************************ Please confirm *******************************"
        echo " Installing OpenCV on Raspberry Pi may take a long time. "
        echo " You may skip this part of the installation in which case some examples "
        echo " may not work without modifications but the rest of the SDK will still "
        echo " be functional. Select n to skip OpenCV installation or y to install it."
        read -p " Continue installing OpenCV (y/n) ? " CONTINUE
        if [[ "$CONTINUE" == "y" || "$CONTINUE" == "Y" ]]; then
                echo "";
                echo "Installing OpenCV";
                echo "";
                sudo apt-get update -y && sudo apt-get upgrade -y
                sudo apt-get install -y build-essential cmake pkg-config
                sudo apt-get install -y libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
                sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
                sudo apt-get install -y libxvidcore-dev libx264-dev
                sudo apt-get install -y libgtk2.0-dev libgtk-3-dev
                sudo apt-get install -y libatlas-base-dev gfortran
                sudo apt-get install -y python2.7-dev python3-dev

                cd ~
                wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.3.0.zip
                unzip opencv.zip
                wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip
                unzip opencv_contrib.zip
                cd ~/opencv-3.3.0/
                mkdir build
                cd build
                cmake -D CMAKE_BUILD_TYPE=RELEASE \
                      -D CMAKE_INSTALL_PREFIX=/usr/local \
                      -D INSTALL_PYTHON_EXAMPLES=OFF \
                      -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \
                      -D BUILD_EXAMPLES=OFF ..
                make
                sudo make install
                sudo ldconfig
        else
                echo "";
                echo "Skipping OpenCV installation";
                echo "";
        fi
else
        echo "Installing opencv python for non-Raspbian";
        sudo -H pip3 install opencv-python
        sudo -H pip3 install opencv-contrib-python
fi

Nara

ちょっと、接待で、、、

いにしえの奈良

大神神社、長谷寺

疲れた。。。でも綺麗。

最後の写真が、日本らしいかも、、、(^^)/

Peace!








Upgrade Jessie to Stretch

今更感、満載だけど、、、

ロボットのOSを、アップグレードするメモ

apt-get でアップグレードするので、apt関連のファイル設定を変更して実行

(1) バックアップ
僕の場合は、~/prj 以下に全部あるので、、、

tar cvf 171129_prj.tar

history > 171129_history.txt


(2) Jessieを最新版にする

sudo apt-get update && sudo apt-get upgrade -y

(3) 設定ファイルの変更部分を探す

grep jessie /etc/apt/ -R

/etc/apt/sources.list:deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
/etc/apt/sources.list:#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi
/etc/apt/sources.list.d/raspi.list:deb http://archive.raspberrypi.org/debian/ jessie main ui
/etc/apt/sources.list.d/raspi.list:#deb-src http://archive.raspberrypi.org/debian/ jessie main ui

sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list.d/raspi.list

変更の確認
sudo grep stretch /etc/apt/  -R

/etc/apt/sources.list:deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi
/etc/apt/sources.list:#deb-src http://archive.raspbian.org/raspbian/ stretch main contrib non-free rpi
/etc/apt/sources.list.d/raspi.list:deb http://archive.raspberrypi.org/debian/ stretch main ui
/etc/apt/sources.list.d/raspi.list:#deb-src http://archive.raspberrypi.org/debian/ stretch main ui

(4) 更新
sudo apt update

sudo apt dist-upgrade

途中で、2回、聞いてくるので、y
で、、、小一時間

確認

cat /etc/debian_version
9.1

sudo reboot


最後に、
sudo apt-get -y autoremove


Peace!!

2017年11月25日土曜日

Movidius and PiTF3.5 on Raspberry Pi

MovidiusとAdafruitのPiTFT3.5 をセットアップ

しかし、問題がある。

Movidiusは、Stretchが推奨
PiTFT3.5は、Jessieがサポート対象

という事で、
PiTFT3.5 は、AdafruitのこのURLのEasy Installでインストール
このパッケージは、Jessie

https://learn.adafruit.com/adafruit-pitft-3-dot-5-touch-screen-for-raspberry-pi/easy-install

実は、Stretchで、下のURLの通りに処理したら、逝ってしまった。

https://learn.adafruit.com/adafruit-pitft-3-dot-5-touch-screen-for-raspberry-pi/detailed-install

kernelをdownloadして、そのページある設定をする。

最後に、rpi-upgradeしちゃだめって、出たけどやっちゃた。

で、こんな感じ


まずは、問題なくPiTFT3.5 の設定完了


Movidiusですが、

手順1 TesorFlowをインストールする
手順2 Movidiusのライブラリーインストール
         OpenCV3.3もインストールするけど、途中でY/N聞いてくる

TesorFlowは、ここからdownload

wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.4.0/tensorflow-1.4.0-cp35-none-linux_armv7l.whl

sudo pip3 install tensorflow-1.4.0-cp35-none-linux_armv7l.whl

ここで問題が発生する。
Jessieは、python3.4、よってpip3でエラー発生。
このwhlは、3.5じゃないとダメと怒られる

で、python3.5のbuild&install

sudo apt-get remove python3 python3-dev

wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tar.xz

tar xvf Python-3.5.4.tar.xz

cd Python-3.5.4

./configure

make -j4

sudo make install

sudo cp /usr/local/bin/pip3 /usr/bin

sudo ln -s /usr/local/bin/python3.5 /usr/bin/python3

再度

sudo pip3 install tensorflow-1.4.0-cp35-none-linux_armv7l.whl

なんかやっている、、、、OK!

次は、MovidiusのSDK

git clone http://github.com/Movidius/ncsdk && cd ncsdk && make install && make examples

OSは、Jessieではダメだそうです。。。

Movidiusは、Stretch

PiTFT3.5は、Jessie

当面組み合わせられない。。。

Peace!!

2017年9月19日火曜日

An installation of openCV 3.3.0 on raspberry ZERO W stretch

初めての組み合わせ、、、10時間(笑)

OSはStretchにするのが良いのかの議論はありますが、、、

基本、これまでのインストールの手順です。

でも、いろいろあったわけで、


(1) 依存ファイルのインストール

以前
sudo apt-get install -y build-essential git cmake pkg-config cmake-qt-gui mesa-utils  libgl1-mesa-dri libjpeg-dev libtiff5-dev libpng12-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libgtk2.0-dev libprotobuf-dev protobuf-compiler libvtk5-dev libvtk5-qt4-dev python-vtk tcl-vtk  libatlas-base-dev gfortran libeigen3-dev libv4l-dev libqt4-core libqtgui4 libqt4-test libqt4-opengl-dev sphinx-common doxygen



今回、最小限です。かつ、Raspberry Piをセットアップして、


最初の、update, upgrade, raspi-update して、reboot した直後の状態

sudo apt-get -y install build-essential cmake pkg-config cmake-qt-gui git libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get -y install libxvidcore-dev libx264-dev
sudo apt-get -y install  libqtgui4 libqt4-test libqt4-opengl-dev


(2)cmakeは、こんな感じ

cd ~
cd opencv-3.3.0
mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D PLANTUML_JAR=/usr/share/java/plantuml.jar \ -D ENABLE_NEON=OFF \ -D WITH_TBB=OFF -D BUILD_TBB=OFF \ -D WITH_QT=ON -D WITH_OPENGL=OFF \ -D BUILD_opencv_freetype=OFF \ -D BUILD_EXAMPLES=OFF \ -D INSTALL_C_EXAMPLES=OFF ..



(3) makeとインストール

make

10時間待ちます。。。(^^)


sudo make install

sudo ldconfig


(4)確認

cd ~/opencv-3.3.0/samples/cpp

cd ~/opencv-3.3.0/samples/cpp


g++ `pkg-config opencv --cflags --libs` facedetect.cpp -o facedetect

./facedetect  --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ../data/lena.jpg

どーーん、peace!!







2017年8月7日月曜日

OpenCV 3.2 Module List (自分用)


ABCD

modulefunctionlink

cappsapps provides various nodes that run internally OpenCV's functionalities

ccalib3dThe functions in this section use a so-called pinhole camera model. In this model, a scene view is formed by projecting 3D points into the image plane using a perspective transformation.
カメラキャリブレーション、ステレオ対応点探索
calib3d

ccore画像・行列データ構造の提供、配列操作、基本図形描画、XMLおよびYAML入出力、コマンドラインパーサー、ユーティリティ機能などcore

cfeatures2d特徴点抽出(ORB、BRISK、FREAKなど)features2d

cflann多次元空間のクラスタリングやサーチ問題flann

chighguiGUI(ウィンドウ表示など)highgui

cimgcodecs画像ファイル入出力imgcodecs

cimgprocフィルター処理、アフィン変換、エッジ検出、ハフ検出、色変換、ヒストグラム計算、ラベリングなどimgproc

cjavajava

cmlSVM、決定木、ブースティング、ニューラルネットワークなどml

cobjdetectオブジェクト検出(顔検出、人体検出など)objdetect

cphoto画像修復、ノイズ除去処理、HDR(High Dynamic Range)合成、画像合成などphoto

cpython2python

cshape形状マッチングshape

cstitchingパノラマ合成stitching

csuperres超解像処理superres

ctsテスト用モジュールts

cvideoオプティカルフロー、カルマンフィルター、背景差分などvideo

cvideoio動画ファイルの入出力、カメラキャプチャなどvideoio

cvideostab手ブレ補正(Video Stabilization)videostab

cviz3Dデータの可視化(内部的にVTKを使用)viz

cworldOpenCV を利用するときには複数のライブラリをリンクする必要があり、world は、その手間を軽減するために作られた、複数のモジュールをまとめた一つのライブラリ。つまりwrapperworld

earucoThis module is dedicated to square fiducial markers (also known as Augmented Reality Markers) These markers are useful for easy, fast and robust camera pose estimation.ARマーカーaruco

ebgsegmThis algorithm combines statistical background image estimation and per-pixel Bayesian segmentation.背景セグメンテーションnbgsegm

ebioinspiredThis class provides the main controls of the Gipsa/Listic labs human retina model. This is a non separable spatio-temporal filter modelling the two main retina information channels.視覚モデルに従う処理bioinspired

eccalibCustom Calibration Pattern for 3D reconstruction
キャリブレーションパターンのカスタム
ccalib

econtrib_worldThe world module is actually a wrapper module that builds the complete openCV module interface, so basically all modules available.contrib_world

edatasetsInterface forinterfacing With existing Computervision databases.
様々なデータセットをダウンロード
datasets

ednnFunctionality of this module is designed only for forward pass computations (i. e. network testing). A network training is in principle not supported.
ディープラーニング
dnn

ednn_modernThe module is wrapper to tiny-dnn, a header only, dependency-free deep learning framework in C++11.dnn_modern

edpmThis is a C++ abstract class, it provides external user API to work with DPM.
デフォマブル パートモデル
dpm

eface顔認識face

efreetypematにtextをマージするfreetype

efuzzyファジーfuzzy

eimg_hash画像の各種ハッシュ処理img_hash

eline_descriptor線記述子line_descriptor

eoptflowオプティカルフロー推定optflow

e
phase_unwrapping
位相アンラッピングphase_unwrapping

eplotグラププロットplot

ereg画像のレジストレーションreg

ergbdRGB+デプス処理rgbd

esaliency顕著性マップsaliency

estereoステレオマッチングstereo

estructured_lightカメラープロジェクション用パターン投影structured_light

e
surface_matching
3次元点マッチングsurface_matching

etext文字認識text

etrackingトラッキングtracking

exfreatures2d拡張特徴量計算モジュールxfeatures2d

eximgproc拡張画像処理モジュールximgproc

exobjdetect拡張物体検出モジュールxobjdetect

exphoto拡張コンピュテーショナルフォトグラフィモジュールxphoto



cnn_3dobj

cvv

dnns_easily_fooled

hdf

matlab

sfm

CUDA

An installation of OpenCV 3.3.0 on Raspberry Pi ZERO

先の投稿は、Raspberry Pi2上での、OpenCV3.3.0でした。

今回は、ZEROです。

エラーで止まった事もあり、ちゃんと設定してbuild & install しました。

時間は、約7時間かかります。

手順は、先の投稿を見てください。

今回の投稿では、cmake-guiの設定値と、make からの install の画面の説明

1.cmake-gui

シングルコアのZEROなので、必要最小限のインストールにしました。
比較的単純な画像処理を行いたいので、次の設定をしています。
もちろん、NEONなどはdisableです。








2.cmake-gui

make からの install の画面、14%という数字に戸惑いました。
途中で、終わっている?
でも、libraryはできているので、install してみると!



sudo make install
sudo ldconfig
cd ~/opencv-3.3.0/samples/cpp
g++ `pkg-config opencv --cflags --libs` facedetect.cpp -o facedetect
./facedetect  --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ../data/lena.jpg

で、Lenaさん(^^)/
Peace!!


2017年8月5日土曜日

An installation of OpenCV 3.3.0 on raspberry Pi 2

当初の投稿は、Raspberry Pi 3としていましたが、
Raspberry Pi 2の間違いです。<(_ _)>

8月3日に、OpenCV3.3.0がリリースされたので、、、
Raspberry Pi 3で、opencv 3.3 を build & install した忘備録

大まかな手順は、

1.依存するソフトのインストール

2.ソースをopencv.orgからダウンロードし、解凍、および作業dir作成

3.cmake

4.make

5.opencv インストール

6.確認

7.ZEROの場合



では、記録の始まり

1.依存するソフトのインストール

http://plantuml.com/download から、plantumljarをダウンロードする
sudo cp plantuml.jar /usr/share/java

sudo /sbin/ldconfig

sudo apt-get install -y build-essential git cmake pkg-config cmake-qt-gui mesa-utils  libgl1-mesa-dri libjpeg-dev libtiff5-dev libpng12-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libgtk2.0-dev libprotobuf-dev protobuf-compiler libvtk5-dev libvtk5-qt4-dev python-vtk tcl-vtk  libatlas-base-dev gfortran libeigen3-dev libv4l-dev libqt4-core libqtgui4 libqt4-test libqt4-opengl-dev sphinx-common doxygen

python3の開発環境があれば、下はいらない。30分位かかるかも
sudo apt-get install python3-dev python3-pip

2.ソースをopencv.orgからダウンロードし、解凍、および作業dir作成

ダウンロード後に、~/で解凍すると次のディレクトリーができるので、その中に入って、作業ディレクトリーを作成

wget https://github.com/opencv/opencv/archive/3.3.0.zip
wget https://github.com/opencv/opencv_contrib/archive/3.3.0.tar.gz

wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip

unzip 3.3.0.zip
tar xvf  3.3.0.tar.gz

cd opencv-3.3.0

mkdir build

cd build


3.cmake

cmake -D CMAKE_BUILD_TYPE=RELEASE \
     -D CMAKE_INSTALL_PREFIX=/usr/local \
     -D INSTALL_PYTHON_EXAMPLES=ON  \
     -D PLANTUML_JAR=/usr/share/java/plantuml.jar  \
     -D ENABLE_NEON=ON \
     -D WITH_TBB=OFF -D BUILD_TBB=OFF  \
     -D WITH_QT=ON -D WITH_OPENGL=OFF \
     -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.3.0/modules \
     -D BUILD_opencv_freetype=OFF \
     -D BUILD_EXAMPLES=OFF ..

上記のcmakeは、サンプルプログラムのbuildがOFF
もし、buildするならONにする。


4.make

make -j4

5.opencv インストール

sudo make install
sudo ldconfig

6.確認

samples/cppに移動してお決まりのlenaさん

g++ `pkg-config opencv --cflags --libs` facedetect.cpp -o facedetect

./facedetect  --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ../data/lena.jpg

約5時間作業
Peace!!



7.ZERO

CPUが、シングルコアのARM1176JZF-SなのでNEONはOFF。
ただ、上記のcmakeのパラメータで実行しても、エラーがでる。
従って、cmake-guiを立ち上げてエラーを取りながらgenerationする。
その後、makeする。
そして、じーっと待つ。。。。。




2017年7月8日土曜日

windows10でgcc環境構築、そしてeclipseでOpenCV

windows10の環境を作り直したので、再度gcc環境の構築
Cygwinもあるけど、msys2で構築。
以前は、MinGWのインストールをすすめていたけど、
今はmsys2のインストール。
あと、msys2 をインストールするけど、Cドライブはmsys64

ちなみに、OpenCV3.2.0はbuild済みです。
E:\opencv320\buildに入っています。

1. msys2インストール

msys2のインストーラーをダウンロードして、インストール
僕は、64bit版

http://www.msys2.org/

インストール後に、msys2のターミナルを開いて、
以下の操作をする。
vtkを入れているのは、OepnCVの画面表示系が依存しているため

pacman -Syu
pacman -S base-devel
pacman -S msys2-devel mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-vtk

2. おまじない

C:\msys64\mingw64\bin\libwebp-7.lib  をコピー&名称変更して
C:\msys64\mingw64\bin\libwebp-6.lib  を新たに作る

これは、OpenCVのモジュールが、libwebp-6.libを探すための処置

3.Window環境設定

PATHを設定する

C:\msys64\mingw64\bin
E:\opencv320\build\x86\mingw\bin

下のOpenCVの設定は、各環境毎に異なる

4.OpenCVのincludeとlibをコピーする

これは、
・E:\opencv\build\include/*
→C:\msys64\mingw64\include

・E:\opencv\build\x86\mingw\lib/*
→C:\msys64\mingw64\lib

5.実行

(1) eclipseでサンプルプログラムを作ってbuild&実行



(2) 上記のプログラムをコマンドプロンプトで実行



ほーら同じ \(^o^)/

Peace!!


2017年7月4日火曜日

windows.oldを削除する

昨日、Windows updateをしたら、windows.oldというフォルダーができて、
なんと、17GB占有している。

windows10のディスククリーンアップで削除できなったかったので、
コマンドプロンプトを管理者モードで開き、

takeown /f C:Windows.old /r
icacls C:Windows.old /grant Users:F /t

で、エクスプローラーから、削除。

この方法を見つけて、処理を完了するまで、なんと3時間かかった。
並列して仕事してたけど、、、

無駄な労力。。。

Peace!!

2017年6月22日木曜日

How to update Google spreadsheet from Raspberry Pi using Google API.

僕は、ロボットに関するデータは www.workrobot.co.jpのロボットクラウドを使って処理をしている。

ただ、デバック時のちょっとしたデータ処理は、Raspberry PiからGoogle spreadsheetに登録して、グラフ化などしたくなる。

で、そのメモ(^^)


1.処理内容

Raspberry Piのpythonスクリプトから、共有設定されたspreadsheetにデータを登録・更新・削除などする。今回は、追加(append)処理サンプル。


2. 作業の順番

2.1 Google 側の設定と準備

(1) Google API 有効化

・Google API Consoleでプロジェクト(test)を作成し、Sheets APIを有効化
   ここ!!→ click

   以下、Google API Consoleは、「コンソール」表記
test プロジェクトで有効化します。

(2) 認証情報設定

・有効化した後、認証情報追加画面だけどcancelしてコンソールに戻る
・コンソールで認証情報選択する
・「サービスアカウントキー」を選択する
   Raspberry Piから、処理をしたいのでこの項目を設定

・サービスアカウント名を入力し、役割をprojectの編集者で設定する
   サービスアカウントIDは、次の(3)で入力するので記録する
・作成ボタンを押下すると、Raspberry Pi側に置く認証ファイルのダウンロード処理になる。保存してRaspberry Piに転送する

(3) 処理対象となるspreadsheetを準備・設定
・spreadsheetを作成する。
   本説明では
   spreadsheet名「test01」
   sheet名「data01」

   sheetID「49ga0igsia79w5u4igtaoeay75489hfadha」
   sheetIDは、シートのURLの...../d/から/edit/....の間の文字列
・共有設定をする
   (2)処理のサービスアカウントをユーザー欄に美優力する
   役割は、「project > 編集者」で設定する

以上で、Google APIの設定、情報交換をする際の認証情報設定取得、スプレッドシートの設定が終了。

2.2 Raspberry Piの準備

Raspberry Pi側の準備。
(1) pythonのクライアントモジュールインストール
   python2.7環境

   $ sudo pip install --upgrade google-api-python-client

おしまい(^^)


2.3 スクリプトを動かす

その前に、、、
Google Sheets APIの説明は→click
サンプルプログラムの使い方の詳しい説明→click

スプレッドシートのA1:C1に、データを登録するスクリプトはドーン!

import httplib2
import numpy as np

from apiclient import discovery
from oauth2client.service_account import ServiceAccountCredentials

SCOPES = 'https://www.googleapis.com/auth/spreadsheets'
APPEND_RANGE = 'data01!A1:C1'   ←シート名とセル位置

class GoogleSS(object):
  def __init__(self, sheet_id):
    self.sheetId = sheet_id

    credentials = ServiceAccountCredentials.from_json_keyfile_name('./test-xxjjdfksgj.json', scopes=SCOPES) ←認証用のjsonファイル指定
    http_auth = credentials.authorize(httplib2.Http())
    discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?''version=v4')
    self.service = discovery.build('sheets', 'v4', http=http_auth, discoveryServiceUrl=discoveryUrl)

  def append(self, values):  ←今回は追加モード
    assert np.array(values).shape==(3,) , "The shape of value %s must be 3" % (np.array(values).shape)

    value_range_body = {'values':[values]}
    result = self.service.spreadsheets().values().append(spreadsheetId=self.sheetId, range=APPEND_RANGE, valueInputOption='USER_ENTERED', body=value_range_body).execute()

if __name__ == '__main__':
  sheet = GoogleSS('49ga0igsia79w5u4igtaoeay75489hfadha') ←sheetID
  sheet.append(["Kayak", "Love", 3]) ←追加するデータ

結果は、、、

ちなみに、3つ書くと、、、(他にもやり方ありますが、、、)
  sheet.append(["Kayak", "Love", 1])
  sheet.append(["PiroettoSS", "perception", 1])
  sheet.append(["Antix", "Jackson", 1])


Peace!!