こんばんは!
夏が終わりに近づき、若干の寂しさを覚えているゆってぃです。

最近はまたArduinoを触り始めたのですが、開発環境を従来のWindowsからubuntu(lubuntu)に移しました。
その時、Windows環境ではビルド出来ていたコードがLinux環境ではビルドエラーになってしまい…。

arduino.h no such file or directory

というエラーが出ました。

結論からいうと、includeしていたファイルの大文字と小文字を間違えていただけでした。

#include <arduino.h>

という記述があったのですが、正しくは

#include <Arduino.h>

です。
しかし、C++ではWindows/Macはファイル名の大文字・小文字を区別しないのに対し、GNU/Linux系は区別をするため、環境移行後にエラーが発生したのです。
ってか、いままでが間違ってたんだね(汗)

初歩的なところですが、意外とはまりそうなので、メモを残しました。
関連記事
スポンサーサイト
こんにちは!
明日から台湾旅行へ出かけるので、うっきうきのゆってぃです!
おかげで、今週は仕事が全然手につきませんでした!
はじめての台湾!どんなところなのかな・・・

さて、今日は勢いで会社をお休みしたので、Dockerにfuelphp(ver1.8)を入れてみました。

構成は
[クライアント] ----(https) --- [nginx(リバースプロキシ@docker)] --- [nginx + fuelphp(web + appサーバ@docker)]
です。
リバースプロキシ側でSSLターミネーションさせており、リバースプロキシとアプリケーションサーバ間はhttp通信です。
(同一のネットワークセグメントなので、大丈夫かなと)

SSL証明書はletsencryptで取得しました。
リバースプロキシで証明書を取得する場合はwebrootが無いのでどうしようかと思いましたがnoraworldさんの記事が大変参考になり、あっさり実現することが出来ました。

fuelphp側は、動かすだけなら特にやることはありません。
コンフィグファイルのbase_url を https://(自分のドメイン)にしたくらいかな。

どんなサービスを作ろうかな。
出来たら、また報告します^ ^
こんばんは。
ロッキンジャパンのチケットが取れるかどうかひやひやしているゆってぃです。
ついでに秋に幕張でやるヨシヒコのイベントも抽選待ちです。
彼女と一緒に行こうと思って、チケットは二枚予約しました。
(なお、現時点での彼女は未定です…。でも、秋までには出来るよね!きっと出来るよね!?)

どうか当たりますように!!!

個人で契約しているさくらVPSのOSを、今更ながらCentOS7にしてみました。
このサーバは、バンドのHP等で使用しています。
今回は、OSのインストール後にとりあえずやったことのメモ書きを残します。

(1)ユーザーの追加
 ・useraddコマンドで、ログインユーザーを追加する
 ・管理者用IDをwheelグループに追加(こうすることで、sudoコマンドが使用可能になる)

(2)sshの設定変更
 ・/etc/ssh/sshd_configを修正し、rootログインの禁止とポート番号の修正を実施。
 ・/usr/lib/firewalld/services/ssh.xmlを編集し、開放するポート番号を修正
・firewall-cmd --permanent --add-service=http
 ・sshdサービスの再起動(systemctrl restart sshd)
 ・firewalldのリロード(firewall-cmd --reload)
ここで念のため再起動し、ここからはuseraddで追加したユーザでログイン

(3)Webサーバのインストール
 ・sudo yum -y install httpd
 ・sudo yum -y install php php-mbstring
 ・httpdのスタート(sudo systemctrl start httpd)
 ・firewalldに、http/httpsのポート開放を設定し、反映させる
  sudo firewall-cmd --permanent --add-service=http
  sudo firewall-cmd --permanent --add-service=https
  sudo firewall-cmd --reload
  (sudo firewall-cmd --list-allでservicesにhttp httpsがいることを確認)

これで、一応Webサーバが見られるようになりました。
systemdとかfirewalldとか、まだ慣れないなぁ・・・。
関連記事
こんばんは!
加齢のせいか、最近全然疲れがとれないゆってぃです…。
温泉にでも浸かって、ゆっくりしたいなぁ。

さて!前回の記事まで3回に渡ってDMXでステッピングモータを動かす記事を書いてきましたが、ややソフトに寄った内容だったので、今回はハード(回路)に関する記事を書こうと思います。

現在作成中のプロトタイプはArduinoを使用したものですので、DMXのトランシーバ回路もArduino用シールドを使用したものでした。
このシールドはとても便利なのですが、こういうものは、やはり自分で回路を理解した上で使用するべきです。

DMX512のトランシーバとは、回路的にはほぼRS485のトランシーバです。
RS485の信号をマイコンで受信可能なUART信号に変換し、ソフトでDMXのプロトコルを解釈して、はじめてDMX512のトランシーバになる訳です。
そこで今回は、ブレッドボードを使用して、ごく簡単なRS485のトランシーバを作ってみたいと思います。
※今回は受信のみ考えており、RS485信号の送信は検討外です。

<材料>
・ブレッドボード・・・1枚
・ACアダプタ(9V品)・・・1個(※5V以上なら何Vのものでも結構です)
・5V生成用レギュレータ(L7805CVなど)・・・1個
ブレッドボード用DCジャック・・・1個
・LTC485・・・1個
・ジャンパワイヤ・・・数本
・DMXコントローラ・・・1台

ここで、このトランシーバのキモとなるLTC485の使い方をご説明します。

まず電源(Vcc)です。
データシートによると、LTC485の電源は5Vです。
絶対定格は12Vですが、ノイズなどで一瞬でも12Vを越えてしまうと内部回路が破壊されてしまう恐れがあるので、データシートに従って5Vを入れましょう。
今回は9VのACアダプタから、レギュレータを介して5Vを供給します。

次に、/RE端子とDE端子です。
今回は受信機として扱うので、/RE端子とDE端子は共にGNDレベルとします。
また、使用しないDI端子も、念のためGNDレベルに落としておきましょう。

GND端子は、基板のGNDとDMXのCommon端子(GND端子)の両方に接続してください。
ただし、接続されるDMX機器が全て同一の電源に接続されていて、GNDも共通ならばこの限りではありません。

まとめると、各端子は下図の用に接続することになります。(拡大するにはクリックしてください)
各端子の接続について

回路図は以下の用になります。

RS485_参考回路.jpg

これをブレッドボード上で作ると、こんな感じになります。

LTC485試作回路1

回路図のCPU_RXの箇所を、オシロで測定してみます。

UART波形

無事にUART信号に変換することが出来ました。
次回はこの信号をArduinoに入力し、実際にDMXで受信したデータを出力して見ましょう!
最後までお読みいただいて、ありがとうございました!
こんばんは!
ゆってぃです。

さっそくですが、前回ご紹介したクラスを使って、DMXでステッピングモータを動かすコードを書きました。
コードはGitHubに置いてあります。

動きは極めてシンプルで、DMXの1ch目でモータが動かすターゲットの目標座標を、2ch目でモータ回転速度をもらい、目標座標に向かってモータを回転させるというものです。
ここで言う目標座標とは、ある基準位置からの距離になります。

Arduinoが起動すると、まずモータ回転させ、ターゲットを基準位置まで移動させます。
(基準位置にはセンサがあることが前提)
ターゲットが基準位置まで来ると、センサが反応しモータが停止します。
その後、DMXで受信した値を元に、基準位置からモータを回転させます。
(DMXでの受信値と基準位置からのステップ数は、DmxStepTable.hで定義しています)

なお、移動中に新しいデータを受信しても無視されます。
簡単なクラスの説明を以下に。
-------------
MainTask:メイン処理です。ステートマシンで動いています。(SystemMain.hにステートの定義があります)

MotorCtrl:モータ制御クラスです。下位モジュールとしてStoppableStepperクラスを持ちます。

ReceiverInterface:ポリモーフィズムの為の抽象クラスです。今回、モータ制御の信号はDMXで受け取りますが、将来的に別の通信(例えば、Artnetなど)になったとしても、具象クラスを入れ替えるだけで移植できるようになっています。

DmxReceiver:ReceiverInterfaceの具象クラスです。下位モジュールとして、Conceptineticsクラスを持ちます。

※Sensorクラスは、現状未使用です。
--------------------
実は人から頼まれてこのコードを書いたのですが、レビューをした結果、どうやら要求と合っていないことが判明しました。
これは要求分析がしっかり出来ていなかったせいです。
そのため、システムが大々的に作り直しになってしまいました。。。
(コードとセットで回路も作ったのですが、幸い、回路のほうはそこまで手直しをしなくてよさそうですが…)
要求分析は大事ですね。依頼側にとっても、出来たものを見て初めてわかることもあるので、要求分析は一緒になってしっかりやっておくべきでした。

で、なんやかんやあって、要求を満たすためには、Stepperクラスの様にモータ制御のために処理をブロッキングする仕組みではダメなことがわかりました。
そこで、次回はL6470を使ってこのシステムを改良します。
幸い、ライブラリがGitHub上にあったので、これを使ってシステムを作りたいと思います。

納期は1ヶ月。間に合うかなぁ。。。
関連記事
ご訪問者様
プロフィール

ゆってぃ

Author:ゆってぃ
経歴7年の組み込み系・制御系エンジニアです。
("ど素人"という文言は取りました…笑)
ソフトウェア開発経験ゼロの状態から、なんとか実務がこなせるようになってきた現在に至るまでの経験を、備忘録代わりに綴っていきたいと思います。
入門者の方、大歓迎!
(上級者の方、ごめんなさい…)

あと、ブログには全然関係ないですが、Bumpy Headというバンドのギターをやっています。
ライブ情報なんかも書いたりすることがあるので、その時に「行ってもいいよ~」といった感じのコメントを戴けると、泣いて喜びます(泣)
ブログ読んでくださってる方なら、チケット代サービスしちゃいます!

最後に…滅多に流用することは無いでしょうが、このブログに書かれているソースは、特に指定の無い限りMITライセンスとします。ただし、一部それ以外のものもございますのでご注意下さい。
※ブログのリンク先にあるコードに関しては、リンク先のポリシーに従ってください。

最新記事
最新コメント
カテゴリ
RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

twitter
リンク
ブロとも申請フォーム
スポンサードリンク