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] 麥克納姆輪金屬底盤小車組裝說明

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

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


準備材料

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



組裝步驟

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



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



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



Step4 由於輪框並非確實固定在輪子上,小車行走時有可能會脫落,因此建議將輪框塗抹膠水黏上輪子,或是用 M2.3*12~20mm 螺絲從外側穿過輪框、輪子、聯軸器鎖緊到TT馬達。


Step5 至此大功告成。
提醒您:請注意 4 個輪子胎紋的位置,必須確實正確。


這是正面



Step6 如果有 Arduino Uno 開發板,可以使用 M3*12 螺絲、螺帽固定。18650 雙節鋰電池盒,則可以使用 M3*6 螺絲、螺帽固定,如下圖。

提醒您:
1. 因金屬板具有導電性,因此最好在Arduino Uno 開發板和金屬底板之間放置墊片。
2. 圖片中標註"a"字樣者為 Arduino Uno 開發板固定處。




Step7 將 L293D 馬達驅動板插到 Uno 開發板上面。



Step8 至於手機藍牙遙控這部分,請參考「手機藍芽遙控麥克納姆輪車」。



相關鏈結

麥克納姆輪 PID 演算法 購買「小車底盤+藍牙電控」全套者,可賣場留言索取。

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」。

演練成功。