วันพุธที่ 17 กรกฎาคม พ.ศ. 2562

เล่าเรื่องการใช้งาน Arduino communication Protocols

เล่าเรื่องการใช้งาน Arduino communication Protocols

ในปัจจุบันพวกเราจะพุดคุย protocols การสื่อสาร arduino. อุปกรณ์ต้องการสื่อสารซึ่งกันและกันเพื่อติดต่อสื่อสารระหว่างสิ่งรอบข้าง ,เพื่อความชัดเจนในการเปลี่ยนสภาวะ หรือ ร้องของ ผุ้ช่วย ให้ช่วยดำเนินการกระทำ มีหลาย  hobby electronics work , คุณจะต้องใช้โปรโตคอลการสื่อสารหลักที่ใช้งานอย่างน้อยหนึ่งโปรโตคอล มันคือเมื่อ มีการทำงานที่แตกต่างของ sensor หรือ มี โมดูล เช่น ESP8266. ในแบบฝึกหัดนี้ เราหวังจะเป็นเริ่มต้นในมาตรฐาน protocals มาตราฐาน, นั้น อุปกรณ์อิเลคทรอนิกส์ ใช้และ อธิบายแต่ละรายละเอียดโดยใช้ Arduino Uno.

Binary and Number Systems


Inter-device communication  เกิดสัญญาณดิจิตรอลขึ้น ก่อนที่พวกเราจะพูดคุยเรื่อง communication protocols,พวกเราจะพูดถึง การสัญญาณการสื่อสารต่างๆที่เกิดขึ้นในอดีต

ใน digital signal ,ข้อมูลเป็นการถ่ายทอดตาม sequence ของ HIGH to LOW and LOW to HIGH สลับกันนั้นเกิดขึ้นอย่างรวดเร็ว.ทั้ง HIGH และ LOW ในสัญญาญดิจอตรอลในลำดับ  1s และ 0s ตามลำดับนั้น.เมื่อใส่ไปด้วยกันในsequence,พกพาข้อมูลนั้นสามารถเป็น interpreted จาก Microcontroller. เคยรุ้จักง bits and bytes เฉพาะ

ทั้วหมด 1s และ 0s เป็น bits, และเมื่อ เป็น กลุ่ม จะมี 8 พวกเค้า เป็นการติดต่อใน bytes!

A byte อาจมีลักษณะเช่นนี้ : 10111001

ตามที่มันปรากฎ , ลำกับนี้ของ 8 แทน ตัวเลข ที่เหมือนเช่นเดียวกับตัวเลยที่ ชอบ 597 แทน five hundred ninety-seven. แต่ละ digit ตรงบริเวณ  place-value, และ the 1 หรือ 0 in place-valueนั้น  บ่งชี้ว่า ใช้เวลานานเท่าไร ในการนับ place-value 

ตัวอย่างของ 597, the 5 เป็นตัวชี้ว่า เลนนั้นเป็น 5 hundreds, 9 เลขนั้นเป็น 9 tens, และ the 7 indicates เลขนั้นเป็รน 7 ones. รวมกัน, มีค่าเท่ากับ 5 hundreds + 9 tens + 7 ones (500 + 90 + 7)…หรือ ห้าร้อยเก้าสิบเจ็ด.  ตั้งแต่  ones เป็น 100, สิบเป็น 101, hundreds is 102, etc.นี้เป็นการพูดถึง บนพื้นฐาน ระบบฐาน 10 ในระบบฐาน 10   แต่ละ digit สามารถมี ค่า 0 ถึง 9 (0 through 10-1).

ตอนนี้ถ้าพวกเราย้อนกลับไปที่เลขของเรา number 10111001. พวกเรารู้ค่านี้เป็นเลขฐาน 2 เนื่องจากแต่ละ หลักตัวเลยมีค่า เป็น 0 และ 1  พวกเราสามารถจะพูด แต่ละ หลักเป็น power of 2, ซึ่งหมายความว่าค่า 10111001เป็นค่าจริงๆของ 1 * 27 + 0 * 26 + 1 * 25 + 1 * 24 + 1 * 23 + 0 * 22 + 0 * 21 + 1 * 20, หรือ 185 in  เลขฐาน 10.  
คุณสามารถจินตนาการได้ว่า ,คุณสามารถมี ระบบ เลขฐานบนหลายๆ number!  บ้างก็เหมือนกับ 1 ใน คณิตศาสตร์ เป็น ฐาน 2 ฐาน 8 ฐาน 10 และฐาน 16.  นักคณิตศาสตร์ มีระบบ ชื่อตัวเลขที่เหมือนกันเหล่านี้เพื่อความง่าย —ฐาน 2 is binary, ฐาน 8 is octal, ฐาน 10 is decimal, and ฐาน 16 is hexadecimal.  ระบบตัวเลขแต่ระบบปฎิบัติตามหลักการเดียวกัน: แต่ละหลักแสดงให้เห็น ตัวเลข ของเวลา ความสำคัญ ของการนับฐาน และจำนวนแต่ละหลักสามารถ เป็นทุกอย่าง ระหว่าง 0 และ ฐาน ร่วมทั้ง -1 
ความรู้ของ ระบบเลขฐานที่แตกต่างมีประโยชน์เพราะ bytes และ data มักจะแสดงในรุปแบบต่าง   ตามที่คุณสามารถจินตนาการได้ , มันเป็นการง่าน ที่จะเขียนออกไป B9 (hexadecimal) นั้น 10111001 (binary).  ใน software, binary numbers เป็น น้ำหน้าโดยด้วย 0b, octal numbers เป็นการนำหน้า prefixed มี  0, and hexademical numbers นำหน้ามี 0x.  Decimal numbers เท่านั้นที่ไม่มีตัวนำหน้า.  
ความรู้ของการแปลงค่าระหว่างเลขฐานต่างๆ เพราะเป็นตัวเลขใน บ่อยครั้ง เพื่อ ความสบายและทำได้ง่าย เทคนิคคณิตศาสตร์บางอย่างดูดีง่าย.เพื่อที่จะกำหนดบทแนะนำนี้, อย่างไรก็ตาม ,พวกเราจะทิ้งมันไว้แค่นั้น.  ตรวจสอบภาคผนวกในการลทเรียนนี้ด้านล่างสำหรับบทความเกี่ยวกับเทคนิคเหล่านี้!
3 protocols: UART, SPI, and I2C

วิศวกรอิเลคทรอนิกส์รวมกัยคิดสำหรับ  มาตรฐาน อิเลคทรอนิกส์ ประมาณ 3 โปโตครอล การติดต่อ เพื่อใช้งานได้ร่วมกันได้ทั้งหมด   ศูนย์กลาง ของอุปกรณ์หลายๆตัว จำนวนน้อย protocols นั้น ผุ้ออกแบบเจตนา ต้องการให้ สามารถ โต้ตอบ มี หลายอุปกรณ์ จาก ความรู้  แนวความคิดพื้นฐานบางประการ เกี่ยวกับ แต่ละ การสื่อสาร โปโตครอล ทั้งหมด three protocols, UART, SPI, and I2C, แตกต่างกันในการใช่งาน แต่  ในที่สุด มีจุดมุ่งหมายเดียวกัน :ถ่ายทอด ข้อมูล ที่ ความเร็วสูง และเข้ากันได้กับอุปกรณ์ 
1. UART
protocolติดต่อสื่อสารแรกพวกเราพูดถึงคือ Universal Asynchronous Receiver/Transmitter (UART). UARTรุปแบบของ serial communication เพราะ data เป็น ถูกส่งมาแล้ว เช่น sequential bits (we’ll get to this in a bit).  The wiring involved(ที่เกียวข้อง) สำหรับการ setting up UART communication เป็นเรื่องง่าย: จะทำการถ่ายทอดข้อมูลทางเดียว (TX) และรับข้อมูลทางเดียว (RX).  ขณะที่คุณคิดว่า, the TX line is used to for the data to send device(เส้นการใช้เพื่อข้อมูล สำหรับ ส่ง ไปที่ อุปกรณ์ ), และใน RX เป็นการใช้รับข้อมูล. รวมทั้ง TX and RX ของอุปกรณ์ที่ใช้ serial communication จาก serial portตลอด ซึ่ง สามารถติดต่อกันได้ตลอดเวลา.

Figure 1. Hardware connection diagram for UART

ในกรณ UART จริงๆ จะกล่าวไปถึงออนบอล์ดฮาร์ดแวนั้น การจัดการต่างๆ การ
บรรจุและการแปลน ของ serial data.  เพื่ออุปกรณ์ สามารถติดต่อกับ
via the UART protocol, มันต้องมีฮาร์แวนี้บน Arduino Uno,
มีหนึ่ง serial port มอบให้เพื่อ communication กับ computer Arduino เป็นการเชื่อต่อ. 
USB นั้นถูกต้อง! , ซึ่งย่อมาจาก Universal Serial Bus, เป็น serial port! 
บน Arduino Uno, USB นี้ เชื่อต่อโดยแยกตลอดบนบอล์ดฮาดร์แวในสอง ดีจิตรอล 2 pin
, GPIO 0 และ GPIO 1, ที่สามารถใช้ในโครงงานนั้นรวมถึง serial communication
กับ electronics นอกเหนือจากคอมพิวเตอร์


Figure 2. GPIO 0 และ GPIO 1เป็น Serial RX และ TX.  GPIO pin อื่น สามารถใช้ Serial RX or TX มีอยู่ใน SoftwareSerial library

คุณยังสามารถใช้  SoftwareSerial Arduino library (SoftwareSerial.h) เพื่อใช้ GPIO pins
อื่นๆ  เช่น Serial RX และ TX lines. 
UART ทำติดต่อ(ไม่ตรงกัน) Sasynchronous เนื่องจาก  การติดต่อสื่อสาร
ไม่ได้ขึ้นอยู่กับนาฬิกาที่ซิงโครไนซ์ ระหว่าง สองอุปกรณ์ พยายามที่จะติดต่อ กันแต่ละอื่นๆ . 
เนื่องจาก ความเร้วในการติดต่อ ไม่ได้กำหนดvia สัญยาณที่สมบูณณ์นี้,
ผุ้ส่ง อุปกรณ์ ไม่สามารถ เที่ยงตรง นั้น ในการรับ ได้รับขอมูลที่ถูกต้อง ดังนั้น,
อุปกรณ์รับข้อมูล กลายเป็น fixed-size ก้อน  แน่ใจ นั้น ข้อมูล ที่ได้รับ เป็น
ข้อมูลตัวเดียวกันกับที่ได้ส่งเป็น UART data packet มีลักษณะดังนี้

Figure 3. UART Data packet visualized / ©electric imp
อุปกรณ์หลายๆตัว นั้น สื่อสารผ่าน UART ส่ง packets ของ pre-defined size นั้น บรรจุ
ข้อมูลเพิ่มเติมเกี่ยวกับการเริ่มและจบ ข้อความการยืนยันหรือว่า ข้อความที่ได้รับได้อย่างถูกต้อง.
สำหรับตัวอย่าง, เพื่อเริ่ม การติดต่อ, การติดต่อสื่อสาร อุปกรณ์ ส่ง สัญญาณลงต่ำ, เริ่มต้น
การแสดง ของชุดข้อมูล .  Long-term, อย่างไรก็ตาม,นี้หมายความว่า this means that UART
เป็นการเปรียบเทียบอย่างช้าๆเพื่อจะ synchronized จากการ communication
เนื่องจากเพียงส่วนนึง ของข้อมูลที่ส่งไปแล้ว สำหรับอุปกรณ์’ การใช้งาน(ส่วนที่เหลือ
เป็น การสื่อสาร สำหรัีบตัวเอง )  
เมื่อ เริ่มต้นการใช้งาน ชUART serial communication บนอุปกรณ์ embedded platforms
เช่น  Arduino, ผู้ใช้ไม่สามารถ จัดการ กับการสื่อสารในระดับ บิต. แทน,รูปแบบ
บ่อยครั้งต้องการ provides ระดับสูง higher level software libraries  นั้นเป็น อย่างเดียว
ลักษณะ รุปแบบ ของ กระบวนการติดต่อสื่อสาร ผู้ใช้ มี เพื่อรับมือ. ใน Arduino platform,
ผู้ใช้งาน สามารถใช้ Serial และ SoftwareSerial libraries เพื่อใช้กำเนินการ  UART สื่อสาร
เพื่อโครงงานของพวกเค้า
ต่อไปนี้คือ C++สั้น สำหรับอ้างอิ้ง การใช้งาน Arduino Serial and SoftwareSerial
การเริ่มต้นและการใช้งาน 

สิงสำคัญอย่างนึงทิศทางเพื่อบันทึกทุกระหว่างที่ UART communication  เป็น นั้นมันคือ
ผุ้ออกแบบ การสื่อสาร ระหว่าง สองอุปกรณ์ในเวลานั้น.  เนื่องจาก protocol ส่งค่า bits
เพียงอย่างเดียว จะแสดง เมื่อเริ่มต้น ข้อความ, เนื้อหาข้อความ, และ สิ้นสุดข้อความ,
ที่นั้น there is ไม่มีวิธี no method of สร้างความแตกต่างในการส่งสัญญาหลายๆอย่าง และ
รับข้อมูล อุปกรณ์ บน สายเดียวกัน. ถ้ามากกว่า 1อุปกรณ์ พยายามที่จะส่ง ข้อมูลบน
สายเดียวกัน , bus contention occurs, และอุปกณณืรับข้อมูล  จะ will ส่วนใหญ่
จะรับข้อมูลขยะ ใช้งานไม่ได้ 
ขอกจากนี้  UART เป็น half-duplex, อันซึ่งหมายความว่าการสื่อสารสามารถเกิดขึ้นได้สองทาง,
อุปกรณ์ทั้งคู่  ไม่สามารถส่งข้อมูลวึ่งกันแหละกันในเวลาเดียวกัน. ในโครงการที่ สอง Arduinos
เป็น การสื่อสารแต่ละอันผ่านการเชื่อต่อแบบอณุกรม, จากตัวอย่าง,
นี้ต้องการจะหมายถึงในเวลาที่กำหนด, มีเพียงอันเดียว the Arduinos สามารถ “talking”
ถึงส่วนอื่นๆ  . สำคัญที่สุด applications, อย่างไรก็ตาม ,ความจริงนี้ เป็น สัมพันธ์
ไม่สำคัญเสียเปรียบ อย่างไรก็ตาม.  
2. SPI
ต่อไป communication protocol พวกเราจะควบคุมถึง Serial Peripheral Interface (SPI).
  SPI แตกต่าง จาก UART ในหลายวิธีที่สำคัญ :
  • Synchronous(เชื่อมต่อ)
  • ปฎิบัติตมโมเดลอย่าง master-slave ,ที่ไหน where ที่นั้น there เป็นอุปกรณ์ตัวหลักหนึ่งเดียวและ  slave devices หลายตัว
  • มากกว่าสองสายต้องการเพื่อเพิ่มการดำเนินงาน
hardware ไดอาแกรมการเชื่อมต่อของ SPI มีเล็กน้อยกว่าความซับซ่อน, and และรุปลักษณ์บางอย่างงี้:
arduino communication
Figure 4. Hardware connection diagram for SPI

  • MOSI (“Master Out Slave In”): เส้นการถ่ายโอนข้อมูล จาก master ถึง slave
  • SCK (“Clock”): Clock line เพื่อกำหนด transmission speed และ transmission start/end characteristics
  • SS (“Slave Select”): เส้นจาก master เพื่อ เลือก โดยเฉพาะเจาะจง slaveเพื่อ  communicate ด้วย
  • MISO (“Master In Slave Out”): เส้น Data transmission จาก slave ถึง master
featureแรก เกี่ยวกับ SPI ที่จะต้องทราบ นั้นมันเป็นการติดตาม โมงเดล master-slave
นี้หมาความว่า นั้นเป็นการสื่อสาร โดยอาศัย หนึ่ง device กำหนด เป็นตัว master,
and devicesอื่นๆเป็น  slaves. การสร้างนี้ ลำดับขั้น ระหว่าง the devices มีความหมาย
ที่  ซึ่ง device มีประสิทธิภาพ “in control”ของคนอื่นๆ . เราจะพูดถึง master-slave model
นี้ ในไม่ช้า เมื่อเราอธิบายอะไรของ  a sample communicationระหว่าง master และ
slave device อาจจะดูเหมือน.
พวกเราบันทึกแบบง่ายนั้นคือ multiple slaves สามารถติดต่อได้กับ 
can be single master device. hardware diagram for ระบบดังกล่าว
อาจจะมีลักษณะเหมือนดังนี้:
arduino communication
Figure 5. Multiple-slaves connected to a single master
SPI ไม่จำเป็นที่จะต้องแยกการส่ง และรับข้อมูล เพื่อแต่ละ  slave นั้นคือการเชื่อไปถึงmaster.
หนึ่งเส้น common receive (MISO) และ  หนึ่งเส้น common transmit (MOSI),
รวมมี หนึ่ง common clock (SCK) เป็นการเชื่อมต่อ ระหว่าง ทั้ง the slaves and the master. 
The master device ติดสินใจ ที่ slave มันทีการติดต่อมีตลอดแยกเส้น สำหรับแต่ละ slave.
  นี้คือวิธีนั้นแต่ละ additional slave นั้นคือ the master communicates มีความต้องการ
อื่น GPIO pin บน  master’คือด้านข้าง.
SPI เป็นการ synchronous, ที่หมายความว่า นั้นคือการ communication ระหว่าง master
และ slave ปิดออกโดยสัญญาณนาฬิกา(a square wave of fixed-frequency)
กำหนดโดยmaster device.  นี้แหละ พวกเราเห็น หนึ่งใน ความผลกระทยสำคัญ ของ
โมเดล master-slave. master device ขับเคลื่อน การติดต่อจาก communication
การระบุ ความเร็วในกาติดต่อ  ตลอดจนสัญญาณนาฬิกา , และ slaves การโต้ตอบ จาก
และความเร็วcommunicating . นี้คือคำจำกัดความของ ความเร็วทำงานเพื่อ
ความเร็วในการสื่อสารr masterตัดสินใจ (within the maximum speed tolerable by the slave
devices).  
ใน SPI,2 ความสามารถเฉาะของ สัญญาณ นาฬิกา พิจารณา ที่การเริ่ม และจบของ
การถ่านทอดข้อมูล: the clock polarity (CPOL) และ clock phase (CPHA).  CPOL
โอยอ้างอิ้ง idle state (either low or high) ของ clock signal.  To conserve power,
อุปกรณ์ จะ ให้ สัญญาณเส้น นาฬิกา ที่ idle state เมื่อไม่มี  communicating กับตัว slaves,
และ 2 options ใช้ได้เพื่อ idle state เป็นทั้งสอง lowหรือ high.  CPHA อ้างไปที่ขอบ ของ
clock signal ขึ้นบน ข้อมูลใดถูกจับ.  นี้ square wave มีสองมุม
(the rising edge and the falling edge), และขึ้นอยุ่กับ บน CPHA ตั้งค่าข้อมูล
จับทั้งขอบบนและที่ตกขอบ.
There are four แตกต่าง อยู่ร่วมกัน  ของ CPOL และ CPHA, นั้นสามารถ สรุปในตาราง 


Wikipedia แสดง การทำงาน  graphically เป้นตัวแทนของ CPOL และ CPHA การตั้งค่า
และ and ความสัมพันธ์ของพวกเค้ากับข้อมูลที่ส่ง 
arduino communication
Figure 6. CPOL and CPHA settings visualized / ©Wikipedia

ตอนนี้เราจะมาโพกัส บน  SPI การใช้งานบน Arduino โดยใช้  Arduino เป้น master device
(SPI.h).  SPI digital pin เชื่อมต่อ จาก SCK, MOSI, และ  MISO เป็นกำหนดไว้ล่วงหน้า
Arduino boards. เมื่อ Arduino Uno, เชื่อต่อ มีรายละเอียดดังนี้:
  • SCK: GPIO 13 or ICSP 3
  • MOSI: GPIO 11 or ICSP 4
  • MISO: GPIO 12 or ICSP 1
  • SS: GPIO 10

ทั้งหลาย digital pin สามารถใช้ SS pin.  รวมถึงเลือกอุปกรณ์, this digital pin จะขับเคลื่อนต่ำ.  
arduino communication
Figure 7. The MOSI, MISO, และ SCK pins เป็นแตกออกบน ICSP headers
เช่นกันบน GPIO 11, GPIO 12, และ GPIO 13
ต่อไปนี้คือ  สั้น C++ อ้างถึง r Arduino SPIเริ่มต้นและการใช้งาน.

SPI เป็น  full-duplex, :ซึ่ง  วิธี นั้น communication เสมอ เกิดขึ้น สองทิศทาง,งานที่เกิดขึ้นถ้า   application ต้องการเท่านั้น ถ่ายเทข้อมูล เกิดขึ้นในหนึ่งทิศทาง. SPI full-duplex data transfer เป็น ปรกติการดำเนินการ พร้อม a shift register. (Check out the appendix for a tutorial on shift registers!)  นี้หมายถึง นั้น เนื่องจาก แต่ละ การอ่านบิต bits หลังจากมัน ยกขึ้นมากกว่า ที่เดียว.สิ่งที่สำคัญที่สุด บิตเป็น ต่อมาภายหลังปิด และ ส่งกลับไปตลอด SPI เชื่อมต่อกับอุปกรณือื่นๆ !
3. I2C
Inter-integrated circuit (I2C), เด่นกัน อย่างใดอย่างนึง “i-squared-c” หรือ “i-two-c,” เป็น
final communication protocol  สุดท้าย เราจะควบคุมใน tutorialนี้. แม้ว่ามันหลายตัว
ดำเนินการ implementation เป็นวับซ้อนที่สุด ของใน three protocols, I2C ที่อยู่หลากหลาย
ข้อเสียในส่วนของ communication protocols อื่นๆ, ให้ มันเป็น 
ได้เปรียเหนือผุ้อื่นในบ้างแอพพลิเคชั่น. เหล่านี้รวมถึง:
  • ความสามารถเชื่อมต่อตัวมาสเตอร์หลายๆตัวกับตัวslavesหลายตัวได้ 
  • Synchronicity (เหมือนกัน SPI), ซึ่งหมายความถึงการสื่อสารด้วยความเร็วสูง
  • ความเรียบง่าย: ความต้องการทั้งหมดในการทำงานสองสายไฟและ  resistors บางตัว
ที่ระดับฮาร์มแวร์ , I2Cมี two-wire เขื่อต่อ—มีทั้งหมดสองเส้น wires ต้องการ dเพื่อ I2C เชื่อมต่อ
เป็ร   data line (ที่เชื่อมกับ SDA) และเส้นสัญญาณนาฬิกา (ที่เชื่อมต่อ SCL). 
ข้อมูลและ เส้นสัญญาณนาฬิกาเป็นการ เพิ่ม ใน ช่วงสภาวะเดินเบา, และเมื่อ ข้อมูล ต้องการ
ส่งข้อมูลมากกว่าเชื่อมต่อ,เส้นแสดง  pulled ต่ำ ผาสยล้างอย่าง MOSFET วงจร.
เพื่อวัตถุประสงค์ ของ tutorial นี้, we เราจะพูดคุยเกี่ยวกับ MOSFET การทำงาน
ในวงจร  I2C.  ความจริงที่สำคัญ ที่จะไปในระบบนั้นเป็น open-drain, ซึ่งหมายความว่า
เส้นทั้งหลายนั้นสามารถ ขับ  low จากอุปกรณ์ต่างๆ. ดังนั้นเมื่อใช้งาน I2Cในโครงงานต่างๆ,
มันมีหน้าที่หลักเพื่อเพิ่ม  pull-up resistors (มักจะใช้ 4.7kΩ) เพื่อให้แน่ใจว่า ไลย์นั้น
จริงๆแล้ว pulled highในสถานะ idle state.  
arduino communication
Figure 8. I2C hardware connection diagram
I2C เป็นพิเศษเนื่องจากมันแก้ปัญหาของการเชื่อมต่อหลายๆอุปกรณ์ slave ผ่านการกำหนด
addres. เหมือนกับในการเชื่อมต่อแบบ  SPI, I2C ทำให้ ผู้ใช้ของ โมเดล master-slave
เพื่อกำหนด  “ลำดับชั้น”ของการสื่อสาร. อย่างไรก็ตาม,แทนของ การเลือก
slavesตลอดแยกดิจิตรอลไลย์, masters เลือก slaves ตลอด ของพวกเขา byte addresses.
การกำหนดเหล่านี้  อาจมีลักษณะดังนี้: 0x1B.  ซั่งหมายความว่าการทำการเชื่อต่อนั้นนอกจาก
slaves จนถึง master จะไม่ ต้องการ digital linesเพิ่มเติม.  ตราบเท่าที่ แต่ละ slaveมี
เป็นลักษณะเฉพาะ address, application จะยังคงเป็นสามารถ แยก slaves ในสิ่งเหล่านี้
addresses ลำพัง.  เราสามารถคิดว่าaddress เหล่านี้ใช้เป้นชื่อ. เพื่อติดต่อ slave’s ฟังก์ชั่น ,
master แค่ เชื่อต่อ name, และ slave ตอบสนองเพียงอย่างเดียว.  
address และ data portions ของ การสื่อสารแบบ I2C  line อาจจะรุปร่างลักาณะแบบนี้.  
arduino communication
Figure 9. ที่อยู่และส่วนข้อมูลของการสื่อสารอาจมีลักษณะอย่างไร / ©tessel.io
แจ้งให้ทราบ ACK และ NACK bits บนการสื่อสาร ของline.   bits เหล่านี้ แสดงว่า ไม่ว่าจะหรือ
ไม่มี ตำแหน่ง address slave ตอยสนองเพื่อการสื่อสาร—
วิธีการของอย่างเป็นไปตามกำหนดเวลาเพื่อทำการตรวจสอบ ไม่ว่าจะหรือไม่มีการสื่อสาร เป็น
เกิดขึ้นตามที่คาดไว้.  แน่นอนว่าบิตเหล่านี้ไม่เกี่ยวข้อง สำหรับ address หรือ ข้อมูล บิตเพื่อการส่ง
,แต่ใน โครงการขนาดใหญ่ ของการ สื่อสาร, พวกเราใส่ เวลาในการพิจารณาน้อยมาก เพื่อสื่อสาร
เมื่อเทียบ เพื่อมการเริ่มต้นต่างๆและ end bits และ pausesนั้น เกิดขึ้น ใน protocols ชอบใช้กันใน
UART.  
I2C มี slaves ได้อย่างอิสระเพื่อตักสินใจในการเชื่อมต่อความต้องการในคำขออาจจะมีลักษณะ
เดียวกันเช่น.  ความแตกต่าง slaves จำเป็นต้องแตกต่างจาก bytes เพื่อเป้นการเขียนเกินกว่าใน
ความต้องการที่มากกว่า SDA lineเพื่อเขียน และ ขอร้อง iข้อมูลจากพวกเขา. 
accelerometer modules บางตัว ,เพื่อเป็นตัวอย่าง, bytes เป็นการเขียน เพื่อ แสดงว่า ที่
hardware ลงทะเบียน the master ต้องการเพื่อ read ก่อน บ้าง อ่าน คำขอแล้ว.
สำหรับรายละเอียดเหล่านี้, ผุ้ใช้งานต้องอ้างถึง slaves’ datasheets เพื่อ device addresses,
register addresses, และตั้งค่า device .
บนตัว Arduino, I2C การดำเนินงาน เกิดขึ้น ตลอด ใน Wire library (Wire.h).  Arduino can
สามารถ configured เป็นทั้ว I2C master หรือ slave device. บนตัว Arduino Uno,
มีการเชื่อมต่อดังนี้:
  • SDA: Analog Pin 4
  • SCL: Analog Pin 5
arduino communication
Figure 9. I2C (Wire) SDA คือ Analog Pin 4 (A4).  SCLคือAnalog Pin 5 (A5).

นี้แดสงบทสรุป  C++ อ้างอิง จาก Arduino I2C การเชียนชื่อย่อและใช้ 

Multiple masters สามารถเชื่อมต่อควบคุม I2C bus เพียงแค่เชื่อมต่อ SDA และ SCL lines ไปยัง
  bus’s lines. อย่างไรก็ตาม, เพียง masterตัวเดียว สามารถสื่อสารกับ can slaves ในขณะนั้น,
เนื่องจากมีอุปกรณ์หลายอย่างต้องเชื่อมต่อ ซึ่งกันและกันนำไปสู่ bus ดารยืนยัน.  เหมือนกับ,
การสื่อสารไม่สามารถเกิดขึ้น สองทิศทางจาก masterถึง slave และจาก slaveถึง master
ในเวลาเดียวกันเนื่องจาก นั้นต้องการ นำไปสู้ การยืนยัน bus. สิ่งนี้ทำให้  I2C half-duplex,
เหมือนกับ UART!  
สุดท้ายแล้ว, อุปกรณื master ที่หลากหลาย ไม่สามารถสื่อสารซึ่งกันและกันมากกว่านี้ I2C bus. 
ใน applications ที่ไหน หลากหลาย masters เป็น การเชื่อมต่อ ถึง slaves, masters อาจสื่อสาร 
ด้วยกันมากกว่า แยก bus หรือ ผ่านทาง แยก การสื่อสาร protocol.    

ถ้าคุณสร้างมันผ่านช่วยสอนนี้,คุณจะ มีเครื่องมือทั้งหมด ที่คุณต้องใช้งานในUART, SPI, และ
  I2C communication protocols!  ตรวจสอบ บ้างอย่างที่ออกไป โครงงานของArduino
ของเราเพื่อ  examplesต่อไป บน การใช้ protocols! เหล่านี้ 
(บทความทดลองแปล)
ที่มา(สามารถอ่านเพิ่มเติมได้)





ไม่มีความคิดเห็น:

แสดงความคิดเห็น