ビンには、Arduino互換ボード、tp-link mr3020ルーター、GPSモジュール、ジャイロスコープ/加速度計、およびその他のナンセンスがあります。
一部の読者を混乱させないために、GPSモジュールとジャイロスコープは役に立たなかったと思います。
。
そして、ここでさえずり。 sabzhに対する私の態度は、無関心と否定性の危機にbalancingしているバランスです。 さて、写真やビデオなしで140文字だけを使用して伝えるのがとても面白いのは何ですか? ソーシャルネットワークに住んでいて、彼が朝食に何を食べたかについて投稿する人向けのわかりにくいおもちゃ。 これは私の個人的な意見であり、あなたの意見と一致しない場合は理解できます。 したがって、私は親愛なる読者に、少なくともこの記事に関するコメントで、このトピックをcheさないようお願いします。
これらすべての考えは、私がトイレを訪れるたびにつぶやく不可欠なデバイスのアイデアを与えてくれました! まあ、誰もが知っていた。 そして、訪問についてだけでなく、より詳細に:私はそこで何を正確にしたのか。 始めましょう。
最初に行うことは、基準を決定することです。 トイレにいる兆候は、閉ざされたドアと明かりだと思います。 手元には、自動ゲートからのある種のセンサーがあり、そこから感光性エレメントが取り外されました。
マルチメーターで遊んでみたところ、照明が変わると潜在的な違いが生じることがわかりました。 最大照度で、「電圧計」は約0.330ボルトを示しました。 「arduino」にしがみついています。 連絡先を閉じるだけで、ドアの位置(開閉)を決定することにしました。 ちなみに、適切なボタンが見つからなかったため、これが最も難しいことがわかりました。
「アルドゥイン」のプログラムは次のとおりです。
#include <SoftwareSerial.h> // SoftwareSerial mySerial(2, 3); // RX, TX rs323 int cnt = 0; // void setup() { mySerial.begin(115200); // mySerial.println("Halo world"); } void loop() { int lightValue = analogRead(A0); // int doorValue = analogRead(A1); // boolean light = false; boolean door = false; if(lightValue > 60) light = true; // 60 - . if(doorValue > 500) door = true; // 0, 1023. // , ... if(light && door) cnt++; // - else { if(cnt>0) { // mySerial.print("<"); mySerial.print(cnt); // mySerial.println(">"); } cnt = 0; // } delay(1000); }
次に必要なのはルーターです。 tp-link mr3020を使いました。 OpenWRTをインストールし、インターネットへの接続を構成して、phpをインストールする必要があります。 ここでこれがどのように行われるかは、私も含めて何度も説明されています。 したがって、これにとどまりません。 重要な点のみ:ここでポートをリッスンし、必要なデータを取得します
<?php // $child_pid = pcntl_fork(); if ($child_pid) { exit(); } posix_setsid(); // include("post.php"); $filename = "/dev/ttyATH0"; // serial- $handle = fopen($filename, "r"); // while (!feof($handle)) { $sym = fread($handle, 1); // if($sym=='>') { $f=false; echo "<<$cnt>>\n"; flush(); act($cnt); $cnt=''; } elseif($sym=='<') $f=true; elseif($f) $cnt .= $sym; } fclose($handle); function act($time) { if($time<40) {echo "dunno\n";} if(40<=$time && $time<150) { postMyPost("i was pee");} if(150<=$time && $time<300) { postMyPost("i was poo");} if(300<=$time && $time<900) { postMyPost("i take shower");} } ?>
このライブラリを使用して投稿:
3番目の重要なポイントは、プログラムでツイートする機能です。 これを行うには、ログインしてdev.twitter.comに移動し、右上のカーソルを明るい顔に移動して、[マイアプリケーション]を選択します。 新しいアプリケーションを作成するだけでなく、すべての質問に答えます。 次に、[設定]で[アクセス:読み取りと書き込み]を指定する必要があります。 次に、[詳細]で[アクセストークンの作成]をクリックし、[コンシューマキー]、[コンシューマシークレット]、[アクセストークン]、および[アクセストークンシークレット]フィールドを覚えておいてください。 PHPのライブラリをダウンロード: github.com/abraham/twitteroauth/archive/master.zip
config.phpで、以前に保存されたデータを置き換えます。
define('CONSUMER_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxx'); define('CONSUMER_SECRET', 'yyyyyyyyyyyyyyyyyyyyyyyyyy'); define('OAUTH_TOKEN', 'qwertyqwertyqwertyqwertyqwertyqwerty'); define('OAUTH_SECRET', 'sashagreysashagreysashagreysashagrey'); define('OAUTH_CALLBACK', 'http://example.com/twitteroauth/callback.php');
さて、送信用のスクリプト自体(post.php):
<?PHP require_once('lib/twitteroauth/twitteroauth.php'); require_once('lib/config.php'); function postMyPost($status) { $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET,OAUTH_TOKEN,OAUTH_SECRET); $connection->format = 'xml'; $connection->post('statuses/update', array('status'=>$status)); } ?>
デバッグプロセス:
組み立てられたアイテム:
接続:
使用法:
SSH経由でルーターに接続し、スクリプトを実行します。
root@OpenWrt:~# php-cgi /www/twitter/run.php X-Powered-By: PHP/5.4.11 Content-type: text/html root@OpenWrt:~#
これにより、バックグラウンドプロセスが開始され、親が終了します。 したがって、スクリプトはコンソールから切断した後でも機能します。
スクリプトを停止するには、プロセスIDを調べて強制終了する必要があります。
root@OpenWrt:~# ps | grep run.php 1665 root 10436 S php-cgi /www/twitter/run.php 1670 root 1492 S grep run.php root@OpenWrt:~# kill 1665
ここで作業の結果を見ることができます: twitter.com/kruz_ivan
計画の内容:
1)プロセス自体の写真も見えるようにカメラをねじ込みます。
2)臭気透過技術が活発に開発されています。 最初のシリアルデバイスの出現で、私は間違いなくそれらを私のプロジェクトに関与させます。
3)たとえば、冷蔵庫を開けたり、座って食事をするたびに写真を撮ったりしたときにツイートする、ソーシャルネットワークと統合された類似のデバイスを作成します。