Სარჩევი:

CleanBot by Guillaume Meurillon: 8 ნაბიჯი
CleanBot by Guillaume Meurillon: 8 ნაბიჯი

ვიდეო: CleanBot by Guillaume Meurillon: 8 ნაბიჯი

ვიდეო: CleanBot by Guillaume Meurillon: 8 ნაბიჯი
ვიდეო: Omgaan met verschil in beeld en muziek 2024, ივლისი
Anonim
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon

ეს არის სახელმძღვანელო იმ პროექტისთვის, რომელიც მე გავაკეთე სკოლისთვის. მიზანი იყო შეიქმნას მოწყობილობა Raspberry Pi– ით, რომელიც ინტერნეტთან იყო დაკავშირებული, სენსორებიდან მონაცემების შეგროვებისას. ეს მონაცემები უნდა იყოს შენახული (MySQL) მონაცემთა ბაზაში. მონაცემები უნდა იყოს ვიზუალიზებული ვებგვერდით, კოდირებული პითონში, Flask webapp პაკეტით და Jinja2 შაბლონით.

ჩემი იდეა იყო "გატეხილი" რობოტის ვაკუუმის შექმნა Raspberry Pi- ს, Arduino- ს, უკვე გატეხილი რობოტის ვაკუუმის და რამოდენიმე სენსორის გამოყენებით.

ნაბიჯი 1: ნაწილების შეგროვება

ნაწილების შეგროვება
ნაწილების შეგროვება
ნაწილების შეგროვება
ნაწილების შეგროვება
ნაწილების შეგროვება
ნაწილების შეგროვება
ნაწილების შეგროვება
ნაწილების შეგროვება

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

ნაწილების სია შეიტანება როგორც ფაილი, ასე რომ თქვენ შეგიძლიათ მარტივად მოძებნოთ საჭირო ნაწილები.

მე გადავწყვიტე გამოვიყენო Arduino Uno Raspberry Pi– ს გვერდით, ასე რომ მე შემიძლია ეფექტურად წავიკითხო ჩემი სენსორები ჩემს Raspberry Pi– ზე ხაზგასმის გარეშე. მე ასევე ავირჩიე Uno, რადგან მას აქვს კარგი საათის სიჩქარე და ანალოგური ქინძისთავების გამო. შემეძლო გამომეყენებინა ADC (მაგ. MCP3008) ჩემი Raspberry Pi- სთვის, მაგრამ დამჭირდებოდა ბევრად მეტი მავთული, ეს იქნებოდა უფრო ძვირი და ჩემს Pi- ს უფრო მეტი შრომა მოუწევდა.

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

ნაწილების სია:

  • ჟოლო Pi 3 მინიმუმ 8 GB MicroSD კლასი 10 და ქეისი;
  • Raspberry Pi T-cobbler and breadboard (s);
  • Arduino Uno ან მსგავსი (სასურველია არა-ჩინური ვერსია ღირსეული ADC– ით, ზოგიერთ ჩინელს აქვს AREF საკითხები) რაღაც შემთხვევით;
  • Ethernet კაბელი;
  • (გატეხილი) რობოტის ვაკუუმი;
  • 3x HC-SR04 ულტრაბგერითი მოდულები;
  • 1x დარბაზის სენსორის მოდული;
  • რამდენიმე რეზისტორი სხვადასხვა ღირებულებით;
  • LDR;
  • 6x 18650 Li-ion ბატარეები + 3 უჯრედის დამცავი 12v (სასურველია თქვენ გამოიყენოთ ახალი ბატარეები ან კიდევ უკეთესი გამოიყენოთ LiPo ბატარეები, ეს უფრო მეტხანს გაგრძელდება);
  • 18650 (ან ნებისმიერი ტიპის ბატარეას გამოიყენებთ) 12 ვ 3 უჯრედის დატენვის pcb;
  • ზოგიერთი PCB DIY დაფა თქვენი კომპონენტების შესაკრავად;
  • პოლიურეთანის პლასტმასის ფურცელი;
  • ლეპტოპი / დესკტოპის კომპიუტერი.

ინსტრუმენტების სია:

  • საბურღი რამდენიმე საბურღი ბიტით;
  • კუთხის საფქვავი (არ გამოიყენოთ, თუ გამოცდილება არ გაქვთ) ან რამე დრემელის მსგავსი;
  • მოსახვეწი ქაღალდის ნაჭერი;
  • რამდენიმე screwdrivers;
  • სუპერწებო, სამონტაჟო წებო,…;
  • გამაგრილებელი რკინა (გამოიყენეთ ცხიმი თქვენი მავთულის გასაადვილებლად);
  • წყვილი მავთულის საჭრელი და სტრიპტიზირების ინსტრუმენტი.

პროგრამული უზრუნველყოფის სია (სურვილისამებრ):

  • Adobe XD: მავთულის ჩარჩო და პროტოტიპის შექმნა;
  • გაყინვა: ელექტრული სქემის შექმნა;
  • PyCharm Professional: პითონის IDE განლაგების და დისტანციური თარჯიმნის გამოყენების შესაძლებლობებით;
  • Putty: სწრაფი და მარტივი ssh კავშირი Pi- თან;
  • Etcher.io: მარტივი ინსტრუმენტი Raspbian გამოსახულების SD ბარათზე გადასატანად;
  • Win32DiskImager: მარტივი ინსტრუმენტი არსებული Raspbian კონფიგურაციისგან სურათის შესაქმნელად;
  • პროგრამისტები Notepad: მარტივი ინსტრუმენტი, რომლის საშუალებითაც შეგიძლიათ უსაფრთხოდ შეცვალოთ /boot/cmdline.txt ფაილი.

ნაბიჯი 2: სპრეის შეღებვა და ინტერფეისის დიზაინი

სპრეი-შეღებვა და ინტერფეისის დიზაინი
სპრეი-შეღებვა და ინტერფეისის დიზაინი
სპრეი-შეღებვა და ინტერფეისის დიზაინი
სპრეი-შეღებვა და ინტერფეისის დიზაინი
სპრეი-შეღებვა და ინტერფეისის დიზაინი
სპრეი-შეღებვა და ინტერფეისის დიზაინი
სპრეი-შეღებვა და ინტერფეისის დიზაინი
სპრეი-შეღებვა და ინტერფეისის დიზაინი

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

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

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

ნაბიჯი 3: მონაცემთა ბაზის შექმნა

მონაცემთა ბაზის შექმნა
მონაცემთა ბაზის შექმნა

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

სურათი გიჩვენებთ MySQL Workbench– ში დახატული ჩემი ცხრილების განლაგებას, ცხრილებს შორის ყველა ურთიერთობით.

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

მომდევნო ცხრილი შეიცავს "deviceruns" - ს, რომელიც არის მოწყობილობის მიერ შესრულებული ფაქტობრივი გაშვებები. Deviceruns ეკუთვნის გარკვეულ მომხმარებელს (პირს, რომელმაც დაიწყო სირბილი) და აქვს დაწყების დრო და დასასრული, რომ გამოთვალოს გაშვების დრო.

სხვა ცხრილი გამოიყენება sensordata– ს თითოეულ დევიცერუნთან დასაკავშირებლად. თავად სენსორები ინახება სხვა ცხრილში, შეიცავს მათ პირადობას, სახელს და აღწერილობას.

ნაბიჯი 4: ნაწილების ერთმანეთთან დაკავშირება

ნაწილების ერთმანეთთან დაკავშირება
ნაწილების ერთმანეთთან დაკავშირება
ნაწილების ერთმანეთთან დაკავშირება
ნაწილების ერთმანეთთან დაკავშირება

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

ნაბიჯი 5: ჟოლოს პიის დაყენება

ჟოლოს პიის დაყენება
ჟოლოს პიის დაყენება

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

OS– ის ინსტალაციისთვის, უბრალოდ გადმოწერეთ Etcher, ეს არის GUI ინსტრუმენტი, რომ სწრაფად და მარტივად ჩაწეროთ სურათი თქვენს მიკრო SD ბარათზე.

უსათაურო რეჟიმის გასააქტიურებლად, ისე რომ წვდეთ pi- ს, თქვენ უნდა დააინსტალიროთ Putty თქვენს კომპიუტერზე. შემდეგი ნაბიჯი არის Etcher- ის მიერ შექმნილი ჩატვირთვის საქაღალდეში წასვლა და ფაილის cmdline.txt გახსნა თქვენი საყვარელი ტექსტური რედაქტორით, ყოფილი პროგრამისტების ბლოკნოტით. დაამატეთ ეს ტექსტი ფაილის ბოლოს:

ip = 169.254.10.1

უბრალოდ დარწმუნდით, რომ თქვენ არ შექმნით ახალ ხაზს, დაამატეთ ეს ხაზის ბოლოს!

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

გახსენით ბოთლი და ჩაწერეთ IP მისამართი: 169.254.10.1. ახლა დააწკაპუნეთ YES და შედით სისტემაში, ნაგულისხმევი მომხმარებლის სახელი არის pi და პაროლი არის ჟოლო.

შემდეგი, განახორციელეთ შემდეგი ბრძანება განახლებისთვის:

sudo apt-მიიღეთ განახლება -y && sudo apt-get განახლება -y && sudo apt-get dist-upgrade -y

ბოლო ნაბიჯი არის ვირტუალური პითონის თარჯიმნის შექმნა თქვენს Raspberry Pi– ზე, ეს თქვენს კოდს შეასრულებს. ამისათვის უბრალოდ გახსენით ბოთლი და ჩაწერეთ შემდეგი:

sudo mkdir პროექტი 1

cd project1 python3 -m pip install -upgrade pip setuptools wheel virtualenv python3 -m venv -system -site -packages venv

ნაბიჯი 6: ვებ პროგრამის წერა

ვებ-პროგრამის წერა
ვებ-პროგრამის წერა

ყველა ნაწილის დაკავშირების და Raspberry Pi– ის შექმნის შემდეგ, მე დავიწყე ჩემი მთავარი ვებ – პროგრამის წერა Flask და Jinja2– ის გამოყენებით. Flask არის მარტივად გამოსაყენებელი backth ჩარჩო პითონისთვის, ხოლო Jinja2 არის შაბლონური ენა, რომელსაც მე ვიყენებდი. ჯინჯასთან ერთად, თქვენ შეგიძლიათ შექმნათ ნორმალური HTML ფაილები მარყუჟებისთვის, თუ სტრუქტურა და ასე შემდეგ.

უკანა პროგრამის კოდირებისას, მე ასევე დავწერე პროგრამის წინა ნაწილი, მათ შორის HTML, CSS და JavaScript ზოგიერთი ელემენტისთვის. მე გამოვიყენე ITCSS მეთოდი და BEM აღნიშვნა ჩემი სტილის ფურცლებისთვის.

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

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

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

ნაბიჯი 7: ნაჭრების შექმნა გარსაცმის დასასრულებლად

ნაჭრების შექმნა გარსაცმის დასასრულებლად
ნაჭრების შექმნა გარსაცმის დასასრულებლად
ნაჭრების შექმნა გარსაცმის დასასრულებლად
ნაჭრების შექმნა გარსაცმის დასასრულებლად
ნაჭრების შექმნა გარსაცმის დასასრულებლად
ნაჭრების შექმნა გარსაცმის დასასრულებლად
ნაჭრების შექმნა გარსაცმის დასასრულებლად
ნაჭრების შექმნა გარსაცმის დასასრულებლად

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

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

მეორე ფრჩხილი არის მხარდაჭერა ჩემი HC-SR04 ულტრაბგერითი სენსორებისთვის, რომლებიც განლაგებულია მოწყობილობის წინა ნაწილში.

ბოლო რაც დარჩა გასაკეთებელი, იყო ერთ -ერთი ბორბლის გამაგრების ხვრელის ამოკვეთა და მაგნიტის ჩასმა, რათა შევძლო საჭის ბრუნვების მონიტორინგი.

ამ ფრჩხილების დასრულების შემდეგ, მე ასევე შევასხა სპრეი მათ მიერ დარჩენილი საღებავით, რათა ის მოერგო დიზაინს.

ნაბიჯი 8: კოდი

პროგრამის ინსტალაციისთვის გადმოწერეთ ფაილი code.zip და გახსენით იგი project1 დირექტორიაში.

შემდეგი, შეასრულეთ ეს ბრძანება ტერმინალში Raspbian ან Putty:

sudo cp project1/conf/project-1*/etc/systemd/system/

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl დემონი-გადატვირთვა sudo systemctl ჩართვა პროექტი -1* sudo systemctl ჩართვა პროექტი 1* sudo systemctl გადატვირთვა nginx

შემდეგი, გახსენით თქვენ მიერ გენერირებული მონაცემთა ბაზა და შექმენით ახალი მომხმარებელი Argon2 ჰეშირებული პაროლით. ახლა თქვენ შეგიძლიათ გამოიყენოთ პროგრამა.

ისიამოვნეთ!

გირჩევთ: