[TOC]
- 原名: Listen, Watch, Run
- 動機 :
- 中漢覺得吉娃娃面目可憎很討厭, 所以我們決定要讓它通過一連串的考驗, 我們設置了一段賽道, 賽道會有不同的電流, 當她碰到賽道就會被電擊, 當他被不同的電擊就會發出不同叫聲, 我們覺得他很吵, 所以需要大家協助這隻吉娃娃走過這個賽道, 讓他不要吉吉叫!科科
- 功能 :
- 地圖顏色偵測
- 採到顏色車子會發出不同音效
- 紅(終點線) : 音效 Century YEE
- 綠 : 音效 TADAAH
- 藍 : 音效 HOT HOT HOT
- 黃 : 音效 YEE
- 網頁控制開始紀錄時間與結束時紀錄到網頁
- 記錄好每次的時間後進行排名, 時間越短名次越前面(數字越小)
設備名稱 | 圖片網址 | 來源 |
---|---|---|
Raspberry Pi 4 | 友情贊助(石安通學長提供) | |
mbot車 | 友情贊助(林宜蔓學姊提供) | |
藍芽喇叭 | 張中漢提供 | |
杜邦線n | 友情贊助(朋友*n) | |
友情提供(張中漢同學) | ||
顏色感測器 | 蝦皮 |
(參考自Smile Eddie)
顏色感測器接口 | raspberry pi接口 |
---|---|
VIN | 5V |
GND | GND |
SCL | A5 |
SDA | A4 |
安裝adafruit library
sudo pip3 install adafruit-circuitpython-tcs34725
修改設定檔 (開啟I2C的通訊協定)
sudo raspi-config
//重新啟動
sudo reboot
安裝wiringPi (可控制GPIO的函數庫)
sudo apt-get install wiringpi
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
WebSocket
async def sendCmd(uri, msg):
async with websockets.connect(uri) as websockets:
await websocket.send(msg)
影片一 https://youtube.com/shorts/ixodvznrxMY?feature=share
影片二 https://youtube.com/shorts/F6QM63x0BYs?feature=share
影片三 (最終成果) https://www.youtube.com/watch?v=GDMttdhcqYo&ab_channel=ZoeyChien
- mbot 可以兼容 arduino
- 導入相關套件
// generated by mBlock5 for mBot
// codes make you happy
#include <MeMCore.h>
#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
- 設定紅外線遙控與馬達
MeIR ir;
MeDCMotor motor_9(9);
MeDCMotor motor_10(10);
- 設定馬達在前後左右的方向
void move(int direction, int speed) {
int leftSpeed = 0;
int rightSpeed = 0;
if(direction == 1) {
leftSpeed = speed;
rightSpeed = speed;
} else if(direction == 2) {
leftSpeed = -speed;
rightSpeed = -speed;
} else if(direction == 3) {
leftSpeed = -speed;
rightSpeed = speed;
} else if(direction == 4) {
leftSpeed = speed;
rightSpeed = -speed;
}
motor_9.run((9) == M1 ? -(leftSpeed) : (leftSpeed));
motor_10.run((10) == M1 ? -(rightSpeed) : (rightSpeed));
}
void _delay(float seconds) {
long endTime = millis() + seconds * 1000;
while(millis() < endTime) _loop();
}
- 設定遙控時,前進左右的馬達運動速度
void setup() {
ir.begin();
while(1) {
if(ir.keyPressed(64)){
move(2, 40 / 100.0 * 255);
_delay(0.1);
move(2, 0);
}
if(ir.keyPressed(25)){
move(1, 40 / 100.0 * 255);
_delay(0.1);
move(1, 0);
}
if(ir.keyPressed(7)){
move(3, 30 / 100.0 * 255);
_delay(0.1);
move(3, 0);
}
if(ir.keyPressed(9)){
move(4, 30 / 100.0 * 255);
_delay(0.1);
move(4, 0);
}
_loop();
}
}
- 需持續偵測紅外線遙控訊號
void _loop() {
ir.loop();
}
void loop() {
_loop();
}
- 步驟 :
- 在Ubuntu上執行 server.py
- 重整網頁
- 在樹莓派上執行以寫到裡面的程式 car.py
組員 | 工作分配 |
---|---|
全部人 | 硬體組裝, 程式, 地圖, 跑腿 |
張中漢 | 設備場地, 車車程式, 焊接, 食物提供, 報告 |
簡語萱 | 程式, github, web connect, ppt |
陳思妤 | 程式, github, web server, ppt |
陳煒姍 | 程式, github, web page, ppt |
吳常恩 | 測試, 報告 |
- 安通學長 : 器材提供
- 惠霖學姊 : 溫柔大姊姊debug
- 宜蔓學姊 : 提供mbot車身
- 簡先生(不希望具名): websocket教學
- 柏瑋學長 : 思考方向提供