お知らせ

  • らずぱいでIoT

らずぱいでIoT 第13回(C言語で制御するために、その4)

noimage

らずぱいでIoT 第13回(C言語で制御するために、その4)

かわせです。相変わらずラズパイをC言語で使う方法について調べています。 そんな中、前回GPIOにアクセスるために/sys/class/gpioによるアクセス方法をご紹介しましたが、そのドキュメントの中に重大なことが書かれておりました。 /sys/class/gpioでのアクセスは現在推奨されておらず、libgpiodというライブラリを使うように勧めています。 2020年には/sys/class/gpioは廃止されlibgpiodに変更されるようです。 libgpiodでは /dev/gpiochipN にアクセスるライブラリでNは0から始まる数字になるようです。 現在は/dev/gpiochip0しか存在しておらず1や2はありませんがひょっとすると複数のデバイスを想定しているのかもしれません。 ちなみにすでに、libgpiodはGIT HUBで公開されています。 https://github.com/brgl/libgpiod ただいま解析中のためこれ以上詳しいことは書けませんが、現在作成しているプログラムは変更しないと新しいシステムでは動作しなくなる可能性が出てくるため、ラッピング関数で同じインターフェイスから使えるような工夫をしておかないと対応に苦慮するものと思われます。 それから、SPI通信やI2C通信用のデバイスファイルは変更なく使えるようです。 また、解析できたらブログ上でご報告したいと思います。

  • らずぱいでIoT

らずぱいでIoT 第12回(C言語で制御するために、その3)

noimage

らずぱいでIoT 第12回(C言語で制御するために、その3)

前回は、メモリのアドレスと意味についてマニュアルから読み取れるというお話をしました。 C言語を使うと、ポインターに仮想メモリのアドレスを与えてあげればメモリにアクセスすることも可能でしょう。 しかし、ラズベリーパイは基本的にRasbian LinuxというOSが乗っているのでメモリーにアクセスるるためにはメモリデバイス/dev/memを介してアクセスるようにします。 ただ、/dev/mem はrootユーザにしか書込み権が与えられておらず、このデバイスに書込みアクセスるためにroot権限が必要になります。 なので、実際には/dev/gpiomem というデバイスにアクセスします。 (/dev/gpiomem にはrootグループユーザまでに書込み権が与えられています。) このデバイスファイルにCでアクセスるためにはfopenサブルーチンではなくopen システムコールを使います。 open通常のファイルアクセスではなくデバイスファイルにアクセスる場合に使い、ドライバの機能にアクセスるためのファイルディスクリプタを得ることが出来ます。 実際にメモリにアクセスするためにはmmap()関数でGPIOメモリをマッピングし、終了時にはmunmap()関数でアンマップします。 また、Rasbian Linuxでは一般ファイルとしてGPIOにアクセスることも可能で、 /sys/class/gpio 以下の export ファイルにコントロールするGPIOのピン番号を指定するとコントロール用の /sys/class/gpio/gpioxx というディレクトリが出来上がりその下にdevice,value,edge,active_low等の制御用ファイルが出来上がりこれらのファイルにアクセスすることでGPIOピンをコントロールすることが出来ます。 参考 https://www.kernel.org/doc/Documentation/gpio/sysfs.txt   この制御ファイルはC言語からだけではなく、ファイルにアクセスできればどんな言語からもアクセス可能です。

  • らずぱいでIoT

らずぱいでIoT 第11回(C言語で制御するために、その2)

noimage

らずぱいでIoT 第11回(C言語で制御するために、その2)

こんばんわ、かわせです。 ラズパイでIoT前回は現在乗っている、BROADCOMのチップによって制御する方法が変わってくるのでチップセットを知る方法について書いてみました。 RaspberryPi ZeroではBCM2835というチップでこの説明書を読んでみるとラズパイのメモリ配置やペリフェラルデバイスIOマップや各種レジスタの意味が書かれており これを読むことでUARTシリアル通信にかかわるレジスタやGPIOの操作にかかわるレジスタ群の説明が書かれています。 このような説明書をもとにして、C言語で直接ハードウエアを制御することも可能になります。 また、ラズパイでは標準でRasbianというDebian LinuxをベースにしたOSが配布されておりこのOSを使うことが一般的です。 OSでは各種ペリフェラルデバイスをコントロールするためのドライバが用意されておりこれをC言語から制御することで操作する方法もあります。 各種デバイスドライバをRasbian Linuxに組み込むためには raspi-config というコマンドを使います。 raspy-configではそのほかにsshの起動や起動時にGUIを使うかCUIを使うかの設定やlocal設定なども可能で、ラズパイは最も小さいLinuxPCとも言えます。 そこで手前みそではありますが、UNIX Like OSの勉強会を今後開いていこうと考えており下記のアドレスでメンバーを募集しております。 https://bashw.connpass.com/   ご興味のある方はこのURLからメンバー登録お待ちしております。  

  • らずぱいでIoT

らずぱいでIoT 第6回(Pythonで初書き)

noimage

らずぱいでIoT 第6回(Pythonで初書き)

今回は、温度、気圧、湿度を読み出すためのパラメータを書込んで補正データとRawデータを読取る部分をpythonで書いてみました。 書込みパラメータは第4回のシェルスクリプトでRawデータを読むを参考にしてください。 ーーーーーーーーーーーーーーーーーーーー 以下プログラム #!/usr/bin/python import smbus import time SMBUS_NUMBER = 1 SMBUS_ADDR = 0x77 SMBUS_REG_CONF = 0xF5 SMBUS_REG_CTRL_MEAS = 0xF4 SMBUS_REG_CTRL_HUM = 0xF2 dig_T = [] dig_P = [] dig_H = [] calib = {} n = 0x88 while n <= 0xA1: ____ calib[n] = 0 ____ n = n + 1 n = 0xE1 while n <= 0xF0: ____ calib[n] = 0 ____ n = n + 1 n = 0xF7 while n <= 0xFE: ____ calib[n] = 0 ____ n = n + 1 bus = smbus.SMBus(SMBUS_NUMBER) bus.write_byte_data(SMBUS_ADDR,SMBUS_REG_CONF,0xA0) bus.write_byte_data(SMBUS_ADDR,SMBUS_REG_CTRL_HUM,0x01) bus.write_byte_data(SMBUS_ADDR,SMBUS_REG_CTRL_MEAS,0x25) time.sleep(0.1) for k in calib.keys(): ____ calib[k] = bus.read_byte_data(SMBUS_ADDR, k) for k,v in calib.items(): ____ print "0x%02X -> 0x%02X" % (k,v) ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ここまで このプログラムを書くにあたり、工夫した点はDictを使いレジスタアドレスとデータの関係性を作り上げている点にあります。 レジスタのアドレス等はデータシートに出ています。 こうすることによりレジスタの読取り部分をすっきりと書くことができたのではないかと思います。 ここではソース中のスペースを _ で表している事にご注意ください。 今回のソースはここからダウンロードできます。 何分Pythonは初書きのためつたないところがあるかもしれませんがご容赦ください。

  • パソコン関連

Raspberry Pi 3登場

noimage

Raspberry Pi 3登場

小型の教育用コンピュータRaspberry Pi(ラズベリーパイ)の新型Raspberry Pi3が発売開始されました。 Raspberry Piは小型のコンピュータで、マザーボードやチップ、端子がむき出しとなった形状をしています。 前モデルのRaspberry Pi2との差はプロセッサ処理能力が向上したこと、Wi-FiとBluetoothが組み込みとなったことです。 プロセッサ能力が向上したため、消費電力は2.5Aと増加し、それまでRaspberry Piで利用していたMicroUSBケーブルと電源アダプタは利用できない可能性があります。 従来のRaspberry Piシリーズで利用していたディスクのイメージはそのままで利用できるようです。 Raspberry Pi開発元の提供するOSであるRaspbianは、LinuxのディストリビューションであるDebianをRaspberry Piに最適化されたものです。 Linuxということで尻込みしてしまう方は多いかもしれませんが、教育用途としては無償で提供されるLinuxは適していることもあり、またかつてのイメージされているLinuxに比べれば随分と簡単になっています。 APTというパッケージ管理ソフトウェアがDebianには備えられていて、複数の必要なライブラリの依存関係をすべてクリアした上でソフトウェアのインストールが簡単に行えます。 すでにRaspberryの為にに作られたバイナリパッケージをダウンロードしてみるのも良いですし、ソースコードをダウンロードしてビルドしてインストールするなども簡単にできるようになっています。 HTTPサーバーをRaspberry Piで動作させて、家庭内LANで使えるWebサーバを作ってみたり、音楽などのストリーミングサービスを自分で設定してみたり様々なことが簡単に行えます。 多くの人が当たり前のように使っているWebですが、サーバ側がどのような設定で動作しているのか、どのようにインストールされているのか、などを知るためには安価で最適なものとなるでしょう。 またサーバー側で動作するPHPやPythonなどの言語や、データベースについて学ぶ機会でもあります。 教育用途として利用されるコンピュータで、表だって利用されるブラウザやメールソフトの接続する向こう側がどのようになっているかを知ることは、将来のエンジニアにとって大切な機会だろうと思います。 タブレットなどを教育用途に利用するのも人に使い易い形に作り上げられたコンピュータの使い方の学習になります。 インターネットというインフラについて学習できるRaspberry Piはもう一つの観点からの学びとなるはずです。

  • パソコン関連

魔法ではないコンピュータ

noimage

魔法ではないコンピュータ

 最近世の中で最も出荷されているコンピュータは、スマートフォンやタブレットです。  アップルが魔法のようなデバイス、という言葉をキャッチコピーにしていましたが、パソコンとほぼ同じことのできる、パソコンではないもの、というイメージをお持ちの方もいらっしゃると思います。  子供がタブレットなどでゲームやユーチューブを見ているかぎり、これがコンピュータというものだという認識もないのかもしれません。  しかしこれらもれっきとしたコンピュータで、様々なDaemonやプロセス、デバイスドライバが読み込まれ、実行されています。 教育用コンピュータとしてのRapsberry Pi  ワンボードで一式のコンピュータとして動作するRaspberry Piを子供向け教育用途に利用する、というお話は耳にします。  Raspberry Piは公式に提供されているOSはLinuxで、起動時に様々なDaemonやデバイスの認識、ネットワークの設定などが、文字でずらっと表示れされます。  セットアップしてすぐはCUI、キーボードと文字だけで操作する状態です。  ユーザーとパスワードを聞かれ、ログインします。  ネットワークに接続し、OS内部のパッケージをアップデートします。  そしてstartxとキーボードで入力して、ようやくマウスを利用したWindowsのようなOSとして操作することができます。  それでもWindowsよりはよほど貧弱な見た目と機能です。  普段使っている、パソコン、スマートフォン、タブレットが見えないところでこのようなプロセスを経て実行されていることを理解してもらうことが、教育用途として用いられる一つの理由です。 とっつきにくさの隠蔽  ここまでのプロセスを経てコンピュータが起動しているということを、LinuxなどのテキストベースのOSに触れていないと知らないことなのかもしれません。  Windowsのマークが表示されている間に、Windowsが何をしているかというと、様々なサービスを実行し、機器構成を調べて認識し、ドライバをインストールしたり、といったことを行っています。  ただ、それをユーザーに提示すれば、難しい機械として嫌われます。  その辺りのプロセスが隠蔽され尽くしたのがスマートフォンやタブレットでしょう。  Windowsも3.1やそれ以前のバージョンでは、もっと隠蔽しきれていない部分があり、グラフィック表示の向こう側が見え隠れするものでした。  それがWindows95以降どんどんと洗練され、魔法のような機器に近づこうとしています。  見せ方や操作性の工夫をしていても、その向こう側では、パッケージをインターネットから探し、インストールスクリプトを実行するなど、コンピュータのあり方は旧来から変わってはいません。それはスマートフォンやタブレットでも同じことです。   魔法のようであることの良い点、悪い点  良い点としてはもちろん、ユーザーの裾野が広がって誰もが高度なコンピュータを目的に応じて、より気軽に使えるようになることです。  例えば、コンピュータを音楽制作に使いたい方に、まずコンピュータのコマンドから覚える必要がある、ではよほど根気のある人しか使わないでしょう。  タブレットなどであれば、音楽制作用のアプリをアプリストアからダウンロードするだけですぐに使えるようになります。これはとても重要なことです。  悪い点、と言っていいのかはわかりませんが、これだけコンピュータの環境が整備されると、今後コンピュータのエンジニアを目指す方がよりハードウェアに近い部分に興味関心を持たなくなってしまうのではないかということです。  タブレットなどもタッチパネルや様々なセンサーなどと統合したOSを搭載していますので、ハードウェアに近い部分のエンジニアの技術が欠かせません。  OSの上で動作するソフトウェアにしか関心がなくなってしまうと、新しいエンジニアもコンピュータの機械の部分への理解が薄くなり、なぜこのようなことができないのか、どのようにすればできるようになるのか、ということが見えなくなってしまう恐れがあります。  

  • パソコン関連

Raspberry Pi 2とWindows10

noimage

Raspberry Pi 2とWindows10

Raspberry Pi(ラズベリーパイ)という、手のひらサイズのワンボードで、一式のコンピュータが開発され、世界様々なところで、教育用途や、機器の制御などに利用され始めています。 HDMI端子からディスプレにつなげばGUIでの操作も可能で、USBポート、LANポートも用意されおり、パソコンとして利用することができます。 このRaspberry Piに新機種Raspberry Pi2が登場し、性能大幅アップとともにWindows10が無償提供されることが発表されました。 Windows10が提供される意味 Raspberry Piはもともと開発元からDebian LinuxをベースにしたOSが提供されていました。これをハードディスク代わりのSDカードに書き込み、起動する形をとっていましたが、今回はMicrosoftからWindows10がそのディスクのイメージとして提供されるようです。 Windows10のコンセプトは、今まで別々のプロジェクトであったパソコン用のWindowsや組込型のWindows、スマートフォン用のWindowsの基礎となる部分を共通化する、というものがあります。 Raspberry Piは小さなコンピュータですから、フルセットのWindows10を載せるわけではないと思われます。 Windows10は様々な機器の中核になることを目指しています。 Internet of Things(物のインターネット化)という言葉があります。様々なものにインターネットを接続させようという考え方です。 かつてユビキタスというような言葉でも語られていましたが、いま超小型でも十分な性能をもつコンピュータ、スマートフォンやタブレットのようなものが世の中に溢れています。 かつて携帯電話を持っていた人たちが、今続々とその手にコンピュータを持つようになっています。 そんな流れの中、Raspberry PiをWindowsのプラットフォームにすれば、Windowsの開発者にとっては、特別な技術の習得なくVisualStudioのような既存の開発環境で様々な機器と接続させるプログラムを開発することができます。 マイクロソフトの戦略 現在iPhoneであればObjective-C、アンドロイドであればJava、Raspberry PiであればLinuxで動作するCやスクリプト、WebサーバーであればPHPやJavascriptなど、マイクロソフトはビジネス用アプリ以外が相対的に増えていく中で、比率として縮小しています。 この新しいソフトウェアの中にマイクロソフトが食い込んでいくためには、積極的にWindowsの動作する機器を増やしていくことです。 Windows Phoneなどもまだ日本で発売されていない状態でもあり、スマートフォン市場の中でかなり苦戦を強いられています。 .Netのオープンソース化でも書きましたが、Windows開発者が他のプラットフォーム開発に移ってしまうまえに、またマイクロソフトの提供する開発ツールの優秀さで新たな開発者を呼び込むことができるように、という思惑があります。 実際にWindows PCがここまでビジネスの世界で浸透した大きな理由のなかに、開発の容易さが含まれていることは確かです。 プラットフォームとしてのWindowsが今後どのような広がりを見せ、開発者に受け入れられていくか、Raspberry Pi2へのWindows10無償提供は、動向を伺う一つの指標になりそうです。