技術 のすべての投稿

Electric Imp でI2C

Electric Imp でI2Cを動かす方法

下記は参考に書いたサンプルソースで実際に動く保証をするものではありません
——————————————————————
[Device]
——————————————————————

//6軸加速度センサMPU-6050の値を想定しています。
i2c <- hardware.i2cQP;

//最初に、I2Cを使うことを宣言します。
//i2cQPは、使用するI2Cのポート番号です。
//imp004m impExplorer Kitで使用できるI2Cは i2cQPの
//みなので問題ありませんが、
//モジュールや基板によってはポート番号が変わる場合
//がありますのでご注意が必要で

i2c.configure(CLOCK_SPEED_400_KHZ);
//I2Cのクロックを設定します。I2Cのクロックはセンサーの
//仕様に合わせて設定しますが、基本は400KHzで動作します。

local address = (0x68<<1);
//I2Cでアクセスするセンサーのアドレスを指定します。
//今回使用するセンサーはMPU-6050です。MPU-6050のアドレス
//は b1101000 であり、
//16進数で記述すると0x68になります。 ここではI2Cのアドレス
//を8ビットで表記するので、1ビット分左にずらして指定します。
//readとwriteを使ってデータのやりとりを行います。

i2c.write(address,"\x6B\x00");
//MPU-6050のデーターシートより、0x6Bに0x00を書き込むことで
//Resetが解除され使用開始することができます。
//I2Cでのデータのやりとりは文字列で行います。16進数のデータ
//を\x00と表記して記述します。癖がありますが、慣れると書き
//易いです。
//続いて、readですが、

local result = i2c.read(address,"\x3b", 14);
//と記述します。"/x3b"は、読み出したいレジスタのアドレスで、
//その次の14で読み出すデータサイズを指定します。
//これにより、3軸の加速度データとジャイロデータを読み出す
//ことができます。
//その後、センサーより受け取ったデータを Agent Codeに転送します。
agent.send("reading.sent", result);

——————————————————————
[Agent]
——————————————————————

device.on("reading.sent",stream);
//で受け取り、指定したstream関数を読み出します。

function stream(data) {
server.log(data);
}

//これにより、センサーを受け取ったデータを確認することができます。

文・ソース:北神 

AWS lightsailでハマるところ一覧

AWS lightsailの初期設定でハマるところ一覧です。

1.MySQL等のパスワードがわからない。

下記のファイルに書いてあります。
/home/bitnami/bitnami_application_password
MySQLだとユーザーはrootです。

2.phpmyadminが見れない。

http://■.■.■.■/phpmyadmin
下記エラーがでる。
For security reasons, this URL is only accessible using localhost (127.0.0.1) as the hostname.
IPの許可記述が必要です。
/opt/bitnami/apps/phpmyadmin/conf/httpd-app.conf のファイルの
<IfVersion >= 2.3>
Require local
にRequire ip ▲.▲.▲.▲
を追加(▲は自分のIP)

3.MYSQLやHTTPの起動用のスクリプトはどこ?

/opt/bitnami/ctlscript.sh
停止
sudo /opt/bitnami/ctlscript.sh stop
起動
sudo /opt/bitnami/ctlscript.sh start
再起動
sudo /opt/bitnami/ctlscript.sh restart
状態確認
sudo /opt/bitnami/ctlscript.sh status

4.SFTPやSSHでハマるとこ

SSH キーペアはこちらのURL(2018年2月19日現在)
https://lightsail.aws.amazon.com/ls/webapp/account/keys

5.時間設定

cp /etc/localtime /etc/localtime.org
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

 

ImpにArduinoからデータ送りたい。超簡単サンプル。

Arduinoから生き死をアナログデータで送って、imp で受信する方法
ツイッターに送信するサンプル。
impExplorer Kitを使った場合です。

Arduinoのプログラムは送信アナログで3V程度以内の通信にして下さい。
——————————————————————
Device]Device]Device]Device]Device]Device]
——————————————————————


#require "WS2812.class.nut:3.0.0"
// スリ―プタイム
const sleepTime = 60;

//はじから3つ目のポート
pot <- hardware.pinK;

// アナログのポート宣言
pot.configure(ANALOG_IN);

// ledの点滅
led <- null

function flashLed() {
    led.set(0, [0,0,128]).draw();
    // Wait 50 ms
    imp.sleep(0.05);
    led.set(0, [0,0,0]).draw();

}

//サーバ側に送る

function poll() {
    // Read the pin and log its value
    server.log("poll read");
    local pot =pot.read() 
    server.log(pot);
    agent.send("analog_reading.sent",pot);
    // 送ったらLED光る
    flashLed();
    //impのサーバ待ち時間を設定
    imp.onidle(function() {
        server.sleepfor(sleepTime);
    });

}

// Start of program
// Configure SPI bus and powergate pin for RGB LED
local spi = hardware.spiAHSR;
spi.configure(MSB_FIRST, 6000);
led <- WS2812(spi, 1);

poll();

——————————————————————
[Agent][Agent][Agent][Agent][Agent][Agent]
——————————————————————

// ツイッターにクラス
#require "Twitter.class.nut:1.2.1"

// ツイッターの送信
tweeter <- null;
// Define functions

function tweetback(data) {
// ツイッター送った表示
server.log("Tweet tweeted");
}
function motion(data) {
server.log(data);
if(data>100){
local message = format("まだ生きてるぜ[アナログ: %5u]",data);
tweeter.tweet(message, tweetback);
server.log(message);
}
else{
local message = format("死んだぜ[アナログ: %5u]",data);
tweeter.tweet(message, tweetback);
server.log(message);
}

}

// Twitter の own access credentials
// apps.twitter.comでキーをゲットしてね。
tweeter = Twitter("Consumer Key (API Key)***********",
"Consumer Secret (API Secret)***********",
"Access Token***********",
"Access Token Secret***********");

// デバイスから受ける指定
device.on("analog_reading.sent", motion);

第1回高尾山IoT 月刊I/Oとの共同企画

7月某日 月刊I/Oとの共同企画が突然実施された!そう、高尾山IoTです。
月刊I/OのFさんとアバンド代表青木が高尾山に登り、頂上でなんか開発して、下山しながら稼働されるというイベント。

ひとまず登る。

登山中、なぜか、蝶に好かれる。ずーーーーと手に腰に蝶がへばりつく。
チューチュー吸われるw

さくっと山頂と行きたかったが、やはり最後の階段がキツイ。それ以外は楽勝なのでけど。
ひとまず、お決まりの写真

涼しいところを探し、開発開始!灼熱で死ぬ~とか、水曜どうでしょ?的展開を期待したが、心地いい涼しさ。
周囲から変な視線を感じつつ・・・

今回は、ソフトバンク提供の米Electric Impの開発キット!
説明ページコピペw
———————————————————-
「impExplorer Developer Kit」は、「imp004m Breakout Board」の持つ機能に加えて、温度、湿度、気圧、3軸加速度の4つのセンサーを搭載した開発ボードです。本製品は、「imp004m Breakout Board」とは異なり、単3電池3本で稼動し、センサーの設計や組み込み作業を行わずにプログラミングを始めることが可能です。
———————————————————-

さて、さて、まず、あれ、IoTだから、通信から、あれ、WiMAXが入らん!うわーーーーー!
ということで、Fさんのキャリアを借りて、開発・・・・

そして問題発生!
impExplorer Developer Kitのネットワーク設定は、スマフォで設定して、それをimpExplorer Developer Kitにスマフォの画面をかざすと
スマフォの画面点滅により、impExplorer Developer Kitにネットワーク設定ができるという、超親切設計なのですが、
何度やっても、ネットワーク設定ができない。

これでこの企画終わったか?・・・・・・あああ・あああ・・・・
もしっや、明るい?外でやっていて、お日様の光りが明るい?
ということで、手で影を作り、再度挑戦、あ、あ、あ、設定できた。

あとは開発のサンプルを見ながら開発!プラウザー上で開発出来ると結構簡単。

ハマるところサンプルコピペでは動きません
各端末でソースコード内の「hardware.***」を合わせないと動きません。
下記がその一覧に一部です。
https://electricimp.com/docs/api/hardware/spi/
https://electricimp.com/docs/api/hardware/i2c/

温度、湿度、気圧のセンサーで暑いときは「暑い」というメッセージと温度湿度、そして気圧から計算した大まかな高度をツイッターで表示。
https://twitter.com/takaosaniot

impExplorer Developer Kitに電池を入れて、特製wの箱に入れて、IoTデバイス完成!

そして、下山。
谷間等では通信できませんでしたが、温泉までしっかりデータが取れた。


そして、温泉入って、そば食べて終了!

月刊I/Oもあわせて読むとオモロイよ!

lua言語

lua言語って、何?
ということで、弊社でも本格的に、久々に新規言語採用ということで
luaである。採用にあたって、luaについての説明です。

「手続き型言語として、また、プロトタイプベースのオブジェクト指向言語としても利用する事が出来、関数型言語、データ駆動型としての要素も併せ持っている。Lua という名前は、ポルトガル語の月に由来する。・・・Lua は、C言語のホストプログラムに組み込まれることを目的に設計されており、高速な動作と、高い移植性、組み込みの容易さが特徴である。」
とwiki様は書いている。(http://ja.wikipedia.org/wiki/Lua

公式サイトは
http://www.lua.org/

ゲームのプログラムには結構採用されている。

他の言語をやっていれば、結構簡単だが、
しかし、問題は記述方法に問題がある。
コメントと{}である。
例:

--コメント
a = {5, 3, 1, 4, 2}
for i = 2, #a do
    for j = i, 2, -1 do
        if a[j - 1] <= a[j] then break end
        a[j], a[j - 1] = a[j - 1], a[j]
    end
end

コメントが「–」である。
{}がないのである。

ということを不満にもって、改造している人がいる(笑)
「第1回闇鍋プログラミング勉強会 Lua の構文ハック 」


Video streaming by Ustream

ハックすることはさておき、参考リンク
Luaプログラミング入門

EC-CUBE2.11.5 スマートフォン用ユーザー画面遷移図

EC-CUBE の遷移図が2.11シリーズに無い為、弊社で作成したものを公開します。
スマートフォンの検討用に作ったものです。参考にして頂ければ幸いです。
間違い等がありましたらコメント等でご連絡頂ければ幸いです。

EC-CUBE2.11.5 スマートフォン用ユーザー画面遷移図(PDF)
注意:EC-CUBE2.11.5の表示を見て弊社スタッフ判断で遷移図を作成したものですが、
この内容に関して、弊社で一切保証するものではありません。EC-CUBEは株式会社ロックオンの商標です
EC-CUBE2.11.5 スマートフォン用ユーザー画面遷移図  2012年6月27日作成
http://www.abund.jp/source/ec-cube2_11_5_smartphone_20120627.pdf

新しいコーパス検索ツール(NLB)の一般公開

NINJAL-LWP for BCCWJ(略称:NLB)は、国立国語研究所(以下、国語研)が構築し
た『現代日本語書き言葉均衡コーパス』(Balanced Corpus of Comtemporary Written Japanese: BCCWJ)
を検索するために、国語研とLago言語研究所が共同開発したオンライン検索システム
です。

2012年6月15日から国立国語研究所のホームページでNLBの一般公開が始まりました。
以下のリンクから無料で使用できます。

http://ninjal-lwp-bccwj.ninjal.ac.jp/

なかなか面白いが、「ググる」とか今の言葉が変ですが、まあ、これからバージョンアップされるのでしょう。

リモートデスクトップ接続でCtrl + Alt + Del

Windowsリモートデスクトップ接続で画面がハングアップ?
Ctrl + Alt + Del でタスクマネージャーを開きたい。
しかし、Ctrl + Alt + Delを打つと、ローカルPCに送られる。

MSのサイト:リモート デスクトップ接続で使用できるショートカット キー
http://windows.microsoft.com/ja-JP/windows7/What-shortcut-keys-can-I-use-in-Remote-Desktop-Connection

ここには「Ctrl + Alt + End」[Windows セキュリティ] ダイアログ ボックスを表示する。と書いてある。
End?キーボードによっては、Endが書いていない。fn+→(右矢印)でEndである。
となると、
リモートデスクトップ接続でCtrl + Alt + Del「Ctrl + Alt + fn + →(右矢印)」となる。

「うるう秒」挿入のお知らせ、何?

総務省 情報通信国際戦略局 技術政策課より

「うるう秒」挿入のお知らせ
http://www.soumu.go.jp/menu_news/s-news/01tsushin03_02000031.html

うるう秒とは(上記PDFがHTML化していないので、抜粋)
時刻は、かつて地球の公転・自転に基づく天文時(世界時)から決められていましたが、1958年より原子の振動を利用した原子時計(注)に基づく国際原子時が開始され、1秒の長さが非常に高精度なものとなった結果、原子時計に基づく時刻と天文時に基づく時刻との間でずれが生じるようになりました。
そこで、原子時計に基づく時刻を天文時とのずれが0.9秒以内におさまるように調整を行った時刻を世界の標準時(協定世界時)として使うことにしており、今回その調整を行うために「うるう秒」の挿入が行われるものです。うるう秒の調整は1972年から数年に1回程度行われています。

「うるう秒」の調整は、地球の回転の観測を行う国際機関である「国際地球回転・基準系事業(IERS:International Earth Rotation and Reference Systems Service、所在地:パリ)」が決定しており、これを受けて世界で一斉にうるう秒の調整が行われています。日本では、総務省及びNICTが法令に基づき標準時の通報に係る事務を行っており、IERSの決定に基づきNICTにおいて日本標準時にうるう秒の挿入を実施しています。
NICTでは、本年1月5日のIERSのうるう秒挿入の決定を受け、7月1日(日)に日本標準時に「うるう秒」の挿入を実施します。なお、最近では3年半前となる平成21年(2009年)1月1日にうるう秒の調整が行なわれました。

技術者的には、
当然、電波時計じゃない人は1秒腕時計がズレるが、たぶん、ほぼ気がつかない。
パソコンやサーバはNTP(Network Time Protocol )の設定されていれば、時間が修正されます。
(NTPの設定を知らんという人があれば、言ってください、記事化します。)

困るのは、1秒単位で統計している人やシステム、1秒単位で決済等を行う人やシステム。
たとえば、車のスピードを測り、交通情報を出しているところ、60秒が61秒になるので、少しだけ、渋滞が緩和した情報になる可能性がある。
GPS等を使っている場合は、位置調整でスピードと距離を使っている場合、少し誤差がでる可能性がある。
システムによっては、時間が逆行する場合があるので、この一秒を使って、オークションサイト等で不正が起きる可能性がある。

技術的にはIBMが分かりやすい。
【Technical Notes】Linux システムクロックの『うるう秒』調整
http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/page/default-0019DB89?OpenDocument&TableRow=1.2

アクセス解析をしてみて!

Abundcore アクセス解析をしてみて!

最近アクセス数が異常に上がってきて、分析をするようになりました。
ここで、通常なら人気順位をやりますが、ここはやっぱり普通なサイト
じゃないので、管理者的に感謝、感謝アクセス!

アクセスしてくれてありがとう!感謝ニッチ環境
サイト管理者的に感謝順位です。

OS編
1位 Windows 95
2位 Windows 98
3位 Nintendo Wii

ブラウザ編
1位 MSIE2
2位 MSIE3
3位 Netscape/0

しかし、このニッチニーズに対応できないけど、なんとか、
テキストだけは読めるようにしたいとは思いますが保障できません。

皆様のアクセスをバネに頑張りますので宜しくお願い致します。