謝承修
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    <style> p { margin-left: 20px; } <script src="webfont.js"></script> <script src="snap.svg-min.js"></script> <script src="underscore-min.js"></script> <script src="sequence-diagram-min.js"></script> </style> 會奔跑的智能鬧鐘 === ## 團隊資訊 2021 MakeNTU 編號:Team10 隊名:搞毛啊今年怎麼沒有吃到飽 組員:臺大電機大一 江秉城    臺大電機大一 巫竑儒    臺大電機大一 謝承修 創作理念 --- <b style="color:darkblue">如果今天可以不用出門上班,你會幾點起床? 不小心睡過頭後,一定是懊悔的吧?</b> 居家工作多了些自由,但少了必須回到工作崗位的壓力。對員工而言,非常容易...被人性所困(睏?!) 因此我們希望開發出一套<b style="color:darkblue">除了死人,誰都叫得醒</b>的鬧鐘!希望使用者不會因為一時糊塗或反射性按掉鬧鐘,而錯過早晨的黃金工作時間。 如此一來,不僅在起床的時候增添許多樂趣及工作產能,也能避免自己鑄下睡過頭的大錯後才來懊悔喔! 功能與特色 --- 身為鬧鐘,就要有鬧鐘的基本功能:<b style="color:darkblue">在設定的時間響起。</b> 但不同於一般鬧鐘只會響,<b style="color:darkblue">它還會開始跑!</b>讓使用者無法隨便伸手就讓他安靜,繼續他的懶惰計畫~但如果你以為玩你跑我追就可以讓使用者清醒,那肯定是低估了人類的惰性。 有鑑於此,我們<b style="color:darkblue">引入STM32 X-CUBE-AI套件</b>以設計清醒測試。使用者抓到奔跑鬧鐘後,還必須在螢幕上寫特定字(預設"WAKEUP")。如果寫得工整又正確,鬧鐘才會認為你真的醒了然後安靜。 接著鬧鐘會向你<b style="color:darkblue">播報天氣</b>,即使你今天不用出門上班~ 並且會顯示你下一個重要的行程,作為備忘錄的功能。 更新板demo影片 --- * 比賽當天的demo影片並不完整,因此我們重新附上影片。 * 從第一個影片中可以看到,當時間來到九點的時候(起床的時間,可自行設置),會自動撥放音樂以及打開馬達(不放在地上跑是因為方便拍攝),提醒你要起床了。接著,你必須在觸控面板上工整地寫下"WAKEUP"六個字(如果寫太醜的話會要求重寫),寫完之後會自動關閉馬達與音樂。而此時,可以觀察到LCD螢幕交替顯示下個工作與當天天氣。其中,工作的備忘錄是提前寫好的,而天氣的播報則是由Python上網爬蟲後將資訊用藍芽的方式回傳到開發版上進而顯示出來的。 <br><iframe width="560" height="315" src="https://www.youtube.com/embed/oLRXym1LWJc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> * 第二個影片是在DEMO車子行走的功能。影片中可以看到,當起床的時間一到,車子便會開始在地上「奔跑」。奔跑的目的是為了讓人要起身抓住他,所以車子會不規則的橫衝直撞。但同時,車子前方的超聲波模組可以幫忙探知前方是否有障礙物,避免車身受到撞擊。 <br><iframe width="560" height="315" src="https://www.youtube.com/embed/qUD686MVLz8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> 使用技術 --- * 開發版 * STM32F746G-DISCO * Arduino Nano * Arduino Uno * 開發環境 * STM32CubeIDE 1.2.0 * Arduino IDE * Visual Studio Code * 模組 * HC-SR04 超音波測距模組 * HC-05 藍芽模組 * I2C 16x2 LCD 液晶螢幕 * L298N 馬達控制模組 * 1W 8Ω揚聲器 * 車身設計 * 使用AutoCAD進行繪圖,再利用雷射切割出車身。 系統方塊圖 --- * STM32F746G-DISCO:觸控板寫字 * Arduino Uno:掌控時間、接收天氣資訊 * Arduino Nano:馬達控制與避障 * Python:負責上網抓取天氣資訊並傳送 ![](https://i.imgur.com/pc54ncM.png) <!-- ```sequence Note left of User: Sleeping Arduino Uno->LCD Display: RealTime Note left of LCD Display: Refresh per second Note left of Arduino Uno: Time to WAKEUP! Arduino Uno->Speaker: Turn on alarm music Arduino Uno->Arduino Nano: Turn on motor Arduino Nano->Motor: Turn on motor Note left of User: Start chasing the clock! HcSr04->Arduino Nano: See Obstacle Arduino Nano-> Motor: Change direction Note left of Motor: Loop while motor's on Note left of User: Successfully Grab the clock! User->STM32F746G: Write WAKEUP on screen Note right of STM32F746G: WAKEUP is correct STM32F746G->Arduino Uno: User is awake Arduino Uno->Speaker: Turn off alarm music Arduino Uno->Arduino Nano: turn off motor Arduino Nano->Motor: Turn off motor Python->Arduino Uno: weather report ``` --> 內部結構展示 --- * Arduino Nano 連接超音波測距模組與L298N馬達控制模組(L298N有外接電池) ![](https://i.imgur.com/URuHmK5.jpg) * Arduino Uno 連接揚聲器、HC-05藍芽模組及I2C 16x2 LCD液晶螢幕 ![](https://i.imgur.com/ojaBqZf.jpg) * 車身是用雷切後的木板拼裝而成 ![](https://i.imgur.com/xFCKIzQ.jpg) * 三塊開發版間的溝通:STM32F746G的D10腳位連接Arduino Uno的A0腳位,由Arduino Uno的D6腳位連接Arduino Nano的A6腳位 ![](https://i.imgur.com/MTsV51k.jpg) 未來展望 --- 在這次賽期中,我們研究的套件比用上的多太多了,包括TouchGFX、FreeRTOS、X_CUBE_AUDIO等等。最主要的問題是我們太晚發現FreeRTOS這個專案流程整合套件,沒時間把他學會,使鬧鐘的各功能無法合併到一個開發板上。 為使鬧鐘仍能滿足我們的要求,目前的替代方案是使用多個板子進行各自的工作,而不同板子間的溝通由腳位的I/O達成。例如使用者在STM32F746G-DISCO的觸控板寫完字後,該板子會在設定好的腳位輸出高電位,當Arduino Nano讀到此訊號,就會讓馬達停止運作。 但這樣的缺點就是高成本與增加硬體的複雜程度,由外接電池的數量就能看出。若我們學會FreeRTOS,我們能夠達成以下事項: * 行事曆功能: * 我們原本要利用TouchGFX製作像圓餅圖的時間表,隨著時間過去,會有更多面積被塗顏色,而每個顏色代表一個行程。如此一來能使在家工作者更有時間規劃能力,提升工作效率。<br> * 示意影片如下: <br><iframe width="560" height="315" src="https://www.youtube.com/embed/ccbx_Q9iFEc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> * 音響USB隨插隨放: * 我們有利用X_CUBE_AUDIO實作出播放USB中mp3&wav檔的專案,若此功能也被放入鬧鐘,我們的鬧鐘還可以拿來當作播放自己最愛音樂的好音響! * 實作成果影片如下(影片中micro USB連接出的裝置便是一個隨身碟): <br><iframe width="560" height="315" src="https://www.youtube.com/embed/_JEIA93tt-Y" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> * 大幅縮減開發板跟電池數量: * 若能用FreeRTOS將各個專案結合,我們就能只用一塊STM32F746G達到以上事項。如此一來就不用外接那麼多電池給其他板子供電,鬧鐘所需要的體積也會變得更小、重量更輕,使鬧鐘變的小巧具有攜帶方便性。 * 方便在後端設計電源插孔,將產品外觀包裝得更直覺、簡潔。 * 使用者圖形化介面 * 若克服技術性問題,我們也可以開發手機的app。透過app的圖形化介面,使用者能更方便在睡前設定隔天的鬧鐘與行程。合併上述的行事曆功能,必然會增加智能鬧鐘的使用彈性與便利性。 * 人聲播報天氣 * 若能夠克服藍芽傳訊的問題,傳送mp3的格式(兩邊都要能進行轉檔的動作,因為藍芽無法直接以藍芽格式傳遞訊息,目前有實作出STM32轉檔的功能,在X_CUBE_AUDIO中),我們便能實現以人聲播報天氣的想法,也可以讓使用者可以更方便的接收其他訊息(用python爬蟲即可) * 實作成果影片如下: <br><iframe width="560" height="315" src="https://www.youtube.com/embed/z2YlpTxjsAM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> 程式碼 (皆已push到Github上) --- * 本作品有實際用上的 * <a href="https://github.com/MakeNTU/2021_team10_/blob/main/src/obstacle_avoidance.ino">Arduino Nano Code here</a> * <a href="https://github.com/MakeNTU/2021_team10_/blob/main/src/LCD_display_and_music.ino">Arduino Uno Code here</a> * <a href="https://github.com/MakeNTU/2021_team10_/blob/main/src/main%20-%20AI.c">STM32F746G-DISCO Code here</a> * <a href="https://github.com/MakeNTU/2021_team10_/blob/main/src/weather_report%20(version_1).py">Python Code here (目前做的:顯示天氣至LCD面板)</a> * <a href="https://github.com/MakeNTU/2021_team10_/blob/main/src/weather_report(version_2).py">Python Code here (未加上去的:讓speaker直接以中文播報天氣)</a> * 本作品未來展望可能用得上的 * <a href="https://github.com/MakeNTU/2021_team10_/tree/main/src/STM_X-CUBE-AI">STM X-CUBE AI Code here</a> * <a href="https://github.com/MakeNTU/2021_team10_/tree/main/src/STM_TouchGFX">STM TouchGFX Code here</a> * <a href="https://github.com/MakeNTU/2021_team10_/tree/main/src/STM_X-CUBE-AUDIO">STM X-CUBE AUDIO Code here</a>

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully