2017年12月14日木曜日

Setup Pimoroni HyperPixcel on Raspberry Pi Stretch to use TensorFlow

PimoroniのHyperPixcel購入した。
セットアップ自体は、このURLの通りやればすんなり、こんなにきれいな画面(写真2枚目)が手に入る


Raspberry Pi3に、Movidiusをくっつけて、Webcamで撮った画像をTensorFlowで画像認識した結果を、HyperPixcelで見るという単純な事をしている訳で、、、
何気に良いんですね。
キーボードも、もっと早く買えば良かったのに、、、と
優れモノ、、、

で、このセットで何をするんだって、、、
内緒(笑)

Peace!!




An installation of lighttpd(1.4.48) on Raspberry Pi Stretch

僕は、相も変わらず、lighttpdを使っているわけで、、、
apt-getでインストールすると 1.4.45
でも、最新は、1.4.48

今回は、クリーンインストールするので、、、

wget https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.48.tar

tar xvf lighttpd-1.4.48.tar
cd lighttpd-1.4.48.tar
./configure
make -j4
sudo make install

で、、、?

/etc/lighttpdが無い、、、躊躇せず

sudo make clean
sudo apt-get install lighttpd
sudo make install
lighttpd -v
lighttpd/1.4.48 - a light and fast webserver

よしよし、、、

cd /etc/lighttpd/conf-enabled
sudo ln -s ../conf-available/10-cgi.conf 10-cgi.conf
sudo cp ../conf-available/10-cgi.conf ../conf-available/10-cgi.conf.org

sudo vi ../conf-available/10-cgi.conf
cat ../conf-available/10-cgi.conf
# /usr/share/doc/lighttpd/cgi.txt

server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( "" => "" )
}
$HTTP["url"] =~ "^/api/" {
        cgi.assign = ( "" => "" )
}
## Warning this represents a security risk, as it allow to execute any file
## with a .pl/.py even outside of /usr/lib/cgi-bin.
#
#cgi.assign      = (
#       ".pl"  => "/usr/bin/perl",
#       ".py"  => "/usr/bin/python",
#)

sudo systemctl restart lighttpd
cd /var/www/html
sudo mkdir api
cd api

sudo vi q1.c
cat q1.c
#include <stdio.h>
#include <stdlib.h>

void main(void);

void main(void)
{
  char *s_dt;
  long m,n;

  printf(" Content-Type:text/html;charset=utf-8\n\n");
  printf("<html><title>Test C-Language CGI</title><body>\n");
  printf("<H3>Result</H3>\n");
  s_dt = getenv("QUERY_STRING");
  printf("<P>%s\n", s_dt);

  if(s_dt== NULL)
    printf("<P>no argument.");
  else if(sscanf(s_dt,"m=%ld&n=%ld",&m,&n)!=2)
    printf("<P>not numeric.");
  else
    printf("<P>result %ld x %ld = %ld.",m,n,m*n);

  printf("</body></html>\n");

  return;
}

sudo gcc q1.c -o q1

で、、、他のマシンのChromeで
http://192.168.11.166/api/q1?m=10&n=20
とすると、、、画面に、以下のように表示されて、めでたしめでたし(^^)

Result

m=10&n=20
result 10 x 20 = 200.

という事で、、、呪文を唱えた感じだけど、、、

Peace!!

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!!