# 智慧充電箱
made by Chou
# 介紹
此專案利用raspberry pi製作智慧充電箱,能使用line啟動以下3種功能:
1. 睡醒時充飽電
2. 番茄時鐘
3. 手機保管箱
# 需要零件
## 硬體
* Raspberry Pi
* Picamera(可調焦距的版本)
* 紙箱、紙板
* 竹筷
* 吸管
* LED燈*2
* 兩路繼電器
* 2.0mm單芯線(建議使用1.6mm)
* 電源線
* 卡式插座
* 快速接線端子
* 手機充電器+線
* PIR motion sensor
## 軟體
* python3
* anaconda
* cuda toolkit
* pytorch(torch), torchvision
# 外觀



# 電路圖



# 安裝鏡頭、感測器、LED

# 建立圖像辨識模型
### 建立樣本
* 本專案有電量為50-59%,60-69%,...90-99%,100%共6個區間(將6個資料夾分別命名為5X,6X,7X,8X,9X,100)
* 拍攝時注意picamera的焦距問題,避免太過模糊,以人眼能夠辨識為標準。
* 每個區間拍700-1000張,大小為256乘256,減少拍攝不必要的部分。
1. 在50-59%拍攝700-1000張照片
2. 平均挑選1/10作為test資料,放入/Data/test/5X;剩下作為train資料,放入/Data/train/5X
3. 其他區間以此類推
以下為圖片範例

### 建立訓練環境(在自己的電腦)
1. 安裝anaconda,方便管理環境
2. 建立新環境,並在vscode選擇新建立的環境作為編譯器
3. 在cmd打nvidia-smi,查詢CUDA Version,我的是12.2

4. 在nvidia developer安裝cuda toolkit 12.1,安裝的版本要看前面的CUDA Version,CUDA Version可向下兼容
5. 安裝torch,我安裝的是2.1.1
6. 安裝torchvision,我安裝的是0.16.2
7. 執行訓練模型程式(最後一個block是實際運作的code,可以先不用做,除非你很想測試),程式內有註解要修改的位置
https://github.com/z631200/NCU_112_IOT_Project/blob/main/IOT_Build_algorithm.ipynb
8. 程式會驗證是否安裝成功,並產出模型(savemodel.pth),請將此檔案放到樹莓派
補充: CUDA用來幫助運算,pytorch用來訓練模型
### 建立使用環境
1. 前往 https://torch.kmtea.eu/whl/stable.html 下載torch、torchvision的whl檔
2. 將下載好的檔案傳到樹莓派
3. 開啟cmd
4. 安裝numpy, 我安裝的版本是1.12.1
5. 安裝torch,我安裝的版本是1.7.1
6. 安裝torchvision,我安裝的版本是0.8.2
* 透過在此網站 https://download.pytorch.org/whl/torch_stable.html 尋找whl檔進行安裝
* 例如要安裝pytorch-2.1.1,並且在cuda 12.1、python版本=3.10(cp310)的情況下,要尋找以下的檔案
* cu121/torch-2.1.1%2Bcu121-cp310-cp310-win_amd64.whl
8. 將剛剛建立的模型放到指定的目錄,並執行訓練模型程式的最後一個block
# 處理繼電器、卡式插座
繼電器有3個孔,我希望接受到訊號時才形成通路
* NO:平常屬於開路,皆收到訊號時才會與COM形成通路
* COM:共接點
* NC:平常屬於閉路,會與COM形成通路
卡式插座有分為雙孔及三孔,由於沒買到雙孔的就改用三孔,電線的正負極接地(水)線及火線(不要接到接地線)


# Flask, Linebot, ngrok
可以結合以下兩篇看,設定及程式在第一篇,如果看不懂的可以參考第二篇
* https://hackmd.io/@Xiugapurin/S1siaZwht
* https://hackmd.io/@fGmzd-CTSGSBPbmj6Sr-nw/BJ06WFw0P
# 主程式
https://github.com/z631200/NCU_112_IOT_Project/blob/main/IOT_Project.py
# Demo
https://www.youtube.com/playlist?list=PLrLN-PtPlLcVdtT51QVq1-TrgFMoVXlc1
# reference
* 電腦安裝torch/torchvision: https://blog.csdn.net/qq_45956730/article/details/126600028?fbclid=IwAR3QKKVQ6WMgEjsfjLr4a8obty7NRKgCdXxNQnTW0EixjPNk5n_ykfIqofs
* 樹莓派安裝torch/torchvision: https://blog.csdn.net/jiugeshao/article/details/124894455
* linebot on 樹莓派:
https://hackmd.io/@fGmzd-CTSGSBPbmj6Sr-nw/BJ06WFw0P,
https://hackmd.io/@Xiugapurin/S1siaZwht
* 繼電器控制: https://piepie.com.tw/19657/smart-relay-kit
* 上傳圖片至imgur: https://ithelp.ithome.com.tw/articles/10241006?sc=rss.iron