Talaan ng mga Nilalaman:

CleanBot ni Guillaume Meurillon: 8 Hakbang
CleanBot ni Guillaume Meurillon: 8 Hakbang

Video: CleanBot ni Guillaume Meurillon: 8 Hakbang

Video: CleanBot ni Guillaume Meurillon: 8 Hakbang
Video: Dr Marcel Benoit│Topic│Quelle vertu l’être humain veut surtout trouver dans le bonheur . 2024, Hulyo
Anonim
CleanBot ni Guillaume Meurillon
CleanBot ni Guillaume Meurillon
CleanBot ni Guillaume Meurillon
CleanBot ni Guillaume Meurillon

Ito ay isang gabay para sa isang proyekto na ginawa ko para sa paaralan. Ang layunin ay lumikha ng isang aparato gamit ang Raspberry Pi na nakakonekta sa internet, habang nangongolekta ng data mula sa mga sensor. Ang data na ito ay dapat na naka-imbak sa isang (MySQL) database. Ang data ay dapat na mailarawan sa isang website, naka-code sa Python gamit ang Flask webapp package at Jinja2 templating.

Ang aking ideya ay upang lumikha ng isang 'na-hack' na vacuum ng robot, gamit ang isang Raspberry Pi, isang Arduino, isang nasira na vacuum ng robot at isang pangkat ng mga sensor.

Hakbang 1: Pagkolekta ng Mga Bahagi

Pagkolekta ng mga Bahagi
Pagkolekta ng mga Bahagi
Pagkolekta ng mga Bahagi
Pagkolekta ng mga Bahagi
Pagkolekta ng mga Bahagi
Pagkolekta ng mga Bahagi
Pagkolekta ng mga Bahagi
Pagkolekta ng mga Bahagi

Bago talaga lumikha ng anumang bagay, gumawa ako ng maraming pagsasaliksik tungkol sa kung anong mga bahagi ang gagamitin, kung paano ikonekta ang mga ito, pagsulat ng mga klase ng software sa Python at iba pa.

Ang listahan ng mga bahagi ay isasama bilang isang file, nang sa gayon ay madali kang maghanap para sa mga bahagi na kakailanganin mo.

Nagpasya akong gumamit ng isang Arduino Uno sa tabi ng Raspberry Pi, upang mahusay kong mabasa ang aking mga sensor nang hindi binibigyang diin ang aking Raspberry Pi. Pinili ko rin para sa Uno dahil maganda ang bilis ng orasan, at dahil sa mga analog pin. Maaari ko bang magamit ang isang ADC (hal. MCP3008) para sa aking Raspberry Pi, ngunit kakailanganin ko ng maraming mga wire, mas mahal ito at ang aking Pi ay kailangang gumana nang mas mahirap.

Sinimulan kong suriin ang mga bahagi na magagamit mula sa sirang vacuum ng robot. Ang panloob na electronics kung saan nasira, ngunit iyon ay walang problema, dahil lubos kong papalitan ang mga iyon. Sa kabutihang palad ang mga motor ng dc ay gumagana pa rin, kaya wala sa mga dapat palitan.

Listahan ng mga bahagi:

  • Raspberry Pi 3 na may hindi bababa sa 8GB MicroSD klase 10 at isang kaso;
  • Raspberry Pi T-cobbler at (mga) breadboard;
  • Arduino Uno o katulad (mas mabuti ang isang hindi pang-Intsik na bersyon na may disenteng ADC, ang ilang mga Intsik ay may mga isyu sa AREF) na may ilang uri ng kaso;
  • Isang ethernet cable;
  • Isang (sirang) robot vacuum;
  • 3x HC-SR04 ultrasonic modules;
  • 1x module ng sensor ng hall;
  • Maraming mga resistors sa iba't ibang mga halaga;
  • Isang LDR;
  • 6x 18650 Mga baterya ng Li-ion + mga may hawak ng 3-cell para sa 12v (mas mabuti na dapat kang gumamit ng mga bagong baterya o kahit na mas mahusay na gumamit ng mga baterya ng LiPo, mas magtatagal ang mga ito);
  • 18650 (o kung anong uri ng baterya ang gagamitin mo) 12v 3-cell singilin ang pcb;
  • Ang ilang mga PCB DIY board upang maghinang ng iyong mga bahagi;
  • Isang sheet ng polyurethane plastic;
  • Isang laptop / desktop computer.

Listahan ng tool:

  • Isang drill na may maraming mga drill bits;
  • Isang anggiling gilingan (huwag gamitin ito kung wala kang karanasan) o isang bagay tulad ng isang Dremel;
  • Isang piraso ng papel na sanding;
  • Maraming mga distornilyador;
  • Superglue, mounting glue,…;
  • Isang soldering iron (gumamit ng grasa upang mas madaling maghinang ang iyong mga wire);
  • Isang pares ng wire cutter at isang stripping tool.

Listahan ng software (opsyonal):

  • Adobe XD: wireframing at paglikha ng isang prototype;
  • Fritzing: paglikha ng isang electrical scheme;
  • Propesyonal na PyCharm: Python IDE na may mga kakayahan ng paggamit ng pag-deploy at remote interpreter;
  • Putty: mabilis at madaling koneksyon sa ssh kay Pi;
  • Etcher.io: madaling tool upang mai-flash ang isang imahe ng Raspbian sa isang SD card;
  • Win32DiskImager: madaling tool upang lumikha ng isang imahe mula sa isang mayroon nang pag-setup ng Raspbian;
  • Mga Programmers Notepad: simpleng tool na maaari mong gamitin upang ligtas na mai-edit ang /boot/cmdline.txt file.

Hakbang 2: Pag-spray ng pagpipinta at Pagdidisenyo ng Interface

Pag-spray ng pagpipinta at Pagdidisenyo ng Interface
Pag-spray ng pagpipinta at Pagdidisenyo ng Interface
Pag-spray ng pagpipinta at Pagdidisenyo ng Interface
Pag-spray ng pagpipinta at Pagdidisenyo ng Interface
Pag-spray ng pagpipinta at Pagdidisenyo ng Interface
Pag-spray ng pagpipinta at Pagdidisenyo ng Interface
Pag-spray ng pagpipinta at Pagdidisenyo ng Interface
Pag-spray ng pagpipinta at Pagdidisenyo ng Interface

Bago ako magsimulang lumikha ng disenyo, nag-spray ako ng pintura sa labas, dahil hindi ko talaga gusto ang mga kulay. Pumunta ako sa tindahan at kumuha ng isang plastic primer, isang lata ng puti at isang lata ng turkesa upang muling pagbigyan ang nangungunang kaso.

Matapos matuyo ang spray-pinturang tuyo, tiningnan ko ang eksaktong hex colorcode para sa pinturang ginamit ko, upang maitugma ko ang aking web-interface sa aking aparato nang perpekto. Ang paghahanap ng hex code na ito ay medyo madali, dahil ginamit ko ang Montana 94 graffiti, at ang hex & RGB code ay nasa kanilang website.

Lumikha ako ng mga high-fidelity wireframes para sa bawat pahina ng aking website, upang alam kong perpekto kung paano ko lilikha ang interface na ito. Matapos ipakita ang aking interface sa aking mga guro, nakuha ko ang payo na gawing mas kulay-abo ang background at maputi ang mga pindutan, at ang resulta ay mabuti sa aking palagay.

Hakbang 3: Paglikha ng Database

Paglikha ng Database
Paglikha ng Database

Ang susunod na lohikal na hakbang ay upang simulang mag-isip tungkol sa kung anong data ang nais kong itabi sa MySQL database. Walang gaanong gustong malaman ng mga tao tungkol sa kanilang vacuum, kaya't nagpunta ako sa mga talahanayan para sa mga gumagamit at kanilang data sa pag-login, pati na rin mga talahanayan para sa mga sensor (baterya, distansya at dust container).

Ipinapakita sa iyo ng imahe ang layout ng aking mga talahanayan, na iginuhit sa MySQL Workbench, kasama ang lahat ng mga ugnayan sa pagitan ng mga talahanayan.

Para sa aking mga gumagamit, nais kong subaybayan ang kanilang pangalan at apelyido upang isapersonal ang interface at ang mga email. Ofcourse upang magpadala ng mga e-mail, kailangan ko rin ang kanilang e-mail address. Nagdagdag din ako ng isang talahanayan upang subaybayan ang tungkol sa kagustuhan sa e-mail ng aking mga gumagamit (kung nais nilang makatanggap ng mga email o hindi). Ang huling bagay na nais kong iimbak tungkol sa mga gumagamit, ay ang kanilang tungkulin para sa aparato. Hinati ko ang mga gumagamit bilang mga administrator at normal na mga gumagamit. Ang mga administrator ay may karapatang magdagdag, mag-alis at mamahala ng mga gumagamit sa system, habang ang mga normal na gumagamit ay hindi ma-access ang mga tool na ito.

Naglalaman ang susunod na talahanayan ng "mga deviceruns", na kung saan ay ang aktwal na pagpapatakbo na nagawa ng aparato. Ang mga devicerun ay pagmamay-ari ng isang tiyak na gumagamit (ang taong nagsimula sa pagtakbo), at mayroong isang oras ng pagsisimula at pagtatapos ng oras, upang makalkula ang runtime.

Ang isa pang talahanayan ay ginagamit upang maiugnay ang sensordata sa bawat devicerun. Ang mga sensor mismo ay nakaimbak sa isa pang mesa, naglalaman ng kanilang id, pangalan at paglalarawan.

Hakbang 4: Pagkonekta ng Mga Bahaging Magkasama

Pagkonekta ng magkakasama ang mga Bahagi
Pagkonekta ng magkakasama ang mga Bahagi
Pagkonekta ng magkakasama ang mga Bahagi
Pagkonekta ng magkakasama ang mga Bahagi

Matapos likhain ang database scheme, nagsimula akong gumamit ng mga breadboard at mga kable upang ikonekta ang lahat ng mga bahagi nang magkasama sa isang gumaganang prototype.

Hakbang 5: Pag-set up ng Raspberry Pi

Pag-set up ng Raspberry Pi
Pag-set up ng Raspberry Pi

Upang i-download ang pinakabagong imahe ng Raspbian, pumunta sa website ng Raspbian. Maaari kang pumili dito kung aling distro ang nais mong i-download. Para sa mas mabilis na pagpapatakbo, maaari mong i-download ang distro na walang ulo, para sa mas kaunting paggamit ng RAM, o i-download ang desktop gamit ang GUI kung nais mo ang isang graphic na interface ng gumagamit.

Upang mai-install ang OS, i-download lamang ang Etcher, ito ay isang tool na GUI upang isulat ang imahe sa iyong micro SD card nang mabilis at madali.

Upang paganahin ang mode na walang ulo, upang ma-access mo ang pi, kakailanganin mong i-install ang Putty sa iyong computer. Ang susunod na hakbang ay upang pumunta sa folder ng Boot na nilikha ni Etcher, at upang buksan ang file cmdline.txt sa iyong paboritong text editor, tulad ng Programmers Notepad. Idagdag ang tekstong ito sa dulo ng file:

ip = 169.254.10.1

Siguraduhin lamang na hindi ka lumilikha ng isang bagong linya, idagdag ito sa dulo ng linya!

Susunod, bumalik sa ugat ng folder ng Boot, at lumikha ng isang file na pinangalanang ssh. Huwag magdagdag ng anumang pagpapahaba, titiyakin nito na maglulunsad ang SSH server sa tuwing maglulunsad ang iyong Pi. Ngayon ilagay lamang ang SD card sa iyong Pi, ikonekta ang isang sapat na mapagkukunan ng kuryente sa iyong Pi at magdagdag ng isang ethernet cable sa pagitan ng iyong Pi at iyong computer.

Buksan ang masilya, at i-type ang IP address: 169.254.10.1. Ngayon mag-click sa YES at mag-log in, ang default na username ay pi at ang password ay raspberry.

Susunod, ipatupad ang sumusunod na utos upang makakuha ng napapanahon:

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

Ang pangwakas na hakbang ay upang lumikha ng isang virtual na interpreter ng Python sa iyong Raspberry Pi, isasagawa nito ang iyong code. Upang magawa ito, buksan lamang ang masilya at i-type ang sumusunod:

sudo mkdir project1

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

Hakbang 6: Pagsulat ng Web-application

Pagsulat ng Web-application
Pagsulat ng Web-application

Matapos ikonekta ang bawat bahagi at i-set up ang Raspberry Pi, sinimulan kong isulat ang aking pangunahing web-application gamit ang Flask at Jinja2. Ang Flask ay isang madaling gamiting backend framework para sa Python, at ang Jinja2 ay ang templating wika na ginamit ko. Sa Jinja, maaari kang lumikha ng normal na mga HTML file na may para sa mga loop, kung ang mga istraktura at iba pa.

Habang ang pag-coding sa backend, nagsulat din ako sa front end para sa application, kasama ang HTML, CSS at JavaScript para sa ilang mga elemento. Ginamit ko ang pamamaraang ITCSS at notasyon ng BEM para sa aking mga styleheet.

Bukod sa pangunahing web-app, lumikha rin ako ng 2 iba pang pangunahing mga programa. Ang isa ay nakasulat upang ipadala ang IP address ng aparato sa mga gumagamit sa listahan. Ang bawat rehistradong gumagamit na tumanggap upang makatanggap ng mga email, ay makakatanggap ng isang mail na may isang link upang simulan ang web interface. Tumatakbo ang program na ito bilang isang serbisyo na systemd.

Ang iba pang pangunahing file ay para sa aktwal na aparato. Ang pangunahing ito ay maaaring tawagan sa pamamagitan ng aking Flask application, upang simulan at ihinto ang aparato, at mangolekta ng data. Ang nakolektang data ay na-upload din sa database ng aparato sa pamamagitan ng pangunahing ito. Ang data na ito ay maaaring mailarawan sa web-app.

Ang web-app ay konektado sa pangunahing pagpapatakbo ng aparato sa Python Threading. Kapag ang isang gumagamit ay nag-click sa pindutan ng pagsisimula, isang thread ang nabuo upang patakbuhin ang aparato sa background. Samantala, ang gumagamit ay maaaring perpektong mag-browse sa pamamagitan ng app. Kapag nag-click sa stop, ang thread na ito ay tumitigil at sa gayon ang aparato ay huminto.

Hakbang 7: Lumilikha ng Mga Piraso upang Tapusin ang Casing

Lumilikha ng Mga Piraso upang Tapusin ang Casing
Lumilikha ng Mga Piraso upang Tapusin ang Casing
Lumilikha ng Mga Piraso upang Tapusin ang Casing
Lumilikha ng Mga Piraso upang Tapusin ang Casing
Lumilikha ng Mga Piraso upang Tapusin ang Casing
Lumilikha ng Mga Piraso upang Tapusin ang Casing
Lumilikha ng Mga Piraso upang Tapusin ang Casing
Lumilikha ng Mga Piraso upang Tapusin ang Casing

Matapos isulat ang pinakamalaking bahagi ng application, sinimulan kong baguhin ang casing ng aparato, upang ang aking mga sensor at iba pang mga bahagi ay talagang magkasya. Upang magawa ito, bumili ako ng isang sheet ng polyurethane sa isang lokal na tindahan ng DIY, at sinimulang gupitin ang 2 mga braket. Ginamit ko ang sheet ng polyurethane na ito dahil malamang na hindi ito mapuputol habang pinuputol, at dahil medyo may kakayahang umangkop, na perpekto dahil ang aking robot ay may pabilog na hugis.

Ang unang bracket ay ginawa upang punan ang isang butas sa tuktok, kung saan ang isang display na ginamit upang maupuan. Pinalitan ko ang display ng isang on / off switch upang ang mga baterya ay maaaring talagang patayin.

Ang iba pang bracket ay isang suporta para sa aking mga HC-SR04 ultrasonic sensor na nakaposisyon sa harap ng aparato.

Ang huling bagay na natitira upang gawin, ay upang gupitin ang isang butas sa mga pampalakas ng isa sa mga gulong, at pagpasok ng isang pang-akit, upang masubaybayan ko ang mga pag-ikot ng gulong.

Matapos matapos ang mga braket na ito, spray ko din ang pintura sa kanila ng pinturang naiwan ko, upang maging angkop ito sa disenyo.

Hakbang 8: Ang Code

Upang mai-install ang programa, i-download ang file code.zip at i-unzip ito sa direktoryo ng proyekto1.

Susunod, isagawa ang utos na ito sa isang terminal sa Raspbian o Putty:

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

sudo cp project1 / conf / project1- * / etc / systemd / system / sudo systemctl daemon-reload sudo systemctl paganahin ang proyekto-1 * sudo systemctl paganahin ang proyekto1 * sudo systemctl restart nginx

Susunod, buksan ang database na iyong nabuo at lumikha ng isang bagong gumagamit gamit ang isang Argon2 hashed password. Ngayon ay maaari mong gamitin ang programa.

Mag-enjoy!

Inirerekumendang: