ATG_voip’s kimama blog

RaspberryPiやらArduinoやらAndroidやら色々

Wifi接続してるのに、インターネットに繋がらない

まえがき

PCでWifi接続してるのに、インターネットに繋がらない。
でも、スマフォで同じルータにWifi接続してみるとネットに繋がる。

Wifi接続画面から接続先のLANを見ると、「インターネットなし、セキュリティー保護あり」になっている。
なぜ、PCからネットに繋がらないのか。

こんな状況下での一助になってくれればと思います。

1.確認

コマンドプロンプトにて、「ipconfig」を入力。
「Wireless LAN adapter Wi-Fi」カテゴリ内の、「IPv4 アドレス」にIPがあるか確認します。

2.DNS設定

「コントロールパネル」→「ネットワークとインターネット」→「ネットワークと共有センター」
「接続:Wifi(~)」をクリック。
「プロパティ」をクリック。
「インターネット プロトコル バージョン4 (TCP/IPv4)」をクリック→「プロパティ」をクリック。
下半分の部分にある「次のDNSサーバーのアドレスを使う」にチェックが入っている場合、その上の
DNSサーバーのアドレスを自動的に取得する」にチェックを入れる。
Wifiを再接続してみる。

あとがき

 ここまで見てくれた人は何が原因でネットに接続できてなかったのか、わかると思います。
そうなんです、DNSの設定を以前にやったことを忘れていたのです。別の環境でWifi接続したことなかったから仕方ない。
様々な事情によってDNSの設定をしていた方が、この記事を読んで別の環境下でWifi、ネット接続できればそれでいいんです。あたり前な事ですが、元の環境に戻ったらDNSの設定をしてくださいね。強いられているはず。こういう経験は今後、生かされると信じて…。

最終更新: 2017_5/5

ESC/POSとは何ぞや

前置き

 現在、私が開発しているものがAndroid端末とThermal Printer(サーマルプリンタ)をBletoothで接続し、レシートを印刷するものである。
今回は、Thermal Printer(サーマルプリンタ)にどのようなデータを送ればレシートが印刷できるのかを、現段階で私が理解した範囲で書く。この記事を読む前に理解していて欲しいことは、この記事の内容は私が英語のマニュアルを機械翻訳するなどして、勘だったり勝手に察したりした内容が書かれていると理解していてほしい。一切の責任を負いません。

 内容が事実と異なったり、分かりにくい箇所があれば一報をお願いいたします。
 
最終更新日(2017.2/20)

「ESC/POS」とは

私が調べた範囲だと以下のような事らしい

  • 開発したのはエプソン(EPSON)
  • シリアル通信により印刷するプリンタなどはこの規格が搭載されている事が多い
  • レシート用紙に印刷する文字のフォント・大きさ・言語などなどを設定する事ができるコマンド,制御コード(命令のようなもの)らしい
  • 「ESC/POS」以外にも、「ESC/P」、「ESC/P-R」がある。

今回使用するThermal Printer

製品:Koolertron 58mm Mini Portable Bluetooth 4.0 Wireless Receipt Thermal Printer, Compatible With Apple And AndroidKoolertron 58mm Mini Portable Bluetooth 4.0 Wireless Receipt Thermal Printer, Compatible With Apple And Android : Koolertron.com
特徴1:ESC/POSの互換性あり
特徴2:スマホタブレットBluetooth接続し、印刷が可能
特徴3:デモアプリ同梱

「ESC/POS」で頻繁に使うコマンド

[ESC ! n]コマンド

内容:文字の大きさや太さ、アンダーラインなどの設定コマンド
フォーマット:

ASCII ESC ! n
Hex(16進数) 1B 21 n
Decimal(10進数) 27 33 n

nの値による設定:
f:id:ATG_voip:20161101105425p:plain

例:fontB、強調、アンダーラインの文字を印刷する場合
fontB = (0000 0001), 強調 = (0000 1000) , アンダーライン = (1000 0000)
n = (0000 0001) + (0000 1000) + (1000 0000) = (1000 1001)
2進 = (1000 1001)
16進 = (89)
コマンド(16進数/Hex):「1B 21 89」

AndroidProject.java(bluetooth関連の部分は省略)

public class MainActivity extends AppCompatActivity implements Runnable, View.OnClickListener {
    //[ESC ! n] Select print mode (s)
    byte  Character_font_A   = 0x00;
    byte  Character_font_B   = 0x01;
    byte  font_Emphasized    = 0x08;
    byte  font_Double_height = 0x10;
    byte  font_Double_width  = 0x20;
    byte  font_Underline     = (byte)0x80;
    private Button printButton;
    private OutputStream mOutput_Printer=null; // bluetooth出力ストリーム

    @Override
    public void onCreate(Bundle savedInstanceState){
        printButton= (Button)findViewById(R.id.printButton);
        printButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View v){
       if(v.equals(printButton)) {
         // フォントの設定(font setting)
         // [ESC ! n]
         byte  Character_font[] = {0x1B, 0x21, 0x00}; // DefaultとしてfontAを設定する
         Character_font[2] |= Character_font_B; // fontBを設定
         Character_font[2] |= font_Emphasized;  // 強調を設定
         Character_font[2] |= font_Underline;   // アンダーラインを設定(線幅を指定しないと印字されない)
         mOutput_Printer.write(Character_font);
       }
    }
}

[ESC a n]コマンド

内容:印字する文字を左寄せ、中央寄せ、右寄せに設定する
フォーマット:

ASCII ESC a n
Hex(16進数) 1B 61 n
Decimal(10進数) 27 97 n

nの値による設定:

n 寄せ側
0,48 左寄せ
1,49 中央寄せ
2,50 右寄せ

[ESC t n ]コマンド

内容:印字する文字コードの設定?
フォーマット:

n 文字コード
0 PC437 USA Standard Europe
1 katakana
2 PC850 Multilingua;l

...etc

注意:
「katakana」ですが、ここで指定して使用できる文字はANK文字コードとなります.
ANK文字コードとは
・使える文字はアルファベット,数字,カタカナ(半角)のみです.
表→
ANK文字コード表


例:「アイウエオ」を印字してみる
AndroidProject.java(bluetooth関連の部分は省略)

public class MainActivity extends AppCompatActivity implements Runnable, View.OnClickListener {    private Button printButton;
    private OutputStream mOutput_Printer=null; // bluetooth出力ストリーム

    @Override
    public void onCreate(Bundle savedInstanceState){
        printButton= (Button)findViewById(R.id.printButton);
        printButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View v){
       if(v.equals(printButton)) {
     String aiueo="アイウエオ"; 
         // フォントの設定(font setting)
         // [ESC ! n] フォント設定
         byte  Character_font[] = {0x1B, 0x21, 0x00}; // DefaultとしてfontAを設定
         mOutput_Printer.write(Character_font);
         // [ESC a n] 文字配置位置
         byte  Textposition_Left[]   = {0x1B, 0x61, 0x00};
         mOutput_Printer.write(Textposition_Left); //印字位置を左寄せに設定

         byte cmd[] = {0x1B, 0x74, 0x01}; // [ESC t 1]コマンド
         mOutput_Printer.write(cmd);           //印字文字(言語?)を「katakana」ANK文字コードに設定
         
         mOutput_Printer.write("------katakana------".getBytes()); 
         byte  aiueo[] = {(byte)0xB1, (byte)0xB2, (byte)0xB3,(byte)0xB4,(byte)0xB5};   //ANK文字コード
         mOutput_Printer.write("\n".getBytes());
         mOutput_Printer.write(aiueo);
         mOutput_Printer.write("\n".getBytes());
         }
    }
}
ESC/POSで困ること

ESC/POSコマンドから日本語が印字できない事もないが,半角カタカナしか印字できない.
この問題への回避策として,レシートを文字として印刷するのではなく,画像として印刷する手法がある.
画像の印刷はESC/POSコマンドには無い(?)ようだ.しかし,プリンタの製造会社によっては画像を印刷するためのコマンドを用意しているかもしれない.また,対応する制御コマンドによっては画像の印刷も可能である(各自,自分が持っているプリンタのマニュアルを確認してみると良いかも).
画像の印刷が可能な制御コードとして,STAR (LINE)コマンドがあるらしい.私が使用しているサーマルプリンタはESC/POSコマンドだけでなく,STARコマンドによる操作も可能のようだが,上手く行かない.

bitmap画像を印刷することで日本語を印刷した例(参考サイト)として,以下に載せる.
blogs.yahoo.co.jp






Cinema 4Dをはじめてみようかと思う.

※以下,ここからは何故Cinema 4Dを使うきっかけになったのか前フリになるので,飛ばしたい方は飛ばしちゃってください。
※また,内容は一部間違えた解釈,説明をしている可能性もあるので,詳しく知りたい人は自分で調べてみてください。間違っている部分など見つけましたら一報をいただければ幸いです。

背景

みなさんこんにちは。
 最近,やりたいことをやらなきゃみたいな思いがあり,そんな時にCinema4Dを見つけた。
 僕は音ゲーマー(?)であり,特にbeatmania IIDXが一番好きだ。音ゲーマーなら誰しもが「僕もこんな音楽作りたい!」って思うのは想像がつくと思います。しかし,DJに必要な機材はすごい高価で簡単には手に入らない。また,音楽知識が乏しい人にとってはさらにハードルが上がります。音楽知識が皆無な自分はどうやったら遊び以外で音ゲー関係に関われるか。そう,僕は軽くならグラフィック扱える。DJは無理でもVJっぽい事できるんじゃないかと考えた。
 そんなこんなでVJをやれないか調べてみた。
 VJとはビデオジョッキー?らしい。EDMなどのライブの映像を見たことがある人なら想像がつくと思うが,ライブの演出を担っている彼らである。僕が調べた感じ,映像を音楽に合わせてミックスして場を盛り上げるのがVJなのである。だが,既に出来上がっている動画繋げて再生するだけって面白みに欠けると思った。むしろ映像の素材こそ,自分で作りたい。特にCG系の映像を。
 音楽知識も無い,絵も書けない,グラフィックをちょっとやれる僕がCinema 4Dを使ってVJの映像素材が作れないかこれからやっていきたいと思う(長続きするとは言ってない)。

Cinema 4Dとは何か

Cinema 4Dとはグラフィックツールらしい。グラフィックに詳しい人ならわかるかもしれないが,MAYAとか3ds MAXのような物だ。数あるグラフィックの中でCinema4Dを選んだ理由は,「新しい物への挑戦」,「扱いやすそう」,「テレビCMなどで使われているらしいから」である。また,VJになるにはどうしたら良いのか調べ物をしている時に見つけたサイトVJ映像素材の作り方 | VJ JAPANでオススメされていたので使うことにした。

Cinema 4Dを選ぶ

Cinema 4Dといっても色んなバージョンがあります。すでに分かりやすいまとめがあるので,そちらを参照してください→CINEMA4Dのバージョンを使い方で選ぶ
このようにCinema4Dは最低でも10万円以上と高額です(もう少し安ければ...)。あるサイトでは激安でソフトを売っていますが,かなり黒に近い感じ(違法っぽい?)グレーゾーンだったのでどうしようか調べてみた。すると,Cinema4Dには学生版があるとの事!しかも無料(1年半限定)!これはやるしかない。なぜなら僕は学生だから。Cinema4D Student の機能制限が気になる人は→MAXON | 3D FOR THE REAL WORLD: 学生版
学生じゃない人はどうすればいいか...。とりあえず,期間限定などもあるみたいなので考えてみてはいかがでしょうか→MAXON | 3D FOR THE REAL WORLD: 期間限定ライセンス。どっちにしても高いので,僕が学生じゃなかったらソフトの購入に走りそう.自分の気合とかやる気とかと相談して購入を決めてみてください。

申し込み時に気をつけること

Cinema4D Studentを使うためには学生であることを証明するものを提出し,アクティベーションコードを発行してもらうための申請が必要です。申請方法などはMAXONのページに従えば良いだけです→CINEMA 4D無償学生版申請方法 | CINEMA 4D学生サイト。ここで気をつけて欲しいことは,学生証以外に在学証明書を提出する場合です。申し込みページになればわかると思いますが,学生証と在学証明書を提出する枠は「1箇所」しかないのです。MAXONのサイトにも書いてありますが,学生証と在学証明書を提出する場合は,2つの画像を1つにして提出しなければならないのです。ちなみに,間違えても後から再提出すれば大丈夫です。気をつけましょう(僕は間違えた)。

次回予告

次は,Cinema4Dを勉強してみるのにどうすれば良いかなどを書けたら良いな。調べてみると色々出てくるので,待ちきれない人は自分の力でレッツとらい。

Raspbery Pi と PHP でTwitterにつぶやきを投稿してみよう エラー解決編!

前回:Raspbery Pi と PHP でTwitterにつぶやきを投稿してみよう編! - ATG_voip’s blog

今回の題:よくあるエラーについて解決!

今回は前回のつぶやき投稿をやってみたが、よく分からないエラーがでてしまって…。という方向けです。
というか、自分がやってしまった失敗例な感じで上げていきたいと思います。

よくあるエラー集

・Raspberry Pi の内部の時計がリアルタイムではないためにツイート失敗

解決方法その1:コマンドを手動で実行して時計をリアルタイムに合わせる。
コマンドとしては下記のように入力しエンターするだけ。
(例:2015年3月25日 17時2分に設定する場合)

pi@raspberrypi ~ $ sudo date -s "03/25 17:02 2015"

解決方法その2:リアルタイムに合わせるために色々書き換え。
やり方は参考サイトを見てね(テヘペロ)。
参考サイト:Raspberry Piの設定【NTPデーモンの設定】 - Aldebaranな人のブログ
ちなみに私のラズパイが動いている場所はプロキシを挟んでいるせいなのか、ここの方法では解決できなかったので毎回、手動で時間を合わせてます。
ダレカタスケテー。

・OpenSSLのバージョンが低い?ためにツイート失敗

これについては原因がよくわからないがバージョンの関係でツイートできないことがあった(実体験)。とりあえず、Raspberry Piの中にOpenSSLが無いと意味ないのでインストールコマンドを実行。※既にインストールされているなら実行しなくても良い

pi@raspberrypi ~ $ sudo apt-get install openssl

インストールされたOpenSSLのバージョンが最新でない可能性もあるのでとりあえずアップデートしましょう。
コマンドとしては下記のように入力、エンター(とりあえず、全部アップデート)

pi@raspberrypi ~ $ sudo apt-get upgrade

事例を2つしか書いてませんが。。。
これでツイート失敗からツイート成功出来ましたでしょうか?
それでエラー吐くというかたはコメントお願いします。一緒に悩みましょう。

次回は何を書こうか迷い迷いです。
botが特定の言葉が来たら、それに対してリプライするプログラムか、
USBのWebカメラで写真を撮って、写真付きツイートなど最近になってできるようになったのでその辺を書くか、
もしくは、Felicaリーダー(Pasori)について書こうかと思います。

次回がいつになるかお楽しみ!

Raspbery Pi と PHP でTwitterにつぶやきを投稿してみよう編!

前回:Raspbery Pi を使ってTwitterでつぶやこう 準備編 - ATG_voip’s blog
どうも。
今忙しくてハショリハショリで書いちゃってます。
余裕ができたらもう少し詳しく解説?を追加しようかと思います。

今回の目標

下記を用いてつぶやく!

  • Raspberry Pi
  • PHP
  • TwiterOAuth
  • ※プロキシ設定も付録

ファイル構成

ファイル構成は以下のような感じに作成します。
f:id:ATG_voip:20150415130148p:plain

PHPソースコード

以下にTweetTest.phpソースコードを示します。
私は訳あってプロキシを通しての環境なのでプロキシを通してツイートしています。
なので、同じ境遇の方でチャレンジしたい人はソースにあるプロキシの設定をしてください。
文字コードUTF-8


実行してつぶやこう!

実際につぶやいてみましょう。
上記にあるファイル構成通り出来ましたでしょうか?
では、下のコマンドを入力して実行してみましょう。

pi@raspberrypi ~ $ php /home/pi/phpbot/TestTweet.php


このソースで動かなかった方はコメントお願いします。

Raspbery Pi を使ってTwitterでつぶやこう 準備編

前回:Raspbery Pi のファイルにアクセスしてみよう編 - ATG_voip’s blog

今回の目標

 今回の「Raspbery Pi を使ってTwitterでつぶやこう編」では、php言語を使ってTwitterでつぶやきたいと思います。

まず、はじめに用意するもの

  • PHPを動かすためにphp5のインストール
pi@raspberrypi ~ $ sudo apt-get install php5
  • TwitterOAuth認証するため、GitHubからTwitterOAuthをダウンロード↓(2015年04月10日現在)

abraham/twitteroauth · GitHub

下記のサイトを参考にして、
・Consumer Key (API Key)
・Consumer Secret (API Secret)
Access Token
Access Token Secret
のキーを取得して、メモしておいてください。syncer.jp
※注意
最初の登録すると「Application Settings」 と「Your Access Token」 のAccess LevelがRead Onlyになっている場合があるので注意!
また、設定を変更してもキー自体を変えない限りRead Onlyなので設定の変更後は、キーを再発行しましょう!

次回!PHPでプログラムを書いて、Twitterにつぶやきを投稿しよう編!

Raspbery Pi のファイルにアクセスしてみよう編

前回:Raspbery Pi のOSインストール編 - ATG_voip’s blog


この記事はインストール編の続編となります。RasBotのimgをSDカードに書き込んだ方への指南書になります。
実際にイチからRaspberryPiをファイルサーバーにしたい方は「Raspberry pi samba 導入」と調べれば詳細なインストール方法が載っているサイトが沢山出てくると思いますのでそちらを参考にしてください。

RaspberryPiのファイルサーバーにアクセスしてみよう

RaspberryPIにて次のコマンドを入力

pi@raspberrypi ~ $ ifconfig
  • LANケーブル接続(有線)でRaspberry Piとルータを接続している方

eth0に 「inet addr:xxx.xxx.xxx.xxx」というアドレスがあるのでそれを控える

  • 無線子機やWifiを使ってRaspberry Piとルータを接続している方

設定にもよるが、デフォルトではwlan0に設定がなされているはず。なので
wlan0に 「inet addr:xxx.xxx.xxx.xxx」というアドレスがあるのでそれを控える

実際にファイルサーバにアクセスしてみよう!

お手持ちのノートPCでもなんでもいいので、RaspberryPiと同じ所(ルータなど)に接続してください。
そしたら、エクスプローラーを立ち上げます。
エクスプローラーとはファイルなどいじるときに使うアレ
例えば、マイドキュメントを開くと上の部分に「ユーザー名▶マイドキュメント▶」のように書いてある欄があります。
そこをクリックしてアドレスを打ち込みます。
例.)「\\192.168.xx.xxx」
書き始めに「\\」をつけましょう。
「RasBoT」というファイルが表示されれば成功です!

以上、ファイルサーバへのアクセスでした。