実用品第1号をデジタル温湿度計付き時計にすべく目標を定め、時計モジュール、時刻ズレ補正でネット接続する為にWifiモジュール、いろいろ作ってみたいものもあってモニタは入用になると想定されることもあり、表示画面選定の為、LCD 16x2 5V HD44780 1602(ブルーブラックライト)、0.91インチOLED/LCD 128X32 IIC/I2C(ドライバ:SSD1306・フォント:白)、0.96インチOLED/LCD 128X64 IIC/I2C/SPI(ドライバ:SSD1306・フォント:青・黃)、Pro Miniを使うことを想定し、ストックとしてPro Mini 5Vを追加、ついでにDCケーブル付き9V電池ボックス A54、ピンヘッダー雄(単一40ピン・10個入り)で2033円。
到着予定は、注文時04/24、Amazon的表記では04/12〜05/07の間予定ですが、入金(コンビニ払い)は明日か明後日あたりにする予定(04/12入金済み)なので単純計算で1〜2日プラス。
初購入から2回の追加発注に続き、今回でHiLetgoに4回めの発注、前回までに買ったのは、Arduino互換Uno、Arduino UNO R3互換機(ATMEGA16U2開発ボード)、Pro Mini、FTDIシリアルUSB変換モジュール(FTDI232用FT232RL互換のFTD1232)、イーサネットシールドW5100、テスターLCR-T4、赤外線リモコンモジュールキット、赤外線LED&受信管、400穴ブレッドボード、ミニブレッドボード、ベークライトPCBユニバーサルボード(10枚入り)、ジャンパワイヤ(オス-オス/メス-オス/メス-メス)、DC-DC昇圧モジュール(XL6009)、DC-DC降圧モジュール(LM2596)、カーボン抵抗20種20個=400個、金属皮膜抵抗41種20個=820個、LED3mm/全5色、タクトスイッチ、コンデンサ各種、トランジスタ各種、人感センサーHC-SR501、超音波センサーHY-SRF05、37センサーキット、ステッピングモーター&ULN2003ドライバボード、DCモーター140型(5個入り)、1.8インチTFT液晶(ドライバ:ST7735R/インタフェース:SPI)、CR2032電池ケース(5個入り)、100ftカプトンテープの30点。
到着都度レビュー。
つい、うっかり、近所のホームセンターで見つけてしまい、通販より割高なのを承知で購入したケーブル出しの9V/006P用バッテリスナップ160円とスナップ接続電池ボックス(単3x4)250円(何れも税抜き)。
電池が新品なら1.5Vx4=6Vあり、白色LEDもOKなので点灯を以って正常に使えることを確認
入金翌日から7日で到着、早い。。。徐々に早くなっています。。。国際郵便だから、これくらいが限界でしょうけどね、それにしても前回購入品のレビューがもうすぐメドがつく。。。というタイミングでの到着。
今回は裏面がプチプチ袋になった封筒で届きました。
商品は全て更にプチプチ袋に入っており、その中身は、以下でこんな感じ。
1.8インチ 128x160が既に届いていたこともあり、わかっていたこととは言え、実物を手にしてみると0.91インチ 128x32、0.96インチ 128x64の液晶小っさ。。。16x2の1602の大きさが際立つ。。。
手持ちのPro Miniは時計もしくは鳥避けに使おうと思い、(実際には後者に使ったので)検証、在庫用に265円のPro Mini互換機を追加購入。
目視チェックの上、手持ちのFTDI232/FT232RL互換FTD1232シリアルUSB変換モジュールとArduino互換機 Pro Miniを接続、電源投入、デフォルトのボード上のLチカを以って動作確認としました。
RTC時計モジュールZS-042 DS3231 AT24C32 IIC、1個200円。
アラーム設定もできたり、EEPROMがあったり、温度検知センサーも入っているようで温度表示もでき、リチウムイオンボタン電池LIR2032で電源OFF時も時刻を保持、手を加えればCR2032を使うことができるようにもなる模様。
基本機能だけなら4本ピンをつなぐだけ。
スケッチは、adafruit RTClibを使わせて頂きました。
VCCを5V、GND、SCL、SDAもそれぞれArduinoに接続、今回SCL/SDAピンのあるUNOで検証しましたが、これらピンがないUNOの場合、A5/A4ピンで代用できるはず。
RTCLib by Adafruitのds3231と接続をそのまま使わせて頂き、シリアルモニタで日付時刻取得できていることを以って動作確認完了。
Wi-Fiモジュール ESP8266 UART、1個278円。
Sending Data From an Arduino to the ESP8266 via Serialを参考にさせて頂き、通信中、"Hi!"というメッセージがシリアルモニタ上に表示される部分はそのままに、ESPlorer IDEやFTDIシリアルUSB変換モジュールを使ってLEDを点灯させている部分を、シンプルにUNOのスケッチに取り込み・編集をArduino IDEに代えて実行。
通信中、LEDが点灯、連続的に通信している(Hi!と送り続けている)ため、点滅状態。
これらを以って動作確認完了。
時計を作るにあたって時計や温湿度表示、LEDの選定まではできたのでNTPのためにWifi。。。と思って改めて見なおしてみたら、当初、動作確認した内容は、通電・導通だけでしたね...。
とは言え、今時点、まだ、Wifi機能は試していませんが、ESP8266のBlinkをアップロード、実行してみました。
と言うのもスケッチのアップロードに手間がかかるなんて思いもしなかったからでしたが、そのトリッキーさに、かなりハマりました。
途中、気分転換に有線LANのW5100シールドでの検証もしてみたら、イーサネットシールドとArduinoの組み合わせにおけるイーサネットシールド側のリセット問題にハマったり、対策を講じてもスケッチの書き方なのか、シールド類との組み合わせ上なのか、リセットせずに済む時とそうでない時があったりと、いろいろで時間も結構費やしました。
ESP8266については、まずは、ボードを登録する必要があり、Arduino IDE 1.6.5辺り?からは[環境設定]に[追加のボードマネージャのURL:]欄に当該ボード用のjsonファイルを指定(複数指定可)後、[ツール]メニューから[ボードマネージャ]を選択。。。という手順でボードを追加、その後、ESP8266の場合、[Generic ESP8266]を選択、esp8266/ArduinoなどESP8266用のライブラリを適切なディレクトリに追加、Arduino IDEを再起動するなりして[ファイル] > [スケッチ例]からESP8266関連のスケッチを選択するという具合ですが、これはまだ序の口。
尚、この時、自身はDebian(Linux)上で開発しており、DebianのStable版標準リポジトリには、Arduino IDEは、バージョン1.0.6しかなく、これを使って{ARDUINO}/hardware/arduino/boards.txtに追記する格好で一応ESP8266も登録はできたのですが、ボードマネージャもなく、情報を得るにしても、より新しい方が、できれば最新版の方が、得られた情報を利用する段階で錯綜・混乱・混線することも少ないはずで何かとよいよなと別マシンのFedoraを確認、Arduino IDE 1.6.5だか1.6.4だかがあり、一度はそれでやってみました。
一方でArduino IDEのダウンロード版は複数バージョンを使い分けできるという情報もあったので、もしかしてと思って試しに本家からダウンロード版をダウンロードしてみたら、展開しただけでホームディレクトリ上で完結した環境を構築、最新らしき1.8.2に(ディレクトリに移動すれば、実行ファイルarduinoを実行)できたので、やはり、メインマシンのDebianで開発することにし、ボードマネージャでESP8266を追加。
ESP8266用のスケッチさえアップロードすれば、機能しそうなもんですが、そのまま、アップロードすると[warning: espcomm_sync failed]、[error: espcomm_open failed]、[error: espcomm_upload_mem failed]などとエラーになって一向に書き込み(アップロード)できない。。。
やっぱり、随所に書いてあった通り、タクトボタンが2つついた回路が必要なんだろうな。。。
というわけで、そうした情報に絞って当たってみると超小型Wifiモジュールであり、各種Arduinoと同様に、Arduinoなしでスケッチを書き込み、実行させることができる優れものな中国企業が開発したESPシリーズには様々あってFTDIシリアルUSB変換モジュールを使う必要がないものや、これを使うにしてもボード上にリセットボタンが付いているものは、まだ楽で良いですが、今回買った、このESP8266モジュールのように、リセットボタンがないタイプだとESP+FTDIシリアルUSB変換モジュールを使ってスケッチをアップロードするためには、まず、とりあえずは、ブレッドボード上でも良いので2つのボタン付きの簡易回路を作る必要がありました。
その回路も言語圏関わらず、読み漁ってみても文章だけだったり、配線図が違ったりで、どれが正しいのかさえわかりにくい状況にあり、試行錯誤してみてももどうにもアップロードできない。。。そうこうしつつ、更に検索しまくった結果、配線図もあったTopic: Need help with ESP8266 ESP-01/forum.arduino.ccにたどり着き、配線もそのままに、質疑応答を読んでやってみたら、ようやくスケッチのアップロードをできるに至りました。。。
それまでは、『リセットボタン』と『GPIO0をLOWにするボタン』のある回路を作って、スケッチをアップロードする際には、「両方のボタンを同時に押して」、「『リセットボタン』を離してちょっとしてから」、「『GPIO0をLOWにするボタン』を離す」なんてトリッキーなことを、まるで極々当たり前のことのように言われても、できてみれば、ああ、なるほど、そういうことね・・・とわかることも、できない内は、へ?何言ってるの!?状態。
アップロード済みのスケッチでリセットしたい時には、各種Arduninoや各種シールド同様、ESP8266のRSTをつないだ方の『リセットボタン』のみ押す。。。という点は唯一わかりやすかったですけどね。
手持ちのFTDI232系のシリアルUSB変換モジュールには、DTR、RTSのピンホールがあり、他の配線に加え、ブレッドボード上にFTDIモジュールを載せてESP-01のGPIO0/RSTからジャンパワイヤでDTR/RTSのピンホールに挿すだけで微妙な手動スイッチ押下をする必要がなくなることを今更ながら確認...。
尚、アップロード中には、Blinkのスケッチ通り、ESP8266ボード上のLEDが点滅しますが、書き込みが終了状態になると『closing bootloader...』と表示され、Blinkの場合、点滅もしなくなり、『リセットボタン』を押すと点滅が開始するわけではなく、押した時だけボード上の青いLEDが光るという状態になります。(ESP8266+ボタン付き簡易回路+Blinkの場合、これが正常?それとも、やはり、リセット押したら点滅するのが正常? => 点滅するのが正常、点滅しなかったのは、他のスケッチをアップロードしてしまったからだった模様。)
ちなみにタクトスイッチも導通はクロス方向だけなのかと思い込んでいてブレッドボード上で配線してみても、どうにもボタン押しにくいなと思っていたら、クロスでなくても導通するんだなんてことも、リンク先の配線図を見て初めて知りました。。。
自身は、今のところ、実装にはPro Miniを使っており、Pro MiniはUSBポートがない為、FTDI必須で1つ持っていた(実装時にUSBポートを要するものは別としてそうでないものは、USBポート付きのNanoより安価なPro Miniが賢明だと思っている)のですが、このESPモジュールも扱い方さえわかってしまえば安価で小さくて使い勝手もよいので追加でFTDIモジュール(FTDI232/FT232RL互換FTD1232など)を買ってボタン付きの専用回路を用意しておこうかと。
このままブレッドボード&ジャンパワイヤでも良いのは良いですが、かなり、かさばるのでピンヘッダーも買わないといけないし、初挑戦ではありますが、ユニバーサル基板にFTDIモジュール含め、ハンダ付けしてメスのピンヘッダー出しにしておいた方がよさそうですね。
前述の通り、FTDI系のシリアルUSB変換モジュールのDTR/RTSに接続すれば、自動アップロードできる為、そうしたFTDIモジュールがあれば、ボタン付き回路は不要ということで...。
ところでスケッチのアップロードについては、USBは最大500mA許容するので、たいていの場合、3.3Vをパソコン〜FTDIなどのUSBシリアル変換モジュール(3.3V専用か、3.3V/5V両対応ならジャンパピンなどで3.3Vに切り替え)からとっても書き込みできますが、USBハブ(特にバスパワータイプ)を介す場合、稼働中の他の接続機器との兼ね合いによっては、厳しいこともあるかも。
そんな時は、他の稼働機器を止めるか、入力電圧となる3.3Vは、FTDIモジュール経由のPCからではなく、安定した電流を流すことができる別電源(例:ブレッドボード用電源モジュール+ACアダプタ)を用意するとよいでしょう。
また、CP2102やFTDIモジュールではなく、代わりにArduinoボードのRX/TX(ハードウェアシリアル/ソフトウェアシリアル不問)にESP8266のRX/TXを接続...というケースでArduinoボードが3.3V版ではなく、5V版である場合には、ArduinoのRX/TXからESP8266のRX/TXに、ArduinoをWiFi接続するためにESP8266を使う場合には、出力ピンの電圧が5Vと高いArduinoのTX〜3.3VのESP8266のRX間には、5V => 3.3Vのレベル変換モジュールが必要(5V <==> 3.3Vの双方向シフトレベル変換モジュールでも良いですが、このケースでは、そこまでする必要はないと思われる)。
一方、検証、運用時、ESP8266EX Datasheetによれば、平均操作電流80mAとあるものの、瞬間的含め、300mAを超えるという情報も多々あり、電流不足になると動作不安定でWiFiが途切れるということもある為、安定稼働のためには、単独電源かつ5Vから降圧、この際、より短時間で通常電圧に戻る負荷過渡応答特性に優れた電圧レギュレータを使う必要がありそうです。
今度は、Wifiを試してみようとESP8266サンプルスケッチをいくつかアップロードしては失敗してみたりしつつ、WifiScanを書き込むことができたようでシリアルモニタ上に流れ行く文字たちを追っかけてみると周辺の2.4GHz帯のアクセスポイント一覧も表示されていました。
確かアクセスポイントとしているWiFiルータはステルスモードにしているからかシリアルモニタ上の一覧には表示されませんでしたが、一方、なぜかパスフレーズが長すぎる旨のメッセージも表示されるものの、サンプルスケッチWifiScanにSSIDやパスフレーズを設定する行はなく、なぜ?状態。
それもあって、その後、ほかのサンプルスケッチであるWifiClientBasicをアップロードしてみようとすると、なぜか何をやってもエラーになって以後、全く書き込むことができなくなりました。
自作簡易回路のボタンを押す・離すタイミングを変えてみたり、押し続けてみたりしてもダメ、Arduino IDEの別バージョンをインストールしていろいろ(1.0.6/1.8.0/1.8.2)やってみてもダメ、違うPC(デスクトップPCやノートPC)や違うOS(DebianやFedora)を使ってみてもダメ、FTDIの代わりにArduino Unoを使ってみてもダメ、数回やってみたものの、一から配線をやり直してみてもダメなのでUSBケーブル含め、ESP8266モジュール以外の周辺環境に起因する問題ではないように見受けられますが。。。
ちなみに安定した電流が足りない可能性を考慮するとArduinoボードのDC、もしくは5Vからプルダウン、または、3.3Vから、また、3.3V(または3.3V/5V対応で3.3Vにジャンパした)FTDIのVCCを直接電源としてESPに接続するのは、避けた方が良く、別電源を用意した方がよいようなので、この検証では、一貫して安定化電源としてSOTEC e-oneの電源を取り出したものを12Vか5Vをデジタル表示器付きDC-DC降圧モジュール(LM2596)で3.3Vに落としつつ、まだ直流安定化電源として体を成していないことやモジュール付属のデジタル計は正確ではないこと、高いと300mA超となる電流値も測定したいことなどからマルチメータも併用して電圧・電流を確認しながら、これらを使っています。
そうこうしている内にIDEのメッセージ表示窓を見る限りでは、見た目上、「書き込みが完了しました」と表示されるようにはなったのですが、ちょっと時間がかかり過ぎる点とIDEの[環境設定]の[より詳細な情報を表示する]で[コンパイル]、[書き込み]の両方のチェックボックスにチェック済みであるにも関わらず、それまでのようにオレンジ?茶色?の[closing bootloader...]などの一連の表示が一切なくなった点、実行してみようと簡易回路のリセットボタンを押してシリアルモニタを開く(順番は逆でも同じ)と文字化けした状態の表示がサーッと流れ、CPU消費量がみるみる上昇、あっという間に100%になり、当然ですが、放置しておくとPC操作自体できない状態になるという3点の不可解な状態に。
尚、何度かやってCPUが急速に消耗される限られた時間内にシリアルモニタの改行コードや速度を一通り変更してみても文字化けは改善されませんでした。
PCを再起動して以降だったか、その後は、また、何をやっても書き込みに失敗するようになりました。
途中、通電しながら、GNDにつなぐところを、挿す穴を見間違えてブレッドボード上のVCCラインにつないでしまった自覚もあり、曖昧ながらもできなくなったのはそれからか?と考えるとPower LEDも青いLEDも点灯、書き込み時は点滅もしていたものの、今は赤いPower LEDのみ点灯するのみ。。。WiFiモジュールが壊れた可能性が高そう?かなと。。。
手持ちのWiFiモジュールがほかにないため、入手するまでは、検証も、そして時計作りも見送りか。。。それともほかにも、まだ、試してみるべきことがあってデバイスを替えることなく、状況が好転するケースもあるのか?
というか、2年ほど前の記事のようですが、ESP8266-01 using Arduino IDEによるとYouTubeを含めネット上にはESP8266の情報が、たくさんあるけど、間違いだらけらしく。。。そこでは、レギュレータで3.3Vに降圧させるだけでなく、電流値を安定させる為のパスコンと思われるコンデンサも入れてたりしてますね。
ちなみにESP8266も通電中は、大丈夫なのか?と思うほど相当熱くなるけど、LCD1602のところで後述のようにイーサネットシールドW5100のWIZnet ICも、ましてPCに挿すUSB接続のWifiドングルBUFFALO WLI-UC-GNM2なんかも熱くなるから、そこそこ電流値が高いものは、これくらいは当たり前なんでしょうね。
何れにしてもESP8266からは離れて脳内冷却期間に突入。。。
と言いつつ、手持ちのものには、CTSとDTRピン(ホール)があるもESP8266が壊れたようで何をしてもこれにアクセスできない為、未確認もFTDI Basic Breakout - 3.3V by sparkfunによるとFTDIシリアルUSB変換モジュールには、RTS、CTSやDTRピン(ホール)があるものがあって、DTRピンがある場合、RESETピンのあるAruduinoボードで、これを使えば、Aruduinoボードのリセットボタンを押す必要がなくなる(自動リセットしてくれる)らしい。。。が、ESP8266も該当するのかについては不明、仮に該当するとしてもGPIO0は?という疑問が。。。
前述の通り、ESP-01のGPIO0/RSTと手持ちのFTDI232系のシリアルUSB変換モジュールのDTR/RTSのピンホールを接続すれば、自動アップロード可能であることを今更ながら確認...。
ん?買ったばかりでBlinkが機能することは確認済みのもの含め、3つのPro Mini互換機に手持ちの唯一のFTDIシリアルUSB変換モジュール経由でオリジナルスケッチを書き込もうとしたら1つだけ成功、2つは失敗、というか失敗、成功、失敗のようにある時点を境に失敗し続けているわけではない状況で書き込めたものも、とても不思議なことにマイナス電源でしか電源が入らない模様。。。WiFiモジュールではなく、なのか、併せてなのか、ミニUSB-USB Aケーブル、FTDIモジュールが/も壊れてるのかも。。。
今日時点、未発注で、どれが原因か不明なので、USBケーブル含め、これら3点は、新しい物を買って再検証してみるつもりです。
HiLetgoにESP8266(ESP-01?型番不明の前回と同一品)とESP-12F、FTDIモジュール各種4個含め、追加発注したので届き次第(約2週間予定)、再検証したいと思います。
100円ショップSeriaでMini USB-USB Aリールケーブルを2個買ってきました。
一昨日、WifiモジュールやFTDIモジュールも、それぞれ複数個届き、検証中。
まず、Pro Miniの件に関しては、原因はFTDIモジュールでもMini USB-USB Aリールケーブルでもなく、いろいろやっている内にPro Miniのbootloaderを消してしまったようでPro Miniにブートローダを書き込むことでスケッチもアップできるようになりました。
ちなみに現時点で4個中1個は、Pro Mini自体が壊れているのか、何度やってみてもブートローダの書き込みに失敗しますが、他の3個は成功しました。
当初、FTDI経由ではうまくいかず、Arduino as ISPスケッチを書き込んだUNOで挑戦、Unoのマイコンを外してみたりもしましたが、うまくいきませんでした。
オシレータが...という情報が結構あるも、少なくともArduino IDE 1.0.5/1.6.5/1.8.0/1.8.2には、内蔵オシレータと外部オシレータを選択できる項目もなく、やはり、外部オシレータなるものがないとダメなのかな。。。と思っていたら、簡単!ATmega328Pにブートローダを書きこむ(第2弾)後段の『それなら、外部オシレータを使わないで書き込むには・・・』に続いて[{ARDUINO}/hardware/arduino/avr/platform.txt]のFuse設定をErase時点ではなく、ブートローダ書き込み後に行なうという修正を行なうことで外部オシレータなしでもArduino as ISPを使えるとのことで、そのままやらせて頂いたら、確かにできるようになりました(感謝)。
ただ、中華製互換機だからなのか?Arduino IDEから[ツール] => [ブートローダを書き込む]を実行すると[avrdude. Invalid device signature]というエラーと、なんなら[-F]コマンドで強制無視してご覧と表示された為、How To Update the Bootloader on Arduino Pro Mini 328の[avrdude -P /dev/ttyS0 -c stk500v2 -p m328p]を参考にttyをIDEのツールメニューを参考にするなりして実際のシリアルポートとし、IDEから実行した際のログを見るとstk500はv1だったのでstk500v1として、-Fオプションを追加して実行することでブートローダの書き込みに成功。
尚、Pro Miniのブートローダの書き込みに関しては、実行前にリセットボタンを押す必要はないようでした。(って当たり前か、ブートローダがない段階ではアクセスできないわけだから。。。)
配線は、google画像検索結果を参照、ISPとするUnoのD10をPro MiniのRST、UnoとPro Mini相互にD11/D12/D13、Unoの5V/GNDをPro MiniのVCC/GNDに接続、更にUsing an Arduino as an AVR ISP (In-System Programmer)にあるようにUno上でRESETとGND間に10μFのコンデンサを追加。
ただ、この際、HiLetgoで買ったミニブレッドボードを使ったのですが、少し反りがあるのか、稀にPro Miniやジャンパワイヤのピンを抑えたりしつつ、上手くやらないと配線が正しくてもPro MiniのLEDが点灯していてもエラーになることがありました。
その後、ブートローダの書き込みに成功したPro MiniをFTDI互換モジュールに接続、スケッチをアップしてみたら、スケッチも書き込むことができるようになりました。
ちなみに上手くいった3個のPro MiniにはBlinkをアップしてみましたが、内1個は、Lチカはするものの、リセットボタンを上にして中央下側にあるPowerらしきLEDがなぜか点灯していない。。。のは激安品のご愛嬌かな。
一方、ESP8266の方ですが、Pro Miniの一件でFTDI互換モジュールとUSBケーブルは問題なさ気も、それぞれ新しい方を使って12Fと併せて買った前回と同一品のESP8266で簡易回路を作って1回試してみましたが、うまくアップできない。。。何か間違えたか?
と思ったら、案の定、間違えてました、3.3V/5V対応FTDI互換モジュールのジャンパピンを5Vから3.3Vにするのを忘れてました。
これを3.3Vとすることで前述の書き込みに(未確認も体感的には3〜5分くらい)時間はかかり、詳細が表示されませんが、「書き込みが完了しました」となる状況にはなりました。
が、Blinkをアップしたのに点滅はしません。。。というか、青いLEDが仄かな明るさで慌ただしく点滅はしていますが、Blinkのそれとは違う感じ、実は、書き込めていない模様。
念の為、前回買ったESP8266も改めて試してみましたが、書き込み時にエラーになるので、やはり、壊れたかな。。。
あら、、、更に間違い...、安定化電源じゃなくてFTDI互換モジュールのVCC/GNDをつないだら、アップ中、ESP8266の青いLEDも素早く点滅、Arduino IDE上でも[closing bootloader]も表示され、適度な短時間で『ボードへの書き込みが完了しました』となり、USBを挿抜し直すなり、再配線するなりESP8266への電源を入れなおしたら青いLEDのほどよい点滅によるLチカもできました。。。
UnoとESP8266をつないだ場合の話を混同してFTDIを使う場合でも入力電源は常に安定化電源につないでいたのが間違いだったか。。。
ちなみに前回買ったESP8266も試してみましたが、やっぱり、ダメなので、これについては故障確定と言えそう。
というわけで、ようやくWifi及び時計の検証に戻れます。。。長かった。。。
早速、Arduino IDEサンプルスケッチNTPClientでWPA2 SSID/psk(暗号化パスフレーズ)のみ編集してアップしてみると、あっさり、ステルス設定した自宅内のアクセスポイントに接続、シリアルモニタ上に1900/01/01からの経過秒数、Unix Time、UTC Timeが表示されました。
何かと使うであろうLCDの内、450円の0.91インチLCD 128桁x32行表示で白いフォントの横長LCDでIIC、I2C対応 3.3/5V。
LCDのI2Cでは?、SDA、SCLピンを使う必要があります。
というわけで0.91インチLCD 128x32 SSD1306 LCDでは、モジュールの表記通りに4つのピンをArduinoに接続、Adafruit_SSD1306とAdafruit-GFX-Libraryをダウンロード、スケッチのあるlibrariesディレクトリ内に展開、スケッチssd1306_128x32_i2cをアップロードすることで動作確認できました。
他にもU8glibライブラリというものもあって消費メモリが少ないとのことなので試してみましたが、どうやってみてもヘッダファイルが見つからないとかでコンパイルが通らず、さておきます。
続いて420円の0.96インチLCD 128桁x64行表示で青・黃2色フォントのLCDでIIC、I2C、SPI対応。
同じくAdafruitのライブラリの内、ssd1306_128x64_spiを使わせて頂き、動作確認。
尚、モジュール上のピンの印字とスケッチ上のピンが2つ異なるもの(モジュール上のD0、D1とスケッチのOLED_MOSI、OLED_CLK)があり、手探りで配線したところ、D0をOLED_CLK(10ピン)、D1をOLED_MOSI(9ピン)とすることでうまく機能し、画面表示されました。
ただし、スケッチのコンパイルでSSD1306_LCDHEIGHT != 64のチェックにひっかかり通らないものの、Adafruit_SSD1306.hでは定義されており、原因不明なので.ino上のマクロチェックをコメントアウトしたところ、そのまま通ってアップでき、表示上も問題なさそうに見えます(ん?縦長に間延びしてる?)。
何れにしろ表示されたので動作確認としてはOKとします。
[2017/12/10]超音波距離計の表示計にしつつ、写真を撮るのに良きポジションにしようと結構グリップの強いステンレス製洗濯バサミで挟んだら当然のごとく壊れた...断線したようでOLEDが熱くなる...。
ちなみにHY-SRF05を使ってみましたが、単体ではうまくいく、温度に影響を受けるということで温度センサも単体ではうまくいく、この0.96インチOLEDもうまくいく、全部セットにするとなぜか、アナログ入力値にも音速計算結果にもにさして変化はない、他は定数値なのに、演算だけがおかしくなり温度がプラスマイナスに大きく触れるほど誤差が激しくなる...NanoでもPro Miniでも同様ではんだ不良があるのかな?とUnoで試すと、これはこれで、なぜか、温度が10度くらい高くなる...謎の現象に遭遇しつつ、OLEDも壊れて、意気消沈、超音波距離計作るのやめた...。
ところで0.91インチのもこの0.96インチのもOLEDって噂の有機ELディスプレイのことだったんですね。
このくらいのサイズでもよいんだけど透明の有機ELディスプレイ単品でないのかな?と探してみたものの、なさ気。
続いて190円の16桁x2行表示でブルーブラックライトのLCD HD44780 1602A。
はんだ付けせずにピンヘッダで強引にブレッドボードと串刺しにしているからか、5ピンのポテンショメータモジュールをスケッチ上も適切に書いてコントラスト調整できるようにできたものの、四角かクエスチョンマークしか出ない。。。
ジャンパワイヤの配線も何度も見なおしたものの、おかしなところはなさ気も、一応表示されているということで文字表示は課題も動作確認は終了ということで。
あ、LiquidCrystalの各種スケッチを実行、表示できました。。。四角は、表示領域だったんですね(と思ったら正しく表示できた場合、四角は見えないっと)。。。ということは、文字が出なかっただけだったと。。。ポテンショメータで調整していましたが、未ハンダ付けのピンヘッダでブレッドボードとLCDを串刺ししていた関係で接触が微妙だったようで手で抑えたりしていたら表示されました。。。が、バックライトが明るすぎて写真撮れない。。。しかし、ちゃんと動作確認完了。
これで安心してピンヘッダをハンダ付けできます。
無謀にも先日、はんだごてをほぼ初めて使うというのに、まず、やってみたのが、扇風機の基板からの部品取り、今日になって、LCD 1602の16ピンのピンヘッダのはんだ付け。
前回のまま放置しておいたら新品のはんだごてのコテ先が、どうやら酸化したようでコテ先より手元側にははんだがつくもコテ先にはハンダがつかない、温度を上げると玉になる状態になり、ネットで調べて単に軽くヤスリでさするように酸化膜を削ってハンダをクルクルっと付けてみたら300度程度でもコテ先にハンダが付くようになりました。
さて、LCD 1602Aのピンヘッダに挑戦、したはいいですが、芋ハンダになった部分をやり直すべく、部品取り時にも上手く使えなかったはんだごてセットに付属の簡易はんだ吸い取り器、より真空状態にすればよいんだろうとハンダを溶かしつつ、できる限り接近させてシュポッとやったら、ランド上のピンホールの銅箔まで一緒に剥がれた。。。修繕できないものかネット検索すると銅箔テープや専用ペンなどがある模様。
どうせなのでAmazon/HiLetgoやAmazon発送品など他のものもチョイスしながら、Amazon発送の銅箔テープやはんだ吸い取り線も発注。
ヤマト騒動の余波か、Amazon発送品と支払番号が分割され、先発品は初めて日本郵便のプチプチ内装封筒で届いたものの、後発品はこれまでのAmazonとは明らかに違い、支払番号の発行も日をまたぎ、いざ発行され、即支払ってもマーケットプレイス同様、Amazon発送品も「支払い確認から48時間以内発送」の旨あり、発送待ち状態。
そりゃ、なぜ通販かって「その辺の店よりも安いものが送料無料で早く届く」という部分が大きい要素である中、それを売りにして大躍進、ベゾスさんが長者番付や納税者番付に躍り出てきたら、宅配業界だって、おいおいって話になりますよね。
即日届くっていうサービスを当たり前のものとして感覚麻痺していなければ、都心部でも数日かかったって別に不思議はなく、手許に届けてくれる、それが送料無料なら尚更ありがたいっていう話ですから、これは大勢に影響なし。
結果、銅箔テープは後発になり、先発のはんだ吸い取り線が届いたところで銅箔テープを待たずして試しに、はんだ付けをやり直してみることにしたら、銅箔が剥がれた部分はハンダが載らないにしても2度めにしては、結構上手くいきました。
で、Arduino UNOに接続、ジャンパワイヤでつないで電源を入れると。。。バックライトしかつかない。。。ポテンショメータを付けて調整してみるもダメ。。。やはり、銅箔か。。。と半ば諦めたのが04月30日。
でも、自画自賛ながら、かなり上手く、はんだ付けできてるけど、接触かな。。。と思いつつ、ポテンショメータを付けない方法で再挑戦。。。バックライトしかつかない。。。あ!ポテンショメータを付けない場合、V0ピンは、GNDって情報があったはず。。。と何も挿していなかったV0ピンからGNDに配線してみると。。。できました!標準のLiquidCrystalライブラリがことごとく表示されるようになりました。
あと、スケッチには抵抗10Kとありますが、これを入れ忘れたらできました。。。逆にちゃんと入れてみると表示が壊れる。。。と思ったらVDDじゃなくてA(LED Anode)との間に抵抗らしい。。。が10Kだとバックライトが点かない。。。1Kだと確かに抵抗入れないと明るすぎるかという感じで、まぁまぁという印象、抵抗は1Kの間違いっぽい?
銅箔テープ要らなかったか。。。ま、使う日も来るっしょ。。。
いや〜。。。LED A(node)への抵抗はまだしも、V0ピンかー。。。これまで各種シールド、センサー、モジュールなどいろんな検証をして、ひとしきり調べまくった後は、スケッチのコメントや各種宣言行などを見ながら、配線したりすることも増えてきたのですが、そもそも、かなり丁寧に詳細にコメント入れてくれている標準スケッチ、なんでそこわざわざ曖昧に書くかな〜。。。とか、あと、たった一文入れてくれますだけでだいぶ違うのに。。。と思うこともしばしば。。。コメント行もマニュアルじゃないわけで全て書けるはずもなく、期待し過ぎたり、横着しちゃいけないってことですけどね。
あれ?このUNOには今、ネットは使ってないけど外すのが面倒だからイーサネットシールドW5100を装着したまま検証してて、これのピンソケットに挿しているのですが、ふと無意識に触ってみたら、中央にあるW5100の石がかなり熱い!!UNOは全く熱くないけど。。。なんで!?なんで!?目視した限り、おかしそうなところはないように見えるけど、ピン部分かな?何れにしても激安品の洗礼か。。。?HiLetgoに相談中。
ありがたいことに対応早っ。。。!昨日HiLetgoから返信があってコンデンサ、発振器の確認を求められ、併せて写真も添付してということだったのでイーサネットシールドの表裏、コンデンサ、発振器をルーペで拡大したものなど送ったら、今日午前中には返信が来ていてサプライヤに連絡、ピンがショートしている可能性があるから早急に新しいものを再送してくれる( & 返送不要)とのこと。
予定範囲内の14日で到着、早速、確認してみるとスケッチのアップ以前に2〜3本曲がっていたピンを修正、一発でUnoにはめ込み、電源ON。。。ちょっとするとW5100のICが熱い。。。Unoは熱くない。。。2台あるのでほかのUnoでも確認。。。同じ。。。なんで?W5100ってこれが普通?こんなに熱くなって普通っていうのもね。。。輸送中の破損も考えられなくもないけど前回はともかく、今回はそれほどピンも曲がってなかったし。。。
っていうかW5100ってピンが細すぎるんじゃないのかな?極細過ぎて過電流気味になるとかいうことはないのだろうか?と思ったら、オス-メスのジャンパワイヤを使ってICSPの6ピンのみでUnoと接続してもW5100のICだけが熱くなる。。。USB(電源)を抜くとすぐに冷める。。。
まぁ、確かに無線LANドングルでも電流値が高いらしきBUFFALO WLI-UC-GNM2のように、このくらい熱くなるものはあるけど、こんなもんなのかな。。。?
でも、HiLetgoでもサプライヤと話した上で代替品を送ってくれたわけで熱くなるのはおかしいっていう判断したってことだもんね。。。?サプライヤも実装部品についてまではわからないか。。。
ほかでは出てないのか?と思って今更ながら[w5100 ic hot]で検索してみると。。。あれ?結構前から話題になってるっぽい。。。WiznetのICは、ほかのICと比べると相対的に熱め。。。それが標準(仕様)なんじゃない。。。?みたいな話もなくもない。。。ヒートシンクや冷却ファンなどで対策をとるしかないって話か。。。
ちなみに検証時は、全てUSB接続だから電圧は5V。
ネット検索する以前に改めてHiLetgoに確認結果メールを投げてはみたものの、そもそも、こんなもんってことだとしたら、手間ばかりかけさせてしまって申し訳ないな。。。
Arduino用液晶シールド...の『Arduinoから液晶に日本語カタカナを表示する』スケッチを拝借し、別途購入したIIC/I2C/TWI/SPIシリアルモジュールを使ったパターンに編集して半角カタカナ表示できることを確認できました。
あ...、ふと、marcoschwartz/LiquidCrystal_I2Cの[CustomChars]を使わせて頂いたところ、半角カナだけでなく、やはり、半角ながら、[0xA0-0xAF]には、[。]、[「]、[」]、[・]が、また、なぜか、[0xF0-0xFF]の中に「千」「万」「円」という漢字も登録されていることを発見...。
DCプラグ付き9V電池ボックス120円、例えばATmega 328Pの最大6V-16V/推奨7V-12Vに合う適当なアダプタやDCケーブル付きの電池ボックスも持っていない為、Arduino UNOのDCジャック及びVin(ちなみに、最初に買ったUNO互換機では当該位置の印字が5V、イーサネットシールド上は9Vとなっている)機能を確認してみるべく購入。(後で買ったUNO Atmega328P/Atmega16U2の印字はVin。)
ちなみに超長寿でつい先日まで動作していてまだまだいけそうなSOTEC e-oneの電源を安定化電源(マザーボード等々をストック)として生まれ変わらせるべく、解体し、電源単独で3.3V/5V/12V出力は確認済みなので、この12Vを使える状態にはあるものの、やはり、DCプラグやDCケーブルの手持ちがない。
Arduino UNOにDCジャック付き9V/006P電池ボックスを接続、UNOのLED点灯を確認。
2台のUNOでそれぞれVinとGNDに接続し、マルチメータAIMO M320で計測したところ、使用済み9V電池の出力電圧は、7.65V、7.73V程度でした。
一瞬、オスの長いもの、オスメス、アングルも含め購入しようと思いましたが、今回は、一列40ピン雄ピンヘッダ(10個入り110円)のみ、とは言え、今のところ、どうしてもピンヘッダが必要となるというケースはなく、互換機やモジュールに付属のものも使わずに余っていますが、これだけ発注して送料無料というのも憚られるという思いもあって何かあるときに買っておこうと思っただけ。
が、一緒に買ったLCD HD44780 1602Aで早速役に立つことに。買っといてよかった。
40ピン、オス-オス10本ピンヘッダの存在を確認。