山姆的編程實作分享。。。

Sam Blog, Sam Sharing, Sam Studio

2019年5月5日

入手 FLUX Delta+ 3D 列印機


在創客的這條的道路上, 個人的創意可以透過 Arduino open source的平台來完成電子及軟體的設計, 但是沒有機構的實體化, 總是感覺虛虛的, 沒有完成感.
也因為如此, 讓我想購入3D列印機...

於是, 就在上個月購入一台二手的文青機 -- FLUX Delta+


拿到手後, 立馬透過 Flux Studio 教學學程列印了內建3D模型,  過程及成品都不錯 :)
前主人機子顧的不錯!

接著就測試雷雕功能 (這功能也是我選擇這機子的一項原因)
首先是抓雷射頭Z軸的offset (+0.6mm)

接著就在隨機附贈的樟木上做雷雕的測試

以上兩項測試: GOOD!😊

2019年4月23日

ESP32-CAM ( Ai-Thinker Module )


今天拿到了新板子 -- ESM32-CAM
順勢測試一下ESP-IDF開發環境以及這塊板子Camera的效能

以下參考資料都來自 Ai-Thinker提供的 ESP32_CAMERA_QR 使用教程
https://github.com/donny681/ESP32_CAMERA_QR/wiki

Step 1: 首先, 照 ESP32_CAMERA_QR 使用教程連接 USBtoTTL, 注意喔! 這塊板子的工作電壓是5V,不是3.3V !

Step 2: 接著就下載原始碼
git clone https://github.com/donny681/ESP32_CAMERA_QR.git

Step 3: 再來當然就是 make flash (build code 以及 download code, 一指令搞定)

Step 4: 接著就是透過 make monitor 來觀察 camera 運作狀況了
Conclusion:
1. 初試結果,感覺效能不好 (官網資料就不是很好啊,自己要買還嫌)

2. 範例程式穩定度很差,stream mode 常跑不到100 frames 就hang住了


rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1100
load:0x40078000,len:10088
load:0x40080400,len:6380
entry 0x400806a4

.................
WiFi connected
Starting web server on port: '80'
Starting stream server on port: '81'
Camera Ready! Use 'http://192.168.11.12' to connect
MJPG: 3156B 68ms (14.7fps), AVG: 68ms (14.7fps), 0+0+0+0=0 0
MJPG: 3170B 37ms (27.0fps), AVG: 52ms (19.2fps), 0+0+0+0=0 0
;
;
MJPG: 3890B 20ms (50.0fps), AVG: 38ms (26.3fps), 0+0+0+0=0 0
MJPG: 3953B 63ms (15.9fps), AVG: 40ms (25.0fps), 0+0+0+0=0 0
MJPG: 3841B 16ms (62.5fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0
MJPG: 3848B 64ms (15.6fps), AVG: 40ms (25.0fps), 0+0+0+0=0 0
MJPG: 3845B 20ms (50.0fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0

掛了! :-( :-( :-(

3. 再來就是身為工程師的你來改進它吧!

2019年4月12日

It's time to use Linux / Ubuntu by using Windows Subsystem



The Windows 10 build 14393 or later version is ready to Linux installation by using the Windows Subsystem.

By this way you don't need to setup a virtual machine or reboot into Linux by using a dual-boot PC.

The detail installation guide for Linux on Windows system, please follow below two links

https://www.makeuseof.com/tag/linux-beginners-guide/

https://www.makeuseof.com/tag/linux-desktop-windows-subsystem/







2019年4月2日

2019年3月5日

[Arduino 學堂 #12] 解放ESP32吧!


影片內容:
1. 告訴你在 Arduino ESP32 Library裡的Setup()以及Loop()函數, 事實上是跑在FreeRTOS的一個Task上
2. 並且, 若你沒有以Multi-Tasking 的概念來撰寫你的程式的話, 代表你只有用到ESP32的單核心而已,以一個雙核心的SoC而言, 真的浪費了!
3. 分享一個 Three Tasks 範例模板給大家
4. 範例下載路徑是 https://mega.nz/#!LrwUjQAK!kP4l7R6DEaZip_y8tq6Q9hjHPH5wXmTjgBxSc_iI-Bc
5. 從範例的UART-Log,可以看到雙核心被充分利用到
6. 另外在Task Create的建立宣告時, 最後一個參數 "xCoreID", 建議填入 "taskNO_AFFINITY", 交由RTOS來做CPU核心的最佳化
7. 當然你也可以直接指定哪個Task跑在哪一個核心上, 如何你認為你的直接指定比FreeRTOS的Task Scheduler做的更好的話

以下為影片部分畫面:



[Arduino 學習筆記 #1] 軟體安裝及開發環境建構
[Arduino 學習筆記 #2] 葵花寶典導讀及IO實作
[Arduino 學習筆記 #3] Arduino 的屠龍刀 & 倚天劍
[Arduino 學習筆記 #4] 一窺 Arduino UNO 電路設計
[Arduino 學習筆記 #5] ADC的使用及電表程式教學
[Arduino 學習筆記 #6] Arduino Inside - Core Start-up & Initialization
[Arduino 學堂 #7] Debounce 及 外部中斷 (上)
[Arduino 學堂 #8] Debounce 及 外部中斷 (下)
[Arduino 學堂 #9] FreeRTOS is ready to Go!
[Arduino 學堂 #10] Fast PWM, Phase correct PWM 分清楚 ?
[Arduino 學堂 #11] ESP32 安裝及WiFi/BT測試
[Arduino 學堂 #12] 解放ESP32吧!
[Arduino 學堂 #13] Android / iOS App 開發平台/方式

2019年3月1日

[Arduino 學堂 #11] ESP32 安裝及WiFi/BT測試



影片內容:
1. 把 Arduino UNO, MKR WiFi 1010 以及 ESP32 做一個超級比一比
2. 分享 ESP32 的 Arduino IDE package 安裝及設定步驟
3. ESP32 package URL    https://dl.espressif.com/dl/package_esp32_index.json
4. ESP8266 package URL  http://arduino.esp8266.com/stable/package_esp8266com_index.json
5. 教導如何透過Arduino WiFi Scan / BLE Scan 範例, 在收到ESP32板子的第一時間來驗證 ESP32 WiFi / Bluetooth 功能
以下為影片部分畫面:







[Arduino 學習筆記 #1] 軟體安裝及開發環境建構
[Arduino 學習筆記 #2] 葵花寶典導讀及IO實作
[Arduino 學習筆記 #3] Arduino 的屠龍刀 & 倚天劍
[Arduino 學習筆記 #4] 一窺 Arduino UNO 電路設計
[Arduino 學習筆記 #5] ADC的使用及電表程式教學
[Arduino 學習筆記 #6] Arduino Inside - Core Start-up & Initialization
[Arduino 學堂 #7] Debounce 及 外部中斷 (上)
[Arduino 學堂 #8] Debounce 及 外部中斷 (下)
[Arduino 學堂 #9] FreeRTOS is ready to Go!
[Arduino 學堂 #10] Fast PWM, Phase correct PWM 分清楚 ?
[Arduino 學堂 #11] ESP32 安裝及WiFi/BT測試
[Arduino 學堂 #12] 解放ESP32吧!
[Arduino 學堂 #13] Android / iOS App 開發平台/方式


2019年2月24日

[Arduino 學堂 #10] Fast, Phase correct PWM 分清楚 ?


教學內容:
1. 使用analogWrite() 函數撰寫LED 呼吸燈範例
2. 解說 Microchip ATmega328P PWM 運作原理
3. 說明 Arduino PWM default 設定 及 頻率設定
4. 說明 Fast PWM 和Phase correct PWM 的差異
5. 介紹其他chip vendor 更貼切的 PWM 命名
6. 說明 Phase correct PWM 和 Phase and Frequency correct PWM mode 的差異
以下為影片部分畫面:





2019年1月31日

[Arduino 學堂 #9] FreeRTOS is ready to Go!




教學內容: 1. 定義什麼是 RTOS 以及 RTOS 共通特性
2. 說明為何我要在Arduino 教學中導入RTOS
3. 說明為何我要選擇FreeRTOS
4. 分享我的參考網站
https://www.arduino.cc
http://www.aosabook.org/en/freertos.html
https://www.freertos.org/about-RTOS.html
http://www.keil.com/rl-arm/rtx_rtosadv.asp
5. 教導怎麼import FreeRTOS library
6. 建立第一個 Arduino multitask 的程式

以下為影片部分畫面:





2019年1月22日

[Arduino 學堂 #8] Debounce 及 外部中斷 (下)


教學內容: 1. 承續第7集的教學影片, 講解如何將程式從polling改成以中斷方式偵測按鍵的按壓
2. 講解中斷程式撰寫前的須知
a. 中斷腳位的定義及決定
b. 以INT0為例, 講解INT0中斷必須了解的3個暫存器
c. 講解中斷向量(Interrupt Verctor)及中斷服務常式(Interrupt Service Routine, ISR)定義及使用
3. 透過動態說明 Falling Edge, Rising Edge, Low level 及 Logical Change 觸發定義
4. 講解 ISR() 程式的撰寫
5. 透過 step by step 說明, 將程式改成以中斷方式來偵測按鍵的按壓
6. 分享完整程式碼 https://mega.nz/#!vmJHiYaa!sm0qHKLmySc5UdK19HnQWzRpIqxoeRietZx601SQ6Tk

以下為影片部分畫面:











[Arduino 學堂 #7] Debounce 及 外部中斷 (上)



教學內容: 1. 講解如何利用 digitalRead() 函數以polling 方式偵測按鍵的按壓
2. 透過動態說明按鍵彈跳(bounce)在電路上的波型
3. 講解如何透過程式的修改來解決按鍵彈跳問題, 也就是所謂的debounce
4. 分享完整程式碼 https://mega.nz/#!vmJHiYaa!sm0qHKLmySc5UdK19HnQWzRpIqxoeRietZx601SQ6Tk

以下影片部分畫面:




熱門文章