Satura rādītājs:

Guillaume Meurillon CleanBot: 8 soļi
Guillaume Meurillon CleanBot: 8 soļi

Video: Guillaume Meurillon CleanBot: 8 soļi

Video: Guillaume Meurillon CleanBot: 8 soļi
Video: Classe1 2024, Jūlijs
Anonim
Guillaume Meurillon CleanBot
Guillaume Meurillon CleanBot
Guillaume Meurillon CleanBot
Guillaume Meurillon CleanBot

Šis ir ceļvedis projektam, kuru es izveidoju skolai. Mērķis bija izveidot ierīci ar Raspberry Pi, kas bija savienota ar internetu, vienlaikus vācot datus no sensoriem. Šie dati bija jāglabā (MySQL) datu bāzē. Datus vajadzēja vizualizēt, izmantojot vietni, kas kodēta Python ar tīmekļa lietotņu paketi Flask un veidni Jinja2.

Mana ideja bija izveidot “uzlauztu” robotu vakuumu, izmantojot Raspberry Pi, Arduino, jau salauztu robotu vakuumu un virkni sensoru.

1. darbība: detaļu savākšana

Daļu savākšana
Daļu savākšana
Daļu savākšana
Daļu savākšana
Daļu savākšana
Daļu savākšana
Daļu savākšana
Daļu savākšana

Pirms faktiski kaut ko radīju, es daudz pētīju, kādas detaļas jāizmanto, kā tās savienot, rakstot programmatūras klases Python un tā tālāk.

Detaļu saraksts tiks iekļauts kā fails, lai jūs varētu viegli meklēt nepieciešamās detaļas.

Es nolēmu izmantot Arduino Uno blakus Raspberry Pi, lai es varētu efektīvi nolasīt savus sensorus, neapdraudot savu Raspberry Pi. Es arī izvēlējos Uno, jo tam ir jauks pulksteņa ātrums, un analogo tapu dēļ. Es savai Raspberry Pi varēju izmantot ADC (piem., MCP3008), taču man būtu vajadzējis daudz vairāk vadu, tas būtu bijis dārgāk un manam Pi būtu jāstrādā daudz vairāk.

Pēc tam es sāku pārbaudīt detaļas, kuras bija izmantojamas no salauztā robotu vakuuma. Iekšējā elektronika bija bojāta, taču tā nebija problēma, jo es to pilnībā aizstātu. Par laimi līdzstrāvas motori joprojām strādāja, tāpēc neviens no tiem nebija jāmaina.

Detaļu saraksts:

  • Raspberry Pi 3 ar vismaz 8 GB MicroSD 10. klases un futrāli;
  • Raspberry Pi T-kurpnieks un maizes dēlis (-i);
  • Arduino Uno vai tamlīdzīgi (vēlams neķīniešu versija ar pienācīgu ADC, dažiem ķīniešiem ir AREF problēmas) ar kaut kādu lietu;
  • Ethernet kabelis;
  • (Salauzts) robotu vakuums;
  • 3x HC-SR04 ultraskaņas moduļi;
  • 1x zāles sensora modulis;
  • Vairāki rezistori dažādās vērtībās;
  • LDR;
  • 6x 18650 litija jonu baterijas + 3 šūnu turētāji 12V (vēlams izmantot jaunas baterijas vai vēl labāk izmantot LiPo baterijas, tās kalpos ilgāk);
  • 18650 (vai jebkura veida akumulatoru, kuru izmantosit) 12v 3 šūnu uzlādes PCB;
  • Daži PCB DIY dēļi, lai lodētu jūsu sastāvdaļas;
  • Poliuretāna plastmasas loksne;
  • Klēpjdators / galddators.

Rīku saraksts:

  • Urbis ar vairākiem urbjiem;
  • Leņķa slīpmašīna (nelietojiet to, ja jums nav pieredzes) vai kaut kas līdzīgs Dremel;
  • Smilšpapīra gabals;
  • Vairāki skrūvgrieži;
  • Superlīme, montāžas līme,…;
  • Lodāmurs (izmantojiet taukus, lai vieglāk pielodētu vadus);
  • Stiepļu griezēju pāris un noņemšanas rīks.

Programmatūras saraksts (pēc izvēles):

  • Adobe XD: vadu ierāmēšana un prototipa izveide;
  • Fritzing: elektriskās shēmas izveidošana;
  • PyCharm Professional: Python IDE ar izvietošanas un attālā tulka izmantošanas iespējām;
  • Tepe: ātrs un vienkāršs ssh savienojums ar Pi;
  • Etcher.io: vienkāršs rīks Raspbian attēla zibspuldzei SD kartē;
  • Win32DiskImager: vienkāršs rīks, lai izveidotu attēlu no esošās Raspbian iestatīšanas;
  • Programmētāju piezīmju grāmatiņa: vienkāršs rīks, ko varat izmantot, lai droši rediģētu failu /boot/cmdline.txt.

2. darbība. Krāsošana ar aerosolu un interfeisa projektēšana

Krāsošana ar aerosolu un interfeisa projektēšana
Krāsošana ar aerosolu un interfeisa projektēšana
Krāsošana ar aerosolu un interfeisa projektēšana
Krāsošana ar aerosolu un interfeisa projektēšana
Krāsošana ar aerosolu un interfeisa projektēšana
Krāsošana ar aerosolu un interfeisa projektēšana
Krāsošana ar aerosolu un interfeisa projektēšana
Krāsošana ar aerosolu un interfeisa projektēšana

Pirms es sāku veidot dizainu, es ar aerosolu krāsoju ārpusi, jo krāsas man vispār nepatika. Es devos uz veikalu un paņēmu plastmasas grunti, baltu kārbu un tirkīza kārbu, lai atkārtoti uzpūstu augšējo korpusu.

Pēc tam, kad aerosola krāsa bija nožuvusi, es uzmeklēju precīzu izmantotās krāsas heksadecimālo krāsu kodu, lai nevainojami saskaņotu savu tīmekļa saskarni ar manu ierīci. Šī heksadecimālā koda atrašana bija diezgan vienkārša, jo es izmantoju grafiti Montana 94, un hex un RGB kodi bija viņu vietnē.

Es izveidoju augstas precizitātes vadu rāmjus katrai savas vietnes lapai, lai es lieliski zinātu, kā es gatavoju izveidot šo saskarni. Pēc savas saskarnes parādīšanas skolotājiem es saņēmu padomu padarīt fonu nedaudz pelēkāku un pogas baltas, un rezultāts, manuprāt, bija labs.

3. darbība. Datu bāzes izveide

Datu bāzes izveide
Datu bāzes izveide

Nākamais loģiskais solis bija sākt domāt par to, kādus datus es vēlos saglabāt MySQL datu bāzē. Nav tik daudz cilvēku, kas vēlētos zināt par savu vakuumu, tāpēc es devos ar tabulām lietotājiem un viņu pieteikšanās datiem, kā arī tabulām sensoriem (akumulators, attālums un putekļu tvertne).

Attēlā parādīts manu MySQL Workbench zīmēto tabulu izkārtojums ar visām attiecībām starp tabulām.

Saviem lietotājiem es vēlējos izsekot viņu vārdam un uzvārdam, lai personalizētu saskarni un e -pastus. Protams, lai nosūtītu e-pastus, man bija nepieciešama arī viņu e-pasta adrese. Es pievienoju arī tabulu, lai izsekotu savu lietotāju e-pasta izvēlei (neatkarīgi no tā, vai viņi vēlas saņemt e-pastus). Pēdējā lieta, ko es vēlējos saglabāt par lietotājiem, ir viņu loma ierīcē. Es sadala lietotājus kā administratorus un parastos lietotājus. Administratoriem ir tiesības pievienot, noņemt un pārvaldīt lietotājus sistēmā, savukārt parastie lietotāji nevar piekļūt šiem rīkiem.

Nākamajā tabulā ir "deviceruns", kas ir faktiskie ierīces veiktie izpildījumi. Ierīces pieder noteiktam lietotājam (personai, kas uzsāka skrējienu), un tām ir sākuma un beigu laiks, lai aprēķinātu izpildlaiku.

Vēl viena tabula tiek izmantota, lai saistītu sensordatus ar katru ierīču sēriju. Paši sensori tiek glabāti citā tabulā, kurā ir norādīts to ID, nosaukums un apraksts.

4. solis: detaļu savienošana kopā

Daļu savienošana kopā
Daļu savienošana kopā
Daļu savienošana kopā
Daļu savienošana kopā

Pēc datu bāzes shēmas izveidošanas es sāku izmantot maizes dēļus un vadus, lai visas detaļas savienotu vienā darba prototipā.

5. darbība: Raspberry Pi iestatīšana

Raspberry Pi iestatīšana
Raspberry Pi iestatīšana

Lai lejupielādētu jaunāko Raspbian attēlu, dodieties uz vietni Raspbian. Šeit jūs varat izvēlēties, kuru distro vēlaties lejupielādēt. Ātrākai darbībai varat lejupielādēt bezgalvu distro, mazāk RAM izmantošanas vai lejupielādēt darbvirsmu ar GUI, ja vēlaties grafisko lietotāja interfeisu.

Lai instalētu OS, vienkārši lejupielādējiet Etcher, tas ir GUI rīks, lai ātri un viegli ierakstītu attēlu savā micro SD kartē.

Lai iespējotu bezgalvaino režīmu un piekļūtu pi, jums datorā jāinstalē Putty. Nākamais solis ir doties uz Etcher izveidoto sāknēšanas mapi un atvērt failu cmdline.txt ar savu iecienīto teksta redaktoru, ex Programmers Notepad. Pievienojiet šo tekstu faila beigās:

ip = 169.254.10.1

Vienkārši pārliecinieties, ka neveidojat jaunu rindu, pievienojiet to rindas beigās!

Pēc tam atgriezieties sāknēšanas mapes saknē un izveidojiet failu ar nosaukumu ssh. Nepievienojiet paplašinājumus, tas nodrošinās, ka SSH serveris tiek palaists katru reizi, kad tiek palaists jūsu Pi. Tagad vienkārši ievietojiet SD karti savā Pi, pievienojiet pietiekamu barošanas avotu savam Pi un pievienojiet Ethernet kabeli starp Pi un datoru.

Atveriet špakteli un ierakstiet IP adresi: 169.254.10.1. Tagad noklikšķiniet uz JĀ un piesakieties, noklusējuma lietotājvārds ir pi un parole ir aveņu.

Pēc tam izpildiet šo komandu, lai iegūtu jaunāko informāciju:

sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

Pēdējais solis ir izveidot virtuālo Python tulku savā Raspberry Pi, tas izpildīs jūsu kodu. Lai to izdarītu, vienkārši atveriet špakteli un ierakstiet šo:

sudo mkdir projekts1

cd project1 python3 -m pip instalēt -jaunināt pip setuptools ritenis virtualenv python3 -m venv -system -site -paketes venv

6. darbība: tīmekļa lietojumprogrammas rakstīšana

Tīmekļa lietojumprogrammas rakstīšana
Tīmekļa lietojumprogrammas rakstīšana

Pēc katras daļas savienošanas un Raspberry Pi iestatīšanas es sāku rakstīt savu galveno tīmekļa lietojumprogrammu, izmantojot Flask un Jinja2. Kolba ir viegli lietojama Python aizmugures sistēma, un Jinja2 ir manis izmantotā veidņu valoda. Izmantojot Jinja, varat izveidot parastus HTML failus ar cilpām, ja struktūras un tā tālāk.

Kodējot aizmuguri, es uzrakstīju arī lietojumprogrammas priekšpusi, ieskaitot HTML, CSS un JavaScript dažiem elementiem. Savām stila lapām es izmantoju ITCSS metodi un BEM apzīmējumu.

Papildus galvenajai tīmekļa lietotnei es izveidoju arī 2 citas galvenās programmas. Viens ir rakstīts, lai ierīces IP adresi nosūtītu lietotājiem sarakstā. Katrs reģistrēts lietotājs, kurš ir pieņēmis e -pasta ziņojumu saņemšanu, saņems pastu ar saiti, lai sāktu tīmekļa saskarni. Šī programma darbojas kā sistemātisks pakalpojums.

Otrs galvenais fails ir paredzēts faktiskajai ierīcei. Šo galveno var izsaukt, izmantojot manu kolbas lietojumprogrammu, lai iedarbinātu un apturētu ierīci un vāktu datus. Savāktie dati tiek augšupielādēti arī ierīces datu bāzē, izmantojot šo galveno. Pēc tam šos datus var vizualizēt tīmekļa lietotnē.

Tīmekļa lietotne ir savienota ar ierīces galveno darbību, izmantojot Python Threading. Kad lietotājs noklikšķina uz pogas Sākt, tiek izveidots pavediens, lai ierīce darbotos fonā. Tikmēr lietotājs var lieliski pārlūkot lietotni. Noklikšķinot uz pogas Pārtraukt, šis pavediens tiek pārtraukts, un ierīce apstājas.

7. darbība. Gabalu izveide korpusa apdarei

Gabalu izveide korpusa apdarei
Gabalu izveide korpusa apdarei
Gabalu izveide korpusa apdarei
Gabalu izveide korpusa apdarei
Gabalu izveide korpusa apdarei
Gabalu izveide korpusa apdarei
Gabalu izveide korpusa apdarei
Gabalu izveide korpusa apdarei

Pēc pieteikuma lielākās daļas uzrakstīšanas es sāku modificēt ierīces korpusu, lai mani sensori un citas detaļas patiešām būtu piemērotas. Lai to izdarītu, es nopirku poliuretāna loksni vietējā DIY veikalā un sāku griezt 2 kronšteinus. Es izmantoju šo poliuretāna loksni, jo griešanas laikā tas, visticamāk, nesadalīsies gabalos un tāpēc, ka tas ir diezgan elastīgs, kas ir ideāli piemērots, jo manam robotam ir apaļa forma.

Pirmais kronšteins ir paredzēts, lai aizpildītu caurumu augšpusē, kur agrāk sēdēja displejs. Es nomainīju displeju ar ieslēgšanas/izslēgšanas slēdzi, lai baterijas varētu faktiski izslēgt.

Otrs kronšteins ir atbalsts maniem HC-SR04 ultraskaņas sensoriem, kas ir novietoti ierīces priekšpusē.

Pēdējais, kas bija jādara, bija izgriezt caurumu viena riteņa stiprinājumos un ievietot magnētu, lai es varētu uzraudzīt riteņa griešanos.

Pēc šo kronšteinu pabeigšanas es tos arī izsmidzināju ar krāsu, kas man bija palikusi, lai tas atbilstu dizainam.

8. darbība: kods

Lai instalētu programmu, lejupielādējiet failu code.zip un izpakojiet to direktorijā project1.

Pēc tam izpildiet šo komandu Raspbian vai Putty terminālī:

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

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl dēmons-pārlādēt sudo systemctl iespējot projektu-1* sudo systemctl iespējot projektu1* sudo systemctl restartēt nginx

Pēc tam atveriet izveidoto datu bāzi un izveidojiet jaunu lietotāju ar Argon2 jaukto paroli. Tagad jūs varat izmantot programmu.

Izbaudi!

Ieteicams: