node-redは1880番ポートで動作しています。アクセス毎にhttp://foo.bar:1880/とポート番号を入力するのは面倒です。WebサーバのNginxのリバースプロキシ機能を使うと簡単に80番ポートで公開可能になります。
Nginxのインストール
$ sudo apt-get install nginx |
Nginxの設定
/etc/nginx/sites-available/default ファイルを次のように書き換えます。
server { root /var/www/html; # Add index.php to the list if you are using PHP server_name _; location / { |
Nginxの再起動
$ sudo systemctl restart nginx.service |
node-redを起動しブラウザでアクセスするとアクセス可能です。うまく設定すると既存のWebと共存可能になります。
参考
/sys/class/leds/ktd202x:led1/device/reset ファイルに”1”を書き込むとリセット
/sys/class/leds/ktd202x:led1/device/registers ファイルにLEDの色データを書き込むとボタンの色が変更できます。
import java.io.*; public class led } /** /** try { /** } |
google aiy voice kit & google aiy vision kit でアップデートがうまくいかなかったため手動でアップデートしました。
1.うまくアップデートできないパッケージを削除します。
$ sudo apt-get remove aiy-voicebonnet-soundcard-dkms Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: aiy-vision-dkms avahi-utils Use 'sudo apt autoremove' to remove them. The following packages will be REMOVED: aiy-core aiy-full aiy-projects-python aiy-voicebonnet-routes aiy-voicebonnet-soundcard-dkms 0 upgraded, 0 newly installed, 5 to remove and 0 not upgraded. 36 not fully installed or removed. After this operation, 1,963 kB disk space will be freed. Do you want to continue? [Y/n] y |
2.うまく削除されたら再度インストールします。
$ sudo apt-get install aiy-vision-dkms avahi-utils aiy-projects-python aiy-voicebonnet-soundcard-dkms |
3.ドライバを再度インストールします。
$ ls /usr/src $ sudo dkms install -m aiy -v 1.1 $ sudo dkms install -m aiy-voicebonnet-soundcard -v 1.0 $ sudo dkms install -m leds-ktd202x -v 1.1 $ sudo dkms install -m pwm-soft -v 1.1 $ sudo dkms install -m aiy-vision -v 1.1 |
参考
JavaからRaspberry PiのIOを制御できるライブラリにpi4jがあります。
インストール
Java Runtime (JRE/JDK)とWiringPi Native Libraryをあらかじめインストールしておく必要があります。
$ curl -s get.pi4j.com | sudo bash |
コンパイル
次のコマンドでソースコードをコンパイルします。
$ /opt/pi4j/bin/pi4j –c sample.java |
実行
次のコマンドで実行します。
$ /opt/pi4j/bin/pi4j sample |
bluejの設定
bluejを使うと簡単にプログラミングできるようです。次のコマンドで設定ファイルを開きます。
$ sudo leafpad /usr/share/bluej/bluej.defs |
ファイルの192行目あたりに次の1行を追加します。
#bluej.userlibLocation=C\:\\some\\directory\\somewhere |
参考サイト
ライブラリをインストールします。
$ sudo apt-get install librxtx-java |
サンプルコードを入力します。(ARMアーキテクチャ環境のJava7でRXTXをビルドするのページより)
//http://d.hatena.ne.jp/talisker_ZQN/20130508/1368017726 import gnu.io.CommPortIdentifier; import java.util.Enumeration; public class Test{ public static void main(String[] args){ System.out.println("main method start."); try{ Enumeration portList = CommPortIdentifier.getPortIdentifiers(); CommPortIdentifier port = null; while (portList.hasMoreElements()) { port = (CommPortIdentifier)portList.nextElement(); System.out.println(port.getName()); } }catch(Exception e){ e.printStackTrace(); } } } |
コンパイル&実行します。
コンパイル $ javac -cp .:/usr/share/java/RXTXcomm.jar Test.java 実行 シリアルポートの一覧が表示される $ java -cp .:/usr/share/java/RXTXcomm.jar -Djava.library.path=/usr/lib/jni Test |
Javaからシリアル(RS232C)通信をするのページにサンプルプログラムが存在するので動作チェックすることができます。
//http://ytkoks.github.io/programming/2012/08/31/serial-communications-with-java/ import java.io.*; import java.util.*; import gnu.io.*; public class serial implements SerialPortEventListener { private SerialPort port; private static BufferedReader reader; serial() { try { // Serial port initialize CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("/dev/ttyS0"); port = (SerialPort)portId.open("serial", 2000); port.setSerialPortParams( 9600, // 通信速度[bps] SerialPort.DATABITS_8, // データビット数 SerialPort.STOPBITS_1, // ストップビット SerialPort.PARITY_NONE // パリティ ); port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE); reader = new BufferedReader( new InputStreamReader(port.getInputStream())); try { port.addEventListener(this); port.notifyOnDataAvailable(true); } catch (TooManyListenersException e) { System.out.println("Error: " + e); } } catch (Exception e) { System.out.println("Error: " + e); System.exit(1); } } public void run() { try { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); OutputStream out = port.getOutputStream(); boolean flagQuit = false; while (!flagQuit) { String input = br.readLine(); if (input.length() > 0) { if (input.equals(":quit")) break; input += "\r"; out.write(input.getBytes("US-ASCII")); } } port.close(); } catch (Exception e) { System.out.println("Error: " + e); } } public void serialEvent(SerialPortEvent event) { if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE) { String buffer = null; try { while (reader.ready()) { buffer = reader.readLine(); System.out.println(buffer); } } catch (IOException ex){ ex.printStackTrace(); System.exit(1); } } } public static void main(String arg[]) { serial serial = new serial(); serial.run(); } } |
参考