Мазмуну:

CleanBot Guillaume Meurillon тарабынан: 8 кадам
CleanBot Guillaume Meurillon тарабынан: 8 кадам

Video: CleanBot Guillaume Meurillon тарабынан: 8 кадам

Video: CleanBot Guillaume Meurillon тарабынан: 8 кадам
Video: Guillaume Machaut Virelai: "Quant je suis mis" 2024, Июль
Anonim
CleanBot Guillaume Meurillon тарабынан
CleanBot Guillaume Meurillon тарабынан
CleanBot Guillaume Meurillon тарабынан
CleanBot Guillaume Meurillon тарабынан

Бул мектеп үчүн жасаган долбоорумдун көрсөтмөсү. Максаты сенсорлордон маалыматтарды чогултуу менен бирге интернетке туташкан Raspberry Pi менен түзмөк түзүү болгон. Бул маалыматтар (MySQL) маалымат базасында сакталышы керек болчу. Берилиштер Flask webapp пакети жана Jinja2 шаблону менен Pythonдо коддолгон веб -сайт менен элестетилиши керек болчу.

Менин оюм Raspberry Pi, Arduino, буга чейин сынган роботтун вакуумун жана сенсорлорду колдонуп, "бузулган" роботтун вакуумун түзүү болчу.

1 -кадам: Бөлүктөрдү чогултуу

Бөлүктөрдү чогултуу
Бөлүктөрдү чогултуу
Бөлүктөрдү чогултуу
Бөлүктөрдү чогултуу
Бөлүктөрдү чогултуу
Бөлүктөрдү чогултуу
Бөлүктөрдү чогултуу
Бөлүктөрдү чогултуу

Чындыгында эч нерсе жаратуудан мурун, мен кайсы бөлүктөрдү колдонуу керектиги, аларды кантип туташтыруу, Pythonдо программалык класстарды жазуу ж.б.

Бөлүктөрдүн тизмеси файл катары киргизилет, андыктан сизге керектүү бөлүктөрдү оңой эле издей аласыз.

Мен Raspberry Piнин жанына Arduino Uno колдонууну чечтим, ошондо мен сенсорлорумду Raspberry Pi -ге басым жасабай натыйжалуу окуй алам. Мен дагы Юнону тандадым, анткени ал жакшы саат ылдамдыгына ээ жана аналогдук казыктардан улам. Мен Raspberry Pi үчүн ADC (мис. MCP3008) колдонмокмун, бирок мага дагы көп зымдар керек болмок, бул кымбатыраак болмок жана менин Пи дагы көп иштеши керек болчу.

Мен андан кийин сынган роботтун вакуумунан жарактуу болгон бөлүктөрдү текшере баштадым. Ички электроника бузулган жерде, бирок бул эч кандай көйгөй болгон жок, анткени мен аны толугу менен алмаштырмакмын. Luckilly DC кыймылдаткычтары дагы эле иштеп жаткандыктан, алардын бирин алмаштырууга туура келген жок.

Бөлүктөрдүн тизмеси:

  • Raspberry Pi 3, жок дегенде 8 ГБ MicroSD класс 10 жана корпусу менен;
  • Raspberry Pi T-өтүкчү жана нан (стол);
  • Arduino Uno же ушуга окшош (татыктуу ADC менен кытай эмес версиясы, кээ бир кытайларда AREF көйгөйлөрү бар) кандайдыр бир иш менен;
  • Ethernet кабели;
  • А (сынган) роботтун вакууму;
  • 3x HC-SR04 УЗИ модулдары;
  • 1x залдын сенсор модулу;
  • Ар кандай маанилердеги бир нече резисторлор;
  • An LDR;
  • 6x 18650 Li-ion батареялары + 12v үчүн 3 клеткалуу кармагычтар (жакшыраак жаңы батареяларды колдонуу керек, же LiPo батареяларын жакшыраак колдонуу керек, булар узакка созулат);
  • 18650 (же сиз колдоно турган батарейканын кандай түрү болбосун) 12v 3-клеткалуу кубаттоочу PCB;
  • Кээ бир PCB DIY такталары сиздин компоненттериңизди ширетет;
  • Полиуретанды пластиктен жасалган барак;
  • Ноутбук / рабочий компьютер.

Куралдардын тизмеси:

  • Бир нече бургулоочу учтары бар бургулоо;
  • Бурчтуу жаргылчак (тажрыйбаңыз жок болсо колдонбоңуз) же Dremel сыяктуу нерсе;
  • Кумура кагаздын бир бөлүгү;
  • Бир нече бурагычтар;
  • Супер клей, монтаж клейи,…;
  • Бир ширетүүчү (зымдарды оңой эритиш үчүн майды колдонуңуз);
  • Бир жуп зым кескич жана чечүүчү курал.

Программалык камсыздоонун тизмеси (милдеттүү эмес):

  • Adobe XD: зымдарды рамировкалоо жана прототипти түзүү;
  • Fritzing: электр схемасын түзүү;
  • PyCharm Professional: Python IDE жайылтуу жана алыстан котормочу колдонуу мүмкүнчүлүктөрү менен;
  • Putty: Pi менен тез жана оңой ssh байланышы;
  • Etcher.io: Raspbian сүрөтүн SD картка чагылдыруу үчүн оңой курал;
  • Win32DiskImager: учурдагы Raspbian орнотуусунан сүрөт жаратуунун оңой куралы;
  • Программисттердин блокноту: /boot/cmdline.txt файлын коопсуз түзөтүү үчүн колдоно турган жөнөкөй курал.

2-кадам: чачыратуучу сырдоо жана интерфейсти долбоорлоо

Спрей-сүрөт жана интерфейсти долбоорлоо
Спрей-сүрөт жана интерфейсти долбоорлоо
Спрей-сүрөт жана интерфейсти долбоорлоо
Спрей-сүрөт жана интерфейсти долбоорлоо
Спрей-сүрөт жана интерфейсти долбоорлоо
Спрей-сүрөт жана интерфейсти долбоорлоо
Спрей-сүрөт жана интерфейсти долбоорлоо
Спрей-сүрөт жана интерфейсти долбоорлоо

Дизайнды түзө электе сыртын сырдап боёгом, анткени түстөр такыр жаккан жок. Мен дүкөнгө бардым жана пластикалык праймерди алдым, ак кутуну жана бир куту бирюза менен үстүнкү корпусту кайра чачтым.

Чачты боёкту кургатып жибергенден кийин, мен веб-интерфейсимди түзмөгүмө эң сонун дал келтирүү үчүн, мен колдонгон боёктун так он алты түстүү кодун издедим. Бул он алтылык кодду табуу абдан оңой эле, анткени мен Монтана 94 граффити колдонгом, ал эми он алтылык жана RGB коддору алардын сайтында болгон.

Мен веб-сайтымдын ар бир баракчасы үчүн жогорку сапаттагы зым каркастарын түздүм, ошондуктан мен бул интерфейсти кантип түзөөрүмдү абдан жакшы билчүмүн. Мугалимдериме интерфейсимди көрсөткөндөн кийин, фонду бир аз боз, баскычтарды ак кылуу боюнча кеңеш алдым, натыйжада менимче жакшы болду.

3 -кадам: Маалыматтар базасын түзүү

Маалыматтар базасын түзүү
Маалыматтар базасын түзүү

Кийинки логикалык кадам - MySQL маалымат базасында кандай маалыматтарды сактагым келгени жөнүндө ойлоно баштоо. Адамдар боштукту билгиси келбейт, андыктан колдонуучулар үчүн таблицалар жана алардын кирүү маалыматтары, ошондой эле сенсорлор үчүн таблицалар менен бардым (батарея, аралык жана чаң контейнери).

Сүрөт MySQL Workbenchте тартылган столдорумдун жайгашуусун, столдордун ортосундагы бардык мамилелерди көрсөтөт.

Колдонуучуларым үчүн интерфейсти жана электрондук каттарды жекечелештирүү үчүн алардын атын жана фамилиясын көзөмөлдөп турууну кааладым. Албетте, электрондук каттарды жөнөтүү үчүн, алардын электрондук даректерине да муктаж болчумун. Мен ошондой эле колдонуучуларымдын электрондук почтасынын артыкчылыгын көзөмөлдөө үчүн үстөл коштум (алар электрондук кат алууну каалашабы же жокпу). Колдонуучулар жөнүндө сактагым келген акыркы нерсе - бул алардын түзмөктөгү ролу. Мен колдонуучуларды администраторлор жана кадимки колдонуучулар деп бөлөм. Администраторлор системага колдонуучуларды кошууга, алып салууга жана башкарууга укуктуу, ал эми кадимки колдонуучулар бул куралдарга кире алышпайт.

Кийинки таблицада "deviceruns" камтылган, алар түзмөктүн чыныгы иштөөсү. Түзмөктөр иштөө убактысын эсептөө үчүн белгилүү бир колдонуучуга (жүгүрүүнү баштаган адамга) таандык жана баштоо убактысы жана аяктоо убактысы бар.

Башка таблица сенсорлорду ар бир түзмөккө туташтыруу үчүн колдонулат. Сенсорлор өздөрүнүн идентификаторун, атын жана сүрөттөмөсүн камтыган дагы бир таблицада сакталат.

4 -кадам: Бөлүктөрдү бирге туташтыруу

Бөлүктөрдү бирге туташтыруу
Бөлүктөрдү бирге туташтыруу
Бөлүктөрдү бирге туташтыруу
Бөлүктөрдү бирге туташтыруу

Маалыматтар базасынын схемасын түзгөндөн кийин, мен баардык бөлүктөрдү бир жумушчу прототипке бириктирүү үчүн панельдерди жана зымдарды колдоно баштадым.

5 -кадам: Raspberry Pi орнотуу

Raspberry Pi орнотуу
Raspberry Pi орнотуу

Raspbianдин акыркы сүрөтүн жүктөө үчүн, Raspbian вебсайтына өтүңүз. Бул жерде сиз кайсы дистрибутивди жүктөп алууну тандай аласыз. Тезирээк иштөө үчүн, сиз оперативдүү RAMди азыраак колдонуп, же графикалык интерфейсти жактырсаңыз, GUI менен рабочийди жүктөп алсаңыз болот.

OSти орнотуу үчүн, Etcherди жөн эле жүктөп алыңыз, бул сүрөттү микро SD картаңызга тез жана оңой жазуу үчүн GUI куралы.

Башсыз режимди иштетүү үчүн, сиз пи кирүү үчүн, компьютериңизге Putty орнотушуңуз керек болот. Кийинки кадам - Etcher тарабынан түзүлгөн Boot папкасына өтүү жана cmdline.txt файлын сүйүктүү текст редактору менен ачуу, мурдагы Программисттердин блокноту. Бул текстти файлдын аягына кошуңуз:

ip = 169.254.10.1

Жаңы сапты түзбөңүз, муну саптын аягына кошуңуз!

Андан кийин, Boot папкасынын тамырына кайтып келип, ssh аттуу файлды түзүңүз. Эч кандай кеңейтүүнү кошпоңуз, бул сиздин Pi ишке кирген сайын SSH серверинин ишке киришин камсыздайт. Эми SD картты Пиңизге салып, Пиңизге жетиштүү кубат булагын туташтырып, Pi менен компьютериңиздин ортосуна Ethernet кабелин кошуңуз.

Шыбакты ачыңыз жана IP дарегин териңиз: 169.254.10.1. Эми Ооба дегенди басыңыз жана кириңиз, демейки колдонуучунун аты пи жана сырсөзү малина.

Кийинки, жаңыртуу үчүн төмөнкү буйрукту аткарыңыз:

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

Акыркы кадам - Raspberry Pi'де виртуалдык Python котормочусун түзүү, бул сиздин кодду аткарат. Бул үчүн, жөн гана шпаклевканы ачып, төмөнкүлөрдү териңиз:

sudo mkdir project1

cd project1 python3 -m pip орнотуу -pip setuptools дөңгөлөгүн жаңыртуу python3 -m venv -system -site -packages venv

6-кадам: Веб-тиркемени жазуу

Веб-тиркемени жазуу
Веб-тиркемени жазуу

Ар бир бөлүктү туташтырып, Raspberry Pi орноткондон кийин, мен Flask жана Jinja2ди колдонуп негизги веб-тиркемени жаза баштадым. Flask-бул Python үчүн колдонууга оңой негиз, ал эми Jinja2-мен колдонгон шаблон тили. Jinja менен сиз кадимки HTML файлдарын циклдар менен түзө аласыз, эгер структуралар ж.

Арткы жагын коддоодо, мен ошондой эле кээ бир элементтер үчүн HTML, CSS жана JavaScriptти камтыган тиркеменин алдыңкы бөлүгүн жаздым. Мен стиль таблицаларым үчүн ITCSS ыкмасын жана BEM белгилерин колдондум.

Негизги веб-колдонмодон башка дагы 2 негизги программаны түздүм. Бири тизмедеги колдонуучуларга түзмөктүн IP дарегин жөнөтүү үчүн жазылган. Электрондук каттарды кабыл алган ар бир катталган колдонуучу веб -интерфейсти баштоо үчүн шилтемеси бар кат алат. Бул программа systemd кызматы катары иштейт.

Башка негизги файл чыныгы түзмөк үчүн. Бул негизги менин Flask тиркемеси аркылуу, түзмөктү иштетүү жана токтотуу жана маалыматтарды чогултуу үчүн чакырылат. Чогулган маалыматтар да ушул магистраль аркылуу түзмөктүн маалымат базасына жүктөлөт. Бул маалыматтар веб-колдонмодо чагылдырылышы мүмкүн.

Веб-колдонмо түзмөккө Python Threading менен туташкан. Колдонуучу баштоо баскычын басканда, түзмөктү фондо иштетүү үчүн жип пайда болот. Ошол эле учурда, колдонуучу колдонмону кемчиликсиз карап чыга алат. Токтотууну басканда, бул жип токтотулат жана ошону менен түзмөк токтойт.

7 -кадам: Корпусту бүтүрүү үчүн бөлүктөрдү түзүү

Корпусту бүтүрүү үчүн бөлүктөрдү түзүү
Корпусту бүтүрүү үчүн бөлүктөрдү түзүү
Корпусту бүтүрүү үчүн бөлүктөрдү түзүү
Корпусту бүтүрүү үчүн бөлүктөрдү түзүү
Корпусту бүтүрүү үчүн бөлүктөрдү түзүү
Корпусту бүтүрүү үчүн бөлүктөрдү түзүү
Корпусту бүтүрүү үчүн бөлүктөрдү түзүү
Корпусту бүтүрүү үчүн бөлүктөрдү түзүү

Колдонмонун эң чоң бөлүгүн жазгандан кийин, мен сенсорлорум жана башка бөлүктөрүм туура келиши үчүн түзмөктүн корпусун өзгөртө баштадым. Бул үчүн, мен жергиликтүү DIY дүкөнүнөн полиуретанды сатып алып, 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 daemon-reload sudo systemctl project-1* sudo systemctl активдештирүү project1* sudo systemctl кайра баштоо nginx

Андан кийин, өзүңүз түзгөн маалымат базасын ачыңыз жана Argon2 хэштелген сырсөзү менен жаңы колдонуучу түзүңүз. Эми сиз программаны колдоно аласыз.

Ырахат алыңыз!

Сунушталууда: