Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

S4A

3,647 views

Published on

Raspberry pi implement Wireless S4A protocol using python

Published in: Education

S4A

  1. 1. 用Python玩WiFi + S4A 講師: 楊松 主辦單位: 艾鍗科技有限公司 & 用Raspberry Pi 結合 Arduino 實現Wi-Fi 遙控車 1
  2. 2. 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 案例
  3. 3. Raspberry Pi 介紹 樹莓派--Raspberry Pi 英國的樹莓派基金會所開發 基於Linux系統 信用卡大小電腦 低價硬體 – 35 美元 自由軟體 刺激學校基本電腦科學教育 3
  4. 4. Raspberry For 電腦科學教育 4
  5. 5. Raspberry For 電腦科學教育 5
  6. 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
  7. 7. Linux 作業系統 7
  8. 8. Pi 不單純只是電腦 GPIO + SPI + I2C + UART 8
  9. 9. GPIO  控制與週邊硬體 9
  10. 10. I2C & SPI & UART modules 10 重力感測器模組 溫溼度感測器模組 磁力感測器模組 類比/數位轉換模組 PWM 控制器 RF 通訊模組 顯示器模組 …
  11. 11. Pi 發揮創意產生應用 11
  12. 12. Pi 發揮創意產生應用 12
  13. 13. 複雜的應用: Bullet Time 13
  14. 14. QA: 有獎徵答… • 請問Raspberry Pi 是哪一個國家的基金會所開 發? •A- 美國 •B- 英國 •C- 日本 •D- 澳洲
  15. 15. QA: 有獎徵答… • 請問Raspberry Pi 的尺寸大小為何? •A- 一個房間那麼大 •B- 一台車子那麼大 •C- 一張桌子那麼大 •D- 一張名信片那麼大
  16. 16. Coding on Linux 16
  17. 17. Scratch 程式語言 17
  18. 18. Raspberry Pi + Python 18
  19. 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
  20. 20. Robot: Raspberry Pi + Python 20
  21. 21. Python + OpenCV 21
  22. 22. Raspberry Pi 教學子板 22
  23. 23. 23
  24. 24. 子板主要特點 24
  25. 25. 用Raspberry Pi 結合 Arduino 實現 Wi-Fi 遙控車 25
  26. 26. 車子結構 Motoduino ESP8266 馬達外部電源(DC6V) 26
  27. 27. 車子底盤結構 底部 前導輪 馬達 側面 27
  28. 28. Arduino & C++ 28
  29. 29. Scratch For Arduino (S4A) S4A Firmware S4A protocol 29
  30. 30. Motorduino = Arduino + Motor Controlling (L293D) PWM 控制速度 (0~255) PWM 控制速度 (0~255) Motor A 轉動方向 Motor B 轉動方向 30
  31. 31. QA: 有獎徵答… • 請問 S4A 的 “S”指的是? •A- Scratch •B- Super-Man •C- Seven-Eleven •D- Star-War
  32. 32. QA:有獎徵答… • 請問 Motoduino 是有哪一個國家的廠商所發展 出來的? •A- 沙烏地阿拉伯 •B- 剛果 •C- 台灣 •D- 烏克蘭
  33. 33. S4A 架構 Raspberry Pi Motoduino (Arduino) • Linux OS • S4A using scratch • S4A Firmware • Motor driver (L293D) USB cable S4A protocol 33
  34. 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. 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
  36. 36. S4A and Motoduino USB Cable Motoduino Firmware S4A Motoduino 36
  37. 37. Motoduino 馬達外接電源 GND 電源 Motoduino USB Cable UART TX, RX L293D 馬達控制 接口 馬達控制 接口 Arduino Atmel 328 37 外接電源Jumper
  38. 38. Controlling Motor D7 D5 PWM 控制速度 (0~255) PWM 控制速度 (0~255) Motor A 轉動方向 Motor B 轉動方向 D6 D8 38
  39. 39. Pi – Motoduino Connection by USB cable 39
  40. 40. Arduino 燒錄Motoduino 40
  41. 41. S4A and Motoduino connect 41
  42. 42. S4A Protocol – 訊號擷取 RX TX 42
  43. 43. Protocol Timing Pi Moto MotoPi ~85ms ~16ms 43
  44. 44. Motoduino -> Pi 16 Bytes  8x2 (Channel : Value) 44
  45. 45. Pi -> Motoduino 20 Bytes  10x2 (Channel : Value) 45
  46. 46. S4A Protocol Spec. Motoduino Motor Control 46
  47. 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. 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. 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. 50. 有獎徵答(快結束了) … • 請問 S4A 傳送封包的最小單位為何 ? •A- 2 byte •B- 1k byte •C- 1M byte •D- 1T byte 50
  51. 51. 有獎徵答(快結束了) … • 請問 Motoduino 的小車每隔多久會傳一次訊息 給Raspberry Pi ? •A- 16 ms(毫秒) •B- 1 分鐘 •C- 10 分鐘 •D- 30 分鐘 51
  52. 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
  53. 53. Encoding Decoding 解碼與編碼程式 53
  54. 54. USB connection 撰寫程式讀取 Motoduino 傳過來的訊息 Raspberry Pi /dev/ttyUSB0 54
  55. 55. Show the received data What is This? 55
  56. 56. Resolve Packet 解析封包格式並取出各 channel 的資訊 ch0, ch1, ch2, ch3, ch4, ch5, ch6, ch7 56
  57. 57. Send Command 測試控制 57
  58. 58. Lab 3 : Send Command Threading: 處理封包傳送Main loop : 指令輸入 Channel Value 58
  59. 59. Python GUI ( Tkinter ) 59
  60. 60. Lab 4-GUI Control 60
  61. 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. 62. WiFi module : ESP8266 UART Interface AT Commands WiFi: Soft-AP, STA mode TCP/UDP/IP Protocol 62
  63. 63. NodeMCU Firmware UART Interface Lua Script and API Support Wi-Fi: Soft-AP, STA mode TCP/UDP/IP Protocol 63
  64. 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
  65. 65. ESP8266: write Lua Script 65
  66. 66. Lab 6 : UDP socket 66
  67. 67. Lab 6 : UDP socket : Receive UART Send & Receive Message Channel Value 67
  68. 68. Lab 6 : UDP socket : Send Threading: 利用 Socket 處理封包傳送 Main loop : 處理指令輸入 68
  69. 69. Lab 6 : UDP socket : Send CMD Channel Value 69
  70. 70. Lab 7: DEMO GO~ GO~ 70
  71. 71. 有獎徵答(最後一次) … • 請問 Motoduino 與 Raspberry Pi 的預設連接 方式為何? •A- USB 連接線 •B- 光纖通訊 •C- 雷射通訊 •D- 電話線通訊 71
  72. 72. 有獎徵答(最後一次) … • 請問接下來的的實作要將 Motoduino 和 Raspberry Pi 的通訊方式轉換為何 ? •A- WiFi 無線通訊 •B- 光纖通訊 •C- 雷射傳輸通訊 •D- 3G通訊 72
  73. 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
  74. 74. Learn • Scratch, Python, Lua 語法 • Arduino (MCU) 開發 • UART 通訊 • 同訊協定封包設計 • 馬達控制 • WiFi 通訊 UDP/IP • GUI 人機介面實作 74
  75. 75. Pi + Python 開發案例過程 六軸機械手臂 75
  76. 76. 六軸機械手臂 76
  77. 77. 硬體架構 PWM 77
  78. 78. 讀取 USB 搖桿指令 main 主程式 Joystick 物件 78
  79. 79. 執行對應程式 main 主程式 Arm 物件 arm PCA9685 物件 pwm 79
  80. 80. 字元型態LCD顯示資訊 main 主程式 LCM 物件 80
  81. 81. Learn How to Do • Python 開發 • I2C 通訊協定 • PWM 訊號 • 伺服馬達 • GPIO控制字元型態LCD • USB HID Joystick 控制 • 控制系統設計 81
  82. 82. Pi + C 開發案例過程 RGB LED Matrix 64x32 pixels 82
  83. 83. 硬體電路研究 83
  84. 84. 84 Shift Registers LAT CLK R1,G1,B1 A B C D 0 1 0 0 0 1 Demultiplexer
  85. 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. 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
  87. 87. Scanning LED matrix 87
  88. 88. Scanning Colorful 88 Bit Bit Bit
  89. 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
  90. 90. Program Structure 90 LED Matrix Scanning Loop RGB Matrix Handling Loop 動畫、文字… RGB Pixel Matrix [64][32]
  91. 91. Learn How to Do • LED Matrix 線路設計 • C 語言 • 矩陣運算、處理、掃描演算法 • 作業系統: 多工處理排程 • Real Time OS、MCU、FPGA 91
  92. 92. Thank For You Attention 92

×