プレゼン資料:
こちらからダウンロード
作成データ(筐体):
こちらからダウンロード
動作の動画 その1(ショート動画):
こちら
動作の動画 その2:
- import doyolab
- import time
- #シリアルポートを入力-------------------------
- serial_port='/dev/cu.usbmodem1201'
- #-------------------------------------------
- #Arduinoとのシリアル通信設定-------------------
- my_arduino = doyolab.set_serial(serial_port,9600)
- #-------------------------------------------
- #user_key、sub_idの設定---------------------
- #自分のユーザーkeyを書く
- user_key1='y6nP71kPXap6Q89ZWTr2easHWxIzxo'
- #subIDはどのデバイスからのデータか、どのプロジェクトのデータかなどを認識するために使います
- sub_id1='pc'
- #-------------------------------------------
- #while Trueは無限ループ#----------------------
- while True:
- # Arduinoからreadlineコマンドでデータを取得し、data_from_arduinoという変数に格納
- data_from_arduino=my_arduino.readline()
- #stripコマンドで、data_from_arduinoの中の余計な文字を削除
- #さらにintで文字で送られてきたデータをint型に変換
- data=int(data_from_arduino.strip())
- print(data)
- # データの設定--------------------------------
- datetime_data = ""
- int_data = data #Arduinoから受け取った値をここでint_dataにいれる
- float_data = ""
- txt_data = ""
- # -------------------------------------------
- # データの送信---------------------------------
- # user_key
- # sub_id
- # 日付データ(空白にしてもサーバーで自動で日付を入れてくれる):datetim_data
- # 整数データ:int_data
- # 実数データ(小数を含むデータ):float_data
- # テキストデータ:txt_data
- ret = doyolab.sendData_To_doyolabIoTserver(user_key1, sub_id1, datetime_data, int_data, float_data, txt_data)
- print(ret)
- # -------------------------------------------
- #-------------------------------------------
- # IoTサーバーからデータの取得----------------------------------------------------
- # user_key
- # sub_id
- # データ数:最新のデータからいくつのデータを取得するか?下記の例では1(最新のデータのみ)
- data_list = doyolab.getData_From_doyolabIoTserver(user_key1, sub_id1, 1)
- # リスト形式で取得される
- print(data_list)
- #0番目のデータの塊の中の2番目のデータを読みたい(0から始まるので、本当は3番目)
- int_data =int(data_list[0][2])
- print(int_data)
- # --------------------------------------------------------------
- # int_dataが300より大きかったら、'1'を送信(点灯させる)、それ以外の時は'0'を送る(消灯させる)
- if 950 <= int_data < 1000:
- to_arduino = '1';
- if 900 <= int_data < 950:
- to_arduino = '2';
- if 850 <= int_data < 900:
- to_arduino = '3';
- if 800 <= int_data < 850:
- to_arduino = '4';
- if 750 <= int_data < 800:
- to_arduino = '5';
- if 700 <= int_data < 750:
- to_arduino = '6';
- else:
- to_arduino = '0';
- # Arduinoにデータを送る
- my_arduino.write(to_arduino.encode())
- time.sleep(5) # 指定した秒数を待つ(msでなく秒なので、注意) サーバーに負荷がかかるので5より小さい値は設定しないでください。(実装する際は可能な限り大きな数字にしてください)
- int from_pc='0';
- int speaker_pin = 12;
- const int vol_pin = 0;
- #include <Adafruit_NeoPixel.h>
- #define PIN 13 // 信号用のピンを指定
- #define NUMPIXELS 12 // LEDの数を指定
- int brightness=20;//数値を変更して明るさ変更
- Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
- void setup() {
- Serial.begin(9600);
- pixels.begin(); // NeoPixel出力ピンの初期化
- pixels.setBrightness(brightness);
- }
- void loop() {
- pixels.clear(); // すべてのLEDの色を0にセット
- int val=analogRead(vol_pin);
- Serial.println(val);
- delay(500);
- int i=0;
-
- if(val<1000){
- tone(12,val);
- }else{
- noTone(12);
- }
- if(Serial.available() > 0){
- from_pc = Serial.read();
- }
- if (from_pc=='1'){
- pixels.setPixelColor(0, pixels.Color(0,255,255));
- pixels.setPixelColor(2, pixels.Color(0,255,255));
- pixels.setPixelColor(4, pixels.Color(0,255,255));
- pixels.setPixelColor(6, pixels.Color(0,255,255));
- pixels.setPixelColor(8, pixels.Color(0,255,255));
- pixels.setPixelColor(10, pixels.Color(0,255,255));
- pixels.setPixelColor(12, pixels.Color(0,255,255));
- pixels.show();
- }else if (from_pc=='2'){
- pixels.setPixelColor(0, pixels.Color(127,255,212));
- pixels.setPixelColor(2, pixels.Color(127,255,212));
- pixels.setPixelColor(4, pixels.Color(127,255,212));
- pixels.setPixelColor(6, pixels.Color(127,255,212));
- pixels.setPixelColor(8, pixels.Color(127,255,212));
- pixels.setPixelColor(10, pixels.Color(127,255,212));
- pixels.setPixelColor(12, pixels.Color(127,255,212));
- pixels.show();
- }else if (from_pc=='3'){
-
- pixels.setPixelColor(0, pixels.Color(0,255,127));
- pixels.setPixelColor(2, pixels.Color(0,255,127));
- pixels.setPixelColor(4, pixels.Color(0,255,127));
- pixels.setPixelColor(6, pixels.Color(0,255,127));
- pixels.setPixelColor(8, pixels.Color(0,255,127));
- pixels.setPixelColor(10, pixels.Color(0,255,127));
- pixels.setPixelColor(12, pixels.Color(0,255,127));
- pixels.show();
- }else if (from_pc=='4'){
- pixels.setPixelColor(0, pixels.Color(0,128,0));
- pixels.setPixelColor(2, pixels.Color(0,128,0));
- pixels.setPixelColor(4, pixels.Color(0,128,0));
- pixels.setPixelColor(6, pixels.Color(0,128,0));
- pixels.setPixelColor(8, pixels.Color(0,128,0));
- pixels.setPixelColor(10, pixels.Color(0,128,0));
- pixels.setPixelColor(12, pixels.Color(0,128,0));
- pixels.show();
- }else if (from_pc=='5'){
- pixels.setPixelColor(0, pixels.Color(240,128,128));
- pixels.setPixelColor(2, pixels.Color(240,128,128));
- pixels.setPixelColor(4, pixels.Color(240,128,128));
- pixels.setPixelColor(6, pixels.Color(240,128,128));
- pixels.setPixelColor(8, pixels.Color(240,128,128));
- pixels.setPixelColor(10, pixels.Color(240,128,128));
- pixels.setPixelColor(12, pixels.Color(240,128,128));
- pixels.show();
- }else if (from_pc=='6'){
- pixels.setPixelColor(0, pixels.Color(0,0,205));
- pixels.setPixelColor(2, pixels.Color(0,0,205));
- pixels.setPixelColor(4, pixels.Color(0,0,205));
- pixels.setPixelColor(6, pixels.Color(0,0,205));
- pixels.setPixelColor(8, pixels.Color(0,0,205));
- pixels.setPixelColor(10, pixels.Color(0,0,205));
- pixels.setPixelColor(12, pixels.Color(0,0,205));
- pixels.show();
- }else {
- pixels.setPixelColor(0, pixels.Color(255,255,255));
- pixels.setPixelColor(2, pixels.Color(255,255,255));
- pixels.setPixelColor(4, pixels.Color(255,255,255));
- pixels.setPixelColor(6, pixels.Color(255,255,255));
- pixels.setPixelColor(8, pixels.Color(255,255,255));
- pixels.setPixelColor(10, pixels.Color(255,255,255));
- pixels.setPixelColor(12, pixels.Color(255,255,255));
- pixels.show();
-
- }
- }
今期、初めて電子工作・IoTに取り組んだが正直理想のクオリティまでは持っていけず悔しい。が、タイムラグはあれどサーバーを介して遠隔で機械を光らせることもできたし、音階も奏でることはできたので、少し自信になった。
それから、今期は班リーダーになったものの、なかなかメンバーを作業しやすいように・スケジュール通りに作業を進められるように良い感じにフォローできず、グループメンバーには大変申し訳なかったと思う。
それでも一緒に行動してくれた班のメンバーには感謝しかない。