2021年1月30日 星期六

[交通號誌(一)] 交通號誌套件組裝

控制紅色、黃色、綠色這三種顏色的燈在特定的時間內亮滅,可說是最基本也最簡單的了,所以交通號誌之紅綠燈常被用來運用在科普教學上。

這個套件具有紅綠燈號誌顯示、時間讀秒、小人行走動畫和柵欄升降等功能。

本文旨在說明如何組裝 Arduino 交通號誌套件,程式撰寫將另篇介紹。


準備材料

交通號誌紅綠燈套件包 *1


準備工具

1. M2/M3 螺絲起子。

2. M2/M3 扳手。


開始組裝

Step1 移除壓克力表面護膜,並拆下組件、墊片等,暫放一旁備用。


Step2 取出立桿。

注意:立桿上有一橢圓孔需靠右朝上。這個孔是預備用來鎖時間模組的。


用 M2*10 螺絲、螺帽將紅綠燈模組鎖上立桿。

提醒您:如果覺得模組背面的焊點會讓模組鎖上後導致歪斜,可以在模組和立桿之間放置墊片。


Step3 用 M2*10 螺絲、螺帽將時鐘模組和矩陣模組鎖上立桿。

提醒您:可先取下矩陣模組的 8*8 LED,待鎖好螺絲後再安裝回去。但在拆下及安裝回去時需注意 "1088AS" 字樣原本的方位,千萬不可裝錯。




Step4  用 M2*8 螺絲、螺帽將 sg90 舵機鎖上固定片。並且用舵機所附的自攻螺絲將舵片鎖上柵欄。
提醒您:須注意舵機轉軸在固定片上面的位置。



Step5 用舵機所附的 M2.5 小螺絲將柵欄鎖到舵機。
提醒您:
在鎖上攔車桿前須先將舵機轉軸角度保持在90度左右。
如何將舵機角度指定在90度,可參考本文底部之程式碼。



Step6 用 M2*10 螺絲、螺帽將舵機固定片鎖上立桿。



Step7 用 M2*8 螺絲、螺帽將 L 型塑膠片鎖到立桿。



Step8 用 M2*8 螺絲、螺帽將小喇叭模組鎖到立桿背面,針腳應朝上。然後,將整個暫放置一旁備用。



Step 9 將 Nano 開發板插到擴展板上,並用 M3 螺絲、螺帽將其鎖到底板。基本上鎖對角即可。


如果您的電腦(電源)在左側,可以這樣安裝



Step10 用 M2*8 螺絲、螺帽將立桿底端之 L 型塑膠片鎖到底板。


這是底板底面視角


Step11 將整組構件豎起,至此完成。


這是背面


程式碼

// 將舵機指定在 90 度位置
#include <Servo.h>
Servo myServo;

void setup()
{
  myServo.attach(9);
  myServo.write(90);
}

void loop() {}


採購資訊





2020年12月10日 星期四

[Mecanum] 60mm麥克納姆輪小車金屬底盤組裝說明

這個麥克納姆輪小車底盤長25.5cm 寬15cm。底盤採用鋁合金材質,堅固耐用。

麥克納姆輪採用注塑工藝製造,並非 3D 列印,質量可靠。麥輪直徑約 60mm,適用於市售制式小車底盤。


準備材料

小車底盤套件 1件
馬達電源線(長約20CM)  8條



組裝步驟

Step1 先把 4 只馬達都焊上電源線。
提醒您:最好電源線的正負(紅黑線)位置都和相片中的一樣。



Step2 拿出鋁質底盤和螺絲,將馬達鎖上。
提醒您:
1. 鋁質底盤的塑膠護膜,只要不妨礙輪子轉動即可不必撕除。
2. 馬達有焊電線那一側靠車體內部。
3. 螺絲請務必鎖緊。



Step3 其它 3 個馬達也如 Step2 方式鎖上。



Step4 由於輪框並非確實固定在輪子上,小車行走時有可能會脫落,因此建議用將輪框塗抹膠水黏上輪子。


Step5 為 4 只馬達裝上輪子。至此大功告成。
提醒您:請注意 4 個輪子的位置,必須確實正確。


這是正面



相關鏈結

2020年12月6日 星期日

[ESP32-Cam] ESP32-Cam 單軸雲台組裝

 ESP32-Cam 雖然有攝影鏡頭,但若是固定式的,它的視野將只侷限在一個限定的區域。透過這組「ESP32-Cam單軸雲台」套件,可以讓ESP32-Cam的鏡頭左右各擺動90度,讓您的視野更加廣闊。

本套件可以很方便安裝在各式市售的小車底盤上。


準備材料


或是可以到下列賣場購買

奇摩 https://tw.bid.yahoo.com/item/100984760432

露天 https://www.ruten.com.tw/item/show?22049213363904

蝦皮 https://shopee.tw/-RWG-ESP32-Cam-%E5%96%AE%E8%BB%B8%E9%9B%B2%E5%8F%B0-%E6%94%AF%E6%9E%B6-%E9%81%A9%E5%90%88%E5%90%84%E7%A8%AE%E5%B0%8F%E8%BB%8A%E5%BA%95%E7%9B%A4-i.14363185.4767927023


組裝步驟

Step1 用 M2 螺絲和螺帽將伺服馬達固定到支架。建議讓轉軸置中。



Step2 用伺服馬達所附的自攻螺絲,將塑膠搖臂固定到壓克力板上。需注意搖臂與螺絲的方向。


Step3 用 M2 螺絲和螺帽將 L 型塑膠片鎖到大壓克力板上。並用束帶將 ESP32-Cam 開發板固定到大壓克力板上。



這是背面

Step4 組合大壓克力板部件和搖臂部件,用 M2 螺絲和螺帽將 L 型塑膠片鎖緊到搖臂部件上。


Step5 用 M3 螺絲和螺帽將伺服馬達部件鎖到小車底盤上。


Step6 將 Step4 部件放置到伺服馬達上,並用馬達所附之 M2.5 螺絲固定。


Step7 試寫程式上傳到 ESP32-Cam,並測試鏡頭左右擺動90度是否正常。至此完成。



2020年10月27日 星期二

[Arduino] 特雷門(Theremin) 電波琴

特雷門(Theremin) 電波琴是甚麼玩意兒? 如果您還不知道,可以參考一下維基百科 。


所需材料

1. Arduino Nano(Uno也可以) 開發板 *1

2. 麵包板 *1

3. PAM8403 功放模組 *1

4. 光敏電阻(LDR) *1

5. 10K 電阻 *1

6. 小喇叭(蜂鳴器也可以) *1

7. 公母頭杜邦線 *若干

8. 公排針 *若干

如果您沒有以上材料,也可以到露天賣場購買。



焊接

1. 將功放模組焊上公排針。

2. 將公母頭杜邦線的公頭端焊上喇叭。

電路接線

1. 將 Arduino Nano 開發板插上麵包板。

2. 依照上面電路圖用杜邦線連接各單元。

3. 喇叭接功放模組單邊輸出即可。


程式

1. 下載函式庫 https://sensorium.github.io/Mozzi/

2. 將下列程式上傳到 Arduino。

//#include <ADC.h>

#include <MozziGuts.h>

#include <Oscil.h> // oscillator template

#include <tables/sin2048_int8.h> // sine table for oscillator

#include <RollingAverage.h>

#include <ControlDelay.h>


#define INPUT_PIN 0 // analog control input


unsigned int echo_cells_1 = 32;

unsigned int echo_cells_2 = 60;

unsigned int echo_cells_3 = 127;


#define CONTROL_RATE 64

ControlDelay <128, int> kDelay; // 2seconds


// oscils to compare bumpy to averaged control input

Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin0(SIN2048_DATA);

Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin1(SIN2048_DATA);

Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin2(SIN2048_DATA);

Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin3(SIN2048_DATA);


// use: RollingAverage <number_type, how_many_to_average> myThing

RollingAverage <int, 32> kAverage; // how_many_to_average has to be power of 2

int averaged;


void setup(){

  kDelay.set(echo_cells_1);

  startMozzi();

}


