Мазмұны:
- 1 -қадам: телефондарыңызды Pi -ге олардың орналасқан жерін жіберуге реттеу (I бөлік MQTT брокері)
- 2 -қадам: Телефондарыңызды олардың орналасқан жерін Pi -ге жіберуге реттеу (II бөлімнің жеке жолдары)
- 3 -қадам: Raspberry Pi орнату
- 4 -қадам: Қызыл түйінді орнату (MQTT серверінен Python сценарийіне хабарларды алу)
- 5 -қадам: Pi -де Python көмегімен сервистерді жылжыту
- 6 -қадам: Бағдарламалық қамтамасыз етуді аяқтау - Телефондар сервистерге
- 7 -қадам: Физикалық сағатты құру - I бөлім - Сервалар мен ось
- 8 -қадам: Сағат тілі
- 9 -қадам: Аяқтаңыз
- 10 -қадам: Егер мен оны қайталауға тура келсе, мен үйренген және басқаша жақсы болар еді
- 11 -қадам: Болашақта мүмкін болатын кеңейтімдер …?
Бейне: Уизли' орналасу сағаты 4 қолмен: 11 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:22
Сонымен, біраз уақыт бойы басталып келе жатқан Raspberry Pi көмегімен мен оны жақсы пайдалануға мүмкіндік беретін жақсы жоба тапқым келді. Мен ppeters0502 арқылы Уизлидің жеке орналасу сағатын таптым және оны сынап көру жақсы деп ойладым.
Сағат негізінен Raporberry Pi -ден тұрады, ол сағат тілін бұру үшін серводы басқарады. Гарри Поттердің кітаптарындағы/фильмдеріндегі Уизли отбасының үйіндегідей, әр отбасы мүшесінің өз қолы бар. Әр қол сол отбасы мүшесінің қазіргі орналасқан жерін көрсетеді. Сағат бұған отбасының ұялы телефондарынан олар алдын ала анықталған радиусқа кіргенде немесе шыққан кезде хабар алу арқылы қол жеткізеді.
Алдыңғы нұсқаулықтан басты айырмашылығы - маған 2 емес, 4 қол болу керек еді (әйтпесе қыздарым шағымданар еді), мен ескі сағатты қайта пайдаланбай, рамканы салуды шештім. Бұл кеңістік 4 сағаттық сервосқа сәйкес келу үшін бар сағаттық корпуста проблема болады деп алаңдадым.
Бұл мен күткеннен әлдеқайда көп уақытты алды, дегенмен, көбінесе мені тығырыққа тірейтін және бастапқы жазбада қамтылмаған сияқты қиын мәселелерге тап болдым. Бастапқы нұсқаулыққа қарсы ештеңе жоқ, бұл өте жақсы болды, бірақ бірнеше жыл өтті және заттардың нұсқалары өзгерді … т.б. Ұлыбританияда болу Императорлық/Метрикалық элементтердің кейбірі мен күткеннен де көп қиындықтар туғызды дегенді білдіреді.
Сондай -ақ, мен кодтауда жақсы болсам да, сағаттың физикалық жасалуы мені шынымен де созды және маған қосымша құралдарды қажет етті, бұл мені біраз бәсеңдетіп тастады.
Соңында мен «Егер мен оны басқаша жасайтын болсам, басқаша жасайтын едім …» бөлімін қосамын.
Жабдықтар:
Мені таңқалдырған нәрсе - қымбат компоненттердің сағат тілімен жасалуы. Әрине, 4 қол 2 -ге қарағанда әлдеқайда қымбат. Мен мұның бәрін бірінші рет қостым және құралдарды ескермей, мен шамамен 200 фунт жұмсадым деп ойлаймын. Сонымен қатар мен қолданбаған (және төменде енгізілмеген) кейбір заттар, Пи, сонымен қатар менде бұрыннан бар қуат көзі.
Pi және т
- Raspberry Pi - бастапқыда қанша тұратынын есіне түсіре алмайды, бірақ бұл модель 2В болды. Менің ойымша, егер сізде әлі жоқ болса, онда тіпті Pi Zero жасайтын шығар. Мен Wi -Fi кілтін және SD картасын Raspbian -мен қостым. Менде ескі Android телефон зарядтаушысы болды.
- Pi үшін Adafruit Servohat - 16 фунт
- Сервохатқа арналған электрмен жабдықтау - Мен шынымен де таба алмадым, өйткені барлық веб -сайттар adafruit сайтына сілтеме жасады, ол АҚШ -ты электрмен жабдықтауды ұсынады. Содан кейін менде ауыспалы кеңестері бар ескі айнымалы кернеу бар екенін түсіндім, сондықтан мен оны қолдандым. Бірақ АҚШ -тың бағасы 8 доллар, сондықтан бұл ойын алаңы.
- Pi корпусы, оны мен оны сағат жақтауына бекітуім үшін. 5 фунт
Серво мен редукторлар
Мұнда мен барлық төртеудің бағасын келтіремін, сондықтан егер сіз аз қол алғыңыз келсе, бөліңіз (оны қосу-қолына ~ 40 фунт = 160 фунт: -o
- 4 x Сервос-мен ppeters0502 ұсынғанын қолдандым-ebay-де әрқайсысы 15 фунт стерлингке = 60 фунтқа табылды-мен келесі мәтінді іздедім: «GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-градус «Бірақ кейде олар қол жетімсіз болды
- Бір -біріне дәл орнатылған 4 x жезден жасалған құбырлар - әрқайсысы ~ 3 фунт. Менде әрқайсысы 1/4 «, 7/32», 3/16 «, 5/32» = 11 фунт 1 болды
- Тісті берілістерді бекітуге мүмкіндік беретін жез түтіктеріне бекітілген 4 х қысқыш. ~ Әрқайсысы 7 фунт = 28 фунт. Мен оларды АҚШ -тағы Servocity -ден тұрақты тапсырыс беретін ActiveRobots -тен алдым, бұл сізге халықаралық жеткізілімнен аулақ болуға мүмкіндік береді. Олар сонымен қатар Servocity -тің АҚШ -тағы басты сайтынан таба алатын кез келген нәрсені ала алады. Бұл келесі 2 элемент үшін өте ыңғайлы болды
- Қысқыш тораптарға бекітуге арналған 4 ацетил 0,770 дюймдік беріліс. ~ 6 фунт = 24 фунт
- Сервоға орнатуға арналған 4 ацетил сплайн бекітілген ацетил беріліс. ~ 6,50 фунт = 26 фунт
- Қысқыш гайкаларға бекітілген тісті доңғалақтарға 1 х орам гайкалары = 2,60 фунт
- 1 x 7/64 дюймдік алтыбұрышты кілт (аллен кілті), себебі АҚШ -тан келетін нәрсе империялық болып табылады, сондықтан менде бар жүздеген аллен кілттері пайдасыз = 1 фунт
Физикалық құрылыс үшін
Мұнда мен көбінесе өтірік айтатын нәрселердің қысқартуларын қолдандым
- «Бет» және «артқы» пластинаға арналған 2 х фанер
- Содан кейін мен артқы жағын бетке қосу үшін ескі панельден 4x10 см цилиндрді кесіп алдым.
- Серводы дұрыс ығысуға орнататын кейбір блоктар - мен жұмсақ ағаштан жасалған кесінділер.
- Әр түрлі бұрандалар. өте кішкентайдан (Pi корпусын жақтауға) ортаға дейін (жақтауды бірге бекіту үшін)
- 0,75 мм жұмсақ болаттан 50 см х 20 см (қолды кесу үшін). Бұл Уикстен ~ 9 фунт стерлинг сатып алған жалғыз нәрсе болды
Құралдар
Менде кейбір заттар болды, ал кейбіреулерін мен қарызға алдым немесе сатып алдым
- Дәнекерлеуші + электрлік дәнекер - Adafruit Hat & Pi коннекторларын бекітуге арналған.
- Джигсо - қолдың өрескел пішінін кесуге арналған
- Бұрғылау. жай сымсыз 18В бұрғылау
- Бұрғылау ұштары - жез түтіктерге сәйкес келетін тесіктер жасау үшін сізге империалды бұрғылар қажет болатынын есте сақтаңыз. Мен біраз қарызға үлгердім.
- темір арматура - жезден жасалған құбырларды кесуге арналған. Мен жасағанымды жасамаңыз және құбыр кескішке 3 фунт жұмсамаңыз, ол қысыммен жұмыс істейді және құбырлардың ішкі жағы сәл кішірейеді. сондықтан келесі өлшемдегі түтікке сәйкес келмейді
- Үстелге арналған тегістеуіш - менде олардың біреуі жоқ, бірақ менің досым қолмен пішінін айтарлықтай жеңілдетті. Осы уақытқа дейін мен тек файлдарды қолдандым. Мен бұл жобаны сатып алмас едім, бірақ металл қолдар үшін бұл өте жақсы болды.
- Мен гауһар тастардың әр түрлі файлдарын сатып алдым (өте кішкентай). қолдар мен түтіктер үшін шамамен 15 фунт стерлинг
- өрескел және тегіс зімпара
- кейбір ұсақ қысқыштар бұрғылау кезінде заттарды орнында ұстайды.
- сол себепті вице.
1 -қадам: телефондарыңызды Pi -ге олардың орналасқан жерін жіберуге реттеу (I бөлік MQTT брокері)
Бұл битті ppeters0502 өзінің тамаша Weasley Clock Instructable кітабында жақсы сипаттайды. Бір қызығы, ол әр түрлі дағдыларды көрсете алатын болса да, ол құрастырудан бастады, содан кейін бағдарламалық жасақтамаға көшті, мен мұны басқаша жасадым. Сонымен, мен телефонмен бастадым … іліңіз, жоқ, мен MQTT брокерінен бастадым, бұл оның нұсқаулығындағы 6 -қадам. Мен оның өте жақсы жасайтын барлық биттерін жіберіп алмаймын және мен қосатын биттерді тастаймын. Мен ол айтқан CloudMQTT бағытымен жүрдім.
БҰЛ мен мұны жазған кезде мен жоспарлардың сілтемесін тексердім, енді тегін жоспар жоқ екенін білдім! Олар ақылға қонымды негіз ретінде көрінді. яғни адамдар тегін дананы орнатады, бірақ оны ешқашан пайдаланбайды. Мен байқамадым, себебі қазіргі инстанциялар жалғаса алады. Сондықтан мен өзгермеймін. Бірақ бұл нұсқауларды біршама артық етеді. 3 нұсқа бар сияқты.
- Cloud MQTT үшін айына $ 5 төлеңіз (бірақ бұл сағат үшін үнемі қымбат болып көрінеді).
- Бірінші нұсқаулықта сипатталғандай, москитпен Пи маршрутымен жүріңіз. Мен бұған түсініктеме бере алмаймын, бірақ жақсы нұсқа болар еді.
- Google -да «ақысыз MQTT бұлтты брокері» бар, және басқалары бар сияқты.
Сонымен, сізде жұмыс істейтін MQTT брокері бар деген болжам бойынша, егер бұл CloudMQTT сияқты болса, онда сервер, пайдаланушы, құпия сөз және порт көрсетіледі. Брокерге сіздің орналасқан жеріңізді/қозғалыстарыңызды жіберу үшін телефондарды орнату үшін сізге осының бәрі қажет болады.
2 -қадам: Телефондарыңызды олардың орналасқан жерін Pi -ге жіберуге реттеу (II бөлімнің жеке жолдары)
Бұл нұсқаулықтың түпнұсқасында 7 (Android), 8 (iOS) және 9 -қадамдарда (Аймақтарды орнату) өте жақсы қамтылған.
Менде тек iOS құрылғылары болды, сондықтан 7 -қадамды орындамаңыз.
Мен бұл нұсқауларға не қосар едім?
- Орнатуда TrackerID және DeviceID өрістері де бар. Бұл сіздің отбасыңызда сізді анықтай алатындай болуы керек. Мысалы, Менде сәйкесінше R және RPhone болды. Бұл дегеніміз, сіз Серво, сондықтан қай қолмен бұру керектігін біле аласыз.
- Аймақтар - бұл бақылағыңыз келетін орындардың атауы.
- Әр аймақ атау, ендік, бойлық және радиуспен анықталады.
-
Менің сағатымда бір бөлім ретінде бірнеше орындар болғанын қалағандықтан, мен атау конвенциясын қолдандым, бұл өте пайдалы болды. Басқа әдістер мүмкін, бірақ бұл мен үшін жұмыс істеді.
- Мысалы, «ОТБАСЫ» бөлімінде мен ата -анам мен бауырларым мен әйелімнің ата -анасы мен бауырларының болғанын қалаймын. Сондықтан менде «Family Tom», «Family Dick», Family Harry «және» Family FamilyR «сияқты орындар болды, бұл келесі кезеңнің Сағатқа не беру керектігін білетінін білдіреді.
- Адамдардың орналасуы әр түрлі болуы мүмкін екенін есте ұстаған жөн. Бірақ олар атау конвенциясына сәйкес келсе, бұл жақсы. Мысалы, менің жұмысым әйелімнің жұмыс аймағынан өзгеше болады және басқаша аталады. бірақ екеуі де «Жұмысты» бастағанша бәрі жақсы.
- Сіз режимді Карталар экранында «Маңызды» етіп орнатқыңыз келеді. Бұл сіз (негізінен) хабарларды тек аймақтарға кіргенде немесе одан шыққан кезде аласыз дегенді білдіреді. Бұл МАҢЫЗДЫ деп белгіленген жазбаның жаңартылған нұсқасы сияқты: нұсқаулықтың түпнұсқасында 8 -қадамның соңында.
- Нұсқаулықтың түпнұсқасында айтылғандай, Google карталарын пайдалану - бір жердің соңғы/ұзындықтарын табудың тамаша әдісі. Мен мұны жаппай орындауды тиімдірек деп таптым, менің орналасқан жерімнің барлық соңғы/ұзындықтарын білдім, содан кейін оларды Notes (Mac компьютерімде) қойдым және бұлтты синхрондау арқылы олар менің iPhone-да сиқырлы түрде пайда болды. Notes бағдарламасында мен оларды Owntracks -ке көшіріп/қоюға болады. Бұл сонымен қатар мен файлды отбасымның телефондарына жібере алатынымды білдірді, және бізде барлық орындар сәйкес болды.
- Бір -біріне жақын орналасқан жерлер қиындық тудыруы мүмкін. Менің ағам 2 көшеде тұрады, бастапқыда менің телефоным мені бір уақытта оның үйінде де, үйінде де болды деп ойлады. Ақыр соңында, бұл оқиғаны түсіну және елемеу үшін Қызыл түйінге қосымша логика қоюға тура келді.
3 -қадам: Raspberry Pi орнату
Сонымен, менде сізде Wi -Fi орнатылған Pi базасы бар деп ойлаймын. Мен Raspbian -ды қолдандым, бірақ бұл маңызды емес. Барлығын реттеу үшін raspberrypi.org сайтындағы нұсқауларды қолданыңыз.
Pi -де монитор мен пернетақтаға/тінтуірге және т.б. көрсетуге арналған порттар бар екенін ескеріңіз, бірақ сіз оны сағат ішінде ұстасаңыз, мұны қаламайсыз. Менің ойымша, Raspberry pi веб -сайтында біреу ұсынған жауап VNC байланысын орнату болды. Бұл басқа құрылғыдан Pi -ге қосылуға және оны басқаруға мүмкіндік береді. Мен мұны Mac компьютерімнен жасаймын, бірақ мен оны iPad -дан жасадым. Мен пайдалануды жеңілдету үшін пернетақтасы бар нәрсені қолдануды ұсынамын.
Мен жай ғана олар қосылғаннан бері олар менің жұмысымды жеңілдеткендей болды … мұнда қараңыз
Негізінде сіз қосылып, стандартты Pi интерфейсі болып табылатын терезені аласыз.
Сонымен, сізде ноутбуктен немесе компьютерден Pi -ге терезе бар.
Енді серверлерді қосу керек.
Адифрут шляпасын Pi -ге алу үшін алдымен сізге қарапайым дәнекерлеу керек. Бұл сәл қате, бірақ 30 жыл бойы дәнекерлемегеніне қарамастан, бәрі жақсы болды. Әдеттегідей, мен YouTube арқылы пайдалы видео тауып алдым, бұл маған үлкен көмек болды.
Шляпада 16 серво жұмыс істей алады, маған тек 4 қажет болды, сондықтан мен тек 4 түйреуіштің бірінші жиынтығын дәнекерлеуді ғана ойладым.
Содан кейін серво түйреуіштерге итереді. Мен бірінші кезекте серводы жылжытуға болатынын тексеру үшін жасадым.
Бұл жерде мен бірінші үлкен жол тосқауылына тап болдым. Менде серводы жылжыту үшін қарапайым питон сценарийі болды және ештеңе болған жоқ. Мен бір аптаға жуық жаңа сценарийлерді сынап көрдім, содан кейін шляпада түтін пайда бола бастады. Барлығын өшіріп, мен схеманы тексердім. Бұл кері полярлықтан қорғайтын компонент болды. Менде көп ұшты, көп вольтты қуат көзі болғандықтан, ұшты бұру арқылы тұрақты ток шығысы екі жаққа кетуі мүмкін екенін жіберіп алдым. Мен қателестім (50:50 мүмкіндік) және мен жай ғана алғашқы адафрут қалпағымды өртеп жібердім
:-(Мен жаңасын сатып алып, қайтадан дәнекерлеп, ұшын түзеткен кезде сәл кідіріс болды. Әлдеқайда жақсы.
Содан кейін мен серводы сағаттың дұрыс нүктесіне қалай жылжыту керектігін шешуім керек болды. Бұл 5 -қадамда болады, бірақ мен нақты сағатты құрмай -ақ жасадым, бұл серводы кездейсоқ ағашқа бұрап, суреттегідей жебесі бар бірнеше маска таспасын жабыстыру болды. Бұл мен кодтағандарға өте көрнекі кері байланыс берді.
4 -қадам: Қызыл түйінді орнату (MQTT серверінен Python сценарийіне хабарларды алу)
Node-RED-бұл Pi-де орнатылатын бағдарлама, ол сізге MQTT серверінен хабарламаларды қабылдау үшін визуалды интерфейсті (браузерде) береді және оны дұрыс ақпаратты python сценарийіңізге беру үшін қолданады (келесі қадамда қарастырылған) Мен 5 -қадамдағы ppeters0502 нұсқауларын өте жақсы қолдандым. Бұл ағындарда логика бар, ал питонда қосымша логика бар, және сіздің қалауыңызға байланысты сізде көп немесе аз болуы мүмкін. Негізінде сіз мұны істеуіңіз керек. келесісі
- MQTT хабарламалары үшін қабылдау түйіндері бар - бұл ашық күлгін, менде отбасы мүшелерінің әрқайсысы 1 болды
- Оны жылжытқыңыз келетін сервоға салыңыз (нөмірлері 0, 1, 2, 3)
- OwnTracks радиусына кіретіндігіңізді немесе кететіндігіңізді анықтаңыз
-
Серво қай жерді көрсетуі керек екенін анықтаңыз
Маған енгізу қажет негізгі ережелерден кейбір ерекшеліктер болды
- Бұрышты дұрыс орнатыңыз
Менде Node-RED бірінші 4-ті жасады және Python-ды салыстырмалы түрде қарапайым етті.
Сіз мұнда негізгі ағынды көре аласыз және барлық ағындарды осы пішімге экспорттауға болады, яғни сіз бұл негізгі ағынды Node-RED-ке импорттап, содан кейін бейімдей аласыз. Назар аударыңыз, мен MQTT данасына кіре алмайтындай күлгін түйіндерден барлық байланыстарды алып тастадым. Мен сондай-ақ барлық тест-түйіндерді алып тастадым, себебі оларда нақты деректер бар … Node-RED-ке импорттау үшін сізге осы файл түрін flows.json етіп өзгерту қажет болуы мүмкін, бірақ Instructables маған оны жүктеуге рұқсат бермеді.
Жасыл түйіндер - бұл түзету түйіндері, олар шығуды экранның оң жағындағы түзету терезесінде көрсетеді (кеңейтуді қажет етуі мүмкін - көрсеткіні оң жақтан жартылай жоғарыда табыңыз)
Ең бірінші бит - «Live - тек отладка үшін» биті. Бұл MQTT хабарламаларын қабылдай алатындығыңызды және онда не бар екенін көруге мүмкіндік береді. json - бұл деректерді оңай шығаруға мүмкіндік беретін хабарламалардың құрылымдалған нұсқасы. Бұл ағында, тірі кезде мен сол жақтағы күлгін түйіндерді олардың оң жағындағы json түйініне қосамын.
Сынақ түйіндері
Хабарламалардың тікелей эфирде қалай көрінетінін білгеннен кейін, оқиғаны қозғау үшін үйден шығып, жол бойымен және кері қайту өте жалықтырады. Сіз мұны жасағаннан кейін, хабарды TEST триггеріне көшіре аласыз, содан кейін оқиғаны модельдеу үшін оны басыңыз. Сондай -ақ, деректерді әр түрлі орындар үшін өзгертуге болады (олардың Owntracks ішіндегі орын атауларына сәйкес келетініне көз жеткізіңіз).
Ағыннан сіз тестілік жағдайлардың барлығы бөлек түйінге, содан кейін json түйініне кіретінін көре аласыз. Бұл тек экранды ретке келтіру үшін.
Мен бұл түйіндердің қаншалықты пайдалы болғанын баса айта алмаймын және әлі де бар.
Python шақырады
Содан мен келесі жолды бөгеп тастадым. Бұл форумдарда көп гуглингке ие болды. Менің ағыным жақсы жұмыс істейді, бірақ бұл менің питон сценарийін іске қоспайды. Мен мұны шеше алмадым, бірақ мен сені ант етуден сақтаймын. Екінші скриншотта көрсетілгендей, сіз python3 көрсетуіңіз керек, егер сіз көрсетпесеңіз, Node-RED python2 қабылдайды.
2 қосымша асқынулар - қажет болған жағдайда ғана
Содан кейін менде көптеген қиындықтар болды, онда логика жұмыс істемеді. Біріншіден, Owntracks біртүрлі болды және менің ағам 2 көшеде тұратындықтан, мен бірден 2 жерде болдым немесе жиі ауысамын деді. Айналдырудың жалғыз жолы - жалған позитивті тоқтататын жағдайды қосу. Егер мен оның үйіндемін деп мәлімдеген болса, онда мен хабардағы нақты ұзындықты/ендікке жүгініп, тексердім және егер мен шынымен үйде екенімді айтсам, оны алып тастадым.
Басқа мәселе - менің итімді серуендеу кезінде мен жақсы радиусты ала алмадым. Мен әдетте сол аймақта жүремін, сондықтан мен «егер мен бұл аймаққа кірсем, мен итпен жүремін, мен үйге жеткенше боламын» дедім. Бұл мен үйге бара жатқанда пабқа немесе итпен серуендеуді тудыруы мүмкін басқа жерлерге ауыспайтынын білдіреді. Мұны істеу үшін маған контексттің тұрақты айнымалыларын орнату қажет болды (оларды Node-RED-тен іздеңіз. Скриншотты қараңыз. Бұл айнымалы мәндер Node-RED қайта іске қосылғанша сақталады, сондықтан егер мен ит серуендесе, контекстік айнымалы мәнді орната аламын деп айта аламын. «Итке». Содан кейін мен үйге «кірмейінше» ЕШҚАНСАНЫ елемеңіз.
Соңғы скриншот - бұл сіздің қызығушылығыңыз үшін, барлық қоспағанда, менің соңғы ағынымның бірі.
5 -қадам: Pi -де Python көмегімен сервистерді жылжыту
Сервоға қысқа бағыт. Мен серво туралы ештеңе білмедім, бірақ Интернетте көптеген ақпарат бар. Мен қолданған - бұл 360 градусқа біркелкі бұрыла алатын үздіксіз серво. Басқа негізгі сұрыптау - бұл қадаммен (қадаммен) қозғалатын және шамамен 180 градусқа дейін көтерілетін саты сервоприводтары (мұнда пайдалы емес). Қадамдық сервоприводтардың артықшылығы - сіз бұрыш жасай аласыз, олар сол нүктеге жылжиды және тоқтайды. Мен тапқан барлық құжаттамада үздіксіз сервоға жылдамдық беру арқылы жұмыс істейтінін және сол жылдамдықты сақтауға уақыт (мысалы, 1 секунд ішінде толық жылдамдық) және олар аяқталатын жерге дейін жететіні айтылады, бірақ бұл олардың бастапқы нүктесіне қатысты. Көптеген әрекеттерден кейін мен бұл жұмысқа кірісе алмадым, бірақ тестілеу үстелінің көмегімен сервистің бір бұрышта бір нүктеге үнемі оралатынын білдім. Бұл әлдеқайда оңай, сондықтан мен мұны жасадым. Мен білмейтін кейбір кемшіліктер болуы мүмкін, бірақ бұл мен үшін жұмыс істейді. Есіңізде болсын, әрбір серво бірегей, сондықтан әр серво үшін бірегей бұрыштар жиынтығы болуы керек. Менде калибрлеу питон сценарийі болуы оңай болды, онда мен сервостарды кезекпен бұрышқа қойып, оларды бәрі дұрыс көрінгенше тазарта алдым. Бұл тіркелген бірінші сценарий. Сіз тестілемейтін сервоға түсініктеме бересіз, біреуіне назар аударыңыз, содан кейін мәндерді қажет болғанша реттеңіз. ЕСКЕРТПЕ: сынақ үстелін калибрлеу қарапайым және өрескел және дайын. Сағат жиналған кезде сізге қайта калибрлеу қажет болады, өйткені редукторлар бәрін өзгертеді. Содан кейін екінші сценарий өте қарапайым. Ол келесі әрекеттерді жасайды
- Бірнеше кітапхананы импорттаңыз
- Node-RED-тен келетін айнымалыларды сценарийдегі айнымалыларға жылжытыңыз
- калибрлеу сценарийі бойынша анықталған бұрыштарды сағат бойынша орналасқан жерлерге салыстырады.
- орынның тізімнен табылғанын тексеріңіз, егер олай болмаса, «Қауіпке» өтіңіз.
- журналға не істелгенін жазыңыз
- қажетті серводы қажетті бұрышқа жылжытыңыз
- Бір серво «ызылдауын» тоқтатыңыз *
3 нәрсені ескеру қажет.
Журнал-файл отладка үшін өте пайдалы. Бұл хабарламаның Node-RED отладына қарап, сценарийде не болғанын көруге болатынын білдіреді. шығыс осылай көрінеді. Алғашқы үшеуі - мен иттерді серуендеуге шығарамын, содан кейін 1 -бала үйден шығып, мектепке келеді. Пидегі уақытты тексеру үшін ескерту. Ол UTC бойынша әдепкі болуы мүмкін және жазғы/қысқы уақытты өзгертуге рұқсат етпеуі мүмкін. Мысалы, төмендегі уақыт 1 сағаттық үзіліс.
2020-12-07_05: 36: 03 Кім = 0, loc = Саяхат, бөлшек = Үй, Бұрыш = 10, индекс = 8
2020-12-07_05: 36: 04 Кім = 0, лок = Ит, бөлшек = Астондар, Бұрыш = 86.5, индекс = 10
2020-12-07_06: 07: 49 Кім = 0, loc = Үй, бөлшек = кіру, Бұрыш = 75, индекс = 0
2020-12-07_06: 23: 53 Кім = 2, loc = Саяхат, бөлшек = Үй, Бұрыш = 19, индекс = 8
2020-12-07_06: 30: 48 Кім = 2, loc = Мектеп, бөлшек = N, Бұрыш = 60,5, индекс = 2
Серво-шуыл
Сервистердің бірі (0) сценарий аяқталғаннан кейін де ызыңдай берді. Өздеріңіз білетіндей, бұл біздің ас үйде болуы өте жағымсыз. Мен серво бұрышын «жоқ» деп орнатуды айтқан, мен оны бос күйге орнататын бір жерден таптым. Бұл керемет жұмыс істеді және оны сценарийден көруге болады.
Уақыттар
Қолдың тәулік бойы сыпыру үшін қаншалықты төмен екенін есте сақтаңыз. Сценарийден біз сервисті ызылдауды тоқтатуға орнатар алдында time.sleep (4) сызығы бар екенін көре аласыз. Себебі қолды бос күйге қоймас бұрын оның тағайындалған жерге жетуіне рұқсат беру керек. Әйтпесе, ол жай ғана тоқтайды. Бұл калибрлеу кезінде де маңызды, себебі сіз сценарийде бірнеше қимыл жасайсыз. Мен олардың барлығын қайта тексере алу үшін кезекпен барлық 12 орынға ауысуды іске қосатын едім. бірақ сізге аз уақыт қажет.
6 -қадам: Бағдарламалық қамтамасыз етуді аяқтау - Телефондар сервистерге
Сынақ үстелін және сценарийлерді орнатқаннан кейін, сіз оны біраз уақыт «тікелей эфирде» іске қосып, оның нақты уақытта қалай жұмыс істейтінін көре аласыз. Бұл жерде мен Node-RED ағынына қосуым керек ерекшеліктерді таптым.
Егер сіз шоғырланғыңыз келсе, Node-RED ағынында отбасы мүшелерін оңай ажыратуға және қосуға болады. Мысалы, егер екеуі ақаулық тудырса, бірақ сіз оларды бір уақытта шешкіңіз келеді. Әйтпесе, сіз кез келген қосылған телефоннан хабарлама алуды жалғастыратындығыңызды есте сақтаңыз.
Мен итпен серуендеу мен ағамның үйі жақын болу мәселесін айттым. Менде тағы 2 қиындық болды.
Біріншіден, басқа жерлерде. Әйелім Лондонда колледжде курста оқып жүрді. Біз оны «Мектеп» ретінде тіркеуді қалаймыз, бірақ ол «Лондонда» да бар. Сондықтан контексті қайта пайдалану қажет болды, егер сіз «мектептен» кететін болсаңыз, онда «саяхатқа» емес, «Лондонға» көшіңіз.
Екіншіден, жарыстың шарттары. Жоғарыда айтылғандай, менің ағамның үйі 2 көшеде, сонымен қатар біздің сүйікті паб/мейрамхананың жанында. Бұл кейде 2 сигнал бір уақытта немесе бір -біріне өте жақын қабылданады дегенді білдіреді. Бұл «нәсілдік жағдайды» орната алады, онда сіз логиканың қайсысы тез өтетініне байланысты әр түрлі нәтиже аласыз, бұл күтпеген нәтижелерге әкеледі. Бұған қарсы тұру үшін мен барлық «кіру» хабарламаларында логиканың 1 секундқа кешігуін жасадым, бұл мәселені шешкендей болды. Мұны шешудің жақсы, талғампаз әдістері болуы мүмкін, бірақ бұл жұмыс істейтін сияқты.
7 -қадам: Физикалық сағатты құру - I бөлім - Сервалар мен ось
Енді мен аз сенімді болдым, сондықтан мен оны ұзақ уақытқа қалдырдым. Мен лайықты өлшемді және қарапайым құрылысты алғым келді. Мен орталық осьтің айналасында 2 серво алуға физикалық түрде алаңдаушылық білдірдім. Бұл ebay -ге ескі сағаттарға қысқаша қарап, нұсқаулықтағыдай қарап, өзіме мүмкіндік беруді шештім.
- Менде (қалыңдығы шамамен 9 мм) жатқан 2 үлкен (~ 30 см) фанера болды.
- Содан кейін ескі баннерлік рельсті 4х10см көлеміндегі бөліктерге бөліп, алдыңғы және артқы тақталарды бұрап алдым.
- Ортаңғы тесікті белгілеп, мен оны жезден жасалған ең үлкен түтікпен бірдей етіп бұрғыладым.
- Содан кейін мен оны кәдімгі ақ жылтыр бояумен боядым.
- Бірнеше эксперименттен кейін, егер олардың барлығы артқы (немесе алдыңғы) пластинаға бекітілген болса, мен бір осьте 4 серво ала алмайтынымды түсіндім. Сондықтан маған әр тақтада 3 + 1 немесе 2 + 2 болуы керек еді. Мен артта 3, ал алдыңғы жағында 1 болды.
- Мен қағазға қажет офсеттерді жасадым, содан кейін жез түтіктерді сәйкес етіп қиып алдым. Ең қалың түтік ең қысқа, ал ең жіңішке артқы тақтаға дейін жүруі керек екенін ескеріңіз. (Мен ең кішкентайын артқы тақтаға жартылай бұрғыланған тесікке кірістірдім, бірақ ось артқа қарай жылжып кетпеуі үшін).
- Құбырлар үшін мен құбыр кескішті сатып алдым, бірақ бұл оларды қысу үшін қысымды қолданады, демек сіз одан кішірек түтікті ала алмайсыз. Сондықтан мен темір араны қолдандым, содан кейін оларды жұмысқа орналастыру үшін жеткілікті мөлшерде құжаттар жинауға тура келді. Алмас нүктелік файлдар мұнда баға жетпес болды.
- Содан кейін мен диаграмманы қысқыштар мен тістердің нақты ауытқуларымен сәйкестендірдім *.
- Мен офсеттерді алғаннан кейін, мен сервоприводты орнату үшін блоктардың қаншалықты жоғары болатынын білдім. Мен бірнеше блокты жіңішке арамен кесіп, сымның шығуы үшін тесік бұрғыладым.
- Содан кейін, осьтерде тістерге дәл сәйкес келетін етіп, блоктарды қайда қою керек екені анықталды. Мен бір блокты бұрап алдым, содан кейін серваны оське айналдыру үшін айналдыра алдым, содан кейін екінші блокты серваның екінші ұшына бұрап қойдым. Мен басқа тістерді ұстамау үшін кейбір блоктарды аздап кесу керек екенін білдім. Оған біраз уақыт кетті.
- Мен мұның бәрін жасағаннан кейін, менің таңқурай пи корпусымды алдым, оған екі тесік бұрғылап, оны алдыңғы тақтаға бұрап қойдым. Содан кейін мен Pi -ді қосып, алдыңғы және артқы тақталарды жауып (серваларды pi -ге қосқаннан кейін (қай серво қай отбасы мүшесі үшін екенін есте сақтай отырып) қолдарға бұрыла аламын …
* Міне, мен әлі толық шеше алмайтын ең үлкен мәселені таптым. Жезден жасалған құбырлар 1/4 «, 7/32», 3/16 «, 5/32» болды. Бірақ қысқыштар метрикалық болды (1/4 дюймді қоспағанда). Түтіктерді метрикаға айналдыру: олар 6,35мм, 5,56мм, 4,76мм 3,97мм. Қалған қысқыштар 4мм, 5мм және 6мм саңылаулар болды. Ең кішісі 2 және ең үлкені жақсы, бірақ 0,44 мм қысқыш үшін тым көп жүреді, сондықтан мен оны қағазбен толтыруға тура келді. Мен мұны бірнеше рет сынап көрдім, ол біраз уақыт жұмыс істейді, содан кейін қайтадан босатылады. Қол дұрыс жұмыс істемейді. Бұл шамамен 6 айға жақсы болды, сондықтан оны жақсы өткізуге жұмсалған уақыт жақсы инвестиция болды. Бірақ егер мен оны қайталап жасайтын болсам, мен 1 өлшемді жоғарылатып немесе төмендете алар едім. құбырға жақсырақ қысқыш. мысалы, 9/32 «, 1/4», (саңылау), 3/16 «, 5/32»
8 -қадам: Сағат тілі
Мен болаттан жасалған материалды таңдадым, себебі мен қатаң нәрсе алғым келді, бірақ мен оны жасау кезінде соғылып қалу ықтималдығы аз болды. Сондай -ақ, жұқа болу 4 қолдың мәселесі аз екенін білдіреді.
- Алдымен мен фигураны сыздым.
- Содан кейін мен оны бірнеше болат таспаның үстіне болатқа бердім.
- Содан кейін мен оларды тәжірибесіз түрде пазломен қиып алдым. Олар әр түрлі болды, бірақ мен бұған қарсы емеспін.
- Содан кейін менің досым оларды қалыптау үшін стендтік үгіткішті алуды ұсынды, бұл өте жақсы болды. өте ұсынылады. Әйтпесе, есепке алу ұзақ уақытты алады.
- Ешқандай өткір жиектердің болмауын, сондай -ақ жақсы аяқталуын қамтамасыз ету үшін әлі де біраз толтыру керек, содан кейін тегістеу қажет болды.
- Тиісті жезден жасалған түтіктерге сәйкес келетін тесіктерді бұрғылауға тура келді (тексеру үшін кесілген түтіктерді қолданыңыз, сағатқа орнатылған емес).
- Мен тесіктерге түтіктерге түсіру үшін кішкене толтыру қажет екенін білдім, бірақ бір рет олар тығыз және желім қажет емес. Ерекшелік - мен «мұқаба» алғым келетін алдыңғы қол. Мен тесікті бұрғылап, қажетті мөлшерге жеткізгеннен кейін дөңгелек болаттан (негізінен) кесіп алдым да, оны алдыңғы жағына жапсырдым. сіз оны соңғы суреттен көре аласыз. Кейде оны бекіту үшін алдыңғы қолға желім қажет болады, бірақ бірнеше жалған әрекеттен кейін қолдар өте жақсы жұмыс істейді.
- Мен фотосуреттер идеясынан бас тарттым (өйткені балалар біздің суреттерімізге тез шағымданады), сондықтан мен акрил бояумен инициалды сурет салуды шештім.
9 -қадам: Аяқтаңыз
Мұның бәрі шынымен жақсы жұмыс істейді. Қолдар қайдан келгеніне байланысты кейде сәл алшақ болады, бірақ бұл маңызды емес, өйткені әр орын тек сызық емес, бөлім.
Кейде, біртүрлі, менің телефоным үйде екенімді мойындаудан бас тартады. Мен Owntracks радиусында екенімді картадан көрсеткенде, дәлдігі жақсы болғанда да … неге екенін білмеймін. менің отбасымның қалған мүшелерін мазаламайтын сияқты. бірақ конфигурация бірдей. Бұл дегеніміз, Owntracks ешқашан хабарлама жібермейді және мен «Саяхатта» қалып қоямын. Бірақ, әдетте, ол ақырында өздігінен шешіледі.
Біздің ас үйде болу өте пайдалы болды, негізінен қыздардың мектептен қайтатынын немесе достарының үйіне қашан келетінін білу, сондықтан оларға тамақ/шай қашан дайын болу керек.
Тағы да, керемет нұсқаулар үшін @ppeters0502-ге үлкен рахмет. Олар 4 қолмен сағат жасауға бір нәрсе қосады деп үміттенемін.
10 -қадам: Егер мен оны қайталауға тура келсе, мен үйренген және басқаша жақсы болар еді
- Физикалық құрылыс сынақ пен қателікті қажет етеді. Ғарыштық мәселелерді болжауға ешқандай мүмкіндік жоқ, тек суға түсіп, тырысу керек.
- Код үшін googling проблемалары маңызды
- Негізгіден бастаңыз және жинаңыз. Сынақ үстеліндегі ағаштар мен олардың көп бөлігін физикалық құрылымсыз жұмыс істей алатынымды білдіреді
- Мен CNC станогында қолды лазермен кесуім мүмкін. Бірақ мен жергілікті жердің қайда екенін білмедім, маған жұмсақ болаттың қалай жұмыс істегені ұнайды (ол арзан болды және стендтік тегістеуіш оны әлдеқайда жеңілдетті)
- Егер сіз 360 бұрылысты алу үшін редукторды қолдансаңыз, қадамдық қозғалтқыш мүмкін болады. бірақ сізге орталық оське тым жақын сервоприводтар қажет болуы мүмкін
- Серваның 2 түрі бар (Futaba & HiTech). Мұны тексергеніңізге көз жеткізіңіз, себебі оларда тістердің саны әртүрлі. Мен бастапқыда қате сатып алдым …
- Шляпаны дұрыс емес полярлықпен қоспаңыз;-)
- Google және Stack Overflow - бұл сіздің достарыңыз. Бірақ сізге жақсы іздеу шарттарын қолдану керек …
- Сынақ орындығы - бұл қарапайым, арзан нұсқаны оңай алуға болатын әдіс. Құрылыстың қиындығының көпшілігі қолды бір ось айналасында айналдырудан туындайды. Егер сіз ымыраға келсеңіз, онда бәрі әлдеқайда оңай. Менің ойымша, егер білік ұзаққа созылмаса, 4 жалғыз осьтің шегі болуы мүмкін. Егер білік ұзын болса, алдыңғы тақтада 3, артқы тақтада үшеу болуы мүмкін деп ойлаймын …
11 -қадам: Болашақта мүмкін болатын кеңейтімдер …?
Менің келесі қадамдар туралы ойларым келесідей.
- Мен ескі айпадты сағат тіліне айналдырғым келеді. яғни цифрлық сағат жасаңыз. Мүмкін шолғышқа негізделген немесе қосымша. Физикалық сағат негізінен азаматтығы жоқ (яғни, қолдың физикалық күйде болуын қоспағанда, ол қазір қайда екенін білмейді) маған тұрақты деректер қоры қажет болады. Қызыл түйін жергілікті файлдық жүйеге жаза алады, сондықтан мен мұны жасар едім.
- Егер мен мұны істесем, мен оны үйдің сыртынан көргім келеді. Бірақ содан кейін біз шынымен қауіпсіздікті реттеуіміз керек. Бір Wi -Fi желісіне кіру бір бөлек, интернеттен кіру - бұл басқа нәрсе. Мен мұны қалай жасау керектігін білмеймін, бірақ MQTT жазылымы басқа жолмен жұмыс істейді деп ойлаймын (pi ағымдағы күйді жариялайды және оған сыртқы құрылғылар жазылады) …?
- Мен «Шетелде» бір қолды алғым келеді. бірақ бұл OwnTracks тұрғысынан күрделі болуы мүмкін. Мүмкін, үлкен радиустармен бірге ұзын/лат қолданылуы мүмкін бе?
Ұсынылған:
Magicbit [Magicblocks] велосипед тірегінің орналасу сенсоры: 8 қадам
Magicbit [Magicblocks] велосипедінің тіреуішінің орналасу сенсоры: Magicblocks көмегімен Magicbit көмегімен Kickstand Position Sensor жасау үшін қарапайым DIY жобасы. Біз ESP32 -ге негізделген осы жобаның даму тақтасы ретінде magicbit қолданамыз. Бұл жобада кез келген ESP32 даму тақтасын қолдануға болады
[15мин] Уизли сағаты / Үй көрсеткіші кім - TR -064 негізінде (бета): 4 қадам (суреттермен)
[15мин] Уизли сағаты / Үй көрсеткіші кім-TR-064 негізінде (бета): ЖАҢАРТУ: 3-қадамды қараңыз. Ұзақ әңгіме (TL; DR төменде): Біраз уақыт бұрын мен компьютерде шағын bash-сценарий жаздым. тіркелген құрылғылар үшін желіні сканерлеңіз және олардың хост атауларын байланысты атаулармен тізіммен салыстырыңыз. Құрылғы журналға кірген сайын
Gixie сағаты: ең әдемі жарқыраған түтік сағаты: 4 қадам
Gixie сағаты: ең әдемі жарқыраған сағаттар: маған Nixie түтігі өте ұнайды, бірақ ол тым қымбат, мен оған шыдай алмаймын. Мен бұл Gixie сағатын жасауға жарты жыл жұмсадым. Gixie сағаты ws2812 акрил жарығын қолдану арқылы қол жеткізілді, мен RGB түтікшесін жұқа ету үшін барымды саламын
Біреу мені жақсы көреді Орналасу сағаты: 6 қадам (суреттермен)
Біреу мені жақсы көретін жер сағаты: Шетелдегі немесе штаттан тыс жақындарыммен ештеңе айтпайды, мен сен үшін олар қай уақытта екенін білгеннен гөрі жақсы ойлаймын! Менің зейнеткер қайын жұртым Берлинде, Германияда шіркеу миссиясына қызмет етуге дайындалып жатыр еді, ал менің әйелім
Дәнекерлеусіз жұмыс тақтасының орналасу кестелері (қосылатын және ойнатылатын электроника): 3 қадам (суреттермен)
Дәнекерлеусіз жұмыс тақтасының орналасу кестелері (қосылатын және ойнайтын электроника): Бұл тізбекті панельге салудағы кейбір бас ауруларын емдеуге арналған көңілді жүйе. Бұл нақты әлемдегі электронды компоненттермен масштабталған графикалық файлдар жиынтығы. Векторлық сурет салу бағдарламасын қолдана отырып, сіз тек c