ESP32-DevKitCでI2C接続が正しくできていることを確認する

Posted on Sun 31 March 2019 in JP • Tagged with ESP32

はじめに

I2C接続が必要なデバイスの場合、テスター等で確認することはできないので正しく接続できているか確認するのが面倒です。

ESP-IDFに便利なツール(i2c_tools)があったので試してみます。このツールでは、サンプルプログラムをESP32-DevKitCに転送し、シリアルコンソール上でコマンドを実行することで、I2Cバスに接続されているデバイスの検知や、レジスタの読み書きが簡単にできます。

今回は、温度・湿度・気圧を測定できるセンサーのBME280をESP32-DevKitCにI2Cで接続し、i2c_toolsで動作を確認してみます。

回路図

i2c_toolsのREADME.mdによるとデフォルトのピンアサインは下記のようになっています。 ESP32 I2C MasterがESP32-DevKitC側で、Sensorが接続するデバイス側のピンです。

SDA SCL GND Other VCC
ESP32 I2C Master GPIO18 GPIO19 GND GND 3.3V
Sensor SDA SCL GND WAK VCC

このピンアサインは、ツールをESP32-DevKitCに書き込み後、i2cconfigコマンドで変更することもできますが、今回はデフォルトのピンアサインで接続します。

下記のように接続しました …


Continue reading

ESP32でAmazon FreeRTOSを使用してLEDをチカチカさせてみた

Posted on Tue 19 March 2019 in JP • Tagged with AWS

はじめに

ESP32でAmazon FreeRTOSを使ってLEDチカチカさせる手順についてまとめます。

下記の公式ドキュメント等を参照してESP32にfirmwareの転送しMQTTのPublishができていることを前提としています。

Espressif ESP32-DevKitC と ESP-WROVER-KIT の開始方法

デモのesp32_devkitc_esp_wrover_kitに手を加える形でLチカを実現します。

ESP32でのGPIOの操作について

ESP32向けの公式ライブラリとしてESP-IDFが用意されています。 ESP-IDFはAmazon FreeRTOSに組み込まれているので、これを利用してGPIOを操作します。

ESP-IDFを使用したGPIOの操作に関しては、ESP-IDFのリファレンス(API Reference - Peripherals API - GPIO & RTC GPIO)に説明があります。

また、サンプルコードもGitHub(ESP-IDF GPIO Sample)で公開されています。

回路構成

GPIO4を制御してLEDをチカチカさせることにします。 GPIO4とGNDの間にLEDと抵抗を入れてつなぎます。抵抗の大きさは適当です。

コードの修正

esp32_devkitc_esp_wrover_kitのコードの修正を行います。 書き換え対象は、amazon-freertos/demos/espressif/esp32_devkitc_esp_wrover_kit/common/application_code/main.c です。

元々のサンプルコードはDEMO_RUNNER_RunDemos …


Continue reading

Cisco Catalyst 2960L を使用したリンクアグリゲーションの設定

Posted on Mon 14 January 2019 in JP • Tagged with サーバー管理

ファイルサーバーとL2スィッチ間のリンクアグリゲーションを設定する

自宅用にCisco Catalyst 2960Lを手に入れました。 このL2スイッチではリンクアグリゲーションを設定することができるので、ファイルサーバーとスイッチ間でリンクアグリゲーションを設定します。

これにより、帯域を増やすことができ複数のクライアントが同時にアクセスしてもパフォーマンスの低下を防げることが期待できます。

リンクアグリゲーションとは

リンクアグリゲーション(IEEE 802.3ad)とは、複数の物理リンクをまとめて1本の論理リンクとして扱うことの技術です。 物理リンクの本数分の帯域を増やすことができる他、複数本の物理リンクが切断されてしまっても残りのリンクで通信を継続できるため、耐障害性も向上します。

CiscoではEtherCahnnelと呼ばれています。

構成

link_aggregation

上記のようにファイルサーバーとスイッチ間を2本のLANケーブルで接続します。 ファイルサーバー側のLANポート2つと、スイッチ側のLANポート2つを、それぞれ接続します。

設定

ファイルサーバー側

Netplanを使用して設定を行います。 enp0s31f6とenp8s0の2つのポートをまとめたbond0というdeviceを作成します。 modeは、IEEE802.3ad準拠で通信できるよう"802.3ad"を設定しています。

$ sudo vi /etc/netplan/01-netcfg.yaml
# This file describes the …

Continue reading

自宅SAN(Storage Area Network)の構築

Posted on Sat 29 December 2018 in JP • Tagged with サーバー管理

自宅SANの構築

仮想サーバーを立ててライブマイグレーションをさせたい場合や、ディスクを一台のサーバーに集約させたい場合などに、SANを構築すると便利です。 ファイルベースのアクセスとなるNASとは違い、SANはブロックデバイスの形でネットワーク内に共有されます。 そのため、オーバーヘッドが小さいのに加えて、更にファイバーチャネルを使用して高速なネットワークを作成することもできます。

今回は、自宅にSANを構築したので、その手順をまとめます。

構成

HomeSAN

ストレージを公開する側をターゲット、ストレージを使う側をイニシエータといいます。 ターゲットとイニシエータには、QLogicのQLE2560のHBA (Host Bus Adapter)をPCIeで刺しています。 このボードは型が古いため運が良ければ一枚1,000円程度でヤフオクで取得できます。

それぞれのHBAはファイバーケーブルで接続します。ケーブルにはシンクルモードとマルチモードの違いがある他、コネクタ形状には、SCとLCという違いがあります。 HBAに刺さっているSFPトランシーバーが対応しているものを使用する必要があります。

私の場合は、LC - マルチモードのケーブルを使用しています。

ターゲットとイニシエータには、Ubuntu 17.10をインストールしてあります。

ターゲット側のセットアップ

ターゲットモードを有効にする

QLE2560のボードを接続すると、自動でqla2xxxドライバーが読み込まれるはずです。 qla2xxxはデフォルトでイニシィエータモードで動作するので、ターゲット側ではターゲットモードで動作するように設定を変更します。 qla2xxx向けの設定ファイルを新規で作成します。

$ sudo …

Continue reading

CentOS7で固定IPアドレスの設定を行う

Posted on Sat 18 August 2018 in JP • Tagged with サーバー管理

固定IPアドレス設定

CentOS 7.5.1804 での固定IPアドレスを設定するコマンドです。

# nmcli connection modify eth0 ipv4.addresses [割り当てたいIPアドレス] ipv4.gateway [GatewayのIPアドレス] ipv4.dns [参照するDNSサーバのIPアドレス] ipv4.method manual connection.autoconnect yes

2番目と3番目のオプションは、それぞれ短縮可能です。

  • connection -> c
  • modify -> m

ipv4.methodにmanualを設定しているのは、DHCPではなく固定でIPアドレスを割り当てるためです。 connection.autoconnect yesで起動時にNICが立ち上がるように設定しています。

実行例

# nmcli connection modify eth0 ipv4.addresses 192.168.1 …

Continue reading

SwipeRefreshLayoutのsetRefreshing(true)が効かない場合の対処

Posted on Sat 14 November 2015 in Android • Tagged with Android

SwipeRefreshLayoutのsetRefreshing(true)は、onMeasure()が呼ばれるまでは有効にならないみたいです。

参考:https://code.google.com/p/android/issues/detail?id=77712

このような場合、SwipeRefreshLayoutを継承して下記のようにsetRefreshingが呼ばれた時の引数の値を覚えておいて、onMesure()のタイミングでsetRefreshing()をもう一回読んであげると良いようです。

// MySwipeRefreshLayout.java  
public class MySwipeRefreshLayout extends SwipeRefreshLayout {  
  private boolean mMeasured = false;
  private boolean mPreMeasureRefreshing = false;

  public MySwipeRefreshLayout(Context context) {  
    super(context);  
  }

  public MySwipeRefreshLayout(Context context, AttributeSet attrs) {  
    super(context …

Continue reading

Rails5で取り込まれる予定のrails-apiを使ってWeb APIをつくる

Posted on Sat 31 October 2015 in Ruby on Rails • Tagged with Rails, Ruby

はじめに

web apiを作るのに特化したrails-apiを使ってweb apiを作ってみます。
rails-apiは、Rails5で取り込まれる予定みたいです。
rails-apiは、web apiを作るだけなら不要なrails要素を省いてアプリを作成することができます。
Web APIオンリーでフロントエンドは、別のフレームワーク等を使って開発する場合などに使用すると良いのではないでしょうか。
今回は、問い合わせるとjsonを返すだけの単純なGETメソッドのAPIを作成してみます。

rails-apiのインストール

$ gem install rails-api  

rails-apiのディレクトリを作成

今回は、sample_apiという名前で作成してみました。

$ rails-api new sample_api  

ModelとControllerの作成

rails-apiでは、Viewを使わないのでModelとControllerだけ作成します。
ここでは、Model名とController名はそれぞれBookとbooksとしておきます。
自分で作成する場合は、好きな名前にしてください。

Modelの作成

$ ./bin/rails g model Book name:string  
$ ./bin/rake db:migrate  

Controllerの作成

Controllerは、バージョニングできるようにバージョン名でディレクトリを振り分けて配置しています。

$ ./bin/rails g …

Continue reading

2008年と2015年に組んだ省電力サーバーのベンチマーク比較

Posted on Mon 25 May 2015 in JP • Tagged with サーバー管理

はじめに

サーバーを新しく組んだので、ベンチマークの比較をしてみます。
比較対象サーバーの構成の比較は下記のとおりです。

2008年 2015年
CPU Intel Atom330 AMD Athlon5350
メモリ DDR2-800 2GB DDR3-1600 16GB

ベンチマークソフトはunixbenchを使用します。

Atom330とAthlon5350のスペック比較

Atom330 Athlon5350
周波数 1.6GHz 2.05GHz
L1 cache 64 KB (code) / 48 KB (data) 128 KB (code) / 128 KB
(data)
L2 cache 1024KB 2048KB
TDP 8W 25W
実Core数 2 …

Continue reading

だれでも組める! 省電力かつ実用的な自宅サーバー 2015年版

Posted on Sat 25 April 2015 in JP • Tagged with サーバー管理

なぜ自宅サーバーか?

「自宅サーバーではなく、VPSを利用すれば安くサーバーを使えるのでは?」と思われる方も多いかと思います。
たしかに、VPSをレンタルすれば安い費用でサーバーを利用でき、さらに「初期投資が不必要」「サーバーの電気代がかからない」というメリットがあります。
しかし、自分はファイルサーバーにも使用したいのでファイルを手元に置いておける自宅サーバーを使用することにします。

どんなサーバーを組むのか?

どんなサーバーを組むのかによって、重視するポイントが変わってきます。
自分は下のような用途でサーバーを使用します。

  • Webサーバー
  • ビルドサーバー
  • ファイルサーバ

ビルドサーバー用途からなるべくCPU性能がいい方がいいし、メモリーも多い方がいい。
また、ファイルサーバにも使うのでディスク容量もたくさん欲しい。自宅にサーバーを置くので電気代はあまりかからない方がいい。
...と、要は性能はなるべく高く、かつ電気代はなるべく安くとないものねだりになってしまいした。
というわけで今回は、通常のデスクトップPCよりは低消費電力かつ、サーバーの用途に支障をきたさない程度のサーバーの構成を考えてみたいと思います。

PCパーツの選択

サーバーを建てるには、以下のパーツを用意する必要があります。

  • CPU
  • マザーボード
  • メモリー
  • HDDまたはSSD
  • 電源
  • PCケース

自分は、電源とPCケースは持ってるもの使用するので、ここではCPU、メモリーとHDD(SSD)を選んで行きます。

CPU

今現在、デスクトップ向けで低消費電力かつそこそこの性能のCPUは、IntelのCelenron J1900やPentium …


Continue reading

Android Studioで作成したプロジェクトをJenkinsでビルドする

Posted on Sat 18 May 2013 in Android

AndroidStudioのプロジェクトはgradleベースなので簡単にJenkinsでビルドすることができます。
以下、ビルドするために行った手順です。

Android SDKをインストールする

[Jenkinsの管理]->[システムの設定]で環境変数$ANDROID_HOEMを追加して、値にAndroid SDKをインストールしたディレクトリへのパスを入力する

Android Studioで作成したプロジェクトをgit等に追加する

Jenkinsの設定

[Jenkinsの管理]->[プラグインの管理]からJenkins Gradle pluginをインストールする。
[Jenkinsの管理]->[システムの設定]->[Gradle]
Gradle追加ボタンを押して、下記のように選択する

  • name : Gradle 1.6
  • 自動インストール : チェックあり
  • インストーラの追加:Install from Gradle.org
  • バージョン : Gradle 1.6

Jenkins ジョブの作成

ジョブの設定から[ビルド]->[ビルド手順の追加]を押してInvoke Gradlescriptを選択する。
Invoke …


Continue reading