void updateControl(){

  int bumpy_input = mozziAnalogRead(INPUT_PIN);

  averaged = kAverage.next(bumpy_input);

  aSin0.setFreq(averaged);

  aSin1.setFreq(kDelay.next(averaged));

  aSin2.setFreq(kDelay.read(echo_cells_2));

  aSin3.setFreq(kDelay.read(echo_cells_3));

}


int updateAudio(){

  return 3*((int)aSin0.next()+aSin1.next()+(aSin2.next()>>1)

    +(aSin3.next()>>2)) >>3;

}


void loop(){

  audioHook();

}


上傳程式後,試著用手由遠到近遮住光敏電阻,光敏電阻受光程度會影響聲音的頻率。


觀賞影片


如果 Arduino 連接 Midi,將可以產生更有趣的聲音效果,如下影片





做完電波琴後,您也可以參考這篇文「用蜂鳴器播放超級瑪莉(Mario)音樂」,讓您的喇叭發出電玩般的聲音。

參考資料

https://www.hackster.io/Oniichan_is_ded/arduino-theremin-96fc6d?fbclid=IwAR0IxHx7tyu2cwGUJTBs6tmBP234j-XV-2stRpmPg76N2sv9NQQpdhUsFKk

https://www.instructables.com/Make-Your-Own-Simple-Theremin/
https://www.youtube.com/watch?v=57S3dylfw3I
https://www.youtube.com/watch?v=DnD92Q_Kpac
https://www.youtube.com/watch?v=IEoOSjzHYhE
https://www.youtube.com/watch?v=Xsjwt9nXue0


採購資訊

特雷門(Theremin) 電波琴套件 https://www.ruten.com.tw/item/show?22040528261934

2020年8月22日 星期六

[ESP32] 用 ESPAsyncWebServer 建立你的第一個網頁

本文是參考「硬派筆記  用 ESPAsyncWebServer 建立你的第一個網頁」,在實做過程中的一些補充。

本文適用於 ESP 系列開發板,包括 ESP8266/ESP32/ESP32-Cam。


將硬派筆記內的程式碼上傳到板子時,可能會出現找不到 AsyncTCP.h 和 ESPAsyncWebServer.h 等函式庫,可以到此下載

https://github.com/me-no-dev


由於是把 ESP32 開發板當作 AP,因此在程式上傳完畢後,需要中斷您的網路連線,並重新連線到 ESP32 所命名的網路「ESP_WiFi」。


鍵入密碼「12345678」。


然後在您的電腦瀏覽器內鍵入網址「192.168.4.1」。

隨後再鍵入「192.168.4.1/test」。

演練成功。

2020年8月16日 星期日

[ESP32-Cam] BLE(Bluetooth Low Energy) 低功耗藍牙的使用

本文旨在說明如何用手機透過藍牙跟 ESP32-Cam 作溝通,看完之後您將會發現這將是一件非常簡單的事。

ESP32-Cam 開發板搭載了一個低功耗藍牙,它跟一般的 HC-05、HC-06 藍牙有點兒不同,這方面您可以參考一下維基百科,在「無線電介面」章節裡有詳細介紹他們的區別。

https://zh.wikipedia.org/wiki/%E8%93%9D%E7%89%99%E4%BD%8E%E5%8A%9F%E8%80%97#%E6%97%A0%E7%BA%BF%E7%94%B5%E6%8E%A5%E5%8F%A3


ESP32-Cam 發送訊息給手機

以下這個程式會讓 ESP32-Cam 每隔 1 秒鐘發送一次 "Hello World!" 字串給手機。

#include <BluetoothSerial.h>

BluetoothSerial BT;  // 宣告藍芽物件,名稱為BT


void setup() {

  Serial.begin(115200);

  BT.begin("RobotWolfGroup");  // 指定藍芽裝置的名稱

}


void loop() {

  BT.println("Hello World!");

  delay(1000);

您有沒有發現程式碼才短短幾行? 

是的,免設定密碼、鮑率...等有的沒的,它就是這麼簡單好用。


藍牙配對

在 ESP32-Cam 端程式上傳完畢後,接下來需要用手機跟它的藍牙配對。

Step1 打開手機藍牙,選擇「配對新裝置」。

Step2 找到「RobotWolfGroup」這個藍牙裝置後,點擊它並配對。這個 BLE 在配對時是不需要輸入密碼的。


手機安裝 APP

我們需要在手機裡安裝 APP,才可以接收來自 BLE 的訊息。

Step1 請打開手機的「PLAY商店」,在裡面搜尋「Arduino Bluetooth」。


Step2 找到「Arduino Bluetooth Control」,安裝它。


Step3 安裝完成後,請開啟它。開啟後如下圖


Step4 點選畫面右上角落的圓形雙箭頭,搜尋「RobotWolfGroup」藍牙裝置,找到後點選它。


Step5 再點選畫面右上角落的「Terminal」,然後您就會看到如下畫面



手機發送訊息給 ESP32-Cam

以下這個程式可以讓手機發送訊息給 ESP32-Cam,請將該程式上傳到 ESP32-Cam。


#include <BluetoothSerial.h>

BluetoothSerial BT;//宣告藍芽物件,名稱為BT


void setup() {

  Serial.begin(115200);

  BT.begin("RobotWolfGroup");  //指定藍芽裝置的名稱

}


void loop() {

  //檢查藍芽內是否有資料

  while (BT.available()) {

    //讀取藍芽資料

    String str = BT.readString();

    //顯示在序列視窗

    Serial.println(str);

  }

  delay(10);

}


上傳完成後,請打開「序列埠監看視窗」。


開啟手機 APP 並完成選取藍牙裝置(如果之前有順利選取可用裝置,當再次啟動 APP 時它會自動連線」。


點選畫面右上角落的「Terminal」,然後在視窗最下方的「Type in data to send」欄位內輸入訊息,然後您就會看到如下畫面。


接著請您再檢查一下「序列埠監視視窗」裡是否有接收到訊息,如下圖



手機收發 ESP32-Cam 訊息

將上面兩個程式合併,就可以讓手機收發 ESP32-Cam 訊息。

這個程式是手機鍵入 "A",ESP32-Cam 會回應 "Apple";手機鍵入 "B",ESP32-Cam 會回應 "Banana";若手機鍵入 "A" 、"B" 以外的字,ESP32-Cam 會回應 "N/A"。

請將下方程式上傳到 ESP32-Cam。


#include <BluetoothSerial.h>

BluetoothSerial BT; // 宣告藍芽物件,名稱為BT


void setup() {

  Serial.begin(115200);

  BT.begin("RobotWolfGroup"); // 指定藍芽裝置的名稱

}


void loop() {

  // 檢查藍芽內是否有資料

  while (BT.available()) {

    // 讀取藍芽資料

    String str = BT.readString();

    // 顯示在序列視窗

    Serial.println(str);

    // 回訊給手機

    if (str == "A")

      BT.println("Apple");

    else if (str == "B")  

      BT.println("Banana");

    else 

      BT.println("N/A");  

  }

  delay(10);

}


開啟手機 APP 並完成選取藍牙裝置(如果之前有順利選取可用裝置,當再次啟動 APP 時它會自動連線」。


點選畫面右上角落的「Terminal」,然後在視窗最下方的「Type in data to send」欄位內輸入訊息,然後您就會看到如下畫面。


使用幾次之後,發現這訊息時間不對,而且訊息一去一回大約花了 2 秒鐘時間,速度還真是慢啊,應該是這個 APP 的問題吧?

不過這個 APP 還是有可取之處,它的語音控制功能 (Voice Control) 還不錯,可以設定 10 組的語音與相對應要發送的字串,這個用來控制家電倒是蠻不錯的,我用它來控制 5 種電器的開與關。


語音控制功能這部分跟 ESP32-Cam 無關,我們就不多介紹了,那就請您自行練習囉。



採購資訊

Micro SD 4G 記憶卡 https://www.ruten.com.tw/item/show?22033106394834

ESP32 開發指南(書) https://www.ruten.com.tw/item/show?22023657661505

ESP32-Cam 開發板 https://www.ruten.com.tw/item/show?22018501441929

ESP32-Cam 雙軸雲台(基本款)套件 https://www.ruten.com.tw/item/show?22024688065979

ESP32-Cam 雙軸雲台(人體偵測款)套件 https://www.ruten.com.tw/item/show?22024688076465