アナリティクス

2017年5月1日月曜日

ATOMでArduinoを操る(3)

ESP-WROOM-02 を WebSocket の鯖にしてみた。

最終的にはこんな形
ソースとWebSocketを試すHTMLサンプル
作り方 :
自分自身で WebSocket や JSON をパースする実装など出来るわけも無いのでライブラリを探す。とりあえずプロジェクトを作る。

プロジェクトを作ったらライブラリを取り込む表示にする


まずはJSONのライブラリを入れる。ArduinoIDEで使えるライブラリはメジャーなものは大体あるのではないかと。


探して見つかったらインストール。


インストール先を聞いてくるので、グローバルにでもプロジェクト単位でも好きな方で


インストールが終わるとカッコイイ通知


同じノリで WebSocket 用ライブラリも入れる


冒頭のリンクのソースでは対応済みだけど、ビルドすると Hash.h が見つからないとして怒られた。


同じソースを ArduinoIDE でビルドすると下のインクルードの指定でも通る。


PlatformIO だとビルドインのライブラリに関するヘッダは、追加ライブラリの側から参照出来ないのだろうか?
とりあえず...

色々インクルードする前に <hash.h> をインクルードして対応。

2017年4月8日土曜日

ATOMでArduinoを操る(2)

ATOMでArduinoとシリアルでお話しする方法


これして

これする

以上

VSCodeでこれ出来れば、VSCodeを使いたい
platform-io使うとATOMの起動が重い...

2017年3月30日木曜日

AtomでArduinoを操る(1)

VSCodeが素晴らしいエディタと言ったか?アレもウソ

と言うよりも、良いエディタなんだけど、Arduinoをやるには一つ足りなかった。
Arduinoにプログラムを書き込むところまでは良かったけれど、シリアルでデバッグしようとしたときに「シリアルモニタは?」という事に気がつき、捜してみたもののこれといったものが見つからなかった。シリアルモニタを捜しているときに見つけたのがplatformioで、それが対応していたのがAtom
Reactなシンボルが気になるけどJSは放置。

Atomはダウンローダーから落としてインストール。その後の話。
こっちはえらい簡単に環境が整った。

プロジェクトを開いて


インストーラ(?)を開いて


arduinoと入れて探して


候補から platformio-ide を見つけて Install


インストール中がオシャレ


通知もカコイイ

Restartで再起動して終わり

以上、インストール

インストールを終えるとこんな画面。とりあえず既存のArduinoプロジェクトからインポートして試してみる。
※プロジェクトをインポートするとArduinoプロジェクトのフォルダ構成が変わるので、念のためプロジェクトフォルダのバックアップを作成しておくのがおすすめ


プロジェクトのフォルダを指定して

ボードを選んで・・・・・・はぁぁぁぁぁぁぁ!?


元プロジェクトとボードが決まったので Import


プログラムのビルドとアップロードはサイドの矢印で


ビルドとアップロードが始まって、うまく行くと緑にピカッとなる


楽だわ。
そして多機能だわ。
そしてターミナルに何も吐かないプロジェクトを選んでしまった俺。

2017年3月25日土曜日

ArduinoをVSCodeで操る(2)

Arduino UNO なら無設定でもアップロード出来るかもと書いたが、あれはウソだ。

アップロードしようとしたら怒られた


シリアルポートの設定?
そりゃそうか。
で、拡張機能の内容を再確認。

"arduino.serialPort"なる項目がある...が、拡張機能の設定ってどこにあるのよ?って途方に暮れること5分、とりあえず、グローバル設定を見てみる。

あるかなぁ?


あったよ・・・下の方に・・・

ここで拡張機能の設定項目を確認出来ることをようやく知った二ヶ月目。

展開してシリアルポート設定方法を見る

なるほど

隣のペインで設定を追加...

項目が列挙されるので、"arduino.serialPort"を選択。至れり尽くせり。

シリアルポートに何書けば良いかわからないので、Arduino IDEをいったん開いて確認



シリアルポートの設定完了

GO


ボーレートも設定が必要




無事アップロード完了。

2017/03/24追記:
朝起きてスレ番が10040増えてたように、アップロードが出来なくなってしまった。コマンドパレットから"Arduino: Rebuild & Upload"して事なきを得たが、理由がわからん。

おまけ:

シリアルポートのパスが...


esp8266...期待して良いのか?

ArduinoをVSCodeで操る(1)

二ヶ月弱前から仕事でJavaScriptを始めた。ろくにWeb系の経験が無いので、正直不安だったしJSへの嫌悪感もあった。
幸い現場が超良質だったのでVSCodeをはじめ大量のinputがあり、cordova? ネイティブアプリの開発できるの? TypeScript? 型有りで開発出来るの? VSCode? ナニコレ便利 とホントに色々な事を教えてもらえた。今月末で垂直10m程異動するのがマジつらい。

で、VSCodeを使ってて、このクソ便利な環境をArduinoにも使えんものかと思ったら、やっぱり拡張があったのでインストールしてみた。

拡張機能の検索で"arduino"とタイポ

"Arduino support for VSCode"をインストール
知ってる人はホントこれだけで良い

おもむろに *.ino ファイルのあるフォルダをドラッグして


VSCodeにドロップ


ソースが開けたら、コマンドパレットで"Arduino: build"を実行


ビルド結果が吐かれる


以上!

ビルドしか試して無いけど、アップロードの項目もあるし無設定でArduino UNOはクリアできそう。これで複数ペインでソースを編集できる環境が手に入るので超ありがたい。

クリック一発でビルド出来るボタンも追加されて...もう...

おまけ:
Beautifyでコードの整形出来るかと思ったら、金の斧にするか銀の斧にするか聞かれた。
コマンドパレットで"Format Document"してみたら割といけたけど、なんか入れた方が良いのかな?

Arduino IDEは必須になるけど満足すぎる。
でも、他のAVRやESP-WROOM-02とかどーやんだろ?

昨日は辻元生コンバイブ事件があったので眠すぎる。
クソワロ

2016年8月6日土曜日

Raspberry Pi で DDNS

ここ超最高

レトロな6桁

ちょっと前に、ラズパイを買ったPIMORONIから新製品のお知らせメールが届いた。そこにはドットマトリクスがカワイイモジュールのお知らせ。何に使うとかそういうの一切なしに即注文。ついでにラズパイzeroをもう一枚。
Micro Dot pHAT
赤と緑が売られていた。両方美しいので両方買った。商売上手が過ぎる。

プログラムサンプルもPIMORONIのページがからダウンロード出来るので、ピンヘッダとドットマトリクスのモジュールを基板に半田付けすれば、ラズパイにくっつけて即遊べる。秋月で部品買ってブレッドボードで結線してというのも楽しいけど、これはこれでオモチャ感MAXでいい。

で、出来れば電源入れたら即レトロ時計になってほしいのでサンプルの時計スクリプトをサービス化してみた。

exampleのclockをmicrodotphat_clockd.pyとしてコピーして編集。
ここを参考にしてサービス化対応。
while True: の手前に...

pid = os.fork()
if pid > 0:
 f = open('/var/run/microdotphat_clockd.pid','w')
 f.write(str(pid)+"\n")
 f.close()
 sys.exit()
if pid == 0:

あとは、while True: のループのインデントを下げてスクリプトはおしまい。

で、同じくここを参照して、microdotphat_clock.serviceを作る。
[Unit]
Description=Pimoroni micro dot phat clock service

[Service]
ExecStart=/usr/local/sbin/microdotphat_clockd.py
Restart=always
Type=forking
PIDFile=/var/run/microdotphat_clockd.pid

[Install]
WantedBy=multi-user.target
で、このファイルを /usr/lib/systemd/system 配下にコピー(適当な場所に作ったものをシンボリックリンクして5分はまる)する。あとは
sudo systemctl daemon-reload
sudo systemctl enable microdotphat_clock
あぁ、かわえぇ。

電源入れてNTPの時刻同期でピコっと表示がかわるとこなんかたまらん。

ニキシー管思い出してしまったけど、値段見て忘れよう。

2016年8月4日木曜日

RPiインストールメモ(2)

Raspbianの導入初期に入ってしまう不要ファイルの削除を行い、空き領域をBleachBitでクリーンアップしてイメージバックアップサイズの抑制をしてみた。

不要と判断するものは以下の基準。
  • X(GUI)
  • game
とりあえず、パッケージの一覧を取得してそこから選んで削除。パッケージの一覧は
dpkg -l
で取得。
パッケージは以下にて削除。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get --purge remove adwaita-icon-theme 
sudo apt-get --purge remove alacarte
sudo apt-get --purge remove aspell
sudo apt-get --purge remove aspell-en 
sudo apt-get --purge remove blt
sudo apt-get --purge remove bluej
sudo apt-get --purge remove claws-mail
sudo apt-get --purge remove claws-mail-i18n
sudo apt-get --purge remove desktop-file-utils
sudo apt-get --purge remove dictionaries-common
sudo apt-get --purge remove dillo
sudo apt-get --purge remove epiphany*
sudo apt-get --purge remove gconf*
sudo apt-get --purge remove geany*
sudo apt-get --purge remove gnome*
sudo apt-get --purge remove gtk*
sudo apt-get --purge remove idle*
sudo apt-get --purge remove leafpad
sudo apt-get --purge remove minecraft-pi
sudo apt-get --purge remove penguinspuzzle
sudo apt-get --purge remove pi-package*
sudo apt-get --purge remove pulseaudio-module-x11
sudo apt-get --purge remove scratch
sudo apt-get --purge remove wolfram-engine
sudo apt-get --purge remove X11* 
sudo apt-get --purge remove x2x 
sudo apt-get --purge remove xarchiver 
sudo apt-get --purge remove xauth
sudo apt-get --purge remove xcompmgr
sudo apt-get --purge remove xdg*
sudo apt-get --purge remove xfconf
sudo apt-get --purge remove xfonts* 
sudo apt-get --purge remove xinit 
sudo apt-get --purge remove xkb-data   
sudo apt-get --purge remove xpdf
sudo apt-get --purge remove xserver*
sudo apt-get --purge remove python-pygame
sudo apt-get --purge remove python3-pygame
sudo apt-get autoremove

ついでにいらないディレクトリも。
rm -rf ~/Desktop
rm -rf ~/Documents
rm -rf ~/Downloads
rm -rf ~/Music
rm -rf ~/Pictures
rm -rf ~/Public
rm -rf ~/Templates
rm -rf ~/Videos
rm -rf ~/python_games



これでバックアップすれば、イメージサイズも抑制されると思いきや、1.6GBから1.9GBに跳ね上がってしまった。結局削除可能フラグがついたままの不可視データがディスク上に残ってしまうので、これがイメージに残ってしまうのでなんとかきれいにしなければならない。nautilus-wipeが使えればそれを使いたかったが、ubuntu16.04LTS への導入の仕方がさっぱりだったので、Ubuntu Software から BleachBit を導入し、空き領域をクリアすることにした。
ソフトウェアインストール後、ubuntuにSDを認識させて以下の手順で空き領域をクリーンな状態にする。
  1. BleachBit(as root) を起動
  2. 設定画面はClose
  3. メニューから[ファイル]->[フリースペースをワイプする]
  4. フォルダの"root"を選択->[OK]
  5. 進捗の残り時間はあてにならないのでひたすら待つ。
  6. なんか、時々画面がモノトーンになってものすごく不安になるけどひたすら待つ。

この作業の後にバックアップイメージを作ったところ0.9Gになった。
-rw-r--r-- 1 501 dialout 1625M  8月  3 19:34 01_RPi_Base_With_X.img.gz
-rw-r--r-- 1 501 dialout 1926M  8月  3 22:55 02_RPi_Base_No_X_and_useless.img.gz
-rw-r--r-- 1 501 dialout  939M  8月  4 00:39 03_RPi_Base_Wiped_free_area.img.gz

そこそこスッキリした。

2016年8月3日水曜日

RPiインストールメモ(1)

何度かラズパイのインストールを繰り返して、なんとなく自分が使う基本的な設定が固まったのでメモ。
手順は Raspberry Pi 3 で確認。
  • SD作成
    NOOBS Lite を使用して Raspbian を入れる
  • ネットワーク設定(1)
    WiFiの固定IPをインフラストラクチャ環境用に割り当てる
  • ラズパイ設定
    I2C,SPI,カメラの有効化,日本語環境
  • ネットワーク設定編(2)
    USB-WiFi(wlan1)にAd-hoc環境用に固定IPを割り当てる
※wlan1用のUSB-Wifiは接続しないで始める。
  1. SD作成
    1. NOOBS Liteのインストール
      なぜか手持ちのNOOBSはウンともスンとも言わないので、NOOBS Liteを使う。インストールの時は地域をUS、キーボードはJPでインストールする。
  2. ネットワーク設定(1)
    アクセスポイントへの接続設定を行い固定IPを割り当てる
    1. Wireless LAN(wlan0) の接続設定
      既存の設定ファイルをテンプレートとして、SSIDごとにコピーする
      > sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant_[SSID].conf
                
      設定内容を生成する
      > wpa_passphrase [SSID] [KEY]
                
      出力された内容をコピーする
      network={
       ssid="SSID-HOGE"
       #psk="WIFI-KEY-HOGE"
       psk=0d3e2e20346f004de5f49aed4aa52b740b1b0254f88dc25820a7696090414afc
      }
                
      コピーした内容を設定ファイルに貼り付け
      > sudo vi /etc/wpa_supplicant/wpa_supplicant_[SSID].conf
                
      country=JP
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1
      network={
       ssid="SSID-HOGE"
       #psk="WIFI-KEY-HOGE"
       psk=0d3e2e20346f004de5f49aed4aa52b740b1b0254f88dc25820a7696090414afc
      }
                
    2. 固定IP設定
      > sudo vi /etc/network/interfaces
              
      iface wlan0 net static
       address 192.168.0.118
       netmask 255.255.255.0
       gateway 192.168.0.1
       dns-nameservers 192.168.0.1
       wpa-conf /etc/wpa_supplicant/wpa_supplicant_[SSID].conf
              
  3. ラズパイ設定
    1. Raspberry Pi Configuration による基本設定
      X で Menu -> Preferences -> Rasberry Pi Configuration
      1. System
        Change Password → 変更
        Hostname → テキトーに
        Boot -> To CLI
        Auto Login → チェックを外す
      2. Interfaces
        Camera → Enabled
        SPI → Enabled
        I2C → Enabled
      3. Localisation
        Set Locale → Language → ja
        Set Locale → Country → JP
        Set Timezone → Area → Japan
        Set Keyboard → Japan + Japanese(OADG109A)
        Set WiFi Country → JP
    2. コンソールの文字化け対処
      コマンドで起動できる日本語コンソール環境。毎回起動しなきゃならないのがアレだが。
      > sudo apt-get install jfbterm
              
    3. Xの文字化けに対する対処
      jfbtermを入れた時点で文字化けそのものには対処出来ているが、フォントがアレなので。Xを使う予定がないならスキップスキップ。
      > sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese*
              
  4. ネットワーク設定編(2)
    アドホック用の設定を行い固定IPを割り当てる。
    ※wlan1用のUSB-Wifiを接続して始める。
    > sudo vi /etc/network/interfaces
        
    allow-hotplug wlan1
    iface wlan1 net static
     address 192.168.1.118
     netmask 255.255.255.0
     wireless-channel 2
     wireless-mode ad-hoc
     wireless-essid [SSID]
     wireless-key [key]
        
  5. FTPサーバー
    sambaもいいけど速度的にアレなので、古き良きFTP。
    1. インストール
      > sudo apt-get install vsftpd
              
    2. 設定
      > sudo vi /etc/vsftpd.conf
              
      以下2項目をそれぞれ探して、行頭のコメントアウトを削除。
      #write_enable=YES
      #local_umask=022
              

2016年7月21日木曜日

RPiのSDをバックアップして別のSDに書き込む

せっかく作ったSDなのでバックアップしたい。
バックアップしたものは書き戻せるか試したい。
書き戻した先の容量に余裕があるならフルに使いたい。

なので以下実施。

■SDカードのバックアップとリストア
MacのDDで出来るかと思ったが、DDで書き戻したら起動はするし大概は動作するけど、hostnameと/etc/hostsがぶっ壊れるという、ワケのわからん状態になったので、Ubuntu-16.04LTSで作業。バックアップ/リストアのやり方そのものはここを参照。
ubuntuでBeagleBone付属SDカードをバックアップ

[バックアップ]
sudo dd if=/dev/sdb bs=8M | gzip -c > RPiZero.img.gz

[リストア]
zcat RPiZero.img.gz | sudo dd of=/dev/sdb bs=8M


■SDカードのサイズに合わせたパーティションのサイズ変更
fdiskコマンドでできるかと思ったけど、拡張領域と論理パーティションに対する操作がわからなかったのでGUIに逃げた。UbuntuにGPartedをインストールしてズルをする。ズルの仕方はここを参考にした。
Manually resizing the SD card using a GUI with GParted

  1. GPartedのインストール
    パーティション操作のGUIツールを入れる
    sudo apt-get install gparted
    


  2. SDをUbuntuで認識 コピーしたSDカードをUbuntuで認識させる。この後の作業のためにアンマウントする。


  3. GPartedの起動
    こんな感じで


  4. SDの表示とパーティションの確認
    最初はUbuntuのシステムが表示されるので、SDの表示に切り替える(緑枠)。

    変更したいのは青枠の論理パーティションなのだが、それを格納する赤枠の拡張領域も広げてやらなければならない。

  5. 拡張領域のサイズ変更 1
    拡張領域をクリックして選択し、メニューから"リサイズ/移動"をクリック。


  6. 拡張領域のサイズ変更 2
    拡張可能なサイズと現在のサイズが表示される。現在の表示を示す箱の右にある右三角をドラッグして広げる。


    広げ終わったら設定を登録する。


  7. 論理パーティションのサイズ変更
    [SDの表示とパーティションの確認]で示した、青枠の/dev/sdb7にも同様のサイズ変更を行う。


  8. サイズ変更の適用
    まだ、SDに対しては何の操作も開始されていないので、登録したサイズ変更の操作を適用する。


    操作が開始されると以下の画面が表示される。


    完了するまでとにかく待つ。


Ubuntuあって良かった。
Macだけでどうこうするとか自分には無理。

今日もお祈りされてしまった…そろそろ真面目にやらんと…