RaspPi アナログ入力
RasPiにMCP3008とボリューム繋いでアナログ入力テスト。
#!/usr/bin/env python # -*- coding:utf-8 -*- # # MCP3008 にボリュームを繋いでアナログ入力テスト # # 参考 # https://www.denshi.club/pc/raspi/5-mcp3208.html import spidev, time spi = spidev.SpiDev() spi.open(0,0) spi.max_speed_hz = 1000000 #転送速度 1MHz def analog_read(channel): adc = spi.xfer2([1,(8+channel)<<4,0]) data = ((adc[1]& 3) << 8) + adc[2] return data while True: for i in range(2): reading = analog_read(i) voltage = reading * 5 / 1024 print("ch:", i, "Reading=%d tViltage=%f" % (reading, voltage)) time.sleep(1)
ファイラーインストール
ポメラLinux化
ichinomoto様が解析、作成したツール、ファイルを使わせていただきポメラをLinux化した。
Debian on Pomera DM200 も購入させていただきました。難しいことはわからないけど、読んでてわくわくする。
Wifiが動かない
Linuxはすんなり起動したのだが、
$ sudo /opt/bin/wifi_switch on
としても
Error for wireless request "Set Power Management" (8B2C) : SET failed on device wlan0 ; Interrupted system call. Successfully initialized wpa_supplicant $ Could not set interface wlan0 flags (UP): Operetion not permitted nl80211: Could not set interface 'wlan0' UP nl80211: deinit ifname=wlan0 disabled_11b_rates=0 Could not set interface wlan0 flags (UP): Operation not permitted WEXT: Could not set interface 'wlan0' UP wlan0: Failed to initialize driver interface
と出てwifiが動かない。
ポメラのソフトウェアバージョン
ポメラのソフトウェアバージョンは購入したときから Ver.1.1.0.0 でした。 これだと DM200 と思って?しまうらしい。
dm200_wireless ファイルを修正しました。
$ sudo vi /etc/init.d/dm200_wireless
#!/bin/sh WIFI_SETTING_FILE=/mnt/sd/settings/wpa_supplicant.conf #if [ `cat /proc/meminfo | awk 'NR==1 {print $2}'` -eq 1026076 ]; then ← コメント if [ -b /dev/mmcblk0p27 ]; then # ← こちらに変更 MODEL="DM250" else MODEL="DM200" fi
これで無事wifiも使えるようになりました。
ichinomoto様、その他ネットやTwetterに有用な情報を載せていただいている皆様ありがとうございます。
ブラウザからGPIOを使ってみる
lighttpdインストール
$ sudo apt install lighttpd
http://raspberrypi.local/ にアクセスしてページ表示を確認
lighttpdの設定ファイル複製しておく
$ sudo cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.org
cgiを有効にする。
$ sudo lighttpd-enable-mod cgi
lighttpdを再起動
$ sudo service lighttpd force-reload
cgi設定
10-cgi.conf を修正
/etc/lighttpd/conf-available/10-cgi.conf
オリジナルを保存しとく
$ sudo cp /etc/lighttpd/conf-available/10-cgi.conf /etc/lighttpd/conf-available/10-cgi.conf.org
下記を修正
$HTTP["url"] =~ "^/cgi-bin/" { cgi.assign =( ".py" => "/usr/bin/python" ) alias.url += ( "/cgi-bin/" => "/usr/lib/cgi-bin/" ) }
〇lighttpdを再起動
いろいろ参考にして
いろいろなページを参考にさせていただいて
〇index.html
$ sudo vi /var/www/html/index.html
〇cgiプログラム
$ sudo vi /usr/lib/cgi-bin/formcgi.py
を作りました。
ランタイムエラー
GPIOのところはRPi.GPIOを使用しているのですが、CGIを呼ぶと ランタイムエラー が表示されました。
RPi.GPIOとか使うにはroot権限が必要らしい。
ユーザー www-data をgpioグループに追加
$ sudo adduser www-data gpio
ラズパイを再起動したら動きました。
正しいやり方なのか?
index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>RasPi GPIO TEST</title> </head> <body> <h1>GPIO 送信テスト</h1> <form action="/cgi-bin/formcgi.py" method="post"> <input type="submit" value="ON" name="onpb"> <input type="submit" value="OFF" name="offpb"> </form> </body> </html>
formcgi.py
#!usr/bin/python import cgi import cgitb import RPi.GPIO as GPIO cgitb.enable() GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) form = cgi.FieldStorage() if (form.getvalue('onpb')): GPIO.output(18, True) str1=('ON') if (form.getvalue('offpb')): GPIO.output(18, False) str1=('OFF') GPIO.cleanup() print("Content-Type: text/html") print() htmlTxt = ''' <html> <head> <meta charset="utf-8"> <title>Get PB Submit</title> </head> <body> <h1>受信ボタン : {getmsg}</h1> <a href="../index.html">戻る</a> </body> </html> '''.format(getmsg = str1) print(htmlTxt)