Mündəricat:

CleanBot Guillaume Meurillon: 8 addım
CleanBot Guillaume Meurillon: 8 addım

Video: CleanBot Guillaume Meurillon: 8 addım

Video: CleanBot Guillaume Meurillon: 8 addım
Video: Omgaan met verschil in beeld en muziek 2024, Noyabr
Anonim
CleanBot Guillaume Meurillon tərəfindən
CleanBot Guillaume Meurillon tərəfindən
CleanBot Guillaume Meurillon tərəfindən
CleanBot Guillaume Meurillon tərəfindən

Bu məktəb üçün hazırladığım bir layihə üçün bir bələdçidir. Məqsəd, sensorlardan məlumat toplayarkən, İnternetə qoşulmuş Raspberry Pi ilə bir cihaz yaratmaq idi. Bu məlumatlar (MySQL) verilənlər bazasında saxlanmalı idi. Məlumat, Flask webapp paketi və Jinja2 şablonu ilə Pythonda kodlanmış bir veb saytla görüntülənməli idi.

Fikrim, Raspberry Pi, Arduino, onsuz da sınmış robot vakuumu və bir dəstə sensordan istifadə edərək 'hacked' robot vakumu yaratmaq idi.

Addım 1: hissələri toplayın

Parçaların toplanması
Parçaların toplanması
Parçaların toplanması
Parçaların toplanması
Parçaların toplanması
Parçaların toplanması
Parçaların toplanması
Parçaların toplanması

Əslində bir şey yaratmadan əvvəl, hansı hissələri istifadə edəcəyimi, onları necə birləşdirəcəyimi, Pythonda proqram dərsləri yazmağı və s.

Ehtiyac duyduğunuz hissələri asanlıqla axtara biləcəyiniz üçün hissələr siyahısı bir fayl olaraq daxil ediləcək.

Raspberry Pi -ni yandırmadan sensorlarımı səmərəli oxuya bilmək üçün Raspberry Pi -nin yanında bir Arduino Uno istifadə etmək qərarına gəldim. Həm də Uno -nu seçdim, çünki gözəl bir saat sürətinə malikdir və analog sancaqlar sayəsində. Raspberry Pi üçün ADC (məsələn, MCP3008) istifadə edə bilərdim, amma daha çox telə ehtiyacım olardı, daha bahalı olardı və Pi daha çox işləməli olardı.

Ardından sınmış robot vakuumundan istifadə edilə bilən hissələri yoxlamağa başladım. Daxili elektronika zədələndi, amma bu heç bir problem deyildi, çünki onsuz da tamamilə əvəz edərdim. Luckilly DC mühərrikləri hələ də işləyirdi, buna görə heç birini dəyişdirmək lazım deyildi.

Parça siyahısı:

  • Ən az 8 GB MicroSD sinif 10 və korpusu olan Raspberry Pi 3;
  • Raspberry Pi T ayaqqabı və çörək taxtası;
  • Arduino Uno və ya bənzəri (tercihen layiqli bir ADC ilə Çin olmayan bir versiya, bəzi Çinlilərin AREF problemləri var) bir növ işlə;
  • Ethernet kabeli;
  • A (sınmış) robot vakuumu;
  • 3x HC-SR04 ultrasəs modulları;
  • 1x salon sensoru modulu;
  • Müxtəlif dəyərlərdə bir neçə rezistor;
  • Bir LDR;
  • 6x 18650 Li-ion batareyalar + 12v üçün 3 hüceyrəli tutacaqlar (tercihen yeni batareyalar və ya daha yaxşı LiPo batareyaları istifadə etməlisiniz, bunlar daha uzun müddət davam edəcək);
  • 18650 (və ya istifadə edəcəyiniz batareya növü) 12v 3-hüceyrəli şarj pcb;
  • Komponentlərinizi lehimləmək üçün bəzi PCB DIY lövhələri;
  • Bir poliuretan plastik təbəqə;
  • Bir dizüstü kompüter / masa üstü kompüter.

Alət siyahısı:

  • Bir neçə qazma ucu olan bir qazma;
  • Bir açı dəyirmanı (təcrübəniz yoxdursa istifadə etməyin) və ya Dremel kimi bir şey;
  • Bir parça zımpara kağızı;
  • Bir neçə tornavida;
  • Super yapışqan, montaj yapışqan,…;
  • Bir lehimləmə dəmiri (tellərinizi daha asan lehimləmək üçün yağdan istifadə edin);
  • Bir cüt tel kəsici və soyma aləti.

Proqram siyahısı (isteğe bağlı):

  • Adobe XD: wireframing və prototip yaratmaq;
  • Fritzing: elektrik sxeminin yaradılması;
  • PyCharm Professional: Yerləşdirmə və uzaq tərcüməçidən istifadə imkanları olan Python IDE;
  • Putty: Pi ilə sürətli və asan ssh bağlantısı;
  • Etcher.io: Raspbian görüntüsünü SD karta yandırmaq üçün asan vasitə;
  • Win32DiskImager: mövcud bir Raspbian qurğusundan bir şəkil yaratmaq üçün asan bir vasitə;
  • Proqramçılar Notepad: /boot/cmdline.txt faylını təhlükəsiz şəkildə redaktə etmək üçün istifadə edə biləcəyiniz sadə bir vasitədir.

Addım 2: Sprey-boyama və İnterfeysin Dizaynı

Sprey-boyama və İnterfeysin Dizaynı
Sprey-boyama və İnterfeysin Dizaynı
Sprey-boyama və İnterfeysin Dizaynı
Sprey-boyama və İnterfeysin Dizaynı
Sprey-boyama və İnterfeysin Dizaynı
Sprey-boyama və İnterfeysin Dizaynı
Sprey-boyama və İnterfeysin Dizaynı
Sprey-boyama və İnterfeysin Dizaynı

Dizayn yaratmağa başlamazdan əvvəl rəngləri heç sevmədiyim üçün xarici səthi spreylə boyadım. Mağazaya getdim və üst korpusu yenidən boyamaq üçün plastik bir astar, bir qutu ağ və bir firuzəyi götürdüm.

Sprey boyasının qurumasına icazə verdikdən sonra, istifadə etdiyim boyanın dəqiq hex rəng koduna baxdım ki, veb-interfeysimi cihazımla mükəmməl uyğunlaşdırım. Bu hex kodunu tapmaq olduqca asan idi, çünki Montana 94 graffiti istifadə etdim və onaltılıq və RGB kodları veb saytlarında idi.

Veb saytımın hər səhifəsi üçün yüksək sədaqətli tel çərçivələr yaratdım ki, bu interfeysi necə yaradacağımı mükəmməl şəkildə bilim. İnterfeysimi müəllimlərimə göstərdikdən sonra fonu bir az boz və düymələri ağ etmək üçün məsləhət aldım və nəticə mənim fikrimcə yaxşı oldu.

Addım 3: Verilənlər bazasının yaradılması

Verilənlər bazasının yaradılması
Verilənlər bazasının yaradılması

Növbəti məntiqi addım, MySQL verilənlər bazasında hansı məlumatları saxlamaq istədiyimi düşünməyə başlamaq idi. İnsanların boşluqları haqqında bilmək istədikləri qədər çox şey yoxdur, buna görə istifadəçilər üçün cədvəllər və giriş məlumatları ilə yanaşı sensorlar üçün cədvəllərlə (batareya, məsafə və toz qabı) getdim.

Şəkil, MySQL Workbench -də cədvəllər arasındakı bütün əlaqələri əks etdirən masalarımın tərtibatını göstərir.

İstifadəçilərim üçün, interfeysi və e -poçtları fərdiləşdirmək üçün adlarını və soyadlarını izləmək istədim. Əlbəttə ki, e-poçt göndərmək üçün onların e-poçt ünvanlarına da ehtiyacım var idi. İstifadəçilərimin e-poçt seçimlərini (e-poçt almaq istər-istəməmələrini) izləmək üçün bir masa da əlavə etdim. İstifadəçilər haqqında saxlamaq istədiyim son şey cihaz üçün onların roludur. İstifadəçiləri idarəçilər və normal istifadəçilər olaraq bölürəm. Administratorlar sistemdəki istifadəçiləri əlavə etmək, silmək və idarə etmək hüququna malikdirlər, halbuki normal istifadəçilər bu vasitələrə daxil ola bilmirlər.

Növbəti cədvəldə cihazın gerçək işlədiyi "deviceruns" var. Cihazlar müəyyən bir istifadəçiyə (qaçışı başlatan şəxsə) məxsusdur və iş vaxtını hesablamaq üçün başlanğıc və bitmə vaxtına malikdir.

Sensordatanı hər bir cihaza bağlamaq üçün başqa bir cədvəl istifadə olunur. Sensorların özləri id, adı və təsviri olan başqa bir cədvəldə saxlanılır.

Addım 4: Parçaları bir -birinə bağlayın

Parçaları bir -birinə bağlamaq
Parçaları bir -birinə bağlamaq
Parçaları bir -birinə bağlamaq
Parçaları bir -birinə bağlamaq

Verilənlər bazası sxemini yaratdıqdan sonra bütün hissələri bir iş prototipində birləşdirmək üçün çörək lövhələri və naqillərdən istifadə etməyə başladım.

Addım 5: Raspberry Pi qurmaq

Raspberry Pi qurmaq
Raspberry Pi qurmaq

Ən son Raspbian şəklini yükləmək üçün Raspbian veb saytına daxil olun. Burada hansı distro yükləmək istədiyinizi seçə bilərsiniz. Daha sürətli işləmək üçün daha az RAM istifadəsi üçün başsız distro yükləyə bilərsiniz və ya qrafik istifadəçi interfeysinə üstünlük verirsinizsə GUI ilə masaüstünü yükləyə bilərsiniz.

Əməliyyat sistemi qurmaq üçün Etcher -i yükləyin, görüntünü mikro SD kartınıza sürətli və asan yazmaq üçün bir GUI vasitəsidir.

Başsız rejimə keçmək üçün pi -yə daxil ola bilərsiniz, kompüterinizə Putty quraşdırmalısınız. Növbəti addım Etcher tərəfindən yaradılmış Boot qovluğuna getmək və cmdline.txt faylını ən çox sevdiyiniz mətn redaktoru ilə birlikdə Programmers Notepad ilə açmaqdır. Bu mətni faylın sonuna əlavə edin:

ip = 169.254.10.1

Yeni bir xətt yaratmadığınızdan əmin olun, bunu sətrin sonuna əlavə edin!

Sonra, Boot qovluğunun kökünə qayıdın və ssh adlı bir fayl yaradın. Hər hansı bir uzantı əlavə etməyin, bu, Pi'iniz hər başladıqda SSH serverinin işə salınmasını təmin edəcəkdir. İndi sadəcə SD kartı Pi -yə qoyun, Pi -yə kifayət qədər enerji mənbəyi bağlayın və Pi ilə kompüteriniz arasında bir ethernet kabeli əlavə edin.

Macunu açın və IP ünvanını daxil edin: 169.254.10.1. İndi YES düyməsini basın və daxil olun, standart istifadəçi adı pi və parol moruqdur.

Daha sonra yenilənmək üçün aşağıdakı əmri yerinə yetirin:

sudo apt-get yeniləmə -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

Son addım, Raspberry Pi -də virtual Python tərcüməçisi yaratmaqdır, bu kodunuzu yerinə yetirəcəkdir. Bunu etmək üçün macunu açın və aşağıdakıları yazın:

sudo mkdir layihəsi 1

cd project1 python3 -m pip quraşdırma -pip setuptools təkərini təkmilləşdirmək virtualenv python3 -m venv -sistem -sayt paketləri

Addım 6: Veb tətbiqinin yazılması

Veb tətbiqinin yazılması
Veb tətbiqinin yazılması

Hər hissəni bağladıqdan və Raspberry Pi qurduqdan sonra Flask və Jinja2 istifadə edərək əsas veb tətbiqimi yazmağa başladım. Flask, Python üçün istifadəsi asan bir arxa çərçivədir və Jinja2 istifadə etdiyim şablon dilidir. Jinja ilə, strukturlar və sair varsa, looplar üçün normal HTML faylları yarada bilərsiniz.

Arxa tərəfi kodlaşdırarkən, bəzi elementlər üçün HTML, CSS və JavaScript də daxil olmaqla tətbiqin ön hissəsini yazdım. Üslub cədvəllərim üçün ITCSS metodundan və BEM qeydindən istifadə etdim.

Əsas veb tətbiqindən başqa, daha 2 əsas proqram yaratdım. Biri cihazın IP ünvanını siyahıdakı istifadəçilərə göndərmək üçün yazılmışdır. E -poçt almağı qəbul edən hər bir qeydiyyatdan keçmiş istifadəçi, veb interfeysini işə salmaq üçün linki olan bir məktub alacaq. Bu proqram bir systemd xidməti olaraq çalışır.

Digər əsas fayl əsl cihaz üçündür. Bu əsas, cihazı işə salmaq və dayandırmaq və məlumat toplamaq üçün Flask tətbiqim vasitəsilə çağırılır. Toplanan məlumatlar da bu əsas vasitəsi ilə cihazın məlumat bazasına yüklənir. Bu məlumatlar daha sonra veb tətbiqində görüntülənə bilər.

Veb proqramı Python Threading ilə işləyən cihaza qoşulur. İstifadəçi başlanğıc düyməsini basdıqda cihazı arxa planda işlətmək üçün bir mövzu yaranır. Eyni zamanda, istifadəçi tətbiqə mükəmməl baxa bilər. Dur düyməsini basdıqda, bu mövzu dayandırılır və buna görə də cihaz dayanır.

Addım 7: Kassanı bitirmək üçün parçalar yaratmaq

Kassanı bitirmək üçün parçalar yaratmaq
Kassanı bitirmək üçün parçalar yaratmaq
Kassanı bitirmək üçün parçalar yaratmaq
Kassanı bitirmək üçün parçalar yaratmaq
Kassanı bitirmək üçün parçalar yaratmaq
Kassanı bitirmək üçün parçalar yaratmaq
Kassanı bitirmək üçün parçalar yaratmaq
Kassanı bitirmək üçün parçalar yaratmaq

Tətbiqin ən böyük hissəsini yazdıqdan sonra cihazın korpusunu dəyişdirməyə başladım ki, sensorlarım və digər hissələrim əslində uyğun olsun. Bunu etmək üçün yerli bir DIY mağazasında bir təbəqə poliuretan aldım və 2 mötərizəni kəsməyə başladım. Bu poliuretandan istifadə etdim, çünki kəsərkən parçalanma ehtimalı yoxdur və kifayət qədər çevik olduğu üçün robotum dairəvi bir forma sahib olduğu üçün mükəmməldir.

İlk mötərizə yuxarıdakı bir çuxuru doldurmaq üçün hazırlanmışdır, burada bir ekran otururdu. Ekranı açma/söndürmə düyməsi ilə əvəz etdim ki, batareyaları həqiqətən söndürə bilək.

Digər mötərizə, cihazın qarşısında yerləşən HC-SR04 ultrasəs sensorlarım üçün bir dəstəkdir.

Qalan son iş təkərlərdən birinin möhkəmləndiricilərində bir deşik kəsmək və təkərin fırlanmasını izləyə bilmək üçün maqnit daxil etmək idi.

Bu mötərizələri bitirdikdən sonra, dizaynına uyğun olması üçün buraxdığım boya ilə spreylə boyadım.

Addım 8: Kod

Proqramı qurmaq üçün code.zip faylını yükləyin və project1 qovluğunda açın.

Sonra, bu əmri Raspbian və ya Putty terminalında yerinə yetirin:

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

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl daemon-reload sudo systemctl project-1* sudo systemctl enable project1* sudo systemctl restart nginx

Sonra, yaratdığınız verilənlər bazasını açın və Argon2 hash şifrəsi ilə yeni bir istifadəçi yaradın. İndi proqramı istifadə edə bilərsiniz.

Zövq alın!

Tövsiyə: