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