Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Mga Koneksyon sa Pisikal
- Hakbang 2: Paano Gumamit ng Library
- Hakbang 3: Ipadala ang Pangunahing Data
- Hakbang 4: Tumanggap ng Pangunahing Data
- Hakbang 5: Pagsubok
Video: Serial Communication ng Arduino: 5 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:11
Maraming mga proyekto ng Arduino ang umaasa sa paglilipat ng data sa pagitan ng maraming mga Arduino.
Kung ikaw man ay isang libangan na nagtatayo ng isang kotseng RC, isang sasakyang panghimpapawid RC, o pagdidisenyo ng isang istasyon ng panahon na may isang malayong pagpapakita, kakailanganin mong malaman kung paano mapagkakatiwalaan na ilipat ang serial data mula sa isang Arduino patungo sa isa pa. Sa kasamaang palad, mahirap para sa mga hobbyist na makakuha ng serial data na komunikasyon na gumagana sa kanilang sariling mga proyekto. Ito ay dahil ang serial data ay ipinadala bilang isang stream ng bytes.
Nang walang anumang uri ng konteksto sa loob ng stream ng mga byte, halos imposibleng bigyang kahulugan ang data. Nang hindi magagawang bigyang kahulugan ang data, hindi maaasahang makipag-usap ang iyong Arduinos. Ang susi ay upang idagdag ang data ng konteksto na ito sa byte stream sa pamamagitan ng paggamit ng isang karaniwang disenyo ng serial packet.
Ang disenyo ng serial packet, pagpupuno ng packet, at pag-parse ng packet ay kumplikado at mahirap makamit. Sa kabutihang palad para sa mga gumagamit ng Arduino, may magagamit na mga silid-aklatan na maaaring gawin ang lahat ng kumplikadong lohika sa likod ng mga eksena upang maaari kang tumuon sa paggana ng iyong proyekto nang walang labis na pahiwatig. Ang Instructable na ito ay gagamit ng library ng SerialTransfer.h para sa pagproseso ng serial packet.
Sa maikli: ang Instructable na ito ay pupunta kung paano mo maipapatupad ang matatag na serial data nang madali sa anumang proyekto gamit ang library ng SerialTransfer.h. Kung nais mong matuto nang higit pa tungkol sa mababang antas ng teorya sa matatag na serial komunikasyon, tingnan ang tutorial na ito.
Mga gamit
-
2 Arduinos
Masidhing hinihikayat na gumamit ka ng Arduinos na mayroong maraming mga hardware UART (ibig sabihin, Arduino Mega)
- Hookup wire
-
I-install ang SerialTransfer.h
Magagamit sa pamamagitan ng Tagapamahala ng Mga Aklatan ng Arduino IDE
Hakbang 1: Mga Koneksyon sa Pisikal
Kapag gumagamit ng serial komunikasi, ilang mga puntos ng mga kable ang kailangang tandaan:
- Siguraduhin na ang lahat ng mga bakuran ay konektado!
- Ang Arduino TX (Transmit) na pin ay kailangang maiugnay sa ibang RX (Tumanggap) na pin ng Arduino
Hakbang 2: Paano Gumamit ng Library
Pinapayagan ka ng SerialTransfer.h na madaling magpadala ng maraming data gamit ang isang pasadyang packet protocol. Nasa ibaba ang isang paglalarawan ng lahat ng mga tampok sa library - marami sa mga ito ang gagamitin namin sa paglaon sa tutorial na ito:
SerialTransfer.txBuff
Ito ay isang byte array kung saan ang lahat ng data ng kargamento na ipapadala sa serial ay buffered bago ang paghahatid. Maaari mong mapunan ang buffer na ito ng mga byte ng data upang ipadala sa isa pang Arduino.
SerialTransfer.rxBuff
Ito ay isang byte array kung saan ang lahat ng data ng kargamento na natanggap mula sa iba pang Arduino ay buffered.
SerialTransfer.bytesRead
Ang bilang ng mga byload ng payload na natanggap ng iba pang Arduino at nakaimbak sa SerialTransfer.rxBuff
SerialTransfer.begin (Stream at _port)
Pinasimulan ang isang halimbawa ng klase ng aklatan. Maaari mong ipasa ang anumang "Serial" na object ng klase bilang isang parameter - kahit na mga object ng klase ng "SoftwareSerial"!
SerialTransfer.sendData (const uint16_t & messageLen)
Ginagawa nitong magpadala ang iyong Arduino ng "messageLen" na bilang ng mga byte sa pagpapadala ng buffer sa iba pang Arduino. Halimbawa, kung ang "messageLen" ay 4, ang unang 4 bytes ng SerialTransfer.txBuff ay ipapadala sa pamamagitan ng serial sa iba pang Arduino.
SerialTransfer.available ()
Ginagawa nitong i-parse ang iyong Arduino anumang natanggap na serial data mula sa iba pang Arduino. Kung ibabalik ng pagpapaandar na ito ang "totoo" ng boolean, nangangahulugan ito na ang isang bagong packet ay matagumpay na na-parse at ang data ng bagong natanggap na packet ay nakaimbak / magagamit sa SerialTransfer.rxBuff.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Ang mga bagay na "len" na bilang ng mga byte ng isang di-makatwirang bagay (byte, int, float, doble, struct, atbp …) sa pagpapadala ng buffer na nagsisimula sa index tulad ng tinukoy ng argumentong "index".
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Binabasa ang "len" na bilang ng mga byte mula sa makatanggap na buffer (rxBuff) na nagsisimula sa index tulad ng tinukoy ng argument na "index" sa isang di-makatwirang bagay (byte, int, float, doble, struct, atbp …).
TANDAAN:
Ang pinakamadaling paraan upang magpadala ng data ay upang tukuyin muna ang isang istruktura na naglalaman ng lahat ng data na nais mong ipadala. Ang Arduino sa pagtanggap ng pagtatapos ay dapat magkaroon ng isang magkatulad na istrukturang tinukoy.
Hakbang 3: Ipadala ang Pangunahing Data
Ang sumusunod na sketch ay nagpapadala ng parehong halaga ng ADC ng analogRead (0) at halaga ng analogRead (0) na na-convert sa boltahe sa Arduino # 2.
I-upload ang sumusunod na sketch sa Arduino # 1:
# isama ang "SerialTransfer.h"
SerialTransfer myTransfer; istraktura STRUCT {uint16_t adcVal; float boltahe; } data; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } void loop () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (data, laki ng (data)); myTransfer.sendData (sizeof (data)); pagkaantala (100); }
Hakbang 4: Tumanggap ng Pangunahing Data
Ang sumusunod na code ay naglilimbag ng mga halagang ADC at boltahe na natanggap mula sa Arduino # 1.
I-upload ang sumusunod na code sa Arduino # 2:
# isama ang "SerialTransfer.h"
SerialTransfer myTransfer; istraktura STRUCT {uint16_t adcVal; float boltahe; } data; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (data, sizeof (data)); Serial.print (data.adcVal); Serial.print ("); Serial.println (data.voltage); Serial.println (); } iba pa kung (myTransfer.status <0) {Serial.print ("ERROR:"); kung (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); kung hindi man (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); kung hindi man (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
Hakbang 5: Pagsubok
Kapag na-upload na ang parehong mga sketch sa kani-kanilang mga Arduino, maaari mong gamitin ang Serial Monitor sa Arduino # 2 upang mapatunayan na nakakatanggap ka ng data mula sa Arduino # 1!
Inirerekumendang:
Long Range, 1.8km, Arduino hanggang Arduino Wireless Communication Sa HC-12 .: 6 Mga Hakbang (na may Mga Larawan)
Long Range, 1.8km, Arduino to Arduino Wireless Communication Sa HC-12 .: Sa itinuturo na ito malalaman mo kung paano makipag-usap sa pagitan ng Arduinos sa isang mahabang distansya hanggang sa 1.8km sa bukas na hangin. Ang HC-12 ay isang wireless serial port module ng komunikasyon na napaka kapaki-pakinabang, napakalakas at madaling gamitin. Una kang
PIC MCU at Python Serial Communication: 5 Mga Hakbang
PIC MCU at Python Serial Communication: Kumusta, guys! Sa proyektong ito susubukan kong ipaliwanag ang aking mga eksperimento sa PIC MCU at Python serial na komunikasyon. Sa paglipas ng internet, maraming mga tutorial at video kung paano makipag-usap sa PIC MCU sa virtual terminal na napaka kapaki-pakinabang. Howev
Serial Communication ng Arduino at Python - Display ng Keypad: 4 na Hakbang
Serial Communication ng Arduino at Python - Display ng Keypad: Ang Proyekto na ito ay ginawa para sa mga gumagamit ng mac ngunit maaari rin itong ipatupad para sa Linux at Windows, ang tanging hakbang na dapat na magkakaiba ay ang pag-install
Wireless Serial Communication Gamit ang Bluefruit: 4 Hakbang
Wireless Serial Communication Paggamit ng Bluefruit: Narito ang isang simpleng gabay sa hakbang upang mapalitan ang iyong mga wire gamit ang isang koneksyon ng mababang enerhiya na Bluetooth: Tumagal ako ng ilang panahon upang malaman ito dahil halos walang anumang dokumentasyon sa paggawa nito sa modernong Bluetooth na mababang enerhiya tech tulad ng bilang ang Bluefrui
Web-based SmartMirror Paggamit ng Serial Communication: 6 Mga Hakbang
Web-based SmartMirror Paggamit ng Serial Communication: Ang itinuturo na ito ay naihatid sa lahat ng code na handa nang gamitin. Ang pag-unlad ay napaka-kumplikado ngunit kapag na-set up ito ay talagang madali upang ipasadya. Tingnan at masiyahan;)