Мазмұны:
- 1 -қадам: сенсорлық модульдер
- 2 -қадам: Жабдық
- 3 -қадам: Бағдарламалық қамтамасыз ету
- 4 -қадам: мәліметтерді тіркеу
- 5 -қадам: Қабылдағыш үлгісі
Бейне: Arduino RF датчиктерінің декодері: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Менің бұрынғы үйімде есік сенсорлары, қозғалыс сенсоры және басқару панелі бар алдын ала орнатылған қауіпсіздік жүйесі бар. Барлығы шкафтағы үлкен электроника қорабына бекітілген және дабыл болған кезде стационарлық телефонды автоматты түрде сөндіру үшін нұсқаулар бар. Мен онымен ойнауға тырысқанда, есік датчиктерінің біреуі толық орнатылмағанын, ал екіншісі дұрыс емес туралауға байланысты үзілісті екенін білдім. Күзет компаниясының визит карточкасында айтылған кәсіби қондырғы үшін. Сол кездегі менің шешімім - бірнеше интернет -қауіпсіздік камерасы мен арзан сымсыз қауіпсіздік дабылы.
Бүгінге дейін және сымсыз дабыл менің жертөлемдегі қорапта орналасқан. Арзан радиожабылдағыш қабылдағышты сатып алғаннан кейін, менде бар дабыл датчиктері мен қашықтан басқару пульті арқылы жіберілетін хабарламаларды шешуге болатынын білуге шешім қабылдадым. Мен олардың барлығы арзан дабыл қорабымен жұмыс істегендіктен, олардың бәрі бірдей хабарлама форматын басқа идентификатормен қолдануы керек деп ойладым. Мен көп ұзамай олар хабарламалардың жалпы құрылымында ғана ұқсас екенін білдім. Сондықтан жоба тез арада өте маңыздыдан өте қызықтыға айналды.
1 -қадам: сенсорлық модульдер
Жоғарыдағы суреттерде көріп тұрғаныңыздай, таратқыштарда есіктің ашық сенсорлары, қозғалыс детекторлары, қаруландыру пульті және дабыл қорабын бағдарламалау үшін қолданылатын сымсыз пернетақта бар. Белгілі болғандай, бұл екі құрылғыда да синхрондау ұзақтығы немесе бит ұзақтығы бірдей емес. Хабардың ұзындығынан басқа жалғыз ортақтық - бұл биттердің негізгі форматы. Әр бит белгілі бір уақыт кезеңін алады, нөл мен бір арасындағы айырмашылық жоғары/төмен бөліктердің жұмыс циклі болып табылады.
Жоғарыда көрсетілген әдемі толқын формасы мен бірінші рет алған емес. 433 МГц жиілік диапазонында трафик көп болғандықтан, мен бір триггерді қолдану ауқымын орнатпас бұрын сенсорды іске қосуды көздеуім керек болды. Бақытымызға орай, сенсорлар іске қосылған кезде деректер хабарламасының бірнеше көшірмесін шығарады, ал қашықтан басқару құралдары мен пернетақта перне басылғанша хабарларды шығаруды жалғастырады. Ауқымды қолдану арқылы мен әр элемент үшін синхрондау ұзындығын және деректер битінің ұзақтығын анықтай алдым. Жоғарыда айтылғандай, синхрондау уақыттары әр түрлі, ал бит уақыттары әр түрлі, бірақ хабарлама форматтарының барлығында төмен деңгейлі синхрондау бар, содан кейін 24 бит биті және бір нүктелік бит бар. Бұл маған әр құрылғының әр түрлі бөлшектерін қатаң кодтаусыз бағдарламалық қамтамасыз етуде жалпы декодерді құру үшін жеткілікті болды.
2 -қадам: Жабдық
Мен бастапқыда PIC микроконтроллері мен құрастыру тілінің көмегімен сенсорлық декодер құрдым. Мен жақында Arduino нұсқаларымен ойнадым, сондықтан оны қайталауға болатынын көремін деп ойладым. Қарапайым схема жоғарыда көрсетілген, сонымен қатар менің прототипімнің суреті бар. Мен тек Arduino Nano -дан РФ қабылдағыш тақтасына өту үшін үш қарапайым қосқыш сымды қолдандым. Қуат пен бір ғана деректер желісі қажет.
Егер сіз менің нұсқаулығымды «Уақыт пен ауа-райының дисплейінде 3-і 1-де» оқысаңыз, мен жалпы RXB6, 433-МГц қабылдағышты қолданатынымды көресіз. Сіз шынымен де арзан қабылдағыштарды осы жобаға қажетті қысқа мерзімде жұмыс істей аласыз, бірақ мен супер-гетеродинді қабылдағышты қолдануды ұсынамын.
3 -қадам: Бағдарламалық қамтамасыз ету
Бағдарламалық қамтамасыз ету алынған биттерді ASCII -дің көрінетін таңбаларына түрлендіреді. Ол синхрондау ұзындығының мәнін және 1 және 0 биттердің ұзындығын шығарады. Мен синхрондау ұзындығы мен бит форматтарын білетіндіктен, мен оларға арнайы бағдарламалық қамтамасыз етуді жаза алар едім. Оның орнына, мен синхрондау ұзындығын сұрыптау және деректердің биттерін автоматты түрде анықтау үшін жаза алатынымды білуді шештім. Бұл басқа форматтарды бір уақытта анықтауға тырысқым келсе, өзгертуді жеңілдетуі керек. Бағдарламалық жасақтама хабарламаның бірінші биті 1 немесе 0 екенін білмейтінін ескеру маңызды. Ол оны 1 деп есептейді, бірақ егер ол нөлге тең болуы керек екенін анықтаса, ол кері айналады. бит сериялы портқа жібермес бұрын аяқталған хабарды көрсетеді.
Синхрондау импульсінің уақыты мен деректер биттері үзіліс өңдегішін іске қосу үшін INT0 сыртқы үзіліс енгізуінің көмегімен анықталады. INT0 көтерілуге, құлауға немесе екі жиекке немесе тұрақты төмен деңгейге әсер етуі мүмкін. Бағдарламалық қамтамасыз ету екі шетінде де үзіледі және импульстің төмен болу уақытын өлшейді. Бұл жағдайды жеңілдетеді, себебі хабарды бастау/синхрондау-бұл төменгі деңгейдегі импульс және биттерді олардың төмен деңгейлі уақытына байланысты анықтауға болады.
Үзіліс өңдегіші алдымен түсірілген санның бастау/синхрондау импульсі болу үшін жеткілікті ұзақтығын анықтайды. Мендегі әр түрлі құрылғылар 4, 9, 10 және 14 миллисекундтық синхрондау импульстарын қолданады. Минималды/максималды рұқсат етілген синхрондау мәндерінің анықтамалары бағдарламалық қамтамасыз етудің алдында орналасқан және қазіргі уақытта 3 және 16 миллисекундқа орнатылған. Бит уақыты сенсорлар арасында да өзгереді, сондықтан биттерді декодтау алгоритмі мұны ескеруі керек. Бірінші разрядтың бит уақыты бірінші битке қарағанда айтарлықтай айырмашылығы бар келесі бит уақыты сияқты сақталады. Кейінгі разрядтарды тікелей салыстыру мүмкін емес, сондықтан «жалған фактор» анықтамасы («вариация») қолданылады. Битті декодтау бірінші деректер биті әрқашан логика ретінде жазылады деп есептеуден басталады. Бұл мән сақталады, содан кейін келесі биттерді тексеру үшін қолданылады. Егер келесі деректер битінің саны сақталған мәннің дисперсия терезесінде болса, онда ол логика 1 ретінде де жазылады. Егер ол сақталған мәннің дисперсия терезесінен тыс болса, онда ол 0 логикасы ретінде жазылады. бит уақыты бірінші разрядқа қарағанда қысқарады, содан кейін бағдарламалық жасақтамаға байттар көрсетілмес бұрын оларды аудару керектігін айтатын жалауша орнатылады. Бұл алгоритм сәтсіз болатын жалғыз жағдай - бұл хабарламадағы биттердің барлығы 0 -ге тең болуы. Біз бұл шектеулерді қабылдай аламыз, өйткені мұндай хабарлама мағынасыз.
Мені қызықтыратын сенсорлардың хабарлама ұзындығы 24 бит, бірақ бағдарламалық жасақтама бұл ұзындықпен шектелмейді. Жеті байтқа дейін буфер бар (тағы басқаларын қосуға болады) және хабардың минималды және максималды ұзындығын байтпен анықтайды. Бағдарламалық қамтамасыз ету биттерді жинауға, оларды байтқа түрлендіруге, уақытша сақтауға, содан кейін оларды ASCII форматында сериялық порт арқылы шығаруға арналған. Хабардың шығуын іске қосатын оқиға - бұл жаңа іске қосу/синхрондау импульсын алу.
4 -қадам: мәліметтерді тіркеу
Бағдарламалық қамтамасыз ету Arduino сериялық (TX) шығысы арқылы ASCII символы ретінде түрлендірілген деректерді шығаруға арналған. Мен PIC нұсқасын жасаған кезде мәліметтерді көрсету үшін дербес компьютердегі терминалдық бағдарламаға кіруім керек болды. Arduino IDE -дің бір артықшылығы - оның кірістірілген сериялық монитор функциясы. Мен сериялық порт жылдамдығын 115.2k -ге қойдым, содан кейін сериялық монитор терезесін дәл сол жылдамдыққа қойдым. Мұндағы скриншот менде бар сенсорлардың шығысы бар әдеттегі дисплейді көрсетеді. Көріп отырғаныңыздай, деректер кейде мінсіз емес, бірақ әр сенсордың нақты мәні қандай болатынын оңай анықтауға болады.
5 -қадам: Қабылдағыш үлгісі
Мен сіздің бағдарламаңызға кодтардың белгілі бір жиынтығын алу үшін жиналған ақпаратты қалай пайдалануға болатынын көрсететін бағдарламалық қамтамасыз етудің листингін енгіздім. Бұл мысал менің Etekcity қашықтағы розеткаларымның біреуіне еліктеуге арналған. Бір пәрмен наноға (D13) орнатылған жарық диодты қосады, ал екінші пәрмен жарық диодты өшіреді. Егер сізде Arduino -да светодиод жоқ болса, диаграммада көрсетілгендей резистор мен жарықдиодты қосыңыз. Нақты қолданбада бұл функция электр розеткасының қуатын қосады/өшіреді (реле немесе триак көмегімен). Синхрондау уақыты, бит уақыттары және күтілетін деректер байттары өзгертулерді жеңілдету үшін алдын ала анықталған. Қалған деректер желілерінің кез келгенін белгілі бір қосымшаның заттарын қосу/өшіру үшін пайдалануға болады. Қолданылатын пәрмен кодын анықтаңыз және сіздің қажеттіліктеріңізге сәйкес «циклдегі» жарықдиодты қосу/өшіру логикасын ауыстырыңыз.
Ұсынылған:
Ұзақ қашықтықтағы сымсыз температура мен діріл датчиктерінің жұмысын бастау: 7 қадам
Ұзақ диапазондағы сымсыз температура мен діріл датчиктерінің жұмысын бастау: Кейде діріл көптеген қосымшаларда елеулі мәселелердің себебі болып табылады. Машина біліктері мен подшипниктерден қатты дискінің өнімділігіне дейін діріл машинаның зақымдалуына, ерте ауыстырылуына, төмен өнімділігіне әкеледі және дәлдікке үлкен соққы береді. Мониторинг
LabDroid: Морзе кодының кодтаушысы/декодері: 4 қадам
LabDroid: Морзе кодының кодтаушысы/декодері: Ескерту: Бұл нұсқаулық LabDroid -дің жаңа нұсқасында 1: 1 орындалмайды. Мен оны жақында жаңартамын, бұл жоба сізге LabDroid көмегімен не істеуге болатынын көрсетеді. Hello World әдетте мәтінге, жарыққа немесе дыбысқа негізделгендіктен, мен LabDr үшін ойладым
IR қашықтан басқару пультінің декодері Arduino көмегімен: 7 қадам
IR қашықтан басқару пультінің декодері Arduino көмегімен: Hello Makers, бұл кез келген IR қашықтан басқару пультін декодтаудың толық нұсқауы. Тек төмендегі қадамдарды орындаңыз
Сымсыз діріл датчиктерінің көмегімен азаматтық инфрақұрылымдардың құрылымдық денсаулық мониторингі: 8 қадам
Сымсыз діріл датчиктерінің көмегімен азаматтық инфрақұрылымдардың құрылымдық денсаулығына мониторинг: Ескі ғимарат пен азаматтық инфрақұрылымның нашарлауы өлім мен қауіпті жағдайға әкелуі мүмкін. Бұл құрылымдардың тұрақты мониторингі міндетті болып табылады. Құрылымдық денсаулық мониторингі - бұл бағалаудың өте маңызды әдісі
Arduino магниттік жолақ декодері: 4 қадам (суреттермен)
Arduino магниттік жолақтардың декодері: Бұл нұсқаулықта несие карталары, студенттік куәліктер және т.б. сияқты магниттік жолақтарда сақталған деректерді сканерлеу және көрсету үшін еркін қол жетімді кодты, arduino мен стандартты магниттік жолақты оқу құралын пайдалану әдісі көрсетілген. осыдан кейін жариялаңыз