月別アーカイブ: 2016年8月

shinyでデバッグプリントを出す方法

すぐ忘れるのでメモ

shinyとは

Rの軽量Webフレームワークshiny。Rで計算した結果をWebで簡単に表現できるので非常に便利です。

RStudioを使ってデバッグすればいいのでしょうが、サーバサイドでいきなりコーディングし、訳の分からないエラーが発生した時には非常に困ります。
簡単にデバッグする方法は以下のとおりです

ブラウザ

Chromeのメニューから「その他のツール」ー「デベロッパーツール」を選択します。
そのメニューからConsoleを表示させると、Javascriptでサーバ側のエラーを表示してくれます。
これは非常に便利。

デバッグプリント

ソースコード上にデバッグプリントを埋め込んで変数の内容を確認するには

こんな感じでserver.R上に記述します。これで /var/log/shiny-server以下のファイルに出力されます。

まとめ

Rはスクリプト言語なので、エラーになる直前までは普通に実行してくれますので、エラーとなる直前にデバッグプリントを仕込むと良いでしょう

激安$3以下のebayで買ったArduino nanoを動かす

激安ArduinoNanoをなんとか動かしたメモ

ebayで最近よく物を買っています。Arudinoなんかですと国内で買う価格の半額どころか10分の1くらいの値段で手に入ります。

しかし、互換チップなどを使っているのでドライバーを入れたり色々面倒なことが起きたりします。

今回、購入したこちらのArudino uno ですが一筋縄ではいきませんでしたのでその対応のメモです。

環境

PC: Mac OS X 10.11
IDE: Arduino IDE 1.6.11

ch340gドライバ

こちらのUSBドライバは格安の互換品らしく、ドライバーを別途入れてやらないとPCからは認識できません。この辺りの手順は色々なところに書かれていますので、このあたりを参考にドライバー追加します。

IDE

ドライバを追加し、Arduino Nano をPCに接続してやります。自分の場合はMACなのでポートはArduinoIDEからは

/dev/cu.wchusbserial1420

というデバイスで認識されますので、ポートをこちらに接続してやります。

Blinkプログラムの書き込み

USBを接続し、ファイルメニューからスケッチの例ー01.BasicーBlinkを開いてやります。
ツールのボードをArduino Nano にし、プロセッサをATmega328、ポートは先ほどのポートをセットします。
そのまま、マイコンボードに書き込むを実行すると

このエラー。。。。。色々調べたのですが、ケーブルを入れさししろとか、リセットを押しながらケーブルを入れるとか。。。全く改善されません。

よーく見るとRXやLのLEDが電源をONにしても光っていないことに気づきました。

ブートローダを書き込む

どうやらブートローダが書き込まれていないのではという目星をつけて色々調べたところ、こちらにまさに解決方法が!

手順は以下に示しておきます

必要なもの

Arduino UNO
オスーメスのジャンパーピン

手順

STEP 1

  • Arduino UNOをPCに接続
  • ツールメニューのシリアルポートをArduino UNOのポートに
  • ツールメニューのボードをArduino UNOに
  • ファイルメニューのスケッチの例からArduino ISPを開く
  • マイコンボードに書き込むを実行
  • USBケーブルをはずしてPCからはずす

STEP 2

  • Arduino Nanoのジャンパーピン1からUNOのD12へ接続
  • Arduino Nanoのジャンパーピン2からUNOの5Vへ接続
  • Arduino Nanoのジャンパーピン3からUNOのD13へ接続
  • Arduino Nanoのジャンパーピン4からUNOのD11へ接続
  • Arduino Nanoのジャンパーピン5からUNOのD10へ接続
  • Arduino Nanoのジャンパーピン6からUNOのGNDへ接続

STEP 3

  • Arduino UNOをPCに接続
  • ツールメニューのシリアルポートをArduino UNOのポートに
  • ツールメニューのボードをArduino Nanoに
  • ツールメニューのプロセッサをATmega328に
  • ツールメニューの書き込み装置をArduino as ISPへ
  • ツールメニューのブートローダ書き込みを実行

これでブートローダが書き込まれて無事Arduino Nano のLのLEDが光ります。

STEP 4


ケーブルを全て外してArduino Nanoの動作確認をします

  • Arduino NanoをPCに接続
  • ツールメニューのシリアルポートをArduino Nanoのポートに
  • ツールメニューのボードをArduino Nanoに
  • ツールメニューのプロセッサをATmega328に
  • ツールメニューの書き込み装置をAVRISP mkIIに戻しておく(不要かも)
  • ファイルメニューからスケッチの例ー01.BasicーBlinkを開く
  • マイコンボードに書き込むを実行

これで無事にLチカができました

bottleでMVC

pythonでデータ解析をしていると、その結果をヴィジュアル的に見せたくなってくる時があります。
PythonのWebフレームワークは様々ありますが、最もシンプルなbottleで作成するのが一番簡単です。

こちらのサイトで、BottleをMVCフレームワーク的に作成されているサンプルがありましたのでちょっといじってみました。その際、ちょっとハマったのでのメモです。

環境

  • OS: ubuntu14.04
  • python: 2.7.6
  • MySQL version: 5.1.63
  • MySQL encode: shift_jis
  • nginx 1.4.6

設定

nginx

http://server/pythonでアクセスできるようにnginxの設定ファイルを修正します

/etc/nginx/site-availables

スクリプト

起動スクリプトを作成します

start.sh

gunicorn.conf.py

文字化け

上記環境で参考サイトを元に作成すると、DBの文字列を表示する際に文字化けしてしまいます。この対処法は散々悩んだ挙句この修正で行けました

app/models/db.py

ESP-WROOM-02とArduino unoでWifi

Arduino UnoとWifiモジュールのESP-WROOM-02 DIP化キットをつないで通信をしてみます。

ESP-WROOM-02自体でもArduinoとしてプログラムを書き込んで使用できるようですが、ESP-WROOM-02に繋ぐためのUSBシリアル変換インターフェースを持っていないのでとりあえずArduinoと接続して使えるかどうか確認します。

使用する機器

回路

ArduinoとESP-WROOM-02を繋ぐ回路が必要なのですが、このDIP化キットとArduinoUnoをつないだ回路をWebで発見することが出来ず苦労しました。
このあたりこのあたり、あとこのページを参考にさせていただいて作成したのがこれ。

DSC_0250

プログラム

参考にしたサイトからこれを作成しました。

実行

Arduino IDEからツール、シリアルモニタを開いて確認します

入力した文字がそのままエコーされています

まとめ

プログラムを実行しても Hello, Worldが返ってこなかったりし、いろいろ回路をいじったりしましたが、なぜこれで動くのかちょっとわかりませんが動くのでこれでよしとします。次は実際にWifi通信してみることにします

pythonのmatplotlibでcandlestickチャート

MySQLからデータを取得し、Pythonのmatplotlibでローソク足を描画します。

環境

  • OS:MacOS10.11
  • python:2.7.12
  • MySQL 5.6

テーブル

MySQLのテーブル形式は以下のとおり。日足でも週足でもなんでも構いません。
データベース名はdbnameとしています

休日考慮

シンプルにローソク足だけ表示します
休日がある場合には間を空けます

休日考慮しない

シンプルにローソク足だけ表示します
休日を無視して詰めて描画します。テクニカルを重ね合わせる場合はこちらのほうが都合がいいです

これでとりあえずチャートが表示されます