ESP8266・ESP32・RTL8710の比較

Realtek RTL8710 Espresif ESP8266 Espresif ESP32
Package QFN-48 (6×6 mm) QFN-32 (5×5 mm) QFN-48 (6x6 mm)
CPU ARM Cortex M3 @ 166 MHz Tensilica LX106 @ 80 / 160 MHz Tensilica Xtensa Dual-Core LX6 @ 160 / 240Mhz
RAM 48KB available to user 36KB available to user 520 KB
Flash 1MB Built-in 1, 2, 4, 8 or 16 MB up to 64 MBytes
WiFi 802.11n up to 150 Mbps, 802.11g up to 54 Mbps 802.11n up to 65 Mbps, 802.11g up to 54 Mbps 802.11n up to 150 Mbps, 802.11g up to 54 Mbps, 802.11 b/g/n/d/e/i/k/r
Bluetooth None None Bluetooth v4.2 BR/EDR and BLE specification
GPIO Up to 21 Up to 17 Up to 32
I2C Up to 3 Up to 1 Up to 2
PCM Up to 2 None Up to 1
PWM Up to 4 同左 Up to 8
UART 2x high-speed UART, 1x low-speed UART Up to 2x UART Up to 3x UART
Power Voltage: 3.0 to 3.6V; Current: 80 mA 同左 Voltage: 2.2 to 3.6V; Current: 80 mA
Temperature range -40 to 125 °C 同左 同左
Standard certifications FCC/CE/TELEC/SRRC/ WiFi Alliance FCC/CE/TELEC/SRRC FCC/CE/TELEC/KCC
モジュール 技適未通過? ESP-WROOM-02(日本発売中、技適通過済) ESP-WROOM-32(日本未発売、技適通過計画中?)

ESP8266が気になって調べていたら、その後継であるESP32が発売されたので、ライバルとされているRTL8710と比べてみました。 ESP32はWiFiに加えてBluetoothも使えてとても良さそうです。 ESP32を搭載したモジュール、ESP-WROOM-32は技適通過を計画しているとのことなので期待しています。

情報元

Make: Japan | Realtek RTL8710はESP8266の人気を超えるか? An Alternative to ESP8266? Realtek RTL8710 ARM Cortex-M3 WiFi IoT Modules Sell for $2 and Up https://espressif.com/en/products/hardware/esp32/overview https://espressif.com/sites/default/files/documentation/esp32_datasheet_en_0.pdf https://espressif.com/sites/default/files/documentation/esp_wroom_32_datasheet_en.pdf

低温調理器としてのヨーグルティアについて

低温調理には以前から興味があったのですが、どう始めればいいかよく分からなかったのですが、以下の記事を見つけました。

portal.nifty.com

ヨーグルトメーカー「ヨーグルティア」が、温度を最高65度まで保つことが出来、低温調理に適している!これは良さそうだと思い購入しました。ヨーグルティアが届いてからしばらく低温調理に使ってみて、気がついたことを書きます。

加温について

ヨーグルティア公式サイトには、設定温度の性能として「25℃~65℃ ±10%」と書かれています。±10%というのはかなり大きな値で、例えば65度に設定した鶏むね肉が71度まで加温調理されてしまうと間違いなくパサパサになってしまうでしょう。

そこで自宅のヨーグルティアの内部温度を計測して、設定温度に対してどの程度差があるのか調べてみました。ヨーグルティアの容器に水を1リットル入れ、設定温度を低温調理で使用することが多そうな60度と65度に設定した場合を計測しました。

f:id:migimigi:20150905183624p:plain

f:id:migimigi:20150905183633p:plain

どちらも設定温度に達するまでには3時間以上かかっています。これはヨーグルティアのヒーターの出力が弱いことが原因でしょう。低温調理の専用機器であるAnovaは800Wのヒーター出力でパワフルですが、ヨーグルティアの出力は25Wです。このことは食中毒菌が繁殖しやすい20度から50度の温度帯をゆっくり通過させることに繋がります。ヨーグルティアで低温調理をする際には、60度程度のお湯を入れて調理開始するのが良さそうです。

保温について

内部の温度は一旦設定温度に達してしまえば±1度ほどを保っています。設定温度に達してからの様子を詳しく見てみます。

f:id:migimigi:20150905183628p:plain

f:id:migimigi:20150905183639p:plain

青線が測定値、黒線が移動平均を取った値です。区間は周期的な変化ができるだけ消えるような値を選びました。平均温度は設定温度から+1度未満とかなり正確です。短時間の変動は気にしなくていいのか?と思うかもしれませんが、オライリーの「Cooking for Geeks」にはこうあるので大丈夫ではないかと思っています。

 本当に大事なのは、正確に温度をコントロールすることなんだ。長時間にわたる正確性が重要だ。何日もかけて肉を調理するとき、ゆっくりと温度が変動してしまって調理しすぎになってほしくないからね。でも、短時間の揺らぎは肉の一番外側にしか影響が及ばないから全然重要じゃない。華氏で1度か2度のふらつきがあっても、平均温度が一定ならば全然問題ないんだ。

 ちなみにAnovaは設定温度からの変動が0.01度に収まるそうです、凄い。

Specifications - Anova Culinary

実際は0.5度ほどあるようですが、ヨーグルティアよりは格段に高性能です。

低温調理器を使った - パル

設定温度について

低温調理でどの温度なら安全か、というのはとても重要です。間違えれば食中毒菌を増やすだけです。よく聞くのが63度30分の加熱です。この温度についてまとめられた記事があるので参考になります。

低温調理の「合法」な温度とは何ぞや? - 発声練習

しかし、食材によっては63度では火が通りすぎてしまうようです。例えば鶏胸肉ではパサパサになってしまいます。そこで63度より低温、かつ30分より長時間加熱することで美味しく安全に鶏胸肉を調理することを調べてみます。

鶏肉の食中毒で有名なのはカンピロバクターです。カンピロバクターは65度で死滅することが知られていますが、時間をかければもう少し低い温度でも死滅するとのことです。

f:id:migimigi:20150906012004p:plain

くらしの健康(第7号)

他にも様々な食中毒の原因となる菌が存在しますが、先ほどの「Cooking for Geeks」では「食品を2時間以内に58度以上の温度にして、パスチャライズ(細菌の数を減らす)されるだけの時間、その温度に保っておくこと」という規則が示されています。鶏胸肉では内部温度を60度30分を保つようにとあったので、私は60度設定で2-3時間ほど低温調理しています。しっとりとして、とても美味しく出来上がります。

以上ですが、人に振る舞うのはちょっと怖いので自分だけで食べています。

CloudCore VPSのリモートコンソールでコロン等の記号が入らない場合

OSSはアルミニウムの翼で飛ぶ: CloudCore VPS に CentOS6を導入を参考にして、CloudCore VPSのリモートコンソール機能を利用しCentOS6をインストールしようとしたのですが、使っているPCが英語キーボードだからかどうしても入力できない記号がありました。
いろいろ試していくうちにGoogle Chromeのコンソールを開き、そこのJavaScriptプロンプトから

rfb.sendkey(58) //コロン

などと入力し実行すると、無事記号を入力することが出来ました。
リモートコンソール機能はnoVNCを使用していて、その中のinput.jsを見るとキーコードとの対応表が分かります。
あとキーボードの設定をjp106にしないと記号が入りません。

Windows環境でghc-modを使う

今までイマイチ上手く行かずWindows上でghc-modが使えなかったのですが、
今回うまくいったのでその手順をメモしておきます。
Windows で ghc-mod の導入 - C++でゲームプログラミングのサイトを参考にしました。
予めインストールしておくもの

  • Haskell Platform
  • haskell-mode
  • ActivePerl(ビルドで必要なため)

インストール先に書きこむのに必要な権限を得るため、
コマンドプロンプトを管理者権限で起動し以下のコマンドを入力。

  1. cabal update
  2. cabal install happy --global
  3. cabal install ghc-mod --global

init.elに

(setq exec-path (cons "C:\\Program Files (x86)\\Haskell\\bin" exec-path))
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))

を追記する。

Excel列名変換問題をHaskellでやってみた

Excel列名変換問題で第2回社内プログラミングコンテストを開催してみた(前編) - give IT a tryを今勉強中のHaskellでやってみました。

import System.Environment
import Data.Char

main :: IO ()
main =  do (x:y:_) <- getArgs
           case read x of
             0 -> putStrLn . show . str2int $ y
             1 -> putStrLn . int2str . read $ y
           
str2int   :: String -> Int
str2int s =  sum [(ord c - 64) * 26 ^ i | (c, i) <- zip (reverse s) [0..]]

int2str   :: Int -> String
int2str n = case (n `mod` 26, n `div` 26) of
              (0, 0) -> []
              (0, q) -> int2str (q-1) ++ [chr (26 + 64)]
              (r, q) -> int2str q ++ [chr (r + 64)]

第2回 スタートHaskellに参加してきた。

第2回 スタートHaskell : ATNDに初めて参加してきました。

宿題の答え合わせ

まず最初は前回の課題の答え合わせからスタート。
正直数学の問題として難しかった…
今回から数学的な要素は減るそうです。

各章の発表

今回は5・6・7章の発表がありました。
家で教科書の練習問題を進める途中や、発表で気がついたのですが

factorial 0        = 1
factorial (n + 1) = (n + 1) * factorial n

のようなn + kパターンは現在廃止されているためエラーとなりました。

factorial 0 = 1
factorial n = n * factorial (n - 1)

というような形に書き換える必要があります。

演習

演習問題の提示の後、答え合わせという流れ。
6人ほどのグループに分かれていたのでちょっと質問とかが出来てよかったです。

最初はちょっと不安だったのですがとっても楽しかったです!
懇親会にも参加しました、ありがとうございました!
あとはこのテンションを持続していかなきゃ…

WindowsでHaskell環境EclipseFPをインストールしてみる

前からHaskellに興味はあったのですが、いまいち踏ん切りがつかなかったので

プログラミングHaskell

プログラミングHaskell

を買ってやってみることにしました。
とりあえず始めるまで

  1. Eclipseをインストール
  2. Haskell Platformをインストール Haskellコンパイラとその他もろもろが入ったパッケージのようです
  3. EclipseFPEclipseにインストール http://eclipsefp.sf.net/updatesEclipseプラグインインストールURLにすればOK

で大丈夫ははずなのですがEclipseFPをインストールして再起動するとdouble-conversionがどうこうとエラーが出ました。
そこでエラーメッセージでぐぐってみるとEclipseFPのFAQにそのものずばりが

Q: I'm on Windows and/or the error is more like Loading package double-conversion-0.2.0.0 ... can't load .so/.DLL for: stdc++ (addDLL: could not load DLL) ghc.exe: stdc++: The specified module could not be found..

A: Try the workaround outlined here:
cabal install blaze-textual --user -fnative --reinstall
cabal install aeson --user --reinstall
Then, restart Eclipse to force scion-browser to be rebuilt.
http://eclipsefp.github.com/faq.html

ということでコマンドライン
cabal install blaze-textual --user -fnative --reinstall
cabal install aeson --user --reinstall
を実行後、Eclipseを再起動するとインストールは終わるものの
JP Moresmau's Programming Blog: Hoogle Command Line on Windowsによると今度はhoogleというのが必要なようです。
なのでcabal install hoogleを実行し、さらにhoogleが必要とする

を持ってきてパスの通る箇所に置く必要があります。
それでようやくインストールが完了ですが、疲れました。
しかもうまく動かない、もしかしてEclipseFPじゃないほうが良かったのか。
またあとで調べよう。