Arduino + Python Hacking 第4回¶
1.概要¶
東京、秋葉原で開催しますPythonとArduinoを使った勉強会です。
基本的には、Pythonを使ってソフト的にハードウェアを制御していく勉強会です。
なので、ハードウェアの知識は元より、ソフトウェアの知識も特に必要ありません。
本勉強会はソフトウェア開発(Python)の開発に重点を置きます。
今回は「アナログセンサー」を使った開発を行います。
【当日の流れ】
①午前 時間の話 100ms→1ms→1us
②午後
③放課後 雑談や復習を行う時間です。
2.開催日¶
日付 | 場所 | 内容 | 必要な物 | 参加費用 | 参加人数 |
---|---|---|---|---|---|
2013年2月17日 | 秋葉原CERO | 圧電ブザー | PC,Arduino,USBケーブル | 3000円 | 17人 |
3.内容¶
1) ソース Arduino側¶
Cファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include "Arduino_python.h"
#include "string.h"
// the setup routine runs once when you press reset:
void setup() {
Arduini_py_Init();
}
#define _Read_MAX_CHAR_ 50
// the loop routine runs over and over again forever:
void loop() {
int tmp = 0;
int strlen;
char Cbuf[_Read_MAX_CHAR_];
char *pos1;
char *pos2;
char *str;
int AD;
int num = 1;
AD = analogRead(0);
Serial.println(AD);
delay(100);
if(strlen >0)
{
}
}
|
Hファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | //==========================================================//
// Project Name : Arduino_Python
// File Name : Arduino_Python.h
// Date : 2012/09/30
// Version : 0.01
// Programer : Yuta Kitagami
// Description :
// Revision History :
// 2012/09/30 : New File
//==========================================================//
#include "Arduino.h"
int gRxbuf_cnt;
void Arduini_py_Init(void);
char Arduino_py_Command(char * RxBuf);
void Arduini_py_Init(void)
{
gRxbuf_cnt = 0;
//Serial.begin(9600);
Serial.begin(115200);
}
//==========================================================//
char Arduino_py_Command(char * RxBuf)
{
char tmp;
if (Serial.available() > 0)
{
tmp = Serial.read();
if(gRxbuf_cnt > 100)
gRxbuf_cnt = 0;
if( (tmp != '\n') && (tmp != '\r') )
{
RxBuf[gRxbuf_cnt] = tmp;
gRxbuf_cnt++;
RxBuf[gRxbuf_cnt] = '\0';
return 0;
}
else
{
RxBuf[gRxbuf_cnt] = '\0';
gRxbuf_cnt = 0;
Serial.write(RxBuf);
if(strlen(RxBuf) >0)
return strlen(RxBuf);
}
}
return 0;
}
//==========================================================//
|
Python 01ファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
import httplib, urllib
import time
import serial
import struct
tmp_msg = "/dev/ttyUSB0"
ser = serial.Serial(tmp_msg)
ser.baudrate = 115200
ser.timeout = 1
time.sleep(1)
ser.flushInput()
while 1:
s = ser.readline()
print "%.2f V " % (int(s) / 1024.0 * 5) ,
print s
ser.flushInput()
ser.close()
|
Python 02ファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
import httplib, urllib
import time
import serial
import struct
tmp_msg = "/dev/ttyUSB0"
ser = serial.Serial(tmp_msg)
ser.baudrate = 115200
ser.timeout = 1
time.sleep(1)
ser.flushInput()
while 1:
s = ser.readline()
print "%.2f V " % (int(s) / 1024.0 * 5) ,
print s ,
for i in range(0,int(s)/50):
print "*" ,
print ""
ser.flushInput()
ser.close()
|
Python 03 POST
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
import httplib, urllib
import time
import serial
import struct
_SEVER_ = "localhost"
_ADDR_ = "/post"
tmp_msg = "/dev/ttyUSB0"
ser = serial.Serial(tmp_msg)
ser.baudrate = 115200
ser.timeout = 1
time.sleep(1)
ser.flushInput()
while 1:
s = ser.readline()
print "%.2f V " % (int(s) / 1024.0 * 5) ,
print s ,
for i in range(0,int(s)/50):
print "*" ,
print ""
ser.flushInput()
POSTLIST = { "Hello" : "World" }
params = urllib.urlencode( POSTLIST )
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
conn = httplib.HTTPConnection( _SEVER_ )
conn.request("POST", _ADDR_ , params, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read().replace("\n","").replace("\r","")
print data
conn.close()
time.sleep(2)
ser.close()
|
Python 03 Flask
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, render_template , Response , make_response
import time
import serial
app = Flask(__name__)
@app.route('/')
def index():
return "Hello Flask!!"
@app.route('/post', methods=['POST'])
def post():
return "Hello Arduino"
if __name__ == '__main__':
app.debug = True
app.run(host="localhost",port=1234)
|