Мазмұны:
- Жабдықтар
- 1 -қадам: Физикалық байланыстар
- 2 -қадам: Кітапхананы пайдалану әдісі
- 3 -қадам: Негізгі деректерді жіберу
- 4 -қадам: Негізгі деректерді алу
- 5 -қадам: тестілеу
Бейне: Arduino сериялық байланысы: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Көптеген Arduino жобалары бірнеше Arduino арасында деректерді беруге негізделген.
Сіз әуесқой болсаңыз да, RC автокөлігін, RC ұшағын құрастырасыз немесе қашықтан дисплейі бар метеорологиялық станцияны жобалайсыз, сіз бір Arduino -дан екіншісіне сериялық деректерді сенімді түрде беруді білуіңіз керек. Өкінішке орай, әуесқойларға өз жобаларында сериялық деректермен жұмыс жасау қиын, себебі сериялық деректер байт ағыны ретінде жіберіледі.
Байт ағынында қандай да бір контекст болмаса, деректерді түсіндіру мүмкін емес. Деректерді түсіндіре алмай, сіздің Arduinos сенімді түрде байланыса алмайды. Ең бастысы - бұл мәтінмәндік деректерді стандартты сериялық пакеттік дизайн көмегімен байт ағынына қосу.
Пакеттік сериялық дизайн, пакеттерді толтыру және пакеттерді талдау күрделі және қол жеткізу қиын. Бақытымызға орай, Arduino пайдаланушылары үшін бұл күрделі логиканы сахна артында жасай алатын кітапханалар бар, осылайша сіз өз жобаңызды қосымша тақырыпсыз жұмыс істеуге баса назар аудара аласыз. Бұл нұсқаулық сериялық пакеттерді өңдеу үшін SerialTransfer.h кітапханасын қолданады.
Қысқаша айтқанда: бұл нұсқаулық SerialTransfer.h кітапханасының көмегімен кез келген жобада сенімді сериялық деректерді қалай оңай енгізуге болатынын қарастырады. Егер сіз сенімді сериялық байланыс туралы төменгі деңгейдегі теория туралы көбірек білгіңіз келсе, осы оқулықты қараңыз.
Жабдықтар
-
2 Ардуино
UART бірнеше аппараттық құралдары бар Arduino -ны қолданғаныңыз жөн
- Қосылатын сым
-
SerialTransfer.h орнатыңыз
Arduino IDE кітапханалар менеджері арқылы қол жетімді
1 -қадам: Физикалық байланыстар
Сериялық байланысты пайдаланған кезде бірнеше сымдарды ескеру қажет:
- Барлық негіздердің қосылғанына көз жеткізіңіз!
- Arduino TX (Transmit) түйреуішін басқа Arduino RX (Receive) түйреуішіне қосу керек
2 -қадам: Кітапхананы пайдалану әдісі
SerialTransfer.h реттелетін пакеттік протоколды қолдана отырып, үлкен көлемдегі деректерді оңай жіберуге мүмкіндік береді. Төменде кітапхананың барлық мүмкіндіктерінің сипаттамасы берілген, олардың көпшілігін біз осы оқулықта кейінірек қолданамыз:
SerialTransfer.txBuff
Бұл байт массиві, онда барлық жүктеме деректері серия бойынша жіберілетінге дейін буферленген. Сіз бұл буферді басқа Arduino -ға жіберу үшін деректер байтымен толтыра аласыз.
SerialTransfer.rxBuff
Бұл басқа Arduino -дан алынған барлық пайдалы жүктеме деректері буферленген байт массиві.
SerialTransfer.bytesRead
Басқа Arduino қабылдаған және SerialTransfer.rxBuff -те сақталған пайдалы жүктеме байттарының саны
SerialTransfer.begin (Stream & _port)
Кітапхана класының данасын инициализациялайды. Сіз кез келген «Сериялық» сынып объектісін параметр ретінде бере аласыз - тіпті «SoftwareSerial» сынып объектілері!
SerialTransfer.sendData (const uint16_t & messageLen)
Бұл сіздің Arduino -ға жіберуші буферіндегі байттардың «messageLen» санын басқа Arduino -ға жіберуге мәжбүр етеді. Мысалы, егер «messageLen» 4 болса, SerialTransfer.txBuff -тің алғашқы 4 байты сериялы түрде басқа Arduino -ға жіберіледі.
SerialTransfer.available ()
Бұл сіздің Arduino -ны басқа Arduino -дан алынған кез келген сериялық деректерді талдауға мәжбүр етеді. Егер бұл функция логикалық «ақиқатты» қайтарса, бұл жаңа пакеттің сәтті талданғанын және жаңадан алынған пакеттің деректері SerialTransfer.rxBuff -те сақталғанын білдіреді.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
«Индекс» аргументінде көрсетілгендей, индекстен басталатын беріліс буферіне еркін объектінің байт саны «бай», «бай», «int», «қалқымалы», «қос», құрылым және т.
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Қабылдау буферінен (rxBuff) байттардың «len» санын индекстен бастап «индекс» аргументімен анықталатын кездейсоқ объектіге (байт, int, float, double, struct және т.б.…) оқиды.
ЕСКЕРТУ:
Деректерді берудің ең оңай жолы - алдымен жібергіңіз келетін барлық деректерді қамтитын құрылымды анықтау. Қабылдау аясындағы Arduino ұқсас құрылымға ие болуы керек.
3 -қадам: Негізгі деректерді жіберу
Келесі эскиз analogRead (0) ADC мәнін де, analogRead (0) мәнін де Arduino #2 кернеуге түрлендіреді.
Келесі эскизді Arduino № 1 -ге жүктеңіз:
#«SerialTransfer.h» қосыңыз
SerialTransfer myTransfer; STRUCT {uint16_t adcVal құрылымы; өзгермелі кернеу; } деректер; void setup () {Serial.begin (115200); Сериялық1.bas (115200); myTransfer.begin (Serial1); } void loop () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (деректер, өлшемдер (деректер)); myTransfer.sendData (sizeof (деректер)); кешіктіру (100); }
4 -қадам: Негізгі деректерді алу
Келесі код ADC пен кернеудің мәндерін басып шығарады Arduino №1.
Келесі кодты Arduino № 2 -ге жүктеңіз:
#«SerialTransfer.h» қосыңыз
SerialTransfer myTransfer; STRUCT {uint16_t adcVal құрылымы; өзгермелі кернеу; } деректер; void setup () {Serial.begin (115200); Сериялық1.bas (115200); myTransfer.begin (Serial1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (data, sizeof (data)); Serial.print (data.adcVal); Serial.print (''); Serial.println (деректер кернеуі); Serial.println (); } else if (myTransfer.status <0) {Serial.print («ERROR:»); if (myTransfer.status == -1) Serial.println (F («CRC_ERROR»)); else if (myTransfer.status == -2) Serial.println (F («PAYLOAD_ERROR»)); else if (myTransfer.status == -3) Serial.println (F («STOP_BYTE_ERROR»)); }}
5 -қадам: тестілеу
Екі эскиз де тиісті Arduino -ға жүктелгеннен кейін, сіз Arduino №1 -ден деректерді алғаныңызды тексеру үшін Arduino №2 сериялық мониторды пайдалана аласыз!
Ұсынылған:
MPU 6050 Gyro, Arduino көмегімен акселерометр байланысы (Atmega328p): 5 қадам
MPU 6050 Gyro, Arduino-мен акселерометр байланысы (Atmega328p): MPU6050 IMU-де үш осьті акселерометр мен 3 осьті гироскоп бар, олар бір микросхемада біріктірілген. X, Y және Z осі. Гироскоптың нәтижелері
Arduino және мобильді Bluetooth байланысы (хабаршы): 8 қадам
Arduino және мобильді Bluetooth байланысы (хабаршы): Байланыс біздің күнделікті өмірімізде маңызды фактор болып табылады. Бірақ бұл құлдырау кезінде біздің отбасымызбен немесе біздің үйдегі адамдармен қарым -қатынас кезінде ұялы телефондар қажет. Бірақ ұялы телефондарды қысқа мерзімде қолдану
PIC MCU және Python сериялық байланысы: 5 қадам
PIC MCU және Python сериялық байланысы: Сәлеметсіздер ме, балалар! Бұл жобада мен PIC MCU мен Python сериялық байланысы бойынша эксперименттерімді түсіндіруге тырысамын. Интернетте PIC MCU -мен виртуалды терминал арқылы байланысу туралы көптеген оқулықтар мен бейнелер бар, бұл өте пайдалы. Хауев
Arduino және Python сериялық байланысы - пернетақта дисплейі: 4 қадам
Arduino және Python сериялық байланысы - пернетақта дисплейі: Бұл жоба mac пайдаланушыларына арналған, бірақ оны Linux пен Windows үшін де қолдануға болады, тек басқаша болуы керек - орнату
{USB арқылы} РЖ сериялық деректер байланысы: 3 қадам
RF сериялық деректер сілтемесі {USB арқылы}: TECGRAF DOC USB арқылы арзан RF модулінің көмегімен деректерді қалай жіберуге болады. Схема USB портынан энергия алады (100 мА беруі мүмкін, ал кейбір бағдарламалау кезінде 500 мА дейін жетуі мүмкін) Материалдар тізімі: 1 - Бір жұп РЖ модулі (Laipac RLP/TL сияқты