Arduinoと通信するPCアプリケーションの為の試作
買いました。
電子工作クラスタでも電気屋でも情報屋でもありませんが、
諸事情によりArdinoを触る機会に恵まれましたので購入しました。
※写真のものは、Arduino Unoの互換品らしいです。詳しいこと分かりません。
ArdinoUnoとPCがUSBシリアルポートで通信して、
文字列を送ったり返したりできるサンプルコードを書きましたので、紹介します。
【実装の目的】
ArdinoIDEのシリアルモニタとやってることは変わりませんが、
独自のアプリケーションにArdinoとシリアル通信する機能をつけたい場合を想定しています。
将来的には、Rasberry Piを母艦にして、複数のArdinoを小間使いに使う(制御する)構成を作るために書いたコードです。(なので、PCはUbuntu Linuxを使いました。)
【実装の条件】
・ArdinoUnoまたは互換機と通信します。
・PC側の環境はUbuntu Linuxを利用しています。
・Ardinoのポート(?)は、/dev/ttyACM1とします。
・言語はBetter-C
【試作品の挙動】
whatyournameとテキストをaurduinoに投げたら、aurduinoが自分の名前を返してくれる。複数のaurduinoが接続して、個体を認識する状況を想定。
【参考文献】
シリアル通信をおこなうプログラムを作成するには? | 組み込みLinuxのArmadilloサイト
Linuxでシリアル通信しようとしたら引っかかった - 明日から本気出す( ´・ω・`)
ArduinoとMacでシリアル通信(C言語) - まりぴよこのブログ
【PC側ソースコード】
【Ardino側ソースコード(スケッチっていうの?)】
#define IFDEBUG false void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(13, OUTPUT); } void loop() { // put your main code here, to run repeatedly: char c; char s[256]; char whatyournamecmd[] = "whatyourname"; int i; for (i = 0; i < 256; i++) s[i] = (char)NULL; if (Serial.available() > 0) { for (i = 0; i < 255; i++ && s[i] != '') s[i] = Serial.read(); if (strncmp(whatyournamecmd, s, strlen(whatyournamecmd)) == 0) { if(IFDEBUG)digitalWrite(13, HIGH); //messegewrite(myname()); Serial.write("Ardino #01 "); } } delay(500); if(IFDEBUG)digitalWrite(13, LOW); }
こんな感じになりました。
【解説】
int serial_ardinowrite(char *devicename,char *messege)
文字列をArdinoに送る関数
devicename: /dev/ttyACM1とか
messege:送るメッセージ
int serial_ardinoread(char *devicename,char *messege);
Ardinoから文字列を受け取る関数
*messegeにaurduinoからかえってきた文字列を入れる。
通信する文字列は225バイト未満とし、aurduinoからかえってくる文字列は改行コードで終わるものとする。(改行コードはserial_ardiunoread関数内で消してから返す)
基本的なことは参考文献に書いてあります。
シリアル通信をおこなうプログラムを作成するには? | 組み込みLinuxのArmadilloサイト
のコードをベースに、ポートの設定であったり9600bps固定の設定など、詳しく書いてない点は
Linuxでシリアル通信しようとしたら引っかかった - 明日から本気出す( ´・ω・`)
から、
aurduinoからデータを受取る際の要点については
ArduinoとMacでシリアル通信(C言語) - まりぴよこのブログ
に書いてありました。
Arduonoでシリアル通信から文字列を拾うのはSerial.read()で大したこと無いから良いですが、ArduinoからPCへの通信は細切れでバラバラと届くので、その辺りをうまく拾いとる実装が必要になります。
日本酒レポート
NUMBER9 岡山 御前酒
冷蔵庫出したてだとのっぺりザラザラだけど、常温に近づくと落ち着きのある甘みが舌に残る感じ。強いアルコール感。正直好みじゃない。
まんさくの花 秋田 日の丸醸造
例えるなら林檎、深みのあるも爽やかな甘みを、独特の酸味が綺麗にエスコート。
水芭蕉 純米ひやおろし 群馬 尾瀬酒造
落ち着いた旨みの酒。舌に残る深みある味。
以前飲んだのはもう少しさらりとしていた印象だったけど、ラインナップが違うからかな?
福小町 秋田
優しく寄り添ってくれている様な、とっても優しくてフルーティな甘み。楽しい気分になる明るいお酒。
雅山流 ひやおろし
キリッとした口当たり。
後味に余計は残しません、綺麗な物だけ置いて行きます、みたいな。
鮮烈さは竹を割った様なお酒。
きのえね 純米無濾過原酒 氷室仕込み/松の壽
松の壽
すっと広がる甘み 香りは強くないがクッとアルコール感が来る。
きのえね 純米無濾過原酒 氷室仕込み
とろりと口中に絡みつくとろみ。
けして甘さは感じないが、喉の奥からこみ上げる様な香り。
冬らしいお酒。
--------
呑んだ酒はFacebookやTwetter,
さけのわ<http://www.sakenowa.com/ >などに付けているが、
酸味、甘み、温度による味の変化、個性の強さなど軸を設定して、
各項目点数をつけ、所感とともに帳票につけていくのもありかもしれない。
松戸生活 1.nヶ月報告
松戸に住んでいる。
実家を飛び出したのが2006年の3月末
当初の5年間は独り部屋と共同部屋で半々くらい、
で、しばらく独り暮らし。
ということで、かなり久々な家族が居る暮らしというわけである。
話がそれた。
松戸で"MAD City"なる活動をされている方々からお部屋を借りて生活している。
入居前のリサーチや関わりが足りないと言われたらそれまでなのだが、
この活動が面白そうなのは住んでみて解った。
....が、この件についてはまた別途ブログ-イングしようと思う。
話を戻し、松戸で良かった点、そうでない点、列挙しようと思う。
自治会活動その他に関わりを持とうとしない、
いまどきな若者が1ヶ月+αだか2ヶ月-αだかの期間で得た感想である。
- 自転車が有れば、新京成沿線が面白い
松戸駅〜八柱を主に281号線沿いを走ってみると、
肉屋、魚屋の類いや、
なかなか良い酒屋もあった。また、温泉もあった。
往復するだけで1日楽しい。 - 線路沿いは居心地がいい
線路の音はすぐに慣れた。
むしろ上空ががらっと空いた空地みたいなもので、
風もふいてくるし、日射にも影響が良い。
松戸には大きな河川も流れているし、それと併せて松戸の環境に好影響といえる。 - まちづ社の人とfacebookでつながったらTLが面白い
僕からみたら大家さんになるのでしょうか、
facebookでつながってみたところ、Retweetやらいいねやらコメントやらで流れてくるリンクが面白い記事ばかりで、なんだかとっても得した気分。 - Amazonが早い
夜の21時ごろ注文した物品が、翌日10時(AM)頃には届いた。市川センターから来たものと思われる。
これは私の様な消費意欲旺盛な根暗男子には喜ばしい限りである。 - 公共サービスは都心ほどを期待できない
市役所の窓口の開いている時間、待ち時間の環境は、23区内ほどではない。
また、ゴミの分別は非常に細かい。めんどくさいかぎりであるが、逆に言えば「捨て方に困るゴミ」と言うことが少ない。
また、水道の手続きは上水道と下水道を別途手続きしなければならないのがめんどくさい。手続きが通ってなかった1回を含め、3回も指定業者のおばさんと電話した。
蕎麦の卵とじ
年越し蕎麦も食べなかったので、義母からいただいた南部蕎麦、牡蠣の卵綴じをのっけて頂きたいと思いました。
汁は西日本風の出汁メイン、蕎麦は南部蕎麦という、なんともな。
-----
蕎麦を煮る。この南部蕎麦。 南部蕎麦は初めて。
茹で方は袋に書いてある通り。
出汁は どんこ とアゴ(トビウオ)をメインに、油が浮いているのは鶏ガラを追加したため。
どんこは水で戻して煮る。
焼きアゴを曳いた粉末(市販)を投入し煮立てる。
薩摩揚げ等の練り物が在庫なしにつき、動物性の味を足す為に、試しに鶏ガラを入れた。
布で濾して、ベースとなる出汁。
タマネギはたっぷり入れて甘みを出す。
そのほか在庫充分な野菜として、ネギがあったので投入。
野菜に火がが通ったら、
酒・みりん
砂糖 ティースプーン1杯
塩 2ふり
醤油 ちょろっと
常温で冷めるまで放置 ←要点
これでスープは完成。次は卵とじ。
この牡蠣飯の素で卵とじ
タマネギを炒め、牡蠣飯の”汁”だけ先に投入、砂糖小匙半分投入。
タマネギが良い色になってきたら、牡蠣を投入
あとはこいつに卵を落として、余熱でふんわり固めたら、
以上全てを皿に盛る。
こういうこと