Სარჩევი:

ჭკვიანი კედლის კალენდარი: 5 ნაბიჯი
ჭკვიანი კედლის კალენდარი: 5 ნაბიჯი

ვიდეო: ჭკვიანი კედლის კალენდარი: 5 ნაბიჯი

ვიდეო: ჭკვიანი კედლის კალენდარი: 5 ნაბიჯი
ვიდეო: კახი კალაძე დატროლეს 😀🤣🤣 2024, ივლისი
Anonim
ჭკვიანი კედლის კალენდარი
ჭკვიანი კედლის კალენდარი

მე და ჩემს მეუღლეს გვქონდა კლასიკური ქაღალდის კედლის კალენდარი, რომელზედაც ჩვენ აღვნიშნეთ მნიშვნელოვანი თარიღები. ჩვენ ასევე ვიყენებთ Google კალენდარს ჩვენს სმარტ ტელეფონებზე მოვლენების აღსანიშნავად, ასე რომ ეს გულისხმობდა ორმაგ მუშაობას. ასე რომ, მე გადავწყვიტე ავაშენო რაიმე სახის ჭკვიანი კედლის კალენდარი, რომელიც აჩვენებს ჩვენს შეხსენებებს, მოვლენებს და სხვა მონაცემებს. ვინაიდან მე მაქვს სხვადასხვა ძველი ელექტრონული ნაწილები, ჩემი მიზანი იყო მათი მაქსიმალურად ხელახალი გამოყენება და კალენდრის შედგენა რაც შეიძლება ნაკლები ხარჯებით.

ამ გაკვეთილში მე გაჩვენებთ, თუ როგორ უნდა ავაშენოთ ჭკვიანი კედლის კალენდარი, მოვლენების ჩვენება რამდენიმე Google ანგარიშიდან. იგი ასევე აჩვენებს დროს, თარიღს, ამინდს, ტემპერატურას და დამატებით ინფორმაციას. ის იკვებება Raspberry Pi კომპიუტერით, რომელსაც აქვს პასიური ინფრაწითელი სენსორის (PIR) მოძრაობის სენსორი, რომელიც თან ერთვის ისე, რომ ეკრანი ჩართოთ, როდესაც მოძრაობა გამოვლენილია ოთახში, მაგრამ გამორთულია რამოდენიმე წუთის უმოქმედობის შემდეგ. ეს გაკვეთილი ემყარება ინტერნეტში აღმოჩენილ რამდენიმე სხვა გაკვეთილს და მათ უკეთეს გაგებისთვის მივცემ ბმულებს. საჭიროა პროგრამირების ძირითადი ცოდნა (HTML, პითონი,…).

ნაბიჯი 1: აპარატურა

როგორც უკვე აღვნიშნეთ, მე შევეცადე გამომეყენებინა იმდენი ძველი ელექტრონული ნაწილი, რომ შეემცირებინა ხარჯები. თუმცა ზოგიერთი ნივთი უნდა შემეძინა, ამიტომ ჩამოვთვლი ყველაფერს, რაც აუცილებელია მშენებლობისთვის.

- ჟოლოს პი ნაკრები. თავდაპირველად მე გამოვიყენე ჩემი ძველი მოდელი 2 სხვა პროექტიდან. ის მუშაობდა, მაგრამ ვებ გვერდის რედაქტირებამ და გადატვირთვამ ბევრი დრო დამჭირდა, ამიტომ საბოლოოდ გადავედი 3 მოდელზე, რომელიც უფრო თავისუფლად მუშაობს https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = ჟოლო+პი+ნაკრები და _sacat = 0

- LCD ეკრანი. მე გამოვიყენე ეკრანი ჩემი ძველი ლეპტოპიდან, ამიტომ მჭირდებოდა მხოლოდ LVDS დრაივერის დაფის ყიდვა მისთვის და კვების ბლოკი https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ მძღოლი+LVDS+დაფა & _sacat = 0

პლასტიკური შენახვის ყუთი ელექტრონიკისთვის

- პასიური ინფრაწითელი მოძრაობის სენსორი

- AM2302 ტემპერატურის/ტენიანობის სენსორი

- შავი პლასტიკური სლაიდების შემკვრელი LCD ჩარჩოსთვის

- სხვადასხვა კაბელები (HDMI, 5.5 მმ DC სიმძლავრისთვის, solderless breadboard jumper კაბელები, …)

ნაბიჯი 2: LCD ეკრანის შექმნა

LCD ეკრანის შექმნა
LCD ეკრანის შექმნა
LCD ეკრანის შექმნა
LCD ეკრანის შექმნა
LCD ეკრანის შექმნა
LCD ეკრანის შექმნა

მე გამოვიყენე LCD ეკრანი ჩემი ძველი მოძველებული ლეპტოპიდან. არსებობს რამდენიმე გაკვეთილი, თუ როგორ უნდა გავაკეთოთ ეს, მე ამას მივყევი:

www.instructables.com/id/How-to-reuse-the-old-LCD-Screen-of-your-broken-Lap/

მე დავშალე ჩემი ძველი ლეპტოპის საფარი, ამოვიღე LCD დისპლეი და შემდეგ შევუკვეთე სწორი LVDS დრაივერის დაფა. გამყიდველს მივაწოდე პროდუქტის კოდი, რომელიც LCD– ის უკანა მხარეს არის ნაპოვნი, ჩემს შემთხვევაში ეს არის LP171WE3 (TL) (A2) - ბოლო სურათზე იხილეთ ქვედა მარჯვენა ეტიკეტი და შემდეგ მან გამომიგზავნა შესაბამისი LVDS. გთხოვთ გაითვალისწინოთ, რომ თქვენ ასევე დაგჭირდებათ კვების ბლოკი ეკრანისთვის, ამიტომ სთხოვეთ გამყიდველს ისიც გამოაგზავნოს. მე ასევე შევიძინე ლამაზი 14.5 × 7.5 × 2 სმ პლასტიკური ყუთი, რომლითაც მძღოლის დაფა ლამაზად ჯდება და ვამაგრებ LCD– ის უკანა მხარეს.

ახლა LCD ეკრანს აქვს მეტალის ჩარჩო, რომელიც არ გამოიყურება ლამაზად. თავდაპირველად მე სპრეით შევღებე შავად, მაგრამ საღებავმა დაიწყო კანი. მე ავიღე ოთხი შავი პლასტიკური სლაიდ-შემკვრელი, რომლებიც, როგორც წესი, გამოიყენება ქაღალდის ფურცლების დასამაგრებლად, შესაბამისად მოვიწესრიგე და დავამატე ჩარჩოს დასაფარად. ეს კარგად გამოიყურებოდა, ამიტომ მე დავუკავშირე ყველა კაბელი, ჩართული HDMI ჩემს ძველ ჟოლოს Pi და Voila– სთან - ის მუშაობდა! ეკრანზე გამოსახული იყო სურათი, ასე რომ, მე მზად ვიყავი შემდეგ საფეხურზე გადავსულიყავი - რა ინფორმაცია გამომეჩინა ეკრანზე და როგორ გამოეჩინა იგი.

ნაბიჯი 3: პროგრამული უზრუნველყოფის დაყენება

როდესაც ინტერნეტში ვეძებდი რჩევებს კალენდრის შესაქმნელად, მე შთაგონებული ვიყავი ამ გვერდით https://dakboard.com/site. ისინი უზრუნველყოფენ მზა პროდუქტს (ჩვენება, კომპიუტერი და სამუშაო პროგრამული უზრუნველყოფა), მაგრამ მათ ასევე აქვთ შესანიშნავი სახელმძღვანელო წვრილმანი გადაწყვეტისთვის (https://blog.dakboard.com/diy-wall-display/). მე გირჩევთ, მიჰყევით ამ გაკვეთილს, სულ მცირე, პირველი ნაწილისთვის ჟოლოზე სისტემის მომზადებისა და დაყენების ინსტრუქციით, რათა ბრაუზერი ავტომატურად ჩატვირთოს სასურველ ვებ გვერდზე ჩატვირთვისას.

ეს მშვენივრად მუშაობდა, თუმცა მე ვეძებდი რაიმე გამოსავალს, რომელიც უფრო მორგებული იქნებოდა ჩემი სურვილის შესაბამისად. მე გადავწყვიტე შევქმნა საკუთარი ვებ სერვერი და შევქმნა ვებ გვერდი, რომელიც კალენდრის გარდა აჩვენებს დამატებით ინფორმაციას. მე ავირჩიე Wordpress.org, რადგან ის კარგად არის დოკუმენტირებული და აქვს კარგი მხარდაჭერა და დიდი საზოგადოება, რომელიც დაგეხმარებათ. აქ მოცემულია სახელმძღვანელო, თუ როგორ უნდა დააინსტალიროთ Wordpress Raspberry Pi– ზე: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Wordpress– ით დაინსტალირებული, დრო იყო შემექმნა ჩემი მთავარი გვერდი. თქვენ შეგიძლიათ გამოიყენოთ ერთი მრავალი შემოთავაზებული თემადან, ან დიზაინი ნულიდან. ყოველ შემთხვევაში, ამისათვის საჭიროა HTML პროგრამირების ცოდნა.

მე შევქმენი ჩემი გვერდი ისე, რომ მარცხენა მხარეს კალენდარი ნაჩვენები იყოს (https://sl.wordpress.org/plugins/google-calendar-events/), ხოლო მარჯვენა მხარეს დრო და თარიღი (https://www.timeanddate.com/clocks/free.html და https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). ამინდის პროგნოზი მოცემულია ამ გვერდიდან (https://www.1a-vreme.si/vremensko-okno/), რომელიც იძლევა პროგნოზირების ვიჯეტს სლოვენიის ქალაქებისთვის, მაგრამ მე ვფიქრობ, რომ სხვა ქვეყნების ვიჯეტები ასევე მოიძებნება ინტერნეტში. ტემპერატურა გროვდება AM2302 სენსორის გამოყენებით (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), როგორც ეს განმარტებულია ამ თავის ბოლოს. ბოლოში არის ყოველდღიური ყოველდღიური დათვლის მარტივი ქრონომეტრი, რომელიც აჩვენებს რამდენი დღე დარჩა რაიმე მოვლენისთვის (საინტერესოა ჩემი შვილების ცოდნა, რამდენი დღე მოუწევთ რაიმეს ლოდინს). ზედა მარჯვენა კიდეში არის MetaSlider მოდული (https://wordpress.org/plugins/ml-slider/), რომელიც შემთხვევით გადადის ჩემი ოჯახის რამოდენიმე სურათზე. გარდა ამისა, მე გამოვიყენე Background Slider მოდული (https://sl.wordpress.org/plugins/background-slider-master/), რათა მაჩვენო შემთხვევითი სურათი უფრო ლამაზი ფონისთვის.

როგორც უკვე აღვნიშნეთ, შიდა ტემპერატურა გროვდება AM2302 სენსორის გამოყენებით. არსებობს მრავალი გაკვეთილი, თუ როგორ უნდა მიიღოთ ტემპერატურა, მე ამას მივყევი: https://www.modmypi.com/blog/am2302-temphumidity-sensor. მოგვიანებით ეს სენსორი სხვა Raspberry Pi– ზე გადავიტანე, რომელზეც Home Assistant მუშაობს, რადგან მისი DHT Sensor კომპონენტის გამოყენებით მნიშვნელობების წაკითხვა და გამოქვეყნება უფრო ადვილია (https://www.home-assistant.io/components/sensor.dht/) რა სახლის ასისტენტს ასევე შეუძლია შეაგროვოს გარე ტემპერატურა ამინდის სხვადასხვა კომპონენტის გამოყენებით, მე გამოვიყენე YR.no კომპონენტი (https://www.home-assistant.io/components/sensor.yr/). ამასთან, მე დავწერე ავტომატიზაციის სკრიპტი, რომ შევიკრიბო შიდა/გარე ტემპერატურა ამ კომპონენტებიდან და ჩავწერო ტექსტურ ფაილში, რომელიც შემდეგ გამოჩნდება ჩემს კედლის კალენდარში. სახლის ასისტენტის შესახებ დამატებითი ინფორმაციისთვის იხილეთ საწყისი გვერდი (https://www.home-assistant.io/).

ნაბიჯი 4: სურვილისამებრ - ეკრანის გამორთვა

ახლა ჩვენ გვაქვს კალენდარი შექმნილი და მუშაობს, ზუსტად ისე, როგორც ჩვენ მოგვწონს. მაგრამ ჩვენ არ გვინდა, რომ ეკრანი ჩართული იყოს 24/7. ჩვენ გვინდა, რომ ეს გაგრძელდეს, როდესაც ვინმე სახლშია. ასევე ჩვენ არ გვინდა, რომ ის შუაღამისას იყოს ჩართული, როდესაც ტუალეტში მივდივართ, ძალიან ნათელია! ასე რომ, ჩვენ მივამაგრებთ ინფრაწითელ სენსორს, რომ შევამჩნიოთ, როდესაც ვიღაც დგას მის წინ და დავამატებთ დროის ლიმიტს, როდესაც ის უნდა ჩართოთ.

გთხოვთ გაითვალისწინოთ, რომ ჩემი პროგრამირების უნარები საკმაოდ შეზღუდულია, ამიტომ ქვემოთ მოყვანილი ვერ იქნება ოპტიმალური, რადგან მე ავირჩიე იგი სხვადასხვა ონლაინ ფორუმებიდან და გაკვეთილებიდან, მაგრამ არსებითად ის მუშაობს. მიუხედავად ამისა, ნებისმიერი რეკომენდაცია მაინც მისასალმებელია. პირველი ჩვენ ვიწყებთ ტესტს მონიტორის ხელით ჩართვის/გამორთვისთვის. ამისათვის ჩვენ შევქმნით ორ ფაილს (მაგალითად monitor_on.sh და monitor_off.sh) და მასში დავწერთ კოდს. ამის უმარტივესი გზაა შეხვიდეთ თქვენს ჟოლოში SSH და ჩაწერეთ

sudo nano monitor_on.sh

და ჩაწერეთ შემდეგი კოდი

tvservice -სასურველი;

startx/usr/bin/graphical_launcher `fgconsole`

დააჭირეთ CTRL+X შესანახად და გასასვლელად, შემდეგ შექმენით მეორე ფაილი

sudo nano monitor_off.sh

და ჩაწერეთ შემდეგი კოდი

tvservice -გამორთვა;

კვლავ დააჭირეთ CTRL+X შესანახად და გასასვლელად. გახადეთ ეს ახლად შექმნილი ფაილები შესრულებადი:

sudo chmod +x მონიტორი_ონ.შ

sudo chmod +x monitor_off.sh

ახლა რომ სცადოთ მუშაობს თუ არა ეს ბრძანებები, ჩაწერეთ

sudo./monitor_off.sh

sudo./monitor_on.sh

მონიტორი უნდა იყოს გამორთული და ჩართული შესაბამისად. მე შევამჩნიე, რომ Raspberry Pi 2 – ზე მონიტორის ჩართვას თითქმის 10 წამი დასჭირდა. Raspberry Pi 3-ზე 1-2 წამი სჭირდება. შემდეგ ჩვენ დავაკავშირებთ ინფრაწითელ სენსორს, რომელიც გამოიწვევს ამ სკრიპტებს. ისევ და ისევ, არსებობს მრავალი გაკვეთილი, თუ როგორ უნდა შეიქმნას Raspberry Pi და PIR, მე ამას მივყვებოდი: ძირითადად, შექმენით ფაილი ნანო რედაქტორის გამოყენებით (მაგალითად motion_sensor.py) და ჩაწერეთ მასში შესაბამისი პითონის კოდი. ქვემოთ მოცემულია ჩემი ფაილის მაგალითი:

იმპორტი RPi. GPIO როგორც GPIOimport დროიმპორტი sysimport ქვეპროცესორული იმპორტის თარიღი როგორც dtimport osGPIO.setwarnings (false) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIOt_min = # time.time () SHUTOFF_DELAY = 180 # წამი ხოლო მართალია: i = GPIO.input (17) თუ i == 0: # როდესაც მოძრაობის სენსორიდან გამოსვლა დაბალია, ჩართეთ მონიტორი OFF თუ არ არის გამორთული და დრო. დრო ()> (ბოლო_მოძრაობა_დრო + SHUTOFF_DELAY): დაბეჭდეთ "შეჭრის გარეშე", iturned_off = Truetime.sleep (1) subprocess.call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #მოძრაობის სენსორიდან გამოსვლისას არის HIGH, ჩართეთ მონიტორი ON ბეჭდვა "შემოჭრილი აღმოჩენილია", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () if turn_off და dt.datetime.now (). საათი> 5 და dt.datetime. ახლა (). საათი <23: turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) if _name_ == '_main _': try: main () KeyboardIntrupt: GPIO.cleanup ()

გაითვალისწინეთ, რომ”GPIO.setup (17, GPIO. IN)” მიუთითებს, რომ PIR– დან გამომავალი პინი დაკავშირებულია Raspberry Pi– ს პინ 17 – თან. რომელი პინია ეს დამოკიდებულია იმაზე, განსაზღვრავთ თუ არა GPIO.setmode (GPIO. BOARD) თუ GPIO.setmode (GPIO. BCM). განსხვავება აიხსნება აქ: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-bet--board-and-bcm-for-gpio-pin-numbering. მე მაქვს # GPIO. BOARD– ის წინ, ამიტომ იგნორირებულია და GPIO. BCM გამოიყენება.

შენიშნეთ ხაზი

SHUTOFF_DELAY = 180 #წამი

აქ ნათქვამია, რამდენი ხანია ჩართული მონიტორი ბოლო მოძრაობის გამოვლენიდან, სანამ ის გამორთულია. ეს სასარგებლოა, რადგან არ მინდა, რომ მონიტორი მუდმივად გათიშული/ჩართული იყოს მის გვერდით, მაგრამ მინდა, რომ ის ჩართული იყოს გარკვეული დროის განმავლობაში, სანამ ის გამორთულია. მე ავირჩიე 180 წამის ინტერვალი, ისე რომ მონიტორი გამორთულია ბოლო მოძრაობის გამოვლენიდან დაახლოებით 3 წუთის შემდეგ.

საბოლოოდ, ეს ხაზი

თუ გამორთულია და dt.datetime.now (). საათი> 6 და dt.datetime.now (). საათი <23:

აცხადებს, რომ მონიტორი ჩართულია მხოლოდ 6:00 საათიდან 23:00 საათამდე, ასე რომ ის არ მაწუხებს ღამის საათებში. ხაზები

ამობეჭდვა "არავითარი შემტევი", ე.ი

და

ბეჭდვა "აღმოჩენილია თავდამსხმელი", ე.ი

განკუთვნილია მხოლოდ სკრიპტის შესამოწმებლად, შეგიძლიათ წაშალოთ ისინი მოგვიანებით, როდესაც ის იმუშავებთ. ახლა სცადეთ სკრიპტი:

sudo python motion_sensor.py

თქვენ უნდა ნახოთ შეტყობინებები "აღმოჩენილია თავდამსხმელი", თუ სენსორზე მაღლა ასრიალებთ, წინააღმდეგ შემთხვევაში ეს იქნება "არანაირი შემტევი". როდესაც ეს სკრიპტი შემოწმებულია და მუშაობს, დააყენეთ ის ჩატვირთვისას დაიწყოს:

sudo nano ~/.config/lxsession/LXDE-pi/autostart

და დაამატეთ შემდეგი ხაზი

@sudo/usr/bin/python /home/pi/motion_sensor.py

რა თქმა უნდა, თქვენ უნდა მიუთითოთ თქვენს მიერ შექმნილი პითონის სკრიპტის ფაილის სწორი სახელი.

ნაბიჯი 5: გათიშეთ კალენდარი

ყველაფრის გათვალისწინებით, დროა კალენდარი კედელზე ჩამოკიდოთ!

თავდაპირველად მე ვფიქრობდი, რომ მალავდა Raspberry Pi– ს LCD ეკრანის მიღმა, ისე რომ საჭირო ყოფილიყო მხოლოდ ერთი კაბელი (DC ენერგია). მაგრამ რადგან ჟოლო მუშაობს 5 ვ -ზე და LCD ეკრანი მუშაობს 12 ვ -ზე, დამჭირდება დამატებითი ტრანსფორმატორი. ასევე, ჟოლოს კოლოფი საკმაოდ სქელია, რაც იმას ნიშნავს, რომ LCD ეკრანი კედლიდან დაახლოებით 3 სანტიმეტრით იქნება დაშორებული. ასე რომ, მე მივატოვე ეს და მხოლოდ LCD ელექტრონიკა დავტოვე LCD– ის უკან, ისე რომ ის ახლა კედელზე 1 სანტიმეტრზე ნაკლები მანძილითაა დაშორებული. შევიძინე ორი 5 მეტრი სიგრძის კაბელი, ერთი HDMI და ერთი 5, 5 მმ DC დენის წყაროსთვის. ორივე კაბელი თეთრია, კედლის მსგავსად, რაც იმას ნიშნავს, რომ ისინი დიდად არ გამოირჩევიან. მე კედელზე მოვათავსე LCD და ჟოლო მოვათავსე მაცივრის თავზე მოპირდაპირე კედელზე, ასე რომ ის ძირითადად იმალება, მაგრამ მაინც ადვილად მისაწვდომია.

გირჩევთ: