jendo1969 のすべての投稿

Python CGI

IoTのサーバ側の準備をしようと思います。
このブログは、レンタルサーバを利用しています。格安のロリポップのロリポプランを使用しています。
http://lolipop.jp/
CGIが使えるのでサーバアプリを構築します。
言語としてはPerl 、Ruby、Pythonが利用できます。本当は、node.jsが使いたかったのですが対応していないので、一番使用者が多そうなPythonを利用します。Pythonは、2.5と2.7が用意されていますが、2.7でCGIを作成します。

test.pyの例
http://spineedge.com/CGI/test.py
###############################
#!/usr/bin/python2.7
# coding: UTF-8

print “Content-Type: text/plain”
print
print “Hello World! Python CGI!”
################################

1行目がpythonのインストールパスです。
#!/usr/bin/python2.7
2行目がファイルの文字コードの指定です。ここではutf-8 を指定しています。ファイルに保存するときは UTF-8 で保存してください。
print “Content-TypContent-Typeは送信されたデータの内容がどのようなものかを示します。
出力する内容はテキスト(text/plain)であることを示しています。
HTML文書の時は text/html を指定します。
print7行目はヘッダと本体(ブラウザに表示される部分)を分ける空行です。
print “Hello World!Python CGI!”
8行目はブラウザに出力する文字ダブルクオーテーション3つ(“””)で囲むと、複数行にわたる文字列を記述できます。
Pythonでは、ソースコードのうち#から文末がコメントと見なされます。 また、ソースコードの先頭にある「#!」で始まる文はLinux等で動かす時のPythonのパス、「#coding:」で始まる文はソースコードに用いる文字コードの指定に使います。

HTTPでのデータのやり取りを行ってみます。
GET/POSTの例
###############################
#!/usr/bin/python2.7
# coding: UTF-8
# ゲット、ポストテスト
import cgi
import os
print “Content-Type: text/html¥n”
print “<html>”
print “<head><title>SETTING TEST</title> </head>”
print “<body>”
html=”””<h1>Setting Form</h1>
<hr>
<form name=”Form” method=”GET” action=”./settest.py”>
name: <input type=”text” size=”30″ name=”name”>
mail: <input type=”text” size=”30″ name=”e-mail”>
<input type=”submit” value=”GET submit” name=”button”></form>
<form name=”Form” method=”POST” action=”./settest.py”>
name: <input type=”text” size=”30″ name=”name”>
e-mail: <input type=”text” size=”30″ name=”e-mail”>
<input type=”submit” value=”POST submit” name=”button”></form>
“””
print html
form = cgi.FieldStorage()
form_check = 0
if form.has_key(“name”) and form.has_key(“e-mail”) :
form_check = 1
if form_check == 0 :
print “<h2></h2>”
else :
if os.environ[‘REQUEST_METHOD’] == “GET” :
print “<h2>GET METHOD</h2>”
elif os.environ[‘REQUEST_METHOD’] == “POST” :
print “<h2>POST METHOD</h2>”

print “<b>name: </b>”, form[“name”].value
print “<b>e-mail: </b>”, form[“e-mail”].value
print “</body></html>”
################################

GETメソッドでもPOSTメソッドでもほとんどコードに違いはありません。
サンプルを以下URLに入れました。
http://spineedge.com/CGI/settest.py
CGI

MySQL on Beagleboard-xM

Jpeg
まずMySQL のインストールします。
sudo apt-get install mysql-server
これだけです。

MySQL の動作確認します。
sudo mysql
・・・・・管理プロンプトに入ります。
mysql> show databases;
mysql> quit
Jpeg

MySQL の初期設定
root ユーザーのパスワードが設定されていないので新たに設定します。
mysqladmin -u root password **********
パスワード設定後は、-pオプションをつけてログインすることになります。
~$ sudo mysql -u root -p

起動設定を行っておきます。
sudo update-rc.d mysql defaults

次にキャラクターセットの変更をします。
MySQL側のキャラクタセットをutf8に変更するため、/etc/mysql/my.cnf を編集します。
my.cnf において[mysqld]、[mysql]の各セクション中に文字セットとしてutf8を指定する以下の記述を追加します。

/etc/mysql/my.cnf
[mysqld]
character-set-server = utf8
skip-character-set-client-handshake
[mysql]
default-character-set = utf8

~$ sudo /etc/init.d/mysql restart
MySQLの再起動をし、設定の確認を行います。
~$ sudo mysql -u root -p
mysql> show variables like ‘char%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)

データベースの作成を行います。
CREATE DATABASE testdata1 DEFAULT CHARACTER SET utf8;
testdata1と言うデータベースを作成します。

mysql> USE testdata1;
使用するデータベースを指定します。

mysql> CREATE TABLE table1 ( id int, name varchar(100) );
table1というテーブルを作成します。項目(フィールド)ごとに整数値か文字列かという指定をする必要があり、この場合は”idという整数値”と”nameという文字列”の2つの値から成るテーブルを作成しています。

mysql> SHOW TABLES;
テーブルのリストを表示します。新たに、table1というテーブルが加わっているはずです。

USE testdata1;
の実行前なら、SHOW TABLES FROM testdata1;という形でデータベース名を指定する必要があります。

レコードの追加をします。
mysql> insert into table1 (id, name) values(1,’John’);
table1テーブルへデータ(名前)を登録
レコードの追加の確認
mysql> select * from table1;
テーブルの一覧が表示されます。
Screenshot_from_2015-06-20 21:17:56

ボードの下にSSDを配置しています。
Jpeg
OSがDebian、NAS機能とRDB機能があるサーバとなっています。

XBEE Wifi HTTP TEST

Jpeg
IoTの環境構築一環で組込機器のネットワーク接続にXBee Wifiを使用しようと考えています。
まず、XBeeの設定をします。X-CTUを起動してXBeeモジュールと接続します。
WifiのAPの設定は環境に合わせてください。
その他は、以下のようにします。
・Network Type → TCP
・Destination Port → 0x50 (80番ポート:HTTP)
・Source Port → 0x50(80番ポート:HTTP)
・Destination IP Address → 接続先のIP(google.co.jpの場合:74.125.203.94)

X-CTUのターミナル画面から次のようにgoogleにGETリクエストを投げます。
GET /search HTTP/1.1
Host: www.google.co.jp
Connection: close
(1行改行)

googleからの応答が返って来ました。
XCTU
XBee WifiでHTTPリクエストできる準備ができました。

Cloud9 IDE

IoTのサーバ側も勉強しようと思い、環境をNode.jsで考えていたのでCloud9に登録してみました。
https://c9.io/
上のURLにアクセスします。[Sign up]ボタンよりアカウントを登録します。無料のスタンダード版とプレミアム版がありますが、まずは、無料版で使ってみます。登録が済みサインインするとダッシュボード画面が表示されます。まず、左ペインの[Create a New Workspace]ボタンを押して,表示されたダイアログに任意の名前(Name your workspace)を入力します。Workspace Privacyには、[Private to the people I invite]を選んで,Hostingには[Hosted]を選択して [CREATE] ボタンを押します。
左ペインの作成したワークスペースが表示されます。「processing」状態となります。しばらく待ちます。「processing」が「1 workspace member」になったら完了です。
「START EDITING」ボタンを押してください。IDE画面の画面が別に起動しました。
Cloud9
Workspaceの下にTeminal画面が表示されていますので使ってみます。 node.jsのバージョンを調べたところv0.10.35でした。 npmのバージョンは、1.4.28でした。
すでにserver.jpというサンプルが入っています。 実行してみました。チャットアプリです。以下が実行場所となります。 https://ワークスペース-ユーザID.c9.io/ 2個ブラウザで開いて動きを見たところ無事チャットが動きました。
Chatapp

Blackfin DSP

Jpeg
http://www.kumikomi.net/interface/contents/blackfin_dsp.php
Analog DevicesのDSPを搭載したDSP基板と共に
「音遊び!Blackfin DSP基板でディジタル信号処理初体験」本も一緒に購入しました。さらに楽器用エフェクタ向きの開発プラットホーム「MADSP-BF592-BASE」ベース基板も同時購入しました
この商品を見たとき久しぶりにギターを弾いてみようと思いました。基板は用意できましたが、まずは、ギターの弦を張り替えなければなりません。ぼちぼち始めていきます。

Samba on BeagleBoad-xM

先日、Beagleboard-xMに入れたDebianに余っているSATA2のSSDを繋げてNAS化しました。
■ntfsでフォーマットしてあるのでntfs-3gをインストールします。
$ sudo apt-get install ntfs-3g
■続いてSambaをインストールします。
$ sudo apt-get install samba
■マウントフォルダを作成します。
$ mkdir /mnt/usb/ntfs
フォルダのアクセス権をフルアクセスにします。
$ chmod -R 777 /mnt/usb/ntfs
■デバイスをマウントします。
$ sudo mount /dev/sda1 /mnt/usb/ntfs
ドライブのアクセス権もフルアクセスにします。
$ sudo chmod -R 777 /dev/sda1
■fstabを変更します。
自動的にマウントするために/etc/fstab に追記します。
/dev/sdb1 /mnt/usb/ntfs ntfs-3g defaults,rw,umask=000 0 0
■sambaの設定ファイルを書き換えます。
/etc/samba/smb.confを編集します。
まずは、設定のバックアップをしておきます。
$ sudo cp -p /etc/samba/smb.conf /etc/samba/smb.conf.bk
vimで開きます。
$ sudo vim /etc/samba/smb.conf
以下/etc/samba/smb.confの編集内容です。
[global]
client code page = 932
coding system = cap
dos charset = CP932
unix charset = EUC-JP
display charset = EUC-JP

[usb]
comment = USB HDD
path = /mnt/usb/ntfs
public = yes
guest ok = yes
browseable = yes
read only = no
writable = yes
force user = debian
mangled names = yes
mangle case = no
default case = lower
preserve case = yes
short preserve case = yes

■Sambaの再起動を行います。
$ sudo service smbd restart

■WindowsからLinuxのファイルシステムにアクセスしてみます。
Windows のexploreでパスを”¥¥hostname¥username”と直打すると、USB接続したSSD HDDににアクセスアクセスで来ました。ファイルのコピー、削除、編集も出来ましたが、日本語ファイル名には対応で来ませんでした。日本語ファイル名は、 この目的で使用しないのでこのままとします。
当然LINUXからもアクセス出来ます。
Screenshot_from_2015-06-02 00:16:20

Debian on BeagleBoad-xM

秋葉買出しでボードが増えたので整理しています。最近あまり使っていないBeagleboard-xMをサーバとて使用できないか思案中。とりあえずDebianを入れてみました。
バイナリイメージをダウンロードして使用します。以下サイトからダウンロードします。
BeagleBoardDebian
http://elinux.org/BeagleBoardDebian
Debian (jessie) Image Updated:2015-05-08
Beagle xM: v4.0.2-armv7-x2 kernel
イメージを取得します。
$ wget https://rcn-ee.com/rootfs/2015-05-08/microsd/bbxm-debian-8.0-console-armhf-2015-05-08-2gb.img.xz

圧縮ファイルを解凍します。
$ unxz bbxm-debian-8.0-console-armhf-2015-05-08-2gb.img.xz

SDカードに焼きます。
$ sudo dd if=./bbxm-debian-8.0-console-armhf-2015-05-08-2gb.img of=/dev/sdb

SDカードをBeagleboard-xMに挿して起動します。
ユーザ名: debian
初期パスワード: temppwd

最初の起動後SDカードのパーティションをリサイズします。
$ cd /opt/scripts/tools
$ git pull
$ ./grow_partition.sh
$ sudo reboot

Screenshot_from_2015-05-22 22:41:36

再起動後にシステムを更新します。
$ sudo apt-get update
$ sudo apt-get upgrade

今回はCUIで使用する予定です。Ethernetは、eth0でDHCPでそのまま認識します。
設定ファイルのの編集用にvimを入れておきます。
$ sudo apt-get install vim

タイムゾーンの変更をTokyoにしておきます。
$ dpkg-reconfigure tzdata
これで設定画面が立ち上がります。

最後にパスワードを変更してとりあえず終了します。
$ sudo passwd

LPC810 ACGUY LED MONO-EYE

ガンプラにLEDをつけてみました。小さい8PIN DIPのLPC810を使用しました。駆動は、CR2032のボタン電池で3Vで駆動します。
Jpeg

モノアイだけでなく頭部バルカンにもLEDを内蔵しましたが穴が小さく点滅がほとんどわかりません。
モノアイは、単純なON/OFFではなくPWMでゆっくり明るさを変化させて点滅させました。LPC810のタイマは、SCT(State Configurable Timer)というちょっと複雑な動作が組めるタイマが入っています。Red Stateという特別なエディタで機能を設定します。
sct_LPC810

基板を内蔵するほど小さくできなかったので抱えた状態です。
Jpeg

PSOC 4200 Prototyping Kit

600円で販売されているので思わず衝動買いしてしまいました。
プログラム書込み用のBootLoaderがあらかじめ書き込まれています。USBで書き込むための基板も付属しています。これだけでプログラミングが始められます。
Bootloadable_psoc4
プログラムは、Bootableコンポーネントを使う、特別な作りにする必要があります。Buildした後は、書き込みツールをIDEから起動することができます。とりあえずPWMでのLED点滅サンプルを動かしてみました。PSOCは、ハード設定だけでペリフェラルが使えるのでソフトは、ほぼ書かずに機能が実現できます。いろいろな部品が用意されているので応用がいろいろ考えられます。

Jpeg
しかし実はPSoC4 PIONEER KITを持っているのでこれはいらなかったのですが・・・安かったので。
のちのち使い道を考えたいと思います。
http://akizukidenshi.com/catalog/g/gM-08446/

LPC810 ISP Writer

LPC810は8PINで小さいので実機にISP回路を組み込むと場所をとって無駄です。そこで専用の書込み器を作りました。
Jpeg

USBシリアル変換は、千石電商で購入しました。電源が5Vなので三端子レギュレータで3.3Vにしています。
http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4HJ7
Jpeg
これでFlashMagicで書込みが容易になりました。
http://www.flashmagictool.com/

© 2014 Spineedge Corporation.