BLEモジュールBL600を試してみた

今回使用したボードはこれです
FRISKケースに入るBL600基板 REBL600FR - ランニングエレクトロニクス
http://www.runele.com/ca1/24/p-r-s/


UART-USB変換ケーブルを使いました
UARTのピンをつけてもFRISKケースに入る


UwTerminalを使えばsmartBASICをコンパイルして転送とかできます
あとATコマンドを使って大体のことはできるみたい


ファームウェアバージョンを表示するときは、こんな感じ

ATI 3
10 3 1.2.54.0
00

内部のファイルシステムのファイル一覧を出すとき

ATI+DIR

06 test1
00

・新しめのファームウェアがLaird TechnologyのサイトにあってUARTで更新できそうだけど
 1.5以上のファームウェアからしか更新できないのかな
 (もとから書いてあるファーム1.2.54.0からやってみたがファイルシステムが変なことになる^^;)
・UwTerminalは最新ファームウェアのサンプルフォルダにあるものが最新らしい
サンプルソースがライブラリを呼んで終わり、みたいなのが多くて
 変更しようとしたときどこから手を付けてよいのかわからない


BLEおいといて、とりあえずI2Cで遊んでみる

Intel GalileoでEthernet Libraryを使うとエラーがでる

Ethernet Libraryを使ってHTTPでサーバに接続するプログラムを作ったのだけど
EthernetClientのstop関数を呼ぶとログに** B0100000063f694が出て動作が停止する


ググルとこんなのあるけど同じことしても解消しなかった
Ethernet Library: sketch crashes when remote cl... | Intel Communities


このファイルの\arduino-1.5.3\hardware\arduino\x86\libraries\Ethernet\EthernetClient.cpp
stop関数のソース見てたら_inactive_counterにアクセスしているあたりで
エラーが出ている。

void EthernetClient::stop()
{
	if (_sock < 0)
		return;

	connect_true = false;
	if (_inactive_counter != NULL)
		*_inactive_counter = 0;
	if(_sock != -1){
		close(_sock);
		_sock = -1;

		// Sketches do a Ethernet client = server.available() - which means a copy constructor is used
		// Hence any server which populated a pclients[idx] - won't actually see the socket closed - since
		// his client was copied - not given a pointer to.... pcleint[] in EthernetServer.cpp _sock != -1 at this point
		// make it so !
		if(_pCloseServer != NULL){
		    	_pCloseServer->closeNotify(this->id);
		}
	}
}

よく見ると_inactive_counterが初期されてないように見えるので、
とりあえずコンストラクタでNULLにしてみたらエラーが出なくなった


EthernetServer.cpp

		for(int sock = 0; sock < MAX_SOCK_NUM && success == 0; sock++){
			if (pclients[sock]._sock == -1){
				pclients[sock]._sock = ret;
				pclients[sock]._pCloseServer = this;
				pclients[sock].connect_true = true;
				pclients[sock]._inactive_counter = &_pcli_inactivity_counter[sock];
				success = 1;
			}
		}

EthernetServerから使われるときはポインタに値が入るみたいだ
これでいいのかな...

Intel Galileoを買ったので使ってみる

Intel Galileoは、Intelが発売したArduino互換なx86 CPUのボードかな

Arduino - IntelGalileo

こんな使い方したい

ネットワークが標準でついてるので複数XBeeからのデータをサーバに送信するような使い方を考えた。
(RaspberryPiでやろうとしてたけど、浮気)

開発環境

Arduino IDEでプログラムできる。
ネットにあるArduinoのライブラリとか使えるはずなので試してみた

xbee-arduino

XBee複数つないで通信したいのでAPIモード用のこのライブラリを使う。
UART1を使いたいのでこのようにしてそのまま使えた。

XBee xbee = XBee();
...
  Serial.begin(9600);
  Serial1.begin(9600);
  xbee.begin(Serial1);
...

XBeeの設定をして、End PointのADCとポート状態を定期的に受信できた


xbee-arduino - Arduino library for communicating with XBees in API mode
<http://code.google.com/p/xbee-arduino/>

Ethernet

特に修正することなく
WebClientのサンプルは動いた。

EthernetClient client;
Ethernet.begin(mac)
...

これを使ってサーバにPOSTすればよいのかな
amcewen/HttpClient
<https://github.com/amcewen/HttpClient>

きょうはここまで

部屋の温度とか外の温度とか見たいので
センサつないだり、サーバ用意したりしないとですね

LPC812に秋月I2C液晶をつなげる

小さいもの好きとしてはNXPのLPC800シリーズは気になります
CPUはCortex-M0+でDIP 8pinもあるのです。


評価ボードでいろいろと試しているとこです
今回は、LPC812に秋月I2C液晶をつなげてみました。


I2C接続小型LCDモジュール 8x2行: ディスプレイ関連 秋月電子通商 電子部品 <http://akizukidenshi.com/catalog/g/gP-06669/>


LPCOpenのサンプル見ながらI2CのROM APIで送信するようにしてみた。
ただ、秋月のデータシートだと間違いがあるのかコントロールビットの取り扱いが違うようだ
このサイトも参考にしました
 null: 秋月 小型I2C液晶 AQM0802A-RN-GBW  駆動方法
  <http://kingyonull.blogspot.jp/2013/06/i2caqm0802a-rn-gbw.html>

表示できたところ

(なんか2行目が欠けてます...残念)


あと、いまいち開発環境がわかっていない
CMSIS_COREとLPCOpenは別物なのか??

Android用FTDI D2XX driverをほんの少し試してみる

FTDIのサイトにあるtechnical note 147のデモアプリを、ビルドしてAQUOS PHONE ZETAに入れてみた。
とりあえず家にあった秋月のこれFT232RL USBシリアル変換モジュールを接続

画面にこんな感じの表示が出て認識はされているみたい


こんな画面があって型番とか表示される

プロジェクトにLibrary入れるだけみたいだから簡単かもしれない
Java D2xx for Android API User Manualによると、bitmodeも設定できるみたいだからいろいろできそう


FTDI Android

最近のシャープ端末のBluetooth

以前のシャープ端末(IS05とか)はBluetoothが何か違うらしく
私の公開しているBluetoothのスタックでうまく動かないことがありましたが
最近の端末は大丈夫なのかもしれない


最近使い始めたAQUOS PHONE ZETA SH-02Eで接続できました
試したマイコン側はこれhrdakinori/PIC24F_MotorControl · GitHub