Posts

Showing posts from 2022

如何解決 ESPAsyncWebServer 錯誤 - undefined reference to `mbedtls_md5_starts' (Solving ESPAsyncWebServer - undefined reference to `mbedtls_md5_starts issues )

Image
最近在使用 ESPAsyncWebServer 時, 發生了一個編譯的錯誤: c:/users/stone/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: d:\stone\Documents\build\libraries\ESPAsyncWebServer-master\WebAuthentication.cpp.o:(.literal._ZL6getMD5PhtPc+0x4): undefined reference to `mbedtls_md5_starts' 看來是 ESPAsyncWebServer 的問題, 於是我到 Git Hub 找到了 ESPAsyncWebServer https://github.com/me-no-dev/ESPAsyncWebServer 從新下載, 更新了 Library 還是沒有辦法, 錯誤依然存在, 無法解決.  經過了3個小時反覆搜尋, 發現這是 ESPAsyncWebServer 的一個 issue, 目前還沒有被修正.  不過, 在底下有高手提出了解決方法: 找到 WebAuthentication.cpp 然在大約 72 行左右,  modify in the library directory your_directory/Arduino/libraries/ESPAsyncWebServer-master/src/WebAuthentication.cpp  @line 72 with this (the comment are the old line ......) 只要把原來的後3行紅色註解掉(//), 加上4個藍色新程式碼, 即可以修正! #ifdef ESP32 mbedtls_md5_init(&_ctx); mbedtls_md5_update_ret (&_ctx,data,len); mbedtls_md5_finish_ret(&_ctx,data); mbe

App Inventor #11自己來寫 App - 骰子遊戲 (Dice Game)

Image
大家好, 歡迎收看本週的Weekend project with Stonez56。  本周要進行的是 App Inventor 第10集 -  自己來寫 App - 骰子遊戲 這個影片適合稍進階同學來觀看&學習, 想要越級挑戰的朋也也歡迎拿來這個單元來學習 App Inventor 2!  這是一個學習任意組件的好範例, Android, iPad 都可以使用! 本次教學你可以學到:  * 本集會使用到:  * 感測器 (Sensor)  * 變數應用 (Variables)  * 清單的應用 (List)  * 圖片的應用 (Image)  * 為APP加上音音效 (Audio)  * 亂數的應用 (Randomized)  * 用任意組件 (Any component)  * 程序的應用 (Procedure) 參考資料:  App inventor 語法 & 使用方式: http://ai2.appinventor.mit.edu/reference/blocks/  音效來源: https://pixabay.com/  圖片製作:  https://figma.com  如果你時間不夠, 也可以從以下的時間軸挑選想看的部份即可!  影片時間軸:  00:00 開始 00:24 骰子 App 示範 01:20 App 畫面的配置 / 素材上傳 04:39 App 程式設計 05:18 如何使用變數/變數種子 06:31 設定音效 11:54 如何使用任意元件 15:22 使用任意組件來移除重複的運算 16:26 把骰子元件放入清單中 23:11 使用任意組件 vs 未使用任意組件 App Inventor 相關教學影片: * App Inventor #11自己來寫 App - 骰子遊戲 (Dice Game) https://youtu.be/2d6Si6u8FVE * App Inventor #10 集 自己來寫 APP YouBike 2.0 (下).  https://youtu.be/Cli-_lUPjgU * App Inventor #9 集 - 自己來寫 APP YouBike 2.0 (上)  https://youtu.be/D78-eDRFiXM *App Inventor #8 AI2 Companion 一直斷線

Arduino #38 YouBike 2.0 餘車通知器 (Arduino #38 ESP32 1306 YouBik 2.0 remain notifier)

Image
大家好, 歡迎收看本週的Weekend project with Stonez56。  本周要進行的是Arduino 第38集 -  UBike 2.0 餘車通知器. 大多數坐捷運上下班的朋友, 一定有這樣的經驗:下班時,匆匆忙忙趕到捷運站,卻發現捷運站的Ubike已經都沒有了, 只好在那邊癡癡的等候. 如果下班之前, 看一下YouBike 2.0, 餘車通知器, 確定站點還有較多的Ubike, 這時候再過去牽車, 是不是很安心呢? 我們來看看怎麼做吧! 如果你時間不夠, 也可以從以下的時間軸挑選想看的部份即可!  影片時間軸: 00:00 開始 00:43 UBike 2.0 餘車通知器使用方法 03:22 Google Sheet 設定 14:44 Google Sheet 發佈API設定 17:19 Google Script doPost(e) 程式解釋 20:27 Google Script doGet(e) 程式解釋 21:46 ESP32 程式解釋 26:51 ESP32 refreshYouBike2data (更新SHEET資料) 28:52 ESP32 goGetData 由Sheet取得資料 30:03 showUTF8String 顯示餘車資料 App Inventor 相關教學影片: * App Inventor #11自己來寫 App - 骰子遊戲 (Dice Game) https://youtu.be/2d6Si6u8FVE * App Inventor #10 集 自己來寫 APP YouBike 2.0 (下). https://youtu.be/Cli-_lUPjgU * App Inventor #9 集 - 自己來寫 APP YouBike 2.0 (上) https://youtu.be/D78-eDRFiXM *App Inventor #8 AI2 Companion 一直斷線怎麼辦? AI2 小技巧 (How to keep AI2 always connected for Android) https://youtu.be/_HeM9GyVmIE * App Inventor #7 ESP32 語音辨識控制 IOT 專案, 使用 IoT Essential Library Example (CC available

App Inventor 第10集 - 自己來寫 YouBike 2.0 APP (下集)

Image
 大家好, 歡迎收看本週的Weekend project with Stonez56。  本周要進行的是 App Inventor 第10集 -  自己來寫 YouBike 2.0 APP (下集), 這個影片適合初學者來觀看學習, 想拿來這個單元來學習 App Inventor 2 也是很 Ok 的!   上集影片請點此: https://youtu.be/D78-eDRFiXM   對了,如果你沒有看過上一集, 請記得到右上角這邊, 按一下先觀看上集再來看下集.  那相信看過上一集的朋友都在等待這一集呢!   這個是一個專門為初學者來開發的一個系列, 所以會講的比較詳細, 相信各位只要仔細收看內容並進行實作, 一定會收獲滿滿滿。好, 那我們就開始吧今天的練習吧~ 本集目標: * 資料由政府資料開放平臺即時更新 * 美化使用者介面 (加入 Splash) * 加入 App 開機畫面 * 移動 maker 更加順暢 * 打開 App 自動讀入 Json * 取得手機所在位置定位 * 顯示附近 YouBike 車輛數目 (比對 YouBike 2.0 App 數量) 使用位置感測器, 注意權限: * 位置權限要授權給 MIT App Companion  * 若是下載為 APK, 位置權限要授權給 APK * GPS 精準要打開 如果時間不夠的朋友, 也可以從以下的時間軸挑選想看的部份即可!  影片時間軸: 00:00 Start 00:37 本集可以學到什麼? 02:14 YouBike 2.0 App 示範 03:28 美化 YouBike 2.0 App 04:30 App 起始畫面 (Splash)  14:25 直讀政府公開YouBike資料 22:34 設定位置感測器(GPS) 35:17 顯示所有站點及每一站點車輛數 47:54 在我位置做標記 上集影片請點此: https://youtu.be/D78-eDRFiXM   App Inventor 相關教學影片: * MIT App Inventor 2 #1 - 語音辨識 (Voice Recognition) https://youtu.be/msV4V6af6tA * App Inventor #2 “自己來寫mqtt APP Android & iOS都能用” (Create MQT

App Inventor 第9集, 自己來寫 YouBike 2.0 APP (上集)

Image
大家好, 歡迎收看本週的Weekend project with Stonez56。 本周要進行的是 App Inventor 第9集 - 自己來寫 YouBike 2.0 APP (上集)  這個影片適合初學者來觀看學習, 想拿來這個單元來學習 App Inventor 2 也是很 Ok 的! 上集內容主要包括程式流程: 讀入 YouBike 2.0 JSON 資料並做先期處理 把所有地區送入, 清單選擇器按鈕 使用者選擇某一地區後 在清單顯示器內顯示所有的站點, 位置, 總共單車量, 剩餘單車量 移動地圖到所選的地點, 並呈現出 YouBike 圖示 下集內容包括: (製作中, 敬請期待~ 10/22 TBD) 資料由政府資料開放平臺即時更新 更新程式流程並且美化使用者介面 取得手機所在位置定位 顯示附近 YouBike 車輛數目 YouBike 2.0 資料是由政府資料開放平臺的下載而來的, 每幾分鐘便會做更新. 本程式會把 YouBike 2.0 json 資料下載到電腦上, 以節省去一直查詢政府雲端資料庫的時間. 參考資料: Online Json Parser  http://json.parser.online.fr/ YouBike2.0臺北市公共自行車即時資訊 https://data.gov.tw/dataset/137993 YouBike 2.0 Json file:  https://tcgbusfs.blob.core.windows.net/....../youbike...... YouBike 2.0 Json file:  https://tcgbusfs.blob.core.windows.net/dotapp/youbike/v2/youbike_immediate.json APP 地圖使用: App Inventor 內建之 OpenStreet Map:  https://www.openstreetmap.org/#map=8/23.611/120.768 TextUtils extension:  https://community.appinventor.mit.edu/t/all-rescued-extensions-from-appybuilder-community/27169/47?page=3 如果你時間

App Inventor #8 AI2 Companion 一直斷線怎麼辦? AI2 小技巧

Image
大家好, 歡迎收看本週的Weekend project with Stonez56。 本周要進行的是 App Inventor 第8集 -   AI2 Companion 一直斷線怎麼辦? 在使用 App Inventor 時, 我比較喜歡是在手機上安裝 AI2 Companion 來測試 App 以確保App 的畫面設計與預期的相符合, 但是你是不是常常發生ai2 companion常常發生斷線的問題?  斷線後, 你必須在App inventor裡, 重新產生QR Code, 掃描, 等待ai2 companion再次連線, 真的是很麻煩呢! 本集我們就來在Android手機上做一些設定讓ai2 companion永遠連線, 這樣子以後就很方便喔! 也可以從以下的時間軸挑選想看的部份即可!  影片時間軸:  00:00 開始 00:54 為什麼 AI2 會斷線? 01:31 Android 手機設定打開發人員選項 02:12 在版本號碼上點7次 03:04 打開螢幕不休眠選項

App Inventor #7 ESP32 語音控制-IOT 專案必備程式庫範例 (Voice Control ESP32 with IoT Essential Code Base/Voice command )

Image
  前言: 大家好, 歡迎收看本週的Weekend project with Stonez56。 本周要進行的是 App Inventor 第7集 -  語音控制ESP32 - IOT 專案必備程式庫範例 本週要來示範如何設計App inventor 2 語音控制 APP, 只要加上我之前介紹的IoT專用必備程式庫, (請參考下方的#27連結), 為了讓初學者更好上手, 本次採用沒有放入MQTT的程式庫, 讓範例更簡單一點. 我們先來看一下實際的操作影片. https://www.youtube.com/watch?v=senjdb-cREY&t=40s 整個範例做完,你就可以以語音來控制遠端的 ESP32 了.  本次範例, 除了可以控制ESP32上的LED開 & 關, 也可以控制伺服馬達的開 & 關, 這集也加上了多語功能的控制, 中文和英文都可以喔. 範例中也設定了法文, 西班牙文, 和日文,有興趣的朋友可以自行加上這些語言的控制程式碼.  #27 AsyncWifimanager ElegantOTA ESP32 (WiFi 密碼管理+ WiFi 韌體更新) https://stonez56.blogspot.com/2021/07/asyncwifimanager-elegantota-esp32-wifi.html   請先到上方的連結, copy 所有的程式嗎, 再複製到 Arduino 編輯程式中存檔. 也要記得把  esp32_servo.h 檔案給儲存下來. 好, 那我們就開始吧今天的練習吧~ Source code: 37_vioceControl_ESP32_ECBv1.ino #include "esp32_servo.h" //-------> #define myLED 2 //-------> #include <AsyncElegantOTA.h> const char *FOTA_USERNAME = "un"; const char *FOTA_PASSWORD = "pw"; /*********************************************************

Android #36 IoT 基本程式庫 Wifimanager FOTA MQTT (IOT Essential Code base with wifimanager, ElegantOTA, & MQTT)

Image
Hi, Welcome to weekend project with Stonez56 This week's Arduino episode #37, "Essential IoT Code Base- Wifimanager FOTA + MQTT" Here is the source code: https://stonez56.blogspot.com/2022/08/android-36-iot-wifimanager-fota-mqtt.html   Today, I will show how to combine three commonly used IoT libraries; WiFimanager, AsyncElegantOTA, and MQTT To become a common IoT code base. So, for our future projects, ESP8266 or ESP32, would have these basic functions. Let's first look at these three libraries: Wifimanager = Wi-Fi password management, no need to re-burn the code to change the Wi-Fi SSID & password FOTA = Use Wi-Fi to update ESP32 code, you can burn code without connecting to USB MQTT = Streamlined and lightweight communication protocol (Message Queueing Telemetry Transport) This episode will only introduce how to integrate MQTT into Wifimanager + AsyncElegantFOTA. To learn how to start Wifimanager + AsyncElegantOTA, Please watch Android #27 Wifimanager + OTA for

一起來學樹莓派系列 - “如何使用 Log2RAM” 來增加SD卡的壽命, 及Pi運作的速度.

Image
  大家好, 歡迎收看本週的weekend project with Stonez56.  今天來和大家分享 “一起來學樹莓派” 系列 - “如何使用 Log2RAM” 來增加SD卡的壽命, 及Pi運作的速度.  Log 主要是由系統上執行的一些程式在背景寫入到你的磁碟裡.  它可能是幾分鐘寫入一次, 或是幾秒鐘就寫入一次, 頻繁的讀寫 很容易造成SD卡的損毀並且影響運作的速度. 如果我們將 Log 直接寫入RAM, 就可以減少讀寫的次數, 提升Pi的運作速度, 及延長SD卡的壽命. 這些寫入到RAM的 Log 並不會消失, 它會每天再把這些 Log 寫回到SD卡. 所以你還是可以存取這些 Log的.   使用 Log2RAM 也不是沒缺點, 如果你的 Pi 突然斷掉電源, 那麼你的 Log 就會完全消失了. 但仔細想想, 你上次查看 Log 是什麼時候呢? 如果不常使用 Log, 那麼這個 Log2RAM 就對你非常有幫助. 另外如果你的 Pi 的記憶體只有1GB或是512MB, 那可能就不合適來使用這個軟體的.  半年前我曾經做過一個簡單的線上調查, 看看各位使用樹莓派時, 用什麼儲存裝置. 調查的結果有75%的朋友都是使用SD卡. 那我們就開始今天的練習吧! Step:  更新你的 Pi >sudo apt update >sudo apt full-upgrade 安裝 rsync (用來同步兩地的資料) >sudo apt install rsync 取得 Log2RAM >wget https://github.com/azlux/log2ram/archive/master.tar.gz -O log2ram.tar.gz 使用 tar 來解壓縮 >tar xf log2ram.tar.gz >cd /home/pi/log2ram-master >sudo ./install.sh 先檢查system log 的大小 >sudo du -sh /var/log 41M 先用3倍大小 = 120M 重新開機 >sudo reboot 檢查 log2ram 是否正常運作 systemctl status log2ram 如果想要檢查 log 怎麼辦呢? 把 log 寫回到 /var/lo