研究室紹介 2022年Ver

こんにちは、今回は今月の上旬に行われた、1年生に向けての研究室紹介の報告と紹介を行おうと思います!

やったこと

  • 小倉研究室の紹介
  • マシュマロタワー対決

を行いました。

今回の研究室紹介では、2年生を中心に活動を行いまいた。資料作成から、アイデア出しまで全て行っているのを見て、自分の研究室への理解も深まったと思います。

実際に作成したパワーポイント↓

研究室の概要について綺麗にまとめてくれました!

マシュマロタワー対決では、1年生VS上級生という構図ではありますが、上級生も本気で対決しました。

概要は下のTedTalkから見ることができます!

マシュマロ・チャレンジについて

時間の都合上、小倉研究室オリジナルルールで実施し、大変盛り上がりました。

作品の一例

学年を超えての交流や、下級生となかなか接点がない中で緊張しましたが、一年生に楽しんでもらうことができました!

8月の上旬には信州大学教育学部のオープンキャンパスも実施されます。小倉研究室も楽しみに皆さんをお待ちしております!

ラズパイを用いたNFCリーダの作成③

前回までは、ラズベリーパイとモジュールの接続の方法や、仕組みなどを説明してきました。まだ、見ていない方は見てみてください。

今回は、実際にPythonのコードとどんなことに気を付けてコードを書いたかを残していきたいと思います。

おしながき

  • 使うライブラリ一覧
  • メインのコード
  • LINEを送信するためのコード
  • MFRC522を読み込むためのいろいろなファイル
  • まとめ

以上5本立てでいきます。

使うライブラリ一覧

今回使うライブラリは

インストールしてください!

メインのファイル

  • time
  • sympy

LINEの送るファイル

  • line-bot-sdk
  • json

NFCを読み込むファイル

  • sys

これらが使用するライブラリになります。timeやsysといった有名ライブラリはanacondaパッケージに入っていますが、line-bot-sdkといったマイナーなライブラリはパッケージに入っていないので、ターミナルやコマンドプロンプトからインストールしましょう!

メインのコード

import linebot2
from time import sleep
import sample

memberlist={'000000000000':'20e18AA','1111111111111':'20e18BB','222222222222':'20e18CC'}
#memberlistには'タグの12桁':'管理したい学籍番号'の順番で記述

membercount={'20e18AA':0,'20e18BB':0,'20e18CC':0}
#membercountは入退室を管理する番号
 
while True :
    id_num = sample.read()
    print(id_num)
    number= str(id_num))
    print(memberlist)
    try :
        input_count = memberlist[number]
        #print('input_count:',input_count)
        #input_count(学籍番号)
        for i in membercount.keys() :
            if input_count == i :
                membercount[i]=membercount[i]+1
                if membercount[i]%2==1 :
                    message=i+'入室しました'
                    linebot2.main(message)
                    print('Complete')
                    sleep(3)
                    break
                else :
                    message=i+'退室しました'
                    linebot2.main(message)
                    print('Complete')
                    sleep(3)
                    break
            else :
                continue
    except KeyError:
        input_new=input('新しく登録しますか?_はい→1いいえ→2')
        if input_new=='1':
            input_name=0
            input_figure=input('学籍番号を教えて下さい(半角英数字)')
            membercount[input_figure]=input_name
            memberlist[number]=input_figure
            print('登録できました')
            sleep(5)
            continue
        else:
            print('はじめからやり直してください')
            sleep(5)
            Continue

この長いのが今回のメインのコードになります。前回のブログでの登録していないタグが来たときにも、新しく辞書に追加できるように仕様を変更しました。基本的にはwhileで回しながら、分岐をしていく簡単なものです。書き方がかなり乱雑ですが、一応動きます!

LINEを送信するためのコード

import json
from linebot import LineBotApi
from linebot.models import TextSendMessage


file=open('info.json','r')
info= json.load(file)

CHANNEL_ACCESS_TOKEN=info['CHANNEL_ACCESS_TOKEN']
line_bot_api=LineBotApi(CHANNEL_ACCESS_TOKEN)
def main(message):
    messages=TextSendMessage(text=message)
    line_bot_api.broadcast(messages=messages)
{CHANNEL_ACCESS_TOKEN":"ここにアクセストークンをペースト",
"USER_ID":"ここにユーザIDをペースト"}

 ここでは、LINEを送信するためのコードになります。ポイントはJsonファイルを使用しています。JsonファイルでユーザIDとアクセストークンを保存することで、スマートになるのかなと思います。

 Pythonファイルでは、Githubに公開されているものから使用する部分を残したものになります。一つ変更点があります。、公式ドキュメントの例では、「line_bot_api.push_message」となっていますが、「line_bot_api.broadcast」に変更することです。push_messageではUserIDの1番先頭の人にしかLINEが送られません。今回は、複数名に入室のLINEを送信したいので、push_messageでは要件に合いません。しかし「line_bot_api.broadcast」に変更することによって、全員に送信することになるので、非常に便利です。

MFRC522を読み込むためのいろいろなファイル

この隣のファイルは前回のブログでも紹介したGitHubのファイルになります。前回のブログからダウンロードした場合にはダウンロードは不要です。このファイルの中には追加でSample.pyのファイルがあります。そのファイルは今回の「入退室システム」用に引数や、return値をいじったものなので、使用する際には活用していただけたらと思います。

まとめ

以上が「入退室システム」のコードになります。繰り返しになりますが、コードの書き方が綺麗ではなく、見にくい箇所や回りくどい書き方や間違っているが多々あると思います。そのときには、良い感じにしていただいて使っていただけたらと思います。

一つの作成を通じて、Pyhtonだけでなく、LINEについて、ラズベリーパイについて、たくさんの学びにつながりました。教育学部技術科の範疇は超えているかもしれませんが、このような学びを行うことができて良かったと思います。

以上で「ラズパイを用いたNFCリーダの作成」終了です。

ラズパイを用いたNFCリーダの作成②

今回は、実際にどのようにNFCリーダを作ったのかをこのブログを通じて残していきたいと思います。

おしながき

  • ラズペリーパイとモジュールの接続方法
  • モジュールとNFCの簡単な仕組み
  • 入退室システムの簡単な説明
  • まとめ

以上の3つで今回は作成していきたいと思います。前回のブログはこちらから見れるので、見ていない方は先に見てもらったほうがいいと思います!

ラズペリーパイとモジュールの接続方法

ラズベリーパイとモジュールの接続に関してはとても簡単です。図で表すとこのようになります。

ラズベリーパイとの接続方法を表した図

また、複数のセンサを活用したいときにはブレッドボード使うと複雑にはなりますが、レベルが高いこともできるようになります。インターネットで調べると細かい規格なども出てくるので、興味がある人は調べてみてください!

モジュールとNFCの簡単な仕組み

NFCとモジュールはどのような仕組みで個々のタグを識別しているのでしょうか?

このモジュールにはされている白いカードと青いタグが付属されています。それらにはそれぞれ12桁の番号が登録されています。それらを読み取ることで個々のタグを識別することができます。

今回はその番号と管理したい学生の学生番号をPythonの辞書形式である「キー」「値」で結びつけることができます。

では、どうやって番号を読み取るのか?

それは、すでに作られてるファイルを使います。

Githubから既存で作られているものを使います!リンクはこちらからお願いします!

入退室システムの簡単な説明

簡単な説明をGoogleスライドにまとめました。こちらをご覧いただけたらと思います。

まとめ

今回は「ラズベリーパイとモジュールの接続方法」「モジュールとNFCの簡単な仕組み」「入退室システムの簡単な説明」を行いました。前回に比べ内容が少し深くなり、専門知識感が増したかなと思います。 この入退室システムは一例にすぎなく、もっと他にいい管理方法やライブラリがあると思うので、もう少し、学習を進めたらと思います。次回はPythonのコードをもとに作成したものを解説していきたいと思います。

はんだ付け

こんにちは。二年のらんです。

先日電気電子実習ではんだ付けを行いました。

はんだ付けで気を付けることとしては、安全に使うことはもちろんですが、はんだはすぐに固まってしまうので、はんだ→はんだごての順に基板から離すようにしましょう。

それにしても基板に抵抗やトランジスタをはんだ付けするだけで機械が動くなんてすごいですよね。

今後の実習もみんなで楽しく頑張っていきたいと思います。

最後に、はんだ付けの練習のときに作ったものを載せておきます!

ラズパイを用いたNFCリーダの作成①

どうもこんにちは、NFCを皆さんご存じでしょうか?身近なところだと、Suicaなどの交通系ICやUNIQLOやGUなどの会計の時に自動でアイテムを識別してくれるのもNFCの技術が用いられています。

さて今回作っていくのは、「ラズベリーパイ」「NFC」を組み合わせて、研究室の入退室システムを作っていこうと思います。

おしながき

  • システム要件
  • 今回使用するNFCリーダのモジュールについて
  • 通知方法について
  • まとめ

システム要件

今回のシステム要件(作りたいもの)は以下の通りです。

  • 言語はPython
  • NFCリーダ「MFRC-522 RC522 RFID」の採用
  • カードを読み取ったときにLINEにて通知を行う
  • 複数名での使用を想定

以上が今回作りたいものになります。

今回使用するNFCリーダのモジュールについて

今回使用するNFCリーダはAmzonなどで購入することができる格安モジュールのMFRC-522 RC522 RFIDになります。ここにAmazonのリンクを貼っておきます。

これはとてもお手軽に購入することができるので、チャレンジがしやすいと思います!また、別の方法としてPaSoRi RC-S380を使用する方法もありますが、今回は格安モジュールで作成をしたいと思います。

※格安モジュールでははんだ付けが必要となるので、ご注意いただけたらと思います。

Qiitaの方に別のNFCリーダの記事もあったので、共有します!

https://qiita.com/pf_packet/items/9a50d9f3b1f478930b02

通知方法

通知方法はLINEのAPIを使います。LINEのAPIには「LINENotify」と「LINEMassaging API」がありますが、今回は「Massaging API」を使ってみたいと思います。MassagingAPIはLINENotifyに比べると扱うのが難しいですが、その分できることもたくさんあるので、使いこなせる日が来たら良いなと思います。今回はメッセージを送信するだけなので、LINENotifyでも代用ができます。なので、LINENotifyを使う場合にはアレンジして使っていただけたらとおもいます。 

LINENotify公式サイトはこちら

LINE MessagingAPI公式サイトはこちら

まとめ

今回はこれから作成する作品についてのシステム要件と使用するモジュール、使用するAPIサービスを紹介しました。次回以降からは作成したコードから少しずつ解説も混ぜつつできたらなと思います。また別でLINENotifyは扱いたいなと考えています。

今回はこれで終わります。

PythonでWebスクレイピング

どうも。magnetです。

最近の情報系の授業において、「スクレイピング」というものを学びました。

スクレイピングについて詳しく知りたい方は、

「ゆう」が書いたこちらの記事をどうぞ~

その授業で各自製作の課題が課されたので、

とあるサイトをスクレイピングしてみました!!

以下に私が書いたコードを載せておきますね~。

import requests
from bs4 import BeautifulSoup
# importでrequestとbs4のBeautifulsoupを読み込みます。
# Webページを取得して解析する

load_url = "とあるサイトのURL"
# とあるサイトのURLをload_urlと定義。
html = requests.get(load_url)
# htmlをrequestのgetというメソッドを使い、 するものだと定義する。
soup = BeautifulSoup(html.content, "html.parser")    # HTMLを解析する
#ちょっとよく分からない。
# ~ここまでで、HTML全体を表示するプログラムは完成~

menu_all = soup.find_all(class_ = "menu-list")
# menu_allと定義します。

for menu in menu_all :
#for 関数 in リスト でmenuの中にmenu_allを何回も入れていきます。
    menu_name_full=menu.find_all('h4',attrs={'class':'menu-name'})
    #menu_nameを全て探すことを、menu_name_fullと定義します。
    for menu_name in menu_name_full :
    #menu_nameの中にmenu_name_fullを何回も入れていきます。
        print(menu_name.text)
        print()
        #printで指定したものの表示と、見やすいように空白を表示しています。

それぞれのコードの詳しい説明は#で書いてある文を参照してみて下さい!

これを実行すると、、、

メニュー一覧が出てきます。。

やってることそんなに難しそうじゃ無いじゃんか。

って思うかもしれませんが、

実際やってみると結構重めです……

なかなか理解出来ずに困ってましたが、

周りの助けも有りなんとか完成できました!

手伝って下さりありがとうございました。

今回のものは、メニュー一覧だけの表示となっていますが、

カロリーや値段も対応して表示出来ると、

データサイエンスみが増しますね。

また、完成したら投稿したいと思います。

ではでは。

あ、あと興味があればぜひ最新の投稿もご覧下さい!

Webページの作成

おはようございます。magnetです。

ずっと前に以下のページで streamlit を使ったWEBページを紹介しました。

(興味があればこちらもご覧下さい!)

そこで、今回はレポート作成に役立つようなサイトを作りたいと考え、

文字数カウントサイト

なるものを作りました。

https://share.streamlit.io/maglill/saisyonoyatu/main/mojisuu.py

上記のURLから飛ぶことが出来るので一回見てみて下さい!

これはサイト名通り、Wordなどに書いた文字をコピー&ペーストしてカウントボタンを押すと文字数をカウントしてくれます。

WordとかGoogleドキュメントに文字数を数えてくれる機能があるのは知りません笑

改善点としては英単語とかは文字数ではなく単語数が主流なので、正確に数えてくれません。

例えば、yesは3文字、weは2文字、canは3文字というようになります。

あくまで文字数ですからね~……

気分によって使い分けてみては?

最後に、コードを貼って終わりとします。ここまでご覧頂きありがとうございました!

import streamlit as st

st.title('文字数カウントサイト')
st.write('')
#ただの改行
'このサイトは入力された文章の文字数をカウント出来るサイトです。'
'「文字数足りてるかな?」と思ったら活用してみて下さい。'
st.write('')
#ただの改行

text=st.text_input('↓ ↓ ↓  入力してね  ↓ ↓ ↓')
#これ1つでテキストボックスも完備。

st.write('')
#ただの改行

n=len(text)
#textをnと置く。

if n==0:
    st.write('文字が入力されていないよ。')
    #未入力の時

if st.button('カウント'):
    st.write('文字数は',n,'です。')
    #ボタン押したとき文字数表示
    if n==0:
        st.write('nothing in the textbox. are you kidding me :△')    
    elif 1100<= n <=1300:
        st.write('およそA4一枚程度だよ。')
    elif 20000<= n <=40000:
        st.write('おおよそ卒業論文の文字数だよ。')
    else:
        st.write('')

ゼミ室の大掃除

こんばんは。magnetです。

今日はゼミ後にゼミ室の掃除を行いました。

しよう!という話が前期から出ていたのは内緒です笑

小倉先生が机を新調して下さるそうで♪

前にあった研究室で使っていた机やソファ、棚など大きなものから小さなものまでたくさん捨てました。

以下にpeaceから貰った作業風景とすっからかんのゼミ室の画像を載せておきますね。

作業風景
すっからかんのゼミ室

こうしてものを捨ててみると、改めて広さを実感しますね^^

日の光もよく入ってくるようになったので、お部屋も明るくなりそうです。

近日、机が到着するとのことなので、生まれ変わった姿を見るのがとても楽しみです。

記事をお読みのみなさまも、このように新しい雰囲気で来年度をスタート出来ると良いですね!

以上、大掃除の報告でした!

新しい年がやってきました

あけましておめでとうございます。新しい年がやってきました。小倉研究室にとっては今年は重要な年になりそうです。2021年4月に発足したこの研究室ですが、喜ばしいことに2022年4月には新しい仲間がやってきます。

それではこの研究室でこの年にやろうかなと考えていることをここに書いておきます。

今年の野望

1.ホームページのクオリティの向上

2.研究室としての何かしらの作品の製作

3.個人のスキルアップ

4.健康維持

この感じで頑張っていきたいなと思います。しかし、これらはすべて漠然としたものであって、具体的ではないです。これからゆっくりとそれぞれが考え、行動しこのブログに報告・記録をしていきたいと思っています。

このホームページもどんどん新しくなっていきます。

定期的なチェックをお願いします!!!

Webアプリケーションを作りました

こんにちは。
信州大学 教育学部 小倉研2年の peace です。

大学の情報の授業で、Webアプリケーションを作成しました。
是非、下のURLからアプリケーションを利用していただければと思います。
URL:https://share.streamlit.io/i-yuki1218/peace_2346/main/streamlitworks1.py

中身が気になる方は、以下のコードをご覧下さい
(参考になるかは分かりませんが,、主要部分のみ載せておきます,,,)

ソウルナンバー診断の一部を公開!参考になれば幸いです(*^o^*)

あっ、作品の説明がまだでしたね、、、
今回のWebアプリケーションでは「ソウルナンバー診断」ができます!
生年月日を打ち込むだけで正確や相性が診断ができるので、
家族や友達と楽しんでいただけたらと思います!(年末年始の集まりで盛り上がるかも?)