Სარჩევი:
- ნაბიჯი 1: მასალები
- ნაბიჯი 2: ელექტრული წრე
- ნაბიჯი 3: სენსორების კოდირება
- ნაბიჯი 4: სენსორების მომზადება და განთავსება
- ნაბიჯი 5: მატრიცის მოდულის მომზადება და განთავსება
- ნაბიჯი 6: შექმენით ის IoT
- ნაბიჯი 7: Raspberry Pi- ს დაკავშირება
- ნაბიჯი 8: მონაცემთა ბაზის შექმნა
- ნაბიჯი 9: ვებსაიტის შექმნა
- ნაბიჯი 10: დაკავშირება მსოფლიო ქსელში
- ნაბიჯი 11: დასრულება გამორთულია
ვიდეო: Raspberry Pi IoT Foosball მაგიდა: 11 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
კეთილი იყოს თქვენი მობრძანება გატეხილი ფეხბურთის მაგიდის ჩემს ვერსიაში, როგორც ახალი მედიისა და საკომუნიკაციო ტექნოლოგიის სტუდენტური პროექტის ნაწილი. მე ძირითადად გავიზარდე ფეხბურთის და აუზის მაგიდების ირგვლივ, ასე რომ, ვიფიქრე, რომ კარგი იქნებოდა ვცდილობდი ერთ -ერთი ამ მოწყობილობის ინტერნეტთან დაკავშირებას.
ძირითადი კონფიგურაცია იყენებს არსებული foosball მაგიდას, რომელიც დაკავშირებულია Raspberry Pi– სთან, რომელსაც შეუძლია შეასრულოს ყველა შემდეგი ამოცანა:
- იყენებს GPIO ქინძისთავებს IR LED/მიმღებების და 8x8 წერტილოვანი მატრიქსის მოდულების მართვისთვის
- მართავს Flask ვებსაიტს nginx– ის გამოყენებით
- მართავს MySQL/MariaDB მონაცემთა ბაზას მონაცემთა შესანახად
ამ პროექტის ხელახლა შესაქმნელად დაგჭირდებათ შემდეგი უნარები:
უკანა მხარე:
- გაეცანით HTML/CSS/Javascript ვებსაიტის კლიენტს
- პითონის გაგება Flask/Flask-SocketIO/Jinja2 ვებსაიტის სერვერისათვის
- ძირითადი ცოდნა MySQL
- იცოდეთ როგორ გაუშვათ ვებ სერვერი
Პროტოტიპი
- ძირითადი ცოდნა, თუ როგორ უნდა დააკავშიროთ ელექტრული წრე
- შედუღება
- ძირითადი გაგება, თუ როგორ უნდა დაწეროთ სკრიპტი პითონში
- Linux– თან მუშაობა (Raspbian)
- ბევრი მოთმინება, რადგან ბევრი გამართვა იქნება ჩართული
ნაბიჯი 1: მასალები
აქ მოცემულია ცხრილის ყველა საჭირო ნაწილი:
- Raspberry Pi Model 3 (გარსაცმით)
- T-Cobbler Pi- ს პურის დაფაზე დასაკავშირებლად
- Foosball მაგიდა (მე გამოვიყენე ძალიან ძველი მაგიდა, რომელიც მსგავსი იყო. უნდა იყოს მზად ხვრელების გაბურღვისთვის მასში)
- MAX7219 Arduino Dot Matrix მოდული (2)
- IR LED გამცემი (2+ რადგან იშლება, მსგავსი)
- IR მიმღებები (2+, რადგან ისინი ასევე იშლება, მსგავსი ერთი)
- ძირითადი solderless breadboard
- ბევრი და ბევრი მავთული (დამოკიდებულია ფოსბოლის მაგიდის ზომაზე)
- მამრობითი კონექტორები (30+)
- ქალი კონექტორები (10+)
- 100-220 Ohm რეზისტორები (4+)
- soldering მასალები
- მავთულის სამაჯურები
- LED დამჭერები
- რამდენიმე ხე/ხრახნი იმ შემთხვევაში, თუ გსურთ ბურთის გადატანა ღარში
ამ პროექტის მთლიანი ღირებულება მთლიანად დამოკიდებულია თქვენი ფოსბოლის მაგიდის ღირებულებაზე (ძვირი). მაგიდის გარდა, მასალები იქნება მაქსიმუმ 150 ევრო.
ნაბიჯი 2: ელექტრული წრე
სანამ შედუღების მცდელობას შეასრულებთ, შეაგროვეთ ყველა კომპონენტი, მე გირჩევთ, რომ ის პირველად შეამოწმოთ დაფაზე. გაუმართავი კომპონენტების შეცვლა უფრო ადვილია, სანამ მათ დახარჯვას საათობით დახარჯავთ.
თავიდან შევეცადე 8x8 LED მატრიცის დანერგვა 74HC595 ცვლის რეგისტრით (პირველი სურათი) და ტრანზისტორი მასივი, მაგრამ ბევრი მავთულის და ძალიან დაბალი გამომუშავების გამო გადავედი MAX7219 წერტილოვანი მატრიცის მოდულზე, რადგან ის იღებს მხოლოდ 5 მავთულს და პირდაპირ ამოძრავებს მას. SPI ავტობუსი.
წრე, რომელიც საბოლოოდ გამოვიყენე, შედგენილია ფრინცინგით. გთხოვთ გაითვალისწინოთ, რომ IR LEDS და მიმღებები შეიძლება იყოს დაკავშირებული თქვენს ნებისმიერ უფასო GPIO ქინძისთავთან.
IR მიმღებები და LED უნდა იყოს ერთმანეთის პირდაპირ და LED- ის ზედა ნაწილი მიმღებისკენ უნდა იყოს მიმართული. იმის გამო, რომ ჩვენ გვსურს სიმულაციის პირდაპირი სხივი, რომელიც შეიძლება გატეხილი იყოს ბურთის მოძრაობით, ამ შემთხვევაში მოხდება მიმღების DATA ხაზის მდგომარეობის შეცვლა 0 -დან 1 -მდე.
ნაბიჯი 3: სენსორების კოდირება
მე ამ პროექტის უმეტესი ნაწილი დაშიფრული მაქვს Pycharm– ით, რადგან ის საშუალებას გაძლევთ მარტივად გამოიყენოთ SSH თქვენს Raspberry Pi– ზე დისტანციური თარჯიმნის გამოყენებით. მე არ გავაანალიზებ, თუ როგორ მუშაობს ეს პროგრამა, მაგრამ ბევრი ინფორმაცია შეგიძლიათ ნახოთ pycharm ვებსაიტზე.
მე ჯერჯერობით ვმუშაობ პროექტზე, მაგრამ მას შემდეგ რაც ყველაფერი დასრულდება, მთელი პროექტი ხელმისაწვდომი იქნება ჩემს github პროფილზე
სენსორების კოდი შედგება 3 კლასისგან, რომლებიც გაშვებულია ფონურ თემაში ჩემს Flask სერვერზე (რაც მოგვიანებით იქნება ახსნილი):
- მიზნის კლასი (ბმული) -ეს ფაილი იწყებს ყველა ცალკეულ კომპონენტს, რომლის გამოძახებაც შესაძლებელია SPI მოწყობილობის/ავტობუსის და პინის ნომრის ჩასმით
- მატრიქსის კლასი (ბმული) -ეს არის მთავარი კლასი MAX7219 მოდულის გასააქტიურებლად
- LED და მიმღების კლასი (ბმული) - ეს არის ძირითადი კლასი ინფრაწითელი შესვენების სხივის გასაძლიერებლად ცალკეული ძაფების გამოყენებით RPi პროცესორის დატვირთვის შესამცირებლად
LED და მიმღები ორივე მუშაობს 38 კჰც სიხშირეზე და მიმღებები ყოველთვის ელიან 50% ზევით და 50% ქვემოთ პულსის გამართულად მუშაობას.
ნაბიჯი 4: სენსორების მომზადება და განთავსება
ახლა ჩვენ ვაპირებთ IR LED და მიმღების მომზადებას. ცხრილის სურათზე შეგიძლიათ იპოვოთ ადგილები, სადაც უნდა განთავსდეს RPi და სენსორები.
მაგრამ ჯერ ჩვენ უნდა მოვამზადოთ გაყვანილობა:
- დარწმუნდით, რომ გაზომეთ მავთულის რაოდენობა RPi/breadboard– დან სენსორის ადგილმდებარეობამდე
- შეაერთეთ IR მიმღების ქინძისთავები მავთულის ერთ ბოლოზე (COM/GND/V+)
- შეაერთეთ მამრობითი კონექტორის ნაწილები მავთულის მეორე ბოლოს
ახლა ჩვენ ვაპირებთ მოვამზადოთ მაგიდა:
- გააკეთეთ ძირითადი ნახაზი (სურათზე დაყრდნობით) სად უნდა გაბურღოთ. ძალიან მნიშვნელოვანია, რომ 2 ხვრელი გასწორდეს ერთმანეთზე, რადგან ეს იქნება სხივის მდებარეობა.
- გაბურღეთ ხვრელები
- თუ თქვენ გაქვთ რამოდენიმე LED დამჭერი (ბმული), შეგიძლიათ განათავსოთ ისინი ხვრელში, რათა ის უფრო მტკიცე გახდეს
- ჩადეთ + ფირზე LED + მიმღები ორივე მხარეს
- მიამაგრეთ მავთულები + მიამაგრეთ ისინი ხეზე, რათა მათ არ გადაკვეთონ ძალიან ბევრი
- ჩადეთ მამრობითი ქინძისთავები პურის დაფაზე ადრე გათვალისწინებული სქემის მიხედვით
ნაბიჯი 5: მატრიცის მოდულის მომზადება და განთავსება
შემდეგი ჩვენ ვაპირებთ დააკავშიროთ 2 LED მატრიქსის მოდული
Შენიშვნა:
იმის გამო, რომ მე ვიყენებდი ძველი ფეხბურთის მაგიდას, სიგარეტის საყრდენების გამო უკვე ხვრელები იზრდებოდა ზედა ნაწილისკენ. თუ ეს არ გაქვთ, დაგჭირდებათ მათი შექმნა.
მავთულის მოსამზადებლად:
- გაზომეთ მავთული პურის დაფიდან მაგიდის ზედა ნაწილისკენ
- შეაერთეთ რამდენიმე ქალი კონექტორი მავთულის პირველ ბოლოს
- შეაერთეთ რამდენიმე მამრობითი კონექტორი მავთულის მეორე ბოლოში
მატრიცის განთავსება:
- ამოიღეთ მატრიცა ზედა ხვრელში
- Strap + ლენტი მავთულები შიგნით ხე, რათა თავიდან ავიცილოთ გადაკვეთა
- ჩადეთ მამრობითი ქინძისთავები პურის დაფაზე ადრე მოწოდებული ცირკის მიხედვით
რაღაც მომენტში დავამატებ წვრილმანი წვრილმანი ნაბიჯს მატრიქსის მოდულის გარსაცმის დასამატებლად, მაგრამ ახლა ისინი შიშველები არიან.
ნაბიჯი 6: შექმენით ის IoT
თუ თქვენ უბრალოდ გსურთ დარეგისტრირდეთ და აჩვენოთ ქულები, შეგიძლიათ დაასრულოთ პროექტი მცირე პითონის სკრიპტის დაწერით, რომელიც მარყუჟდება მანამ, სანამ ერთი ქულა არ მიაღწევს 9 -ს და შემდეგ გადატვირთულია.
თუმცა, თუ გსურთ თქვენი მაგიდის ინტერნეტთან დაკავშირება, მომდევნო რამდენიმე ნაბიჯი სწორედ თქვენს ხეივანშია.
მომდევნო რამდენიმე ნაბიჯში ჩვენ განვიხილავთ შემდეგს:
- Raspberry Pi– ის კონფიგურაცია
- შენახვისთვის მონაცემთა ბაზის შექმნა
- ვებგვერდის შექმნა
- ონლაინ რეჟიმში განთავსება
ამ ეტაპზე, თუ თქვენ იცნობთ git– ს, გირჩევთ შექმნათ საცავი GitHub/GitLab– ზე, რათა თვალყური ადევნოთ თქვენს ფაილებს. თუ თქვენ არ ხართ, შეგიძლიათ შექმნათ საქაღალდე იგივე სტრუქტურით, როგორც სურათზე.
სრული პროექტი მალე ხელმისაწვდომი იქნება GitHub– ზე. თუმცა დროებითი rar ფაილი ყველა საჭირო ფაილით არის შესაძლებელი.
ნაბიჯი 7: Raspberry Pi- ს დაკავშირება
შემდეგ ჩვენ ვაპირებთ ჟოლოს გარე გარემოს დაყენებას, ამისათვის თქვენ უნდა შეასრულოთ შემდეგი ნაბიჯები:
- დაუკავშირდით SSH– ს თქვენს Rasberry Pi– ს (შეგიძლიათ გამოიყენოთ PuTTY)
- შექმენით საქაღალდე (მაგალითი mkdir პროექტი) და გადადით ამ საქაღალდეში cd ბრძანების გამოყენებით
- შექმენით ვირტუალური პითონის გარემო ამ საქაღალდეში python3 -m venv --system-site-packages env ბრძანების გამოყენებით
- გააქტიურეთ ვირტუალური თარჯიმანი წყარო/env/bin/activ ბრძანებით
- დააინსტალირეთ პაკეტები მოთხოვნებიდან. Txt python -m pip დააინსტალირეთ პაკეტის სახელის ბრძანება
- გადაიტანეთ ფაილები ადრე მოწოდებული project_example.rar ფაილიდან SSH თქვენი პროექტის საქაღალდეში
ახლა თქვენ უნდა შეგეძლოთ გაუშვათ სრული პროექტი თქვენს Raspberry Pi– ზე. მე გირჩევთ გამოიყენოთ Python IDE, როგორიცაა PyCharm, რომელიც საშუალებას მოგცემთ გამოიყენოთ თქვენი დისტანციური თარჯიმნის შეცდომების გამოსწორების მიზნით SSH და პირდაპირ ატვირთოთ ცვლილებები საჭიროების შემთხვევაში.
ნაბიჯი 8: მონაცემთა ბაზის შექმნა
ახლა თქვენ უნდა შექმნათ ძალიან ძირითადი მონაცემთა ბაზა, ამ მოდელზე დაყრდნობით.
ამის უმარტივესი გზაა შექმნათ თქვენი მონაცემთა ბაზა MySQL სამუშაო მაგიდაზე, სადაც ასევე შეგიძლიათ გააკეთოთ ტესტირება.
დასრულების შემდეგ შეგიძლიათ თქვენი მონაცემთა ბაზის ნაგავსაყრელის ექსპორტი და ატვირთვა თქვენს RPi– ზე და შემდეგ მისი შესრულება sudo mariadb <pathtofile/file.sql
ნაბიჯი 9: ვებსაიტის შექმნა
შემდეგ თქვენ შეგიძლიათ გააანალიზოთ (და გამოიყენოთ) project_example.rar ფაილში მოცემული კოდი.
მთავარი ფაილია Flask.py, რომელიც არის ამ პროექტის პური და კარაქი:
- გაშვებული აქვს Flask-SocketIO აპლიკაცია, რომელიც ამუშავებს ვებგვერდის უკანა მხარეს
- ქმნის კავშირს მონაცემთა ბაზასა და Flask- ს შორის
- უზრუნველყოფს შესვლის შემოწმებას და მომხმარებლის რეგისტრაციას
- გთავაზობთ აუცილებელ კოდს იმის შესახებ, თუ როგორ უნდა ითამაშოს თამაში, იყენებს socketio ვებსაიტს თამაშის დროს რეალურ დროში განახლების მიზნით
- ათავსებს თამაშის შედეგებს მონაცემთა ბაზაში
სტატიკურ და შაბლონურ საქაღალდეებში შეგიძლიათ ნახოთ HTML/CSS/JS, რომლებიც უზრუნველყოფენ ვებგვერდის წინა ნაწილს. მოგერიდებათ შეცვალოთ ეს თქვენი შეხედულებისამებრ.
ნაბიჯი 10: დაკავშირება მსოფლიო ქსელში
ჩვენი ვებსაიტის ვებთან დასაკავშირებლად ჩვენ გამოვიყენებთ nginx და uwsgi. პროექტის მაგალითში შეგიძლიათ იპოვოთ საჭირო ფაილები conf საქაღალდეში.
უპირველეს ყოვლისა თქვენ უნდა განაახლოთ შემდეგი ამ ფაილებში:
- Uwsgi-flask.ini– ში თქვენ უნდა შეცვალოთ ვირტუალური პარამეტრის გზა თქვენს თარჯიმანზე
- Project1-flask.service– ში თქვენ უნდა განაახლოთ ფაილის [სერვისის] ნაწილი თქვენი სერთიფიკატებით და ასოცირებული ფაილების გზებით
- Nginx ფაილში თქვენ უნდა განაახლოთ სერვერი და მდებარეობა / ბილიკი თქვენს დაკავშირებულ სოკეტში
შემდეგი თქვენ უნდა შეცვალოთ ნაგულისხმევი ვებ სერვერის ფაილი თქვენი nginx კონფიგურაციის ფაილის ადგილმდებარეობით, ქვემოთ მოცემულია linux ბრძანებების მაგალითი ამის გასაკეთებლად
- me@my-rpi:/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
- me@my-rpi: ~/project1 $ sudo rm/etc/nginx/საიტები-ჩართული/ნაგულისხმევი t
- me@my-rpi:/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
- me@my-rpi: ~/project1 $ sudo systemctl გადატვირთეთ nginx.service
დაბოლოს, თქვენ უნდა დაამატოთ პერსონალური სერვისები თქვენს სისტემურ საქაღალდეში, ეს არის მაგალითი იმისა, თუ როგორ უნდა გავაკეთოთ ეს:
- me@my-rpi: ~/project1 $ sudo cp conf/project1-*. სერვისი/etc/systemd/system/
- me@my-rpi: ~/project1 $ sudo systemctl daemon-reload
- me@my-rpi: ~/project1 $ sudo systemctl პროექტის დაწყება 1-*
- me@my-rpi: ~/project1 $ sudo systemctl სტატუსი პროექტი 1-*
თუ გსურთ ვებ სერვერი დაიწყოს თქვენი ჟოლოს ჩატვირთვისას, თქვენ უნდა გამოიყენოთ sudo systemctl ჩართვა project1-*. მომსახურების ბრძანება.
თუ ეს სწორად გაკეთდა, სისტემის გადატვირთვის შემდეგ თქვენი ვებ – გვერდი უნდა მუშაობდეს თქვენს IP მისამართზე. თუ გსურთ ამ კონფიგურაციის ერთ-ერთი ფაილის რედაქტირება, თქვენ ყოველთვის გჭირდებათ სერვისის შეწყვეტა, ფაილების გადატვირთვა და გამოიყენეთ დემონ-გადატვირთვის ბრძანება, რასაც მოყვება დაწყება, წინააღმდეგ შემთხვევაში ცვლილებები არ იქნება ეფექტური.
ნაბიჯი 11: დასრულება გამორთულია
ამ სასწავლო ინსტრუქციის ბოლო ნაწილის აკრეფისას, ეს პატარა სკოლის პროექტი ჯერ კიდევ მიმდინარეობს.
მე გავატარე უთვალავი საათი ამის მისაღწევად 2.5 კვირაში. მიუხედავად იმისა, რომ ყველაფერი ცოტათი დაჩქარდა, მე მაინც ვამაყობ იმით, რასაც მივაღწიე. ასამბლეის ფაზაში მე შემხვდა უამრავი შეცდომები/შეცდომები/გაუმართავი სენსორები, ასე რომ ნუ იქნებით გულგატეხილნი, თუკი ყველაფერი არ მუშაობს პირველ ცდაზე.
საუკეთესო რისი გაკეთებაც შეგიძლია არის ითხოვო ან მოიძიო დახმარება ინტერნეტში, არის ბევრი უკეთესი ცოდნის მქონე ადამიანი, ვისაც დიდი სურვილი აქვს დაგეხმაროს.
ბოლო, მაგრამ არანაკლებ მინდა მადლობა გადავუხადო ჩემს მასწავლებლებს ახალი მედია და საკომუნიკაციო ტექნოლოგიებიდან, რომ ბევრი რჩევა მომცეს და დამეხმარნენ ამ პროექტის დასრულებაში.
გირჩევთ:
Arduino ინტერაქტიული LED ყავის მაგიდა: 6 ნაბიჯი (სურათებით)
Arduino ინტერაქტიული LED ყავის მაგიდა: მე გავაკეთე ინტერაქტიული ყავის მაგიდა, რომელიც აანთებს led განათებას ობიექტის ქვეშ, როდესაც ობიექტი მაგიდაზეა განთავსებული. მხოლოდ leds, რომლებიც ქვეშ ობიექტი იქნება განათებული. ის ამას ეფექტურად იყენებს სიახლოვის სენსორების გამოყენებით და როდესაც პროქსიმიტი
Raspberry Pi დისტანციური სამუშაო მაგიდა Mac– ისთვის: 11 ნაბიჯი
Raspberry Pi დისტანციური დესკტოპი Mac- ისთვის: ეს არის სახელმძღვანელო, თუ როგორ უნდა დააინსტალიროთ tightvnc, რომ გამოიყენოთ Raspberry Pi სამუშაო მაგიდა Mac- ის გამოყენებით, როდესაც Pi მუშაობს უსათაურო რეჟიმში
LED ხმის რეაქტიული უსასრულობის კუბი ბოლო მაგიდა: 6 ნაბიჯი (სურათებით)
LED ხმის რეაქტიული უსასრულობის კუბის მაგიდა: ვაი! უი! რა მაგარი ეფექტია! - ეს არის რამოდენიმე რამ, რასაც მოისმენთ სახელმძღვანელოს დასრულებისთანავე. სრულიად მომაბეზრებელი, ლამაზი, ჰიპნოტიკური, ხმის რეაქტიული უსასრულობის კუბი. ეს არის მოკრძალებულად მოწინავე შედუღების პროექტი, მე დამჭირდა დაახლოებით 12 კაცი
Arduino პორტატული სამუშაო მაგიდა ნაწილი 3: 11 ნაბიჯი
Arduino პორტატული სამუშაო მაგიდა ნაწილი 3: თუ თქვენ ნახეთ 1, 2 და 2B ნაწილები, მაშინ ამ პროექტში ჯერ არ ყოფილა ბევრი Arduino, მაგრამ მხოლოდ რამდენიმე დაფის მავთული და ა.შ. ეს არ არის და ინფრასტრუქტურის ნაწილი. უნდა აშენდეს დანარჩენი სამუშაოების დაწყებამდე. ეს არის ელექტრონიკა და
WebFoos - ჭკვიანი Foosball მაგიდა: 6 ნაბიჯი
WebFoos - ჭკვიანი Foosball მაგიდა: Howest– ში ჩემი პირველი სკოლის პროექტისთვის, მე გადავწყვიტე Foosball– ის ჭკვიანი მაგიდის გაკეთება. ცხრილი აწერს გოლებს და ინახავს ჩატარებულ მატჩებს, მატჩების სტატისტიკას და მომხმარებლის/გუნდის სტატისტიკას ონლაინ ვებგვერდზე