Мазмуну:
Video: FPGAдан каалаган сенсор жасаңыз: 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Көпчүлүк жаратуучулар өмүрүндө жок дегенде бир жолу термометр курууга аракет кылышкан, балким, үйүндө болгон акылдуу эмес, же кийинки УЯны кура алабыз деп ойлошот. Ошентсе да, кайсы бир убакта аларда заманбап программалык камсыздоосу бар температура сенсоруна (жана, балким, башка сенсорлор: басым, жарык) туташтырылган микроконтроллер болгон. Азырынча баары идеалдуу, программалык камсыздоо иштеп жатат жана сенсор сезип жатат. Кел, аны сынап көрөлү!
Мммм … балким сенсорду чач кургаткычтын жардамы менен ысытып, муздун жардамы менен муздатуу керек, ал бир аз убакытка иштейт. Бирок бул профессионалдуу эмес окшойт, сенсор сенсорлорду өтө тез алмаштырат, эгер сиз аны ысытсаңыз, ал бир нече градустан ашык ысытпайт. Долбоор - бул бюст! Бирок алгоритм жаңы, көптөгөн факторлорду эске алат, бул акылсыз кичинекей нерсеге тыгылып калганы кандай уят.
Менин чечимим мындай: FPGAны компьютерден алынган баалуулуктары бар сенсор катары жасаңыз (же эс тутумда сакталган, же FPGA ичинде атайын түзүлгөн). Ошентип, сиздин кымбат баалуу MCU үчүн FPGA сенсорго окшош, бирок сенсорго окшобойт: кайсы сенсор жагат. Балким, сиз күтүлгөндөн көбүрөөк чечим же тезирээк жооп берүү убактысы керек деп чечесиз, сенсорду алмаштырышыңыз керек. Интернет аркылуу заказ кылыңыз, ал бир нече күндүн ичинде, бир нече айдан кийин келет, ким билет. ПКБңызга жооп бериңиз же жаңы сенсор менен модулга заказ кылыңыз. Же… бир нече чыкылдатуу жана FPGA сиздин жаңы сенсор катары конфигурацияланган жана ал так ички конфигурацияны туурай алат.
Муну жазуу учурунда, FPGA BRAMда (FPGAда) сакталган температура маалыматы менен LM75 катары иштей алат.
1 -кадам: MCU
Менин MCU тандоо - бул LPCXpresso боюнча LPC4337. Анын үстүндө менде дисплейи жана чыныгы LM75 сенсору бар калкан (LPC General Purpose Shield) бар. LPC4337 - бул 200 МГцте иштеген ARM Cortex M4 жана кичирээк Cortex M0 (бул жерде колдонулбайт). Чыныгы сенсор I2C1 перифериялык тутумуна туташкан жана биздин виртуалдык I2C0 менен туташат. Булак менин GitHubымда жеткиликтүү.
Аны кантип куруу керек? LPCXpresso IDEди LPCOpen китепканасы менен бирге жүктөп алыңыз. Бул китепкананы IDEге импорттоп, GitHubдан долбоорду ачыңыз. Баары конфигурацияланган болушу керек жана сиз төмөнкү сол бурчтагы "Мүчүлүштүктөрдү оңдоо" баскычын басыңыз.
Бүт проект NXP мисалдарынын бирине негизделген (менин долбоорум чыныгы сенсорго окшош экенин жана MCU тарабында атайын коддун кереги жок экенин көрсөтүү үчүн). Негизги файлда (iox_sensor.cpp деп аталат) бул код жатат:
#SENSORS_ON_SHIELD дегенди аныктаңыз
#аныкталган болсо (SENSORS_ON_SHIELD) #SHIELD_I2C I2C1ди аныктоо #elif аныкталган (SENSORS_ON_FPGA) #аныктоо SHIELD_I2C I2C0 #endif
SENSOR_ON_SHIELD жана SENSOR_OR_FPGAны өзгөртүү менен колдонуучу компиляция убагында кайсы сенсорго, реалдууго же виртуалдыкка сүйлөй алат, анткени алар башка I2C казыктарында.
2 -кадам: FPGA
Менин тандоо FPGA тактайым Xilinx Arty 7ге ээ Digilent тарабынан жасалган Artix 7 болуп саналат. PMod туташтыргычтарынын экөө колдонулат, бири мүчүлүштүктөрдү оңдоо үчүн, бири реалдуу жүктөө үчүн, MCU тактасы менен байланыш.
Дагы, FPGA үчүн баштапкы код GitHub (fpgaSide папкасында) жеткиликтүү.
Аны кантип куруу керек? Xilinx Vivado IDEди жүктөп алыңыз, сатып алыңыз же ачыңыз. GitHubдан проект файлдарын импорттоо. Файлдардын бири (content.coe) - бул жасалма сенсорго жөнөтүлө турган чийки форматтагы температура маалыматы. Адам окуй турган температура маалыматтарын чийки LM75 маалыматына айландырууга жардам берген ошол эле аталыштагы Excel файлы да бар. Мен муну Javaда жазылган программалык камсыздоонун автоматташтырылган процессине өзгөртүүнү пландап жатам, бирок ага чейин бул чечим иштейт. Синтез жана ишке ашыруу бир аз убакытты алышы керек, муну эске алыңыз.
3 -кадам: Бул кантип иштейт?
Мен айткандай, MCU үчүн FPGA сенсорго окшойт, тагыраагы I2C сенсору. I2C перифериялык түзүлүшүнүн чыгышы FPGAнын киришине туташкан. FPGAнын ичинде 3 негизги компонент бар:- I2C Controller- I2C Device- Data I2C Controller, FPGA пиндеринен I2C маалыматтарын алат жана аларды FPGAнын калган бөлүгүнө жөнөтөт жана тескери тартипте ушундай кылат. Бул I2C протоколунун ички мамлекеттик машинасын кармайт (айтмакчы, бул үчүн документтер). Бул компонент I2C түзмөгүнө эмне жөнөтөт? Учурда алынган байт, учурдагы байланышта бул байттын орду жана MCU FPGAга жазып жатабы же окуп жатабы. I2C түзмөгү жөнөтүлгөн байтты алат жана сенсордун жасалма ички түзүлүшүн жаңыртат. Бул жөн эле реестр көрсөткүчүн жаңыртышы же маалымат булагынан жаңы маалыматтарды сурашы мүмкүн. Маалымат компоненти жаңы маалымат чекиттерин агылтат. Учурда бул жөн эле ROM эстутуму, анын дареги секундасына эки жолу көбөйтүлөт (болжол менен).
Менин акыркы максатым эмне? Ал экинчи сүрөттө көрсөтүлгөн. Башкача айтканда: I2C түзмөктөрүнүн (сенсорлордун жана башка) бир эле учурда FPGA ичинде окшоштурулушуна мүмкүнчүлүк түзүңүз. Сенсордун артындагы маалыматтар FPGAда кэштелет жана компьютерден USB же Ethernet аркылуу агылат. Өнүккөн сенсорлорду жана башка I2C түзмөктөрүн колдоо (эс тутум, LED драйверлери ж. Б.).
4 -кадам: Бардыгын бириктирүү
Азыр бардыгын биригүүгө убакыт келди. Теориялык жактан алганда, бул жөнөкөй: mcu тактасында PMod туташтыргычы бар (I2C0 & SSP0 (SPI сыяктуу иштей алат)). Artix тактасында 4 PMod туташтыргычы бар, аны сиз каалагандай колдонсо болот. Мен MCU менен сүйлөшүү үчүн D туташтыргычын жана логикалык анализаторума туташуу үчүн В коннекторун тандап алам.
Эскертүү
Эки тактайды минтип бириктире албайсыз. Неге? PMod Мастер/Хост тактасынын (бийликти берет) Кул/Сенсордук тактасына (бийликти алган) байланышын жеңилдетүү үчүн курулган. Бирок бул долбоордо эки такта тең күч берет, эгер сиз 3.3V чыгарууну бир тактанын 3.3V башка тактасына 3.3V туташтырсаңыз, жаман нерселер болушу мүмкүн. Бирок алар мүмкүн эмес жана сиз жөн гана FPGAнын рельсинин параметрлерин өзгөртө аласыз (алар абдан кылдаттык менен иштелип чыккан). Ошентип, бул тобокелчиликке барбаңыз жана жогорудагы сүрөттөрдө көрүнүп тургандай, туташтыргычты бир пинге солго жылдырбаңыз (жана FPGA тактасын оодарыңыз). Мына PMod спецификациясы, сиз муну изилдейсиз, мен кыскача айтканда эки тактанын VCCлерин туташтырбоо.
Сунушталууда:
Зымсыз тармак аркылуу каалаган компьютерди LANда ойготуу: 3 кадам
LANда Wireless Network аркылуу каалаган компьютерде ойгонуу: Бул окуу куралы Raspbpian сүрөтүнүн өзгөрүшүнөн улам жаңыртылган эмес. Сураныч, бул жерде жаңыртылган үйрөткүчтү аткарыңыз: https://www.instructables.com/id/Raspberry-Pi-As-Wake-on-LAN-ServerWOL азыркы учурда дээрлик бардык Ethernet портторунда бар. Бул эмес
AT Commands Firmware менен каалаган ESP8266 тактасы/модулу: 5 кадам
AT Commands Firmware менен каалаган ESP8266 Board/модулун программалоо: Ар бир ESP8266 модулу жана тактасы ар кандай жолдор менен программаланышы мүмкүн: Arduino, python, Lua, AT буйруктары, балким … Алардын үчөө өз алдынча иштөө үчүн эң жакшы, AT программасы Бул ESP8266 модулу катары же TTL RS232 c менен тез тестирлөө үчүн
Дисктин каалаган түрүнө жазууну коргоону кошуу же алып салуу: 3 кадам
Дисктин бардык түрүнө жазууну коргоону кошуңуз же алып салыңыз. Жазууну өз дискке кошуп же алып салгыңыз келеби? Бул колдонмону ээрчиңиз жана муну кыла аласыз
BC547 транзисторунун жардамы менен жөнөкөй сенсор жасаңыз: 4 кадам
BC547 транзисторун колдонуп жөнөкөй тийүү сенсорун жасаңыз: Салам досум, бүгүн мен транзистор BC547ди колдонуп жөнөкөй сенсор кылам. Бул схема абдан оңой жана бул абдан кызыкдар болгон схема
Өтө кичинекей робот жасаңыз: Дүйнөнүн эң кичинекей дөңгөлөктүү роботун туткун менен жасаңыз.: 9 кадам (сүрөттөр менен)
Өтө кичинекей роботту куруңуз: Дүйнөнүн эң кичинекей дөңгөлөктүү роботун туткун менен жасаңыз: 1/20 куб дюймдук роботту кичинекей нерселерди алып, жылдыра турган туткасы менен куруңуз. Бул Picaxe микроконтроллери тарабынан башкарылат. Бул учурда, менимче, бул дүйнөдөгү эң кичинекей дөңгөлөктүү робот болушу мүмкүн. Бул шексиз болот