2017-06

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Raspberry PI ssh 導入

概要:

Raspberry PIにSSHを導入しました。
ブログに書くほどのことではないですが…。


作業環境:

・ インターネット環境
・ USBキーボード
・ HDMI接続できるディスプレイ


導入:

コンソールに以下のように入力し、SSHをインストールします。

sudo apt-get update
sudo apt-get install ssh


次に鍵を作成します。

sudo bash
ssh-keygen
(エンター三回ぐらい)


RSAパスワードのファイルがあるかを確認します。

ls /root/.ssh


SSHのサービスを開始します

service ssh start


最後にSSHが自動に輝度するように設定します

sudo update-rc.d ssh defaults


これで導入は完了です。
PC側から sshクライアントを使って接続できます。

まとめ:

これでプログラムをする時にいちいちディスプレイを切り替える必要がなくなります。
次はマイコンと接続するためのGPIOかシリアルポートの導入と実験あたりをやってみます。

*SDカードのセットアップの記事はこちら
Raspberry Pi SDカードへのイメージ書き込み


参考サイト:

Raspberry Pi - Enabling SSH on Debian #6



スポンサーサイト

Raspberry PI 購入

概要:
ついにラズベリーパイが届きました。
発送から開封までの流れの解説です。
技術的な挑戦は後ほど。


発注から発送:

最初に、発注をしたのが3月4日です。
その後、5月17日に以下のようなメールが届きました。

raspberry mail

こちらのメールに記載されている認証コードを入力することで、発注をすることができます。
今回発注したものは以下のとおりです。
・HDMI cable for Raspberry Pi      US$5.49
・4GB SD Card with Raspberry Pi OS   US$16.19
・Raspberry Pi Type B Single Board Computer  US$35.00
・送料 US$8.02

上で発注したパッケージの他に、
5V電源(700mA以上の容量)と電源供給用のマイクロUSBケーブルが必要となります。

配送はDHLによって行われます。
5月31日に発送され、3日程度で到着しました。

困ったとことはDHLの配送サービスは受け取り時間が限られており、
営業時間外の再配達では追加料金が発生するみたいです。
結果、土日の朝に受け取ることに…。


開封:

このようなパッケージになっています。
raspberry package


実物は一度展示で見たことが見たことがあるのですが、
実際にじっくり見てみるとやはり小さいというのが印象です。
raspberry board

ディスプレイ、電源等を接続して起動させた様子が以下のようになります。
raspberry screen

無事に起動できているみたいです。


展望:

これから何を作るか悩みます。
とりあえずですが、マイコンとシリアル通信を一度やっでみようかなと考えています。

XBee WiFi経由でGoogle天気APIを使ってみる

概要:


XBeeWiFi経由でGoogle天気APIにアクセスして天気情報を取得.
ついでにArduino側で取得したXMLを解析と天気の表示までやってみました.

実行環境:


・X-CTU
・XBee WiFi
・ネット環境
Arduiono Harpy

天気データ取得:


以前の記事(XBee WiFiを使ってWebサーバーからファイルを取得する
を参考にして接続の環境を整えます.
接続するサーバーのIPは次のようになっています.
Destination IP : 173.194.38.73


次にこのサーバーに送るメッセージを決定します.
以下のようなものになります.
メッセージの末尾についているのが位置情報です.
これを変えることで,天気情報を取得する場所を変更することができます.

GET http://www.google.com/ig/api?weather=toyohashi,aichi HTTP/1.1
(改行)


以上のメッセージの送信に成功すると,下の画像のようなレスポンスとXMLが返ってきます.

xbee-weather-xctu

後は取得したXMLを分析し,必要な情報を取り出すだけになります.

天気データ:


XMLを分析します.
取得したXMLには今日を含めた4日間の天気予報が書かれています.
今回,天気予報?に現在の天気情報を使用します.
使用するデータは,取得したXMLの以下のものとなります.

google_weather_xml
*テキストを貼り付けると上手く表示してくれないので,画像になっています

この部分の中のタグの中を取得出来れば,今の天気を知ることができます.


Arduinoを使ってXMLを解析:


ここまで分かれば,あとはArduinoにXBeeWiFiをつなげてアクセスするだけです.
使用したArduinoはAtmega328と同等品になります.

Arduionoで使えるXML解析ライブラリを探したのですが,
なかなか容量が小さい物が見つからなかったため,
最小限の機能を搭載したものを作成しました.

作成したプログラムはタグの開始【<】 と 終端【>】を見つけるだけの簡単なものです.
(これを解析プログラムと呼んでいいのか?)
ソースは下に公開しておきます.
完成度が低いので,あまり参考にならないと思いますが....
MicroXMLParser?


動作実験:


このXML解析プログラムを実際に動かしたものがこちらになります.



解析して得た天気情報を基にフルカラーLEDの色を決定し,PWM(アナログ)値を設定.
同時にソフトウェアシリアルを用いて,PC側に解析結果を送信しています.


まとめ:


今回はシリアル周りの通信でだいぶ苦労しました.
XBeeWiFiとの通信はソフトウェアシリアルで行うことを考えていたのですが,
データの取りこぼしが多かったため,使用を断念しました.

全てのソースを公開したいのですが,
今回はまだ人に見せることができるレベルに達していないため,見送ることに決めました.

次回からは,天気予報ガジェットをMakeに出展できるレベルまで作りこんでいく予定です.


参考サイト:


google api からデータ取得
Arduiono Harpy
ArduinoでXMLを解析する

XBee Wi-Fi 接続の設定までやってみた

概要:


ついにXBeeが発売しました!
これで様々な回路を簡単にインターネットにつなげることができるようになります。
今回は設定とテストをやってみました。

xbee wifi

販売サイトはいつものスイッチサイエンスさんです。
XBee WiFi / ワイヤアンテナ型


環境構築:


XBeeの設定用にX-CTUというツールを使います。
以下のサイトからダウンロードしインストールを行います。
Windows7とVistaの場合は、XCTU 32bit ver. 5.2.7 を使います。
XPの場合は、XCTU Ver 5.1.0.0を使います。

X-CTU

次に [PC Settings] より、XBee Wi-Fiが接続されたポートを選択し接続のテストを行います。
私の場合、このままではXBee Wi-Fiを認識しなかったため、
[Version] → [Web]よりソフトウェアのアップデートを行いました。

xctu-update


設定:


一般的な設定
一般的な設定はX-CTUの[Modem Configuration]タブから行います。

XBee Wifiには接続のモードが3つあります。
・IBSS JOINER(adhoc)
・IBSS CREATOR (adhoc)
・INFRASTRUCTURE
今回、XBee → ルーター というつなぎ方でテストを行うため、
[Infrastructure] モードを用いて接続を行います。

Infrastructureモードを用いて通信する場合、主に以下のような設定項目があります。
・無線LANルーターのSSID [Network] → [SSID]
・ネットワークの種類 [Network] → [NetworkType]
・IPプロトコル(TCP or UDP) [Network] → [IP Protocol]
・動的アドレスか静的アドレスか (DHCP or static)[Network] → [IP Addressing Mode]
・暗号化方式 [Security] → [Encryption Enable]
・パスワード [Security] → [Passphrase]
これらを各自の無線環境にあったものに設定することで接続を行います。

はまったこと:
こちらの環境だけかもしれませんが、
X-CTUの設定で大文字しか入力できない状態になっています。
私の無線環境では、SSIDとパスワード共に大文字と小文字を使用しているため、
Terminalで直接ATコマンドを入力することで設定を行いました。
以下のような入力を行います。


* 青色はこちらの入力
* 赤色はXBeeからの応答
+++OK
atid ap1 (接続する無線LANのSSIDを指定)
OK
atee 1 (暗号化方式をWPA PSKへ変更)
OK
atpk passoword (指定した無線LANへ接続するためのパスワード)
OK
atip 1 (IPプロトコルをTCPへ変更)
OK
atai (現在の接続状態を表示)
0 (0:接続成功 / 0x23:SSID未設定 / 0xFF:検索中)
atmy (振り分けられたIPアドレスを表示)
192.168.1.2
atwr (設定をXBeeに書き込み)
ok


このように設定を行います。
正しく設定できていれば、ataiコマンドで0が返ってくるはずです。

テスト:


次に動作テストを行います。
XBee-WiFiでは、
ポート9750へ送信された文字列がシリアルポートから出力されるようになっています(初期値)。
そのため、そのポートに文字列を投げる簡単なスクリプトをPythonで作成しました。
ソースは以下のようなものになります。


import socket
host = "192.168.1.2" #接続するIPアドレス
port = 9750 #接続するポート
so = socket.socket()
so.connect((host,port))
so.send("hello xbee Wi-Fi")


これを実行し、
X-CTUのターミナルを見てみると以下のような表示が出ているはずです。

hello xbee

これで接続テストは完了です。


まとめ:


簡単にマイコンをネットに繋げる時代になってしまいました。
マイコンを無線LAN接続することに憧れていた時代を懐かしく思います。
いい時代になったもですね。
次は台車かRoombaを動かしてみようかと考えています。


参考サイト:


XBeeの開発環境をPCにインストール
Arduino Freaks XBee Wi-Fi
XBee Wi-Fi 簡易仕様書(英語)
XBee Wi-Fi 詳細仕様書(英語)

Google翻訳の音声合成を使ってTwitterタイムラインを読み上げる

Google翻訳の読み上げ機能を使って、Twitterのタイムライン読み上げをやってみた。
いろいろやってみたけど、ユーザーエージェントをいじらないといかんらしい。
さて、これを使ってなにをやろうか?

使ったもの:
・pygame mp3再生
・tweepy タイムライン取得


以下ソースコード


# -*- coding: utf-8; -*-

import urllib2
import urllib
import time
import pygame.mixer as mixer
import tweepy
import pygame
import os

def read(keyword, id):

# google Translate のための諸設定
# これをやらないと翻訳が英語になったり、出来なかったりする
lang = "ja"
encoding = "utf_8"
query = {'q': keyword.encode(encoding),
'hl': lang,
'lr': 'lang_' + lang,
'ie': encoding,
'oe': encoding,
}
urlprefix = "http://translate.google.com/translate_tts?"
url = urlprefix + urllib.urlencode(query)
user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-jp) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4'
headers={'User-Agent':user_agent,}

# リクエスト、mp3のダウンロード
try:
request=urllib2.Request(url,None,headers)
response = urllib2.urlopen(request)
data = response.read()
except Exception, e:
print "request error strlen" + str(len(keyword))
return

# 音声データ一時保存
try:
file_name = "./" + str(id) + ".mp3"
file = open(file_name,"wb")
file.write(data)
file.close()
except Exception, e:
print "cant open files"
return

# mp3 再生
try:
mixer.init()
mixer.music.set_volume(0.3)
mixer.music.load(file_name)
mixer.music.play()
while mixer.music.get_busy():
pass
except Exception, e:
print "cant play mp3"
return


def main():
  # アクセストークン等は各自取得
consumer_key = "■■■■■■■"
consumer_secret = "■■■■■■■"
access_key = "■■■■■■■"
access_secret = "■■■■■■■"
auth = tweepy.OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
latest_id = api.home_timeline()[0].id
print "start twitter reader id :" + str(latest_id)
read("start twitter", latest_id)

while True:
t=time.time()
timeline = api.home_timeline()
timeline.reverse()
for status in timeline:
if latest_id < status.id:
print str(status.id) + ": " + status.user.screen_name + "::" + status.text
read(status.text, status.id)
latest_id = status.id
interval = 30-time.time()-t
if interval > 0:
time.sleep(interval)

main()


NEW ENTRY «  | BLOG TOP |  » OLD ENTRY

カレンダー

05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

FC2カウンター

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (7)
日記 (7)
wiiremote (1)
google (1)
回路 (3)
psp (1)
programing (15)
linux (0)
OpenWRT (3)
kinect (1)
Raspberry Pi (8)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

google adsense

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。