---
# System prepended metadata

title: 108 Arduino教學
tags: [Public Resources]

---

---
tags : Public Resources
author : 
- name : Chris Lin
---
# 108 Arduino教學

## 介紹成員
* 為什麼聯合社課
* 創意機械、資訊研究簡單介紹(專長、成員)
## 介紹專案
* 播影片
* 軟體介紹(為什麼使用Arduino)
> [name=Chris Lin]硬體 : 設計好的pin腳、根據需求有多種選擇性(一種語言)、許多周邊開發板和傳感器
> 編程環境 : 整合式編輯器、Arduino核心、內建程式庫、範例sketch、編譯器、燒錄程式
* 工具介紹

## Arduino
- Refers to a whole family of board that have different advantages and disadvantages
- Started as a research project at the Interaction Design Institute of Ivrea in the early 2000s
- UNO / Nano / Due / mini
  * UNO : Atmega328, 16MHz, 32KB of program memory, 1KB of EEPROM, 2KB of RAM, 14 digital I/O, 6 analog inputs, 5V and 3.3V(including a power jack)
 ![](https://i.imgur.com/O7cZM5c.png)

  * Nano V3.0 : 相較UNO不可接shield，有針腳可放在麵包板上做開發
  * Mini
  * Due : 32-bit Atmel SAM3X8E ARM Cortex-M3 CPU

- Arduino IDE runs on Win, MacOS, Linux
- 開放原始電路設計圖
![](https://i.imgur.com/ig8JDdl.png)
- 電路可獨自運作或與連接之電腦溝通(serial communication)
- Open Source : https://github.com/arduino/Arduino
- 討論區 : https://forum.arduino.cc/
- some cool project : https://create.arduino.cc/projecthub


## Arduino Nano
### 簡述
- 單晶片微控制器(ATmega328)
Atmel corporation, AVR architecture, megaAVR series
![](https://i.imgur.com/dnAorua.png)
> [name=Chris Lin] 
> - Atmel半導體公司
> - Flash, EEPROM, and SRAM are all integrated onto a single chip
> - Have serial interfaces, which can be used to connect larger serial EEPROMs or flash chips


- Harvard architecture 8bits RISC(reduced instruction set computer)
> [name=Chris Lin]Harvard -> 指令和資料分開

    ![](https://i.imgur.com/dnAorua.png)

- 技術參數
   ![](https://i.imgur.com/s8XtS9R.png =400x400)
  - Flash memory for program storage 
  > [name=Chris Lin]存放程式和初始資料
  > 一區程式碼、一區bootloader
  > 主機端的avrdude(AVR downloader/ uploader)和bootloader溝通進行燒錄(不須額外燒錄器=>self-programming)
  > 燒錄工具將編譯後的程式碼燒錄
  - SRAM(static random access memory)
  - EEPROMs(electrically-erasable programmalble read-only memory)
  > [name=Chris Lin]電子抹除式 多次複寫



### 腳位
![](https://i.imgur.com/MsXOHGH.png =300x250)
- Power : VIN(7-12V)、5V、3V3(3.3V)
> [name=Chris Lin]regulator
- Reset : botton, digitalwrite(reset, LOW), resetFunc()
- Serial port (UART) : hardwired TX(1)/RX(0)
> [name=Chris Lin]Universal Asynchronize Receiver/Transmitter無時脈同步線
> 需傳送時起始通訊程序(協定上有開始和結束)
> 名詞 : 序列(串列)、同步、雙工
> 相對於SPI\I2C同步傳輸(用於CPU和周邊晶片)
> 
- Digital Pins : 
  * digitalread()、digitalwrite()；pinmode()
  * PWM(Pulse Width Modulation) :
    * 利用數位訊號高頻率的切換模擬出類比訊號 
    * analogWrite(pin, value) : value介於0~255(可算Duty Cycle)
    * 490 Hz (pins 5, 6: 980 Hz)
> [name=Chris Lin]Duty Cycle = Ton/Tof(%)
> V = Von * Duty Cycle(%)
> 例如開關頻繁使得看起來比較暗(調整脈波工作週期影響平均值來控制電壓)
- Analog Pins : 
  * analogRead()
  * 接收類比訊號(電壓、聲音、光亮、溫度)
  * ADC(Analog to Digital Converter)
- Interrupt(higher priority) : attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
  * ISR(Interupt Service Routine)
  * mode = RISING/FALLING/CHANGE
  * Interupt occure when voltage changed on assigned pin
- SPI(Serial Peripheral Interface) : 
  * MOSI(Master Out Slave In)
  * MISO(Master In Slave Out)
  * SS(Slave Select) : en(dis)able device
    * Device's SS pin **low** => ignore master(AT mode)
    * **high** => listen to master
  * SCK(Serial Clock) : the palses which syncronizes the transmitted data from the master 
- I2C : 
- When start all pins get pulled low.
### 配置
- Reset botton
- mini usb
- ICSP header : 
- LEDs : power, TX, RX, LED (D13)
- COM port (communication port)
  * parallel port(印表機) VS. serial port(滑鼠、數據機)
  * PC上指RS-232(transmitting bit by bit)，通常有四個 
  * ATmega has USB to serial converter chip (真正電腦的COM port需查此晶片的data)
  * 傳輸 1 bytes 的資料 = 1 parity bit + 8 data bits + 1 stop bit = 10 bits
> [name=Chris Lin]Nano在實體層是TTL位準的5V
> 需FTDI或CH340G轉成RS232軟體層的TX/RX訊號



## 佈線 & 焊接
![](https://i.imgur.com/1NJxOeV.jpg)
![](https://imgur.com/fV4k6Dt.jpg)


### 小技巧 : 
1. 佈線的時候可以在電路板上先做起點、終點的**記號**
2. 焊同一條線的兩端點時先**等一邊稍冷**再做另一邊
3. 焊會碰觸的兩條線同樣需稍做一些等待
4. 從**較矮**之元件**開始焊**(單芯線->排母->排針)
5. 在焊排母的時候需**注意**是否有**歪斜**


## Arduino Software Requirement
* Online Tool
https://create.arduino.cc/editor
(Install Arduino Create plugin)
https://create.arduino.cc/getting-started/plugin/welcome
* Download IDE
https://www.arduino.cc/en/Main/Software

## Basic Introduction
> [name=Chris Lin]關於程式的基本介紹
> 接著解構我們的程式，函式之後再講
> Sketch -> verify(編譯產生二進位碼) -> upload(燒錄)
1. 選擇IDE
2. install libraries
https://www.arduino.cc/en/Reference/Libraries
4. set board, port
5. include libraries
   * <servo.h>
     * attach and write
   * <SoftwareSerial.h> 
     * Baud : bits per second 
     * set two sides with the same baud (the highest acceptable rate)
     * use serial monitor to observe
     * Serial.begin() 


## Code Introduction
> [name=Chris Lin]課程可先讓學員習寫小程式(和我們程式所需功能相關者)，可兩周
- Variable
- Function : https://www.arduino.cc/reference/en/
- Sructure : setup, loop
- Practice(LED, Servo motor, serial)
  https://hackmd.io/@ChrisLin/HyblQ1u4U
> [name=Chris Lin]上面的筆記本連結是給大家的引導練習題
> 也許還可以讓大家加寫SPI，秀文字在LCD板(手邊有)
- Introduction of our program([main](https://drive.google.com/file/d/1PcnwADfp76JOhnKTsO3fZCxIec4gNEq5/view?usp=sharing), [HC05](https://drive.google.com/file/d/1nNnpI53Lfemx_CbBTS6h5XOGzGP5wr5O/view?usp=sharing))

## 燒錄
* 步驟 : 
  開發版"Arduino Nano" -> 處理器"ATmega168P(Old Bootloader) -> 序列埠(COM4)
* Online :
  1. Plugin
  2. Serial Monitor
  3. 雲端草稿本
* IDE
  1. COM Port 驅動程式
  2. 燒錄前需按住reset鍵直到出現上傳中字樣立即放開

## Arduino app
* [package](https://drive.google.com/file/d/19dfeVJGi6pBOdaAXsM8kLYPkmIC1orE6/view?usp=sharing)


## HC-05 藍牙模組
* 支援SPP(Serial Port Profile序列埠規範)
* 主從(master/slave)一體型
![](https://i.imgur.com/sFLpgoY.png)
*上圖為無底板類型*
![](https://i.imgur.com/H6MBPQf.png)
*上圖為第34腳為KEY類型*

HC-05預設為slave，但是可藉由AT指令切換為master。
可以和HC-05之間互連也可以跟手機連，這裡使用HC-05當中有EN，藉由實體鍵進入AT模式的版本，並且示範藍芽為從、手機為主的連接模式。

## 藍芽連接
* HC-05(slave)設定步驟 : 
  接RXD(Nano的傳送端)、TXD(Nano的接收端)、GND -> 將HC-05程式燒到Nano -> 按住EN實體鍵 -> 將5V接到VCC -> 藍芽板LED慢閃(進入AT Mode) -> 打開序列埠監控視窗 -> 輸入"AT" -> 顯示OK
  ```
  AT command :
  AT+VERSION
  AT+UART? (查鮑率)
  AT+NAME="the name you want to give"
  AT+PSWD="password you want to give"
  AT+ROLE? (0 for slave ; 1 for master)
  AT+ADDR? (查此藍芽模組MAC)
  ```
* 手機端設定步驟 : 
  打開藍芽 -> 尋找藍芽Device -> 找到剛剛命名的藍芽或者未更改名稱HC-05 -> 輸入密碼進行配對 -> 如此即完成
  
