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

最近はまた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系は区別をするため、環境移行後にエラーが発生したのです。
ってか、いままでが間違ってたんだね(汗)

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

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

個人で契約しているさくら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とか、まだ慣れないなぁ・・・。
バンドでHPを作っているのですが、せっかくだから分散開発しようということで、さくらVPS上にgitを使った開発環境を構築しました。
その時のメモです。

前提:
・gitがインストールされていること
・リポジトリ等は、開発者用のグループでread/write/exec権限があること

①ベースとなるリポジトリを作成(簡単のため、ゆってぃのホームディレクトリ)
cd /home/yutty(ユーザ名)/git_test
git init

②みんながアクセスするリモートリポジトリ(ベアリポジトリ)の作成
cd /var/git(例)
git clone --bare /home/yutty/git_test test.git

③誰かがpushしたら、テスト用サーバーに自動でpullされるように、ベアリポジトリ上にhooks/post-receiveを追加
Qiitaに記事がありました

④テスト用WEBサーバをDigest認証に
参考サイト
httpd.confの設定は、AuthDigestFileではエラーになったので、AuthUserFileとしています。

以上です。
頭に来る程てこづったのでメモ。

○参考サイト
迷走主義工房エーテルワークスさん
Qiita ruby2.x.xのインストール方法
Qiita sudo 経由で rbenv を使えるようにする

○ひっかかったところ
CentOS6では、yumでインストールするとrubyのパッケージは1.8.3がインストールされる。
しかし、redmineは2.0以上しかサポートしていないらしく、インストール中にエラー出た。
そこで、Qiita ruby2.x.xのインストール方法に従い2.3.0をインストール。
この時点ではgemコマンドにPATHが通っていないので、通す。
その後、gemコマンドでbundlerのインストール。
bundlerにもPATHを通す。
実行しようとしたら、root権限ではダメとか言って来たので、redmineディレクトリ以下をredmine編集権限のあるユーザーとおなじグループにした。
redmineディレクトリ以下、Gemfileがあるディレクトリ上で
bundle install --without development test postgresql sqlite
を入力。(※DBにはMySQLを使用)
そこからは迷走主義工房エーテルワークスさんのページに従って作業。

ほとんどのケースでpermissionエラーが出るので、sudo -i で乗り切ったが、ちゃんと環境変数設定しないとな。
こんにちは!
今日はせっかくの有休だったのに、ずっと自宅に引きこもっていたゆってぃです。
だって、朝からどしゃぶりの雨だったんだもの…
なので、今日は久々に自宅で電子工作三昧でした。

特にテーマも無かったので、前々から作ろうと思っていた無線LANでステッピングモーターを動かす装置を作ってみました。

<使用部品>
・ 制御ボード:Arduino Uno Rev3
・ 無線LANモジュール:ESP8266EX(ESP-WROOM-02)
・ モータードライバ:TB6674PG
・ モーター:SM-42BYG011
・ ロジックレベル変換モジュール:FXMA108
・ 3.3V生成用レギュレータ:TA48M033F
・ 電源用ACアダプタ:GF18-USO920-T(9V2A品)
・ その他:抵抗/セラコン/電解コンなど・・・
(基板にはブレッドボードを使用)

Arduinoとモーターを除けば、これ全部1000円以下の部品なんですよね。
特に、無線モジュールが数百円で買えちゃうってもう本当にすごい。
しかもプロトコルスタック内蔵だから、8bitマイコンでも動かせちゃうんです。
XBeeのWLANモデルが出た時も感動したけど、それでも4000~5000円しましたからね。
本当に、良い時代になりましたね^^

<試作品の仕様>
・ IPアドレス:192.168.11.55/24
・ ポート:10000
・ 無線LANモジュール制御用UARTのボーレート:38.4kbps
・ モーター駆動方式:フルステップ方式

まずは回路ですが、これはこんな感じに作りました。

回路

回路図はIn My Headなので、後日書いて載せます…。因みに左下のUSBシリアル変換ボードはデバッグ用です。
(こんないい加減なやり方が今の上司に知られたら、多分とてもとても怒られてしまいます)

全部書くと長くなるので、今回はESP8266EXの設定についてお話します。
他サイト様と内容が重複する部分もあると思いますので、差別化を図るために、後半の方ではサーバーに関して少し詳しく書いています。

さて、ESP8266EXは、UART経由でATコマンドを使って制御します。
XBeeに似ていますね^^
Arduino経由でも設定可能なのですが、今回はFT232を使用したUSB-シリアル変換ボードを使って、PCと直接接続して設定しました。

設定に先立ち、Teraterm側の準備をしましょう。

①ESP8266EXはデフォルトのボーレートが115.2kbpsなので、Teratermも同じように115.2kbpsにして下さい。
②メニューの「設定」 > 「端末」から、改行コードを「CR+LF」に変更してください。

準備が出来たら、いよいよ設定を行います。
ここから先は、Espressif Systems社のサイトからダウンロードできるESP8266 AT Instruction Setを見ながら進めましょう。
(2016/6/28時点での最新バージョンである1.5.4を元に説明します)

(1)UARTの設定(マニュアルの14ページ)
<設定内容>
 ・ ボーレート:38.4kbps
 ・ データ長:8bit
 ・ ストップビット:1bit
 ・ パリティ:無し
 ・ フロー制御:無し(とりあえず)
<コマンド>
 AT+UART_DEF=38400,8,1,0,0

Enterを押したら、ボーレートが切り替わるので、TeraTerm側のボーレートも38.4kbpsへ変更して下さい。

(2)無線LANの設定(マニュアルの21ページ、24ページ、42ページ)
<設定内容>
 ・ 無線モード:ステーションモード
 ・ 接続先アクセスポイントのSSID:XXXXXX(ご自身のアクセスポイントのSSID)
 ・ アクセスポイントのパスフレーズ:YYYYYY(ご自身のアクセスポイントのパスフレーズ)
 ・ ゲートウェイ(アクセスポイントルータ)のアクセスポイント:192.168.11.1/24
 ・ 自身のIPアドレス:192.168.11.55/24

<コマンド>
 ・ AT+CWMODE_DEF=1 → ステーションモードの設定
 ・ AT+CIPSTA_DEF="192.168.11.1","192.168.11.5","255.255.255.0" → IP関連の設定(ここでしておかないと、DHCPでIPが設定されます)
 ・ AT+CWJAP_DEF="XXXXXX","YYYYYY" → 接続先アクセスポイントの設定

(3)TCPサーバーの設定(マニュアルの61ページ)
<設定内容>
 ・ ポート:10000

<コマンド>
 ・ AT+CIPSERVER=1,10000
 
これで、TCPサーバーが立ち上がりました^^
もうひとつTeraTermを立ち上げて、telnetで通信確認をしてみましょう。

telnetクライアント

すると、サーバー側のTeraTermには「0,CONNECT」の文字が出ました。

サーバー

次に疎通確認のため、クライアント側で「TEST」打ってみます。
(わかりやすくするため、クライアント側の端末はローカルエコーをオンにしています)

疎通確認

TESTという文字が、サーバー側に送信されました^^
簡単にサーバーを立ち上げることが出来ましたね!
素晴らしいっっっ!
・・・と言いつつ、心は不安でいっぱいになりますね…。
こんな簡単にWLAN接続できてしまったら、マジで10年後に仕事がなくなってしまうよ・・・(涙)


因みに、UDPで複数のクライアントからデータを受けたいときは下記の用に設定します。
 ・ AT+CIPMUX=0
 ・ AT+CIPSTART="UDP","0",0,10001,2
こうすれば、10001番ポートにUDPで送信されたデータ全てを受信するようになります。
(リモートIPとリモートポートを共に0にするとことがポイントです。マニュアルには書いてないような気がするのですが、ここでトピックに上がっていました)
但し、TCPサーバーとの共存は出来ません。
また、UDPなのでコネクションを張らないため、+IPDセンテンスから<ID>フィールドが無くなります。
そのため、複数のクライアントからデータを送られてきた時、どのクライアントから送られてきたのかはわかりません。

UDPサーバー

けれども、UDPでしか通信できない上位プロコトルも多々あるので、そういうケースではこのやり方が役に立ちそうです^^

今日はここまでにしますね^^
最後までお読みいただいて、ありがとうございました!
ご訪問者様
プロフィール

ゆってぃ

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

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

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

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

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

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