Mundarija:
- 1 -qadam: qismlarni yig'ish
- 2-qadam: buzadigan amallar bilan bo'yash va interfeysni loyihalash
- 3 -qadam: Ma'lumotlar bazasini yaratish
- 4 -qadam: qismlarni bir -biriga ulash
- 5 -qadam: Raspberry Pi -ni sozlash
- 6-qadam: Internet-ilovasini yozish
- 7 -qadam: Qoplamani tugatish uchun qismlar yaratish
- 8 -qadam: Kod
Video: CleanBot Guillaume Meurillon: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Bu men maktab uchun qilgan loyiham uchun qo'llanma. Maqsad, sensorlardan ma'lumotlarni yig'ish paytida, Internetga ulangan Raspberry Pi bilan qurilma yaratish edi. Bu ma'lumotlar (MySQL) ma'lumotlar bazasida saqlanishi kerak edi. Ma'lumotlar Pythonda Flask veb -ilovalari to'plami va Jinja2 shablonlari bilan kodlangan veb -sayt bilan vizualizatsiya qilinishi kerak edi.
Mening fikrim, Raspberry Pi, Arduino, allaqachon buzilgan robot vakuum va datchiklar yordamida "buzilgan" robot vakuumini yaratish edi.
1 -qadam: qismlarni yig'ish
Haqiqatan ham hech narsa yaratmasdan oldin, men qanday qismlarni ishlatish, ularni qanday ulash, Pythonda dasturiy ta'minot darslarini yozish va boshqalar haqida ko'p tadqiqotlar o'tkazdim.
Ehtiyot qismlar ro'yxati fayl sifatida qo'shiladi, shunda siz kerakli qismlarni osongina qidirishingiz mumkin.
Men Raspberry Pi yonida Arduino Uno -ni ishlatishga qaror qildim, shunda men sensorlarimni Raspberry Pi -ni zo'riqtirmasdan samarali o'qishim mumkin edi. Men ham Uno -ni tanladim, chunki u yaxshi soat tezligiga ega va analog pinlar tufayli. Men Raspberry Pi uchun ADC (masalan, MCP3008) dan foydalanishim mumkin edi, lekin menga ko'proq simlar kerak bo'lardi, bu qimmatroq bo'lardi va mening Pi ancha qattiq ishlashi kerak edi.
Keyin men buzilgan robot vakuumidan foydalanish mumkin bo'lgan qismlarni tekshirishni boshladim. Ichki elektronika shikastlangan, lekin bu muammo emas edi, chunki men baribir ularni butunlay almashtirardim. Luckilly DC dvigatellari hali ham ishlagan, shuning uchun ularning hech birini almashtirish kerak emas edi.
Qismlar ro'yxati:
- Raspberry Pi 3, kamida 8 Gb MicroSD sinf 10 va korpusli;
- Raspberry Pi T-oyoq kiyim va non taxtasi;
- Arduino Uno yoki shunga o'xshash (ma'qul ADC-ga ega bo'lgan xitoycha bo'lmagan versiya, ba'zi xitoylarda AREF bilan bog'liq muammolar mavjud);
- Ethernet kabeli;
- A (singan) robot vakuum;
- 3x HC-SR04 ultratovushli modullar;
- 1x zali sensori moduli;
- Har xil qiymatdagi bir nechta rezistorlar;
- LDR;
- 6x 18650 Li-ionli batareyalar + 12v uchun 3-xujayrali ushlagichlar (yaxshisi yangi batareyalardan yoki LiPo batareyalaridan yaxshiroq foydalanish kerak, ular uzoq vaqt xizmat qiladi);
- 18650 (yoki siz qaysi turdagi batareyani ishlatasiz) 12v 3 hujayrali zaryadlovchi kompyuter;
- Komponentlarni lehimlash uchun ba'zi PCB DIY plitalari;
- Poliuretan plastmassa varaq;
- Laptop / ish stoli kompyuter.
Asboblar ro'yxati:
- Bir nechta matkap uchlari bo'lgan matkap;
- Burchakni maydalagich (tajribangiz bo'lmasa, ishlatmang) yoki Dremelga o'xshash narsa;
- Zımpara qog'ozi;
- Bir nechta tornavida;
- Super yopishtiruvchi, o'rnatuvchi elim,…;
- Lehimlantiruvchi temir (simlarni osonroq lehimlash uchun surtma ishlating);
- Bir juft tel kesgich va qirib tashlash vositasi.
Dasturlar ro'yxati (ixtiyoriy):
- Adobe XD: simlarni ramkalash va prototip yaratish;
- Fritzing: elektr sxemasini yaratish;
- PyCharm Professional: tarqatish va masofadan tarjimondan foydalanish imkoniyatiga ega Python IDE;
- Putty: Pi bilan tez va oson ssh aloqasi;
- Etcher.io: Raspbian tasvirini SD -kartaga o'chirish uchun qulay vosita;
- Win32DiskImager: mavjud Raspbian sozlamasidan rasm yaratishning oson vositasi;
- Notepad dasturchilari: /boot/cmdline.txt faylini xavfsiz tahrirlash uchun foydalanishingiz mumkin bo'lgan oddiy vosita.
2-qadam: buzadigan amallar bilan bo'yash va interfeysni loyihalash
Dizaynni yaratishni boshlashdan oldin, men tashqi qismini purkagich bilan bo'yadim, chunki menga ranglar umuman yoqmadi. Do'konga bordim va yuqori korpusni qayta bo'yash uchun plastik astar, oq quti va firuza qutisini oldim.
Püskürtmeli bo'yoqni quritib qo'ygandan so'ng, men ishlatilgan bo'yoq uchun o'n olti rangli kodni qidirib topdim, shunda men o'z veb-interfeysimni qurilmamga to'liq moslashtira oldim. Bu o'n oltilik kodni topish juda oson edi, chunki men Montana 94 grafitidan foydalanganman va hex va RGB kodlari o'z veb -saytida bo'lgan.
Men veb-saytimning har bir sahifasi uchun yuqori aniqlikdagi simli kadrlar yaratdim, shuning uchun men bu interfeysni qanday yaratishni juda yaxshi bilardim. O'qituvchilarimga interfeysimni ko'rsatgandan so'ng, fonni biroz kulrang qilish va tugmalarni oqartirish bo'yicha maslahat oldim va natija menimcha yaxshi bo'ldi.
3 -qadam: Ma'lumotlar bazasini yaratish
Keyingi mantiqiy qadam, MySQL ma'lumotlar bazasida qanday ma'lumotlarni saqlamoqchi ekanligimni o'ylashni boshlash edi. Ko'pchilik o'z vakuumini bilishni yoqtirmaydi, shuning uchun men foydalanuvchilar uchun jadvallar va ularning kirish ma'lumotlari, shuningdek sensorlar uchun jadvallar (batareya, masofa va chang idishi) bilan bordim.
Rasmda MySQL Workbench -da chizilgan jadvallar sxemasi ko'rsatilgan va jadvallar orasidagi barcha munosabatlar ko'rsatilgan.
Foydalanuvchilar uchun men interfeys va elektron pochta xabarlarini shaxsiylashtirish uchun ularning ismi va familiyasini kuzatib borishni xohlardim. Albatta, elektron pochta xabarlarini yuborish uchun menga ularning elektron pochta manzili ham kerak edi. Men shuningdek, foydalanuvchilarning elektron pochta xabarlarini (elektron pochta xabarlarini olishni xohlayaptimi yoki yo'qligini) kuzatib borish uchun jadval qo'shdim. Foydalanuvchilar haqida saqlamoqchi bo'lgan oxirgi narsa - bu ularning qurilmadagi o'rni. Men foydalanuvchilarni administrator va oddiy foydalanuvchilarga ajrataman. Administratorlar tizimga foydalanuvchilarni qo'shish, o'chirish va boshqarish huquqiga ega, oddiy foydalanuvchilar esa bu vositalarga kira olmaydi.
Keyingi jadvalda "deviceruns" mavjud, ular qurilma bajargan haqiqiy operatsiyalardir. Qurilmalar ma'lum bir foydalanuvchiga (yugurishni boshlagan kishiga) tegishli bo'lib, ish vaqtini hisoblash uchun boshlanish va tugash vaqtiga ega.
Sensordata -ni har bir qurilmaga ulash uchun boshqa jadval ishlatiladi. Sensorlarning o'zi id, ism va tavsifni o'z ichiga olgan boshqa jadvalda saqlanadi.
4 -qadam: qismlarni bir -biriga ulash
Ma'lumotlar bazasi sxemasini tuzganimdan so'ng, men barcha qismlarni bitta ishlaydigan prototipga ulash uchun taxtalar va simlardan foydalana boshladim.
5 -qadam: Raspberry Pi -ni sozlash
Raspbian -ning so'nggi rasmini yuklab olish uchun Raspbian veb -saytiga o'ting. Bu erda siz qaysi tarqatishni yuklab olishni xohlaysiz. Tezroq ishlash uchun siz RAMdan kamroq foydalanish uchun boshsiz taqsimotni yuklab olishingiz yoki grafik interfeysni afzal ko'rsangiz, GUI yordamida ish stolini yuklab olishingiz mumkin.
Operatsion tizimni o'rnatish uchun Etcher -ni yuklab oling, bu tasvirni micro SD kartangizga tez va oson yozish uchun GUI vositasi.
Boshsiz rejimni yoqish uchun siz pi -ga kirishingiz uchun kompyuteringizga Putty -ni o'rnatishingiz kerak bo'ladi. Keyingi qadam - Etcher tomonidan yaratilgan Boot papkasiga o'tish va cmdline.txt faylini sevimli matn muharriri bilan ochish, masalan Programmers Notepad. Fayl oxiriga ushbu matnni qo'shing:
ip = 169.254.10.1
Siz yangi qator yaratmasligingizga ishonch hosil qiling, buni qator oxiriga qo'shing!
Keyin Boot papkasining ildiziga qayting va ssh nomli fayl yarating. Kengaytma qo'shmang, bu sizning Pi ishga tushganda SSH serveri ishga tushishini ta'minlaydi. Endi SD -kartani Pi -ga qo'ying, Pi -ga etarlicha quvvat manbaini ulang va Pi va kompyuteringiz o'rtasida chekilgan kabelni qo'shing.
Macni oching va IP manzilini kiriting: 169.254.10.1. Endi "Ha" ni bosing va kiring, standart foydalanuvchi nomi pi va parol malina.
Keyin yangilanish uchun quyidagi buyruqni bajaring:
sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y
Oxirgi qadam - Raspberry Pi -da virtual Python tarjimonini yaratish, bu sizning kodingizni bajaradi. Buning uchun macunni oching va quyidagilarni yozing:
sudo mkdir loyihasi1
cd project1 python3 -m pip o'rnatish -pip setuptools g'ildiragini virtualizatsiya python3 -m venv -system -site -packages venv
6-qadam: Internet-ilovasini yozish
Har bir qismni ulab, Raspberry Pi ni o'rnatgandan so'ng, men Flask va Jinja2 yordamida asosiy veb-ilovamni yozishni boshladim. Flask-bu Python uchun oson ishlatiladigan orqa fon, Jinja2-men ishlatgan shablon tili. Jinja yordamida siz oddiy HTML fayllarini looplar uchun, agar tuzilmalar va boshqalar bo'lsa, yaratishingiz mumkin.
Orqa fonni kodlashda men, shuningdek, ba'zi elementlar uchun HTML, CSS va JavaScript -ni o'z ichiga olgan ilovaning oldingi qismini yozdim. Men uslublar jadvallarim uchun ITCSS usuli va BEM yozuvidan foydalandim.
Asosiy veb-ilovadan tashqari, men yana ikkita asosiy dasturni yaratdim. Ulardan biri qurilmaning IP -manzilini ro'yxatdagi foydalanuvchilarga yuborish uchun yozilgan. Elektron pochta xabarlarini qabul qilgan har bir ro'yxatdan o'tgan foydalanuvchi veb -interfeysni ishga tushirish uchun havolali xat oladi. Bu dastur systemd xizmati sifatida ishlaydi.
Boshqa asosiy fayl haqiqiy qurilma uchun. Bu Flask ilovasi orqali qurilmani ishga tushirish va to'xtatish va ma'lumotlarni yig'ish uchun qo'ng'iroq qilish mumkin. To'plangan ma'lumotlar ham ushbu magistral orqali qurilmaning ma'lumotlar bazasiga yuklanadi. Keyin bu ma'lumotlarni veb-ilovada ko'rish mumkin.
Veb-dastur Python Threading yordamida asosiy qurilmaga ulangan. Foydalanuvchi ishga tushirish tugmachasini bosganida, qurilmani fonda ishlatish uchun ip hosil bo'ladi. Shu bilan birga, foydalanuvchi dasturni mukammal ko'rib chiqishi mumkin. "To'xtatish" tugmachasini bosganingizda, bu mavzu to'xtatiladi va shuning uchun qurilma to'xtaydi.
7 -qadam: Qoplamani tugatish uchun qismlar yaratish
Ilovaning eng katta qismini yozgandan so'ng, men sensorlar va boshqa qismlar mos bo'lishi uchun qurilmaning korpusini o'zgartira boshladim. Buning uchun men mahalliy DIY do'konida poliuretan varag'ini sotib oldim va 2 qavsni kesib boshladim. Men bu poliuretan varag'idan foydalandim, chunki uni kesish paytida bo'laklarga bo'linib ketmaydi va u juda moslashuvchan, chunki bu mening robotim yumaloq shaklga ega.
Birinchi qavs yuqoridagi teshikni to'ldirish uchun qilingan, u erda displey o'tirardi. Men batareyani o'chirish uchun displeyni yoqish/o'chirish tugmasi bilan almashtirdim.
Boshqa qavs-bu mening oldimda joylashgan HC-SR04 ultratovushli sensorlarimni qo'llab-quvvatlash.
Qolgan oxirgi narsa - g'ildiraklarning birining mustahkamlovchi qismidagi teshikni kesib tashlash va g'ildirakning aylanishini kuzatish uchun magnit qo'yish.
Bu qavslarni tugatgandan so'ng, men ham dizaynga mos bo'lishi uchun ularni qoldirgan bo'yoq bilan bo'yab qo'ydim.
8 -qadam: Kod
Dasturni o'rnatish uchun code.zip faylini yuklab oling va uni project1 katalogida oching.
Keyin, bu buyruqni Raspbian yoki Putty terminalida bajaring:
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 faollashtirish project1* sudo systemctl restart nginx
Keyin, siz yaratgan ma'lumotlar bazasini oching va Argon2 xeshli parol bilan yangi foydalanuvchi yarating. Endi siz dasturdan foydalanishingiz mumkin.
Xursand bo'ling!
Tavsiya:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Arduino uchun qadam tezligini boshqarish menyusi: Bu SpeedStepper kutubxonasi qadam dvigatelining tezligini nazorat qilish uchun AccelStepper kutubxonasining qayta yozilishi. SpeedStepper kutubxonasi sizga belgilangan dvigatel tezligini o'zgartirishga imkon beradi, so'ngra xuddi shu algoritm yordamida yangi belgilangan tezlikka tezlashadi/sekinlashadi
Qanday qilib qadam taymerini yasash mumkin?: 3 qadam (rasmlar bilan)
Qanday qilib qadam taymerini yasash mumkin ?: Men ko'plab sport turlarida yaxshi qatnashardim: yurish, yugurish, velosiped haydash, badminton o'ynash va hokazo. Men tez orada sayohat qilishni yaxshi ko'raman. Xo'sh, qorin qornimga qarang …… Xo'sh, baribir, men mashg'ulotlarni qaytadan boshlashga qaror qildim. Qanday uskunani tayyorlashim kerak?
Arduino UNO bilan qadam motor: 3 qadam
Arduino UNO bilan qadam dvigateli: Bosqichli motorlar - bu alohida bosqichlarda harakatlanadigan shahar motorlari. Ularda "fazalar" deb nomlangan guruhlarga bo'lingan bir nechta rulon bor. Har bir fazani ketma -ket quvvatlantirganda, dvigatel birma -bir aylanadi, zinapoyali dvigatellar juda foydali
Kompyuteringizni qadam dvigateli bilan boshqaring!: 9 qadam (rasmlar bilan)
Kompyuteringizni qadam dvigateli bilan boshqaring!: Oldingi ko'rsatmalarimdan birida men sizga step motorini aylanuvchi kodlovchi sifatida qanday ishlatishni ko'rsatdim. Bu yo'riqnomada keling, undan kompyuterni boshqarish uchun qanday foydalanish kerakligini bilib olaylik. Shunday qilib, ko'p vaqt sarflamasdan, boshlaylik