S4A2. Outline
Raspberry Pi 介紹
Python 語言介紹
Raspberry Pi + Python 應用案例介紹
擴充學習加速學習
Raspberry Pi + Python 開發無線 WiFi 遙控車介紹
- ESP8266 WiFi 模組介紹
- Motoduino 介紹
- S4A通訊協定介紹
- Raspberry Pi 透過 WiFi 模組控制 motoduino
Raspberry Pi + Python 開發機械手臂案例
Raspberry Pi + C 開發 RGB LED Matrix 案例
6. Pi 是完整的小電腦
CPU: 900 MHz -ARM Cortex-A7
記憶體: 1GB
視訊輸出:
Composite RCA
HDMI
音訊輸出:
3.5 mm jack
HDMI(1.3 & 1.4)
儲存: microSD
USB: USB 2.0 x4
Ethernet: 10/100 RJ45
尺寸: 85mm x 56mm x 17mm
6
10. I2C & SPI & UART modules
10
重力感測器模組
溫溼度感測器模組
磁力感測器模組
類比/數位轉換模組
PWM 控制器
RF 通訊模組
顯示器模組
…
19. Why Python?
• 具物件導向特性的直譯式語言
• 跨平台(windows, linux, mac os x)
• 豐富的函式庫支援
• 數值運算與科學繪圖 : Numpy, Matplotlib…
• GUI 圖形介面: Qt, Tkinter, wxPython…
• 網路應用: Socket、Django、Flask、Turnado…
• 資料庫: NoSQL、MySQL…
• 週邊硬體控制: GPIO、I2C、SPI、UART、GPIB、USB
19
30. Motorduino = Arduino +
Motor Controlling (L293D)
PWM 控制速度
(0~255)
PWM 控制速度
(0~255)
Motor A
轉動方向
Motor B
轉動方向
30
31. QA: 有獎徵答…
• 請問 S4A 的 “S”指的是?
•A- Scratch
•B- Super-Man
•C- Seven-Eleven
•D- Star-War
34. Wireless S4A 架構
Raspberry Pi
Motoduino
(Arduino)
• Linux OS
• S4A protocol implemented
by Python socket
• WiFi with AP mode
• S4A Firmware
• Motor driver (L293D)
• WiFi with STA mode (ESP8266)
WiFi Connection
S4A protocol
34
35. Labs
• Lab 0 : Motoduino Introduction
• Lab 1 : 燒錄S4A Firmware到Motoduino
• Lab 2 : Scratch for Arduino
• Lab 3 : Python 取代scratch
• Lab 4 : Python GUI (tkinter)
• Lab 5 : ESP8266 Introduction
• Lab 6 : UDP Socket
• Lab 7 : DEMO
35
47. 解析封包格式
1 0
High Byte Low Byte
Channel
[3:0]
Value
[6:0]
HL-identify (2 bit) +
Channel (4 bits) +
Value (10 bits)
Value
[9:7]
47
48. Motoduino Channel Def: Pi
Channel Value
0 Analog Input (0~1023)
1 Analog Input (0~1023)
2 Analog Input (0~1023)
3 Analog Input (0~1023)
4 Analog Input (0~1023)
5 Analog Input (0~1023)
6 Digital : 0/1
7 Digital : 0/1
48
49. Motoduino Channel Def: Pi
Channel Value
4 Continuous Rotation Motor
5 PWM: 0 ~ 255
6 PWM: 0 ~ 255
7 Digital : 0/1
8 Digital : 0/1
9 PWM: 0 ~ 255
10 Digital : 0/1
11 Digital : 0/1
12 Servo Motor
13 Digital : 0/1 49
50. 有獎徵答(快結束了) …
• 請問 S4A 傳送封包的最小單位為何 ?
•A- 2 byte
•B- 1k byte
•C- 1M byte
•D- 1T byte
50
51. 有獎徵答(快結束了) …
• 請問 Motoduino 的小車每隔多久會傳一次訊息
給Raspberry Pi ?
•A- 16 ms(毫秒)
•B- 1 分鐘
•C- 10 分鐘
•D- 30 分鐘
51
52. Labs
• Lab 0 : Motoduino Introduction
• Lab 1 : 燒錄S4A Firmware到Motoduino
• Lab 2 : Scratch for Arduino
• Lab 3 : Python 取代scratch
• Lab 4 : Python GUI (tkinter)
• Lab 5 : ESP8266 Introduction
• Lab 6 : Python UDP Socket
• Lab 7 : DEMO
52
58. Lab 3 : Send Command
Threading: 處理封包傳送Main loop : 指令輸入
Channel Value 58
61. Labs
• Lab 0 : Motoduino Introduction
• Lab 1 : 燒錄S4A Firmware到Motoduino
• Lab 2 : Scratch for Arduino
• Lab 3 : Python 取代scratch
• Lab 4 : Python GUI (tkinter)
• Lab 5 : ESP8266 Introduction
• Lab 6 : Python UDP Socket
• Lab 7 : DEMO
61
62. WiFi module : ESP8266
UART Interface
AT Commands
WiFi: Soft-AP, STA mode
TCP/UDP/IP Protocol
62
64. Lua Code Intrudction
Boot for
Auto WiFi Connection
Timer ISR:
Check IP per sec.
IF Get IP Then Setup UART
AND socket UDP connection64
67. Lab 6 : UDP socket : Receive
UART
Send & Receive
Message
Channel Value
67
68. Lab 6 : UDP socket : Send
Threading: 利用 Socket 處理封包傳送
Main loop : 處理指令輸入
68
69. Lab 6 : UDP socket : Send CMD
Channel Value 69
71. 有獎徵答(最後一次) …
• 請問 Motoduino 與 Raspberry Pi 的預設連接
方式為何?
•A- USB 連接線
•B- 光纖通訊
•C- 雷射通訊
•D- 電話線通訊
71
73. Summery of Labs
• Lab 0 : Motoduino Introduction
• Lab 1 : 燒錄S4A Firmware到Motoduino
• Lab 2 : Scratch for Arduino
• Lab 3 : Python 取代scratch
• Lab 4 : Python GUI (tkinter)
• Lab 5 : ESP8266 Introduction
• Lab 6 : UDP Socket
• Lab 7 : DEMO
73
81. Learn How to Do
• Python 開發
• I2C 通訊協定
• PWM 訊號
• 伺服馬達
• GPIO控制字元型態LCD
• USB HID Joystick 控制
• 控制系統設計 81
82. Pi + C 開發案例過程
RGB LED Matrix
64x32 pixels
82
85. LED Matrix: 64x16 + 64x16
85
R1, G1, B1
A,B,C,D
R2, G2, B2
A,B,C,D
16 bits x 4 = 64 bits
4bits[A:B:C:D]
86. Scan LED Matrix
86
C Programming
Array : 64x32 [R,G,B] bytes
Scan LED Matrix:
Shift Register input 64 bits
Shift Demultiplexer 0 ~ 31
89. Pixel 8 bit scanning
89
7 6 5 4 3 2 1 0
128 64 32 16 8 4 2 1
Times
∆𝑇/255
Scanning Speed:
Algorithm
91. Learn How to Do
• LED Matrix 線路設計
• C 語言
• 矩陣運算、處理、掃描演算法
• 作業系統: 多工處理排程
• Real Time OS、MCU、FPGA
91