投稿

GR-ADZUKIでステッピングモーターを動かす

イメージ
はじめにがじぇるねGR-ADZUKIを使ってステッピングモーターを動かす方法を紹介します。
DCモーターとサーボモーターを動かし方はこちら
ハードの準備以下を使用して動作確認を行いました。
GR-ADZUKI (0.9〜5.5V)ステッピングモーター 28BYJ-48 (5V)ULN2003ドライバボード (5〜12V)リチウムイオンバッテリー (3.7V)ステッピングモーターの電源は、当初GR-ADZUKIボードの電源と別系統にしようかと思っていましたが、モーター1つであればサーボモーター用電源端子からの供給で駆動できたので、単一の電源構成にしました。
電池はリチウムイオンバッテリーを使いましたが、乾電池を使用したり、モバイルバッテリーを使ってUSB端子から供給することもできます。
リチウムイオンバッテリーは3.7Vですが、GR-ADZUKIボードの昇圧回路により、サーボモーター用の電源供給用端子からは5Vが出るようになっています。
以下が回路図です。
電池からの供給の場合、電源端子付近にあるスライドスイッチをVATT側に、USB端子から電源供給したりプログラムの書き換えをする場合はUSB側に倒す必要がありますのでご注意ください。
もう一方のスライドスイッチはSketch側に倒しておきます。
プログラムの作成GR-ADZUKIのプログラムは、IDE for GRを使用してC言語で記述します。
#include <Stepper.h> #define MOTOR_1 (12) // blue #define MOTOR_2 (13) // pink #define MOTOR_3 (11) // yellow #define MOTOR_4 (10) // orange #define MOTOR_STEPS (2048) // ライブラリが想定している配線が異なるので2番、3番を入れ替える Stepper myStepper(MOTOR_STEPS, MOTOR_1, MOTOR_3, MOTOR_2, MOTOR_4); void setup() { myStepper.setSpeed(10); } void loop() { myStepper.step(512); myStepper.step(…

DockerでMQTT通信

イメージ
はじめに異なる機器間の通信を”トピック”と”メッセージ”という抽象化された概念でやり取りできるMQTTはとても便利ですよね。
PythonにもPaho-MQTTという便利なMQTT Clientライブラリがあり、これを使うことで簡単にMQTT通信ができます。
しかし、Pythonを使っていると複数バージョンの環境を構築する必要が生じるなど、何かと環境設定が煩雑になりがちではないでしょうか。こういった環境はDockerのコンテナごとにバージョンや用途を切り分け、ローカル環境を汚さないようにする使い方はわりと一般的ではないかと思います。
MQTT通信を試してみよう!」の記事でパソコンとスマホを使ったMQTT通信の紹介をしましたが、こういった環境をDockerの仮想環境内で閉じておきたい方のために、その実施例を紹介します。
下図の環境を構築し、ローカルエリア内で複数のパソコンおよびスマホ間でMQTT通信を行う方法を説明します。
DockerのインストールDockerをインストールするには以下URLからアカウント作成、インストールを行います。
https://docs.docker.com/install/
Dockerについては、過去の記事も参考にしてください。
GitのインストールMacでは最初からgitが使えるので新たにインストールする必要はありませんが、Windowsでは以下からgitをインストールしておくと便利です。
https://gitforwindows.org/
動作環境以下の環境で動作確認しました。
使用機器OS使用ツールMacmacOS CatalinaDocker for Mac 2.1.0.5WindowsWindows 10Docker for Windows 2.1.0.5スマホAndroid 8.0.0MQTT DashDocker用ファイルのダウンロードMacではターミナル、WindowsではPowerShellなどのコマンドラインツールを立ち上げ、作業場所まで移動(cd)してから以下のgitコマンドで必要なファイルをGitHubからダウンロードします。
Mac側とWindows側とも同じものをダウンロードすることで良いです。
git clone https://github.com/tak6uch1/paho-mqtt以降の説明において、MacとW…

Cinebench R20を使ったCPU処理速度比較

イメージ
はじめにCinebench R20というCPU処理速度のベンチマークソフトを試してみました。
Cinebench R20は、複雑なCGをグラフィックボードの力を借りず、CPUの計算能力のみで描画させて処理速度を数値化してくれるとのことです。
CPU処理速度の相対比較が行えるので、パソコンを選ぶときの参考になりそうです。
CPU処理速度比較結果これまでに試した機種のCinebench実行結果を以下に記録します。
MachineOSCPU#Core#ThreadClock
Freq.Mem.ScoreMacBook Pro (15-inch 2019) A1990
macOS Mojave v10.14.6Intel Core i9-9880H8162.3GHz16GB2930MacBook Pro (15-inch 2019) A1990
macOS Mojave v10.14.6Intel Core i9-8950HK6122.9GHz16GB2301MacBook Pro (15-inch 2016) A1707
macOS Mojave v10.14.6Intel Core i7-6920HQ482.9GHz16GB1793MacBook Pro (13-inch 2016) A1706
macOS Mojave v10.14.6Intel Core i5-6267U242.9GHz8GB843MacBook Pro (13-inch 2016) A1708
macOS Mojave v10.14.6Intel Core i5-6360U242.0GHz8GB761MacBook Air (13-inch 2018) A1932
macOS Mojave v10.14.6Intel Core i5-8210Y241.6GHz8GB620MacBook Air (11-inch Early 2015) A1465

macOS Mojave v10.14.6Intel Core i5-5250U241.6GHz4GB618MacBook Air (11-inch Mid 2012) A1465
macOS Mojave v10.14.6Intel Core i7-3667U242.0GHz8GB589MacBook (12-inch Early 2015) A1534
macOS Moja…

Let's try the MQTT communication!

イメージ
IntroductionThe MQTT communication is major enough to be referred to as the de facto standard as a communication system between IoT devices. I wrote this article for beginners and also as a memo for me.
MQTT (Message Queuing Telemetry Transport) is a communication standard designed as a lightweight protocol which can keep TCP/IP connection even under an unstable state.
This time, we will learn how to perform MQTT communication in a local environment.

In MQTT, as shown below, there are one Broker (server) and multiple Clients. When one of the Clients publish data with a particular topic, another Client which subscribes the topic receives the data.
In order to begin the MQTT, you must make a Broker first.
MQTT is an open communication standard and variety of Broker softwares exist.
I introduce the way to build the Mosquitto environment (the reference MQTT environment) on PCs, Raspberry Pi, and so on, and MQTT applications for mobile and tablets devices.
Windows PCThis section describes…

C言語(4) くり返しと分岐の練習問題 解答例と解説

イメージ
練習問題の解答練習1実行結果が以下のように表示されるプログラムを作ってください。
I have a pen.解答例#include <stdio.h> void main() { printf("I have a pen.¥n"); }解説Hello Worldを表示するプログラムとほとんど同じですね。printf関数の表示内容を"Hello World!¥n"から"I have a pen.¥n"に書き換えただけですね。
練習2実行結果が以下のように表示されるプログラムを作ってください。
I have 2 pens. I have 4 pens. I have 6 pens. I have 8 pens. I have 10 pens.解答例#include <stdio.h> void main() { int a; for(a = 2; a <= 10; a += 2) { printf("I have %d pens.¥n", a); } }解説数値が2から始まり2ずつ増えるようにするためにfor文でくり返しをしています。
まずaの最初の値2をfor文の①の場所に a = 2 と書きます。
次に10になるまでくり返したいので、for文の②の場所にループ条件 a <= 10 を書きます。
くり返す際にaは2ずつ増やしていきたいので、for文の③の場所に a += 2 を書きます。これは a = a + 2 と同じで、「aに2を足した値(=の右側)を新たにa(=の左側)に代入する」という意味になります。C言語で=は「等しい」の意味ではなく、「右の値を左に代入する」という意味になりますので注意してください。

そして、for文の中身として前の問題でも出てきたprintf関数を使います。ここで表示する内容の部分に %d が含まれていることがポイントです。
%dは整数を表示するための記号で、%dの部分をカンマ(,)の次に登場するものの値で置き換えて表示するという意味になります。
カンマの後ろに登場するのはaなので、aの値を%dの部分に当てはめて表示することになります。
これでくり返しの最中に2ずつ…

Visual Studio Code & PlatformIOで快適Arduino開発

イメージ
はじめにArduinoの開発環境として、これまでArduino IDEを使っていましたが、Visual Studio CodeのPlatformIOエクステンションを試したところ非常に使いやすかったので紹介します。
下図の右のような画面構成で、プログラムの編集画面、ツリービュー、コンソール(ログやシリアルモニタ表示)が一体になった開発環境です。
本ページではVisual Studio Code(以降VSCodeと呼ぶ)のインストールからArduinoでLチカを行うまでの方法を説明します。
動作環境以下の環境で動作確認しましたが、Windowsでも同様にできると思います。
項目内容OSmacOS Mojave 10.14.6ArduinoボードNodeMCUボード(ESP8266MOD)その他LED, 150Ω抵抗, ブレッドボード, ワイヤー, MicroUSBケーブルインストールVSCodeはこのページからダウンロードします。
VSCodeを立ち上げ、PlatformIOのエクステンションをインストールします。
私の場合、テキストエディタはVimが使いやすいので、Vimエクステンションをインストールしています。こちらはお好みで。
なお、今回使用したNodeMCUボードはUSB-Serial BridgeとしてCP2102が搭載されているので、CP210x用ドライバのダウンロードページからドライバをインストールしました。
使い方PlatformIOエクステンションをインストールすると左のメニューアイコン部にアリ(?)のマークのアイコンができるので、そこから「Open」→「New Project」とクリックしていきます。
続いてプロジェクトの名前を入力し、ボードを選択します。ボード入力欄に"nodemcu"などのように使用するボード名の一部を入力すると候補が絞られて目的のボードを探しやすくなります。
FrameworkはArduinoとして「Finish」をクリックします。
新規プロジェクトを作ると、空のsetup(), loop()関数が書かれたmain.cppができるので、このファイルを編集していきます。
#include <Arduino.h> int num = 0; void setup() { Serial.begin(9600); …

キーボードの黄ばみ落とし

イメージ
はじめに プラスチック機器(ABS樹脂)の黄ばみを落とすやり方を紹介しているページを見つけ、パソコンのキーボードで試したら見違えるようにきれいになったので紹介します。
上の写真下段の無刻印モデルの方に対し今回黄ばみ取りを実施しました。上段の刻印ありのモデルはほとんど黄ばみは無く、比較のために並べてあります。
下段の無刻印モデルは中古で購入した時点で枠の部分に黄ばみがあり、その後何年も使い続けているので、黄ばみが発生してからかなりの年月が経っていますが、今回の方法で黄ばみがほとんどわからないくらいきれいになりました!
キーボードの分解 まずは全てのキーキャップを外します。外す際はキープラーという専用の道具を使います。簡単な作りの道具なので針金などで自作できそうにも思いますが、数百円で買えるものなので買ってしまった方が良いと思います。
各列のキーキャップは微妙に形状が異なります。無刻印のキーキャップを外すとどの列のものだったのかわからなくなってしまうので、列毎に分けて並べておくと良いです。
外したキーキャップはマイペットのような普通の洗剤でジャブジャブ洗って流水ですすぎました。
続いてキーボード本体を分解します。ネジはたくさん付いていますが、プラスドライバーだけで簡単に分解することができました。
金属部品とプラスチック部品が接する部分にグリスが塗ってあり、漂白液に浸した際に他の部分に付着するのが心配だったので、下の写真の状態から金属パーツを外して、まずは普通の洗剤でジャプジャブ洗いました。
キーキャップをはめる黒い部品やシールなどは外さずに漂白しましたが、私の場合、変色したり剥がれたりするようなことはありませんでした。
灰色のゴムの部品とバネは単に基盤に乗っているだけで簡単にずれてしまうので、そのままそっと保管します。
漂白 過酸化水素と界面活性化剤が入っているものが良いとのことなので家にあった下の写真のものを使いました。最初は漂白剤を節約しようとある程度薄めて試してみましたが、あまり漂白効果が見られなかったので、その後、原液のまま使うようにしました。

漂白剤に浸して紫外線を当てるとABS樹脂の黄ばみが取れるとのことなので、キーボードの枠と裏蓋を下の写真のように漂白液に浸し、日向に半日程度放置しました。
詰め替え用パックのほとんどを使ってしまう量が必要です。(^^;