Სარჩევი:
- ნაბიჯი 1: ნაბიჯი 1: რა დამჭირდება?
- ნაბიჯი 2: ნაბიჯი 2: მონაცემთა ბაზის სქემატური შედგენა
- ნაბიჯი 3: ნაბიჯი 3: კოდირება
- ნაბიჯი 4: ნაბიჯი 4: ჩადეთ ალ კოდი ჩემს ჟოლოს პიზე
- ნაბიჯი 5: ნაბიჯი 5: საცხოვრებლის დამზადება
- ნაბიჯი 6: ნაბიჯი 6: ყველაფერი ჩადეთ საცხოვრებელში
ვიდეო: Keysorter: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
მე ამჟამად ვსწავლობ NMCT– ში Howest– ში. ჩვენი ბოლო სემესტრისთვის ჩვენ უნდა შევადგინოთ პროექტი. ასე რომ, მე გავაკეთე Keysorter.
რას აკეთებს?
ჩვენ გვაქვს უამრავი მანქანის გასაღები და ისინი ყველა ერთნაირად გამოიყურება. ასე რომ, მე შევქმენი Keysorter ამ საკითხის გადასაჭრელად.
მან უნდა შეამოწმოს გასაღები RFID– ით და მისცეს ადგილი ყუთში. თუ ისევ იმავე კლავიშს ვასკანირებ, ის გამოჩნდება მის მიერ წინასწარ დანიშნულ ადგილს. ასევე არის ღილაკი ბოლო გარეცხილი მანქანის საჩვენებლად.
ეს იქნება გაშვებული Raspberry Pi– ზე, რომელსაც ასევე აქვს შესაძლებლობა დაამატოთ ვებ გვერდი Flask– ის საშუალებით.
გვერდზე მე უნდა შემეძლოს ყველა გასაღების დათვალიერება, სახელის დამატება და გასაღების ამოღება.
ნაბიჯი 1: ნაბიჯი 1: რა დამჭირდება?
დავიწყე იმ კომპონენტების ჩამონათვალის შედგენით, რაც მე მჭირდება იმისათვის, რომ ეს საქმე იმუშაოს.
კომპონენტები:
- ჟოლო პი
- 2 x Shift რეგისტრი (74hc595)
- 3 x ღილაკი
- 9 x მწვანე led
- RFID სკანერი (MFRC522)
- 12 x რეზისტორი 220 ohm
შემდეგ ეს ყველაფერი ჩავდე ჩემს საშინელ სქემაში.
როგორც კი ეს გავაკეთე, მე შევძელი რეალურ ცხოვრებაში.
ნაბიჯი 2: ნაბიჯი 2: მონაცემთა ბაზის სქემატური შედგენა
ჩემი მონაცემების შესანახად მე უნდა შევქმნა მონაცემთა ბაზა, რომელიც შეიძლება მუშაობდეს ჩემს Pi- ზე.
გავაკეთე მისკლში.
მაგიდის მანქანა:
- მანქანის პირადობის მოწმობა
- მომხმარებლის იდენტიფიკაცია
- ბრენდი (მანქანის ბრენდი)
- ტიპი
- ბოლოს გარეცხილი
- Გასაღები
- RFID_ID
ნაბიჯი 3: ნაბიჯი 3: კოდირება
როდესაც ეს ყველაფერი მზად იქნება, შემიძლია დავიწყო კოდირება.
დავიწყე Python 3.5– ში ჩემი სენსორის კოდის შექმნით.
კოდის გადმოსაწერად დააწკაპუნეთ აქ.
გამოიყენეთ ბმული პროექტის კლონირებისთვის.
ნაბიჯი 4: ნაბიჯი 4: ჩადეთ ალ კოდი ჩემს ჟოლოს პიზე
პაკეტების დაყენება
პირველად დავაყენე ყველა პაკეტი, რომელიც მჭირდებოდა ამ სამუშაოს შესასრულებლად.
me@my-rpi: su $ sudo apt განახლება
me@my-rpi: su $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
ვირტუალური გარემო
me@my-rpi: ~ $ python3 -m pip install-upgrade pip setuptools wheel virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 me@my-rpi:/project1 $ python3 -m venv --system- site-packages env me@my-rpi: ~/project1 $ source env/bin/activ (env) me@my-rpi:/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib
ატვირთეთ პროექტი თქვენს Pi– ზე pycharm– ის გამოყენებით
გახსენით Pycharm და გადადით VCS> იმპორტი ვერსიის კონტროლიდან> Github და კლონირება ჩემი github ფაილი.
განათავსეთ განლაგების კონფიგურაცია თქვენს მიერ შექმნილ დირექტორიაში. (/სახლი/მე/პროექტი 1). დააჭირეთ მიმართვას!
გადადით თარჯიმნის პარამეტრებზე და შეარჩიეთ ვირტუალური გარემო, რომელიც თქვენ შექმენით. (/home/me/project1/env/bin/pyhon)
შეამოწმეთ სწორია თუ არა გეზის რუქა.
ახლა თქვენ შეგიძლიათ ატვირთოთ კოდი თქვენს დირექტორიაში Pycharm– ის გამოყენებით.
Მონაცემთა ბაზა
შეამოწმეთ მუშაობს თუ არა მონაცემთა ბაზა. თქვენ უნდა მიიღოთ მსგავსი რამ:
me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB მონაცემთა ბაზის სერვერი დატვირთულია: დატვირთულია (/lib/systemd/system/mariadb.service; ჩართულია; გამყიდველის წინასწარ განსაზღვრული: ჩართულია) აქტიური: აქტიური (გაშვებული) მზედან 2018-06-03 09:41:18 CEST; 1 დღე 4 საათის წინ მთავარი PID: 781 (mysqld) სტატუსი: "SQL მოთხოვნების მიღება ახლა …" ამოცანები: 28 (ლიმიტი: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld
03 ივნისი 09:41:13 my-rpi systemd [1]: იწყება MariaDB მონაცემთა ბაზის სერვერი … ივნისი 03 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [შენიშვნა] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) ივნისი 03 09:41:18 my-rpi systemd [1]: დაიწყო MariaDB მონაცემთა ბაზის სერვერი.
me@my -rpi: ~ $ ss -lt | grep mysql LISTEN 0 80 127.0.0.1:mysql *: *
შექმენით მომხმარებლები და დაამატეთ მონაცემთა ბაზა
me@my-rpi: su $ sudo mariadb
მას შემდეგ რაც მონაცემთა ბაზაში იქნებით გააკეთეთ ეს.
შექმენით მომხმარებელი 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED by 'webpassword'; CREATE USER 'project1-sensor'@'localhost' IDENTIFIED BY 'sensorpassword';
შექმენით მონაცემთა ბაზა პროექტი 1;
მიეცით ყველა პრივილეგია პროექტზე 1.* 'Project1-admin'@'localhost' გრანტის არჩევით; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSH პრივილეგიები;
შექმენით ცხრილი `მომხმარებელი` (` idUser` int (11) NOT NULL, `პაროლი` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8
CREATE TABLE `car` (` idCar` int (11) NOT NULL AUTO_INCREMENT, `idUser` int (11) NOT NULL,` brand` varchar (45) DEFAULT NULL, `Type` varchar (45) DEFAULT NULL,` LastWashed` datetime DEFAULT NULL, `RFID_Number` varchar (15) DEFAULT NULL,` Key` varchar (5) DEFAULT NULL, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`_), უცხოური გასაღები (`idUser`) მიმართავს` მომხმარებელს` (`idUser`) წაშლაზე არანაირი ქმედების განახლება არავითარი ქმედება) ძრავა = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8
შეაერთეთ თქვენი მონაცემთა ბაზა Pycharm– თან
დააწკაპუნეთ მონაცემთა ბაზის ჩანართზე მარჯვენა მხარეს. თუ ჩანართი არ გაქვთ გახსნილი, გააკეთეთ ეს: ნახვა> ინსტრუმენტები Windows> მონაცემთა ბაზა.
დააწკაპუნეთ კავშირის დამატებაზე. აირჩიეთ მონაცემთა წყარო> MySQL (თუ დრაივერის გადმოტვირთვის ღილაკი არსებობს დააჭირეთ მას.)
გადადით SSH/SSL– ში და შეამოწმეთ SSH. შეავსეთ თქვენი Raspberry pi სერთიფიკატები (მასპინძელი/მომხმარებელი/პაროლი). პორტი უნდა იყოს 22 და არ დაგავიწყდეთ პაროლის დამახსოვრება.
დაბრუნდი გენერალთან. მასპინძელი უნდა იყოს localhost და მონაცემთა ბაზა უნდა იყოს project1. შეავსეთ რწმუნებათა სიგელები project1-admin– დან და შეამოწმეთ კავშირი.
თუ კავშირი ნორმალურია, გადადით ჩანართზე სქემები და დარწმუნდით, რომ პროექტი 1 მონიშნულია.
შეამოწმეთ არის თუ არა მონაცემთა ბაზა სწორი
me@my-rpi: ~ $ echo 'მაგიდების ჩვენება;' | mysql project1 -t -u project1-admin -p შეიყვანეთ პაროლი: + --------------------------- + | ცხრილები_პროექტში 1 | + ------------------------------++ სენსორი | | მომხმარებლები | +------------------------------+
კონფიგურაციის ფაილები
დირექტორია conf თქვენ ნახავთ 4 ფაილი. თქვენ უნდა შეცვალოთ მომხმარებლის სახელები თქვენს სახელზე.
სისტემური
ყველაფრის დასაწყებად თქვენ უნდა შეასრულოთ ეს ბრძანებები.
me@my-rpi: ~/project1 $ sudo cp conf/project1-*. სერვისი/etc/systemd/system/
me@my-rpi: ~/project1 $ sudo systemctl daemon-reload me@my-rpi:/project1 $ sudo systemctl პროექტის დაწყება1-* me@my-rpi: ~/project1 $ sudo systemctl სტატუსი პროექტი1-* ● project1- flask.service-uWSGI მაგალითი პროექტის 1 ვებ ინტერფეისისთვის 14:56 CEST; 1 წინ uwsgi-flask.ini ├─6620/usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621/usr/bin/uwsgi --ini/home/me/project1/ conf/uwsgi-flask.ini ├─6622/usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623/usr/bin/uwsgi --ini/home/me/ project1/conf/uwsgi-flask.ini └─6624/usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini
ივნ 04 04 13:14:56 my-rpi uwsgi [6618]: ასახულია 383928 ბაიტი (374 KB) 5 ბირთვით ივნ. 04 13:14:56 my-rpi uwsgi [6618]: *** ოპერატიული რეჟიმი: წინასწარი მომზადება ***
● project1-sensor.service-პროექტი 1 სენსორული სერვისი დატვირთულია: დატვირთულია (/etc/systemd/system/project1-sensor.service; გამორთულია; გამყიდველის წინასწარ განსაზღვრული: ჩართულია) აქტიური: აქტიური (გაშვებული) ორშაბათიდან 2018-06-04 13: 16:49 CEST; 5s წინ მთავარი PID: 6826 (პითონი) ამოცანები: 1 (ლიმიტი: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py
ივნისი 04 13:16:49 my-rpi systemd [1]: დაიწყო პროექტი 1 სენსორის სერვისი. ივნ 04 04 13:16:49 my-rpi პითონი [6826]: DEBUG: _ main _: შენახული სენსორი process_count = b'217 / n 'მონაცემთა ბაზაში Jun 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: შენახულია სენსორის process_count = b'218 / n 'მონაცემთა ბაზაში
nginx
me@my-rpi: ~/project1 $ ls -l/etc/nginx/sites-*
/etc/nginx/sites-available: სულ 4 -rw-r-r-- 1 root root 2416 ივლისი 12 2017 ნაგულისხმევი
/etc/nginx/sites-enabled: სულ 0 lrwxrwxrwx 1 root root 34 იანვარი 18 13:25 ნაგულისხმევი->/etc/nginx/sites-available/default
იმისათვის, რომ ყველაფერი ნაგულისხმევი იყოს, შეასრულეთ ეს ბრძანებები.
me@my-rpi:/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1me@my-rpi:/project1 $ sudo rm/etc/nginx/sites-enabled/default me@my- rpi:/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1 me@my-rpi: ~/project1 $ sudo systemctl გადატვირთეთ nginx.service
Ავტომატური დაწყება
მოდით დავრწმუნდეთ, რომ ყველაფერი ავტომატურად იწყება.
გადადით conf დირექტორიაში და შეასრულეთ ეს საბოლოო ბრძანებები და თქვენ დაასრულეთ!
me@my-rpi:/project1 $ sudo systemctl ჩართეთ პროექტი 1-*
თუ გადატვირთავთ Pi- ს, ის ავტომატურად უნდა დაიწყოს.
ნაბიჯი 5: ნაბიჯი 5: საცხოვრებლის დამზადება
გადამუშავება
საცხოვრებლის გასაკეთებლად მე გამოვიყენე ძველი კარადა, რომელსაც დედაჩემი იშორებდა.
ბაზა
მე დავინახე 4 ფიცარი (34 სმ x 26 სმ). (ეს არის კუბი 34 x 34 x 26).
ბოლოში დავამატე ხის თხელი ნაჭერი, როგორც ქვედა.
დაფა led– ით
შუაში მე დავდე 2 პატარა ხის ნაჭერი თითოეულ მხარეს ორივე ზემოდან 9 სმ სიმაღლეზე. ეს ინახავს დაფას, სადაც ლიდერები ისხდებიან.
ლიდერის დაფა არის პატარა დაფა (32 სმ x 32 სმ).
მე გავაღე 9 ხვრელი, რომლიდანაც ლიდერი გამოვიდა.
გაყოფა
მე გავაკეთე გაყოფა იმავე მასალით, როგორც ქვედა და დაფა led– ით.
4 ცალი თითოეული 10,3 სმ (9 სმ x 31 სმ) ჭრილით. ახლა მე შემიძლია მათი გაერთიანება.
ღილაკები და RFID მკითხველი
მე გავაკეთე ხვრელი ძირში, რომ ჩავსდო ჩემი RFID მკითხველი და ღილაკები.
ნაბიჯი 6: ნაბიჯი 6: ყველაფერი ჩადეთ საცხოვრებელში
ეს დამოკიდებულია იმაზე, თუ როგორ გსურთ ამის გაკეთება. მე პირადად ბევრი კაბელი გამოვიყენე შედუღების გარეშე, რადგან მსურს შემეძლოს ჩემი Raspberry Pi- ს ხელახლა გამოყენება.
მე დავაწებე ლიდერი ადგილზე და ჩავამაგრე RFID წამკითხველი და დაფები საქმესთან.
და ასე აკეთებ Keysorter- ს!
გირჩევთ:
ნახევარი ნაბიჯი: 5 ნაბიჯი (სურათებით)
სემინარი: IntroduçãoNeste projeto, você construirá um an sistema de semáforos: არსებობს 3 LED ნათურები სხვადასხვა ბირთვით (verde, amarelo e vermelho) para imitar os semáforos dos carros; არსებობს 2 LED ნათურები სხვადასხვა ბირთვით (verde და vermelho) იმისთვის, რომ გააკეთოთ
Arduino Uno თევზის მიმწოდებელი 6 იაფი და მარტივი ნაბიჯი!: 6 ნაბიჯი
Arduino Uno თევზის მიმწოდებელი 6 იაფი და მარტივი ნაბიჯი! შინაური ცხოველების მქონე ადამიანებს, ალბათ, იგივე პრობლემა ჰქონდათ, როგორც მე: შვებულება და დავიწყება. მე მუდმივად მავიწყდებოდა ჩემი თევზის გამოკვება და ყოველთვის ვცდილობდი ასე გამეკეთებინა სანამ ის წავიდოდა
აკუსტიკური ლევიტაცია Arduino Uno– ით ეტაპობრივად (8 ნაბიჯი): 8 ნაბიჯი
აკუსტიკური ლევიტაცია Arduino Uno– სთან ერთად ეტაპობრივად (8 საფეხური): ულტრაბგერითი ხმის გადამცემები L298N Dc მდედრობითი ადაპტერი დენის წყაროს მამაკაცის dc pin Arduino UNOBreadboard და ანალოგური პორტები კოდის გადასაყვანად (C ++)
ნაბიჯი: 4 ნაბიჯი
聲納: 改作: https: //aboutsciences.com/blog/arduino-radar-using … 我 在 原本 聲納 的 ar ar ar ar ar: arduino uno, 感測器, 馬達, 喇叭: 掃描 到 物品 加速 並 傳 述 cm cm cm cm cm cm cm 10 სმ 時 喇叭 會
პირდაპირი 4G/5G HD ვიდეო ნაკადი DJI Drone– დან დაბალი ლატენტურობით [3 ნაბიჯი]: 3 ნაბიჯი
პირდაპირი 4G/5G HD ვიდეო ნაკადი DJI Drone– დან დაბალი ლატენტურობით [3 ნაბიჯი]: შემდეგი სახელმძღვანელო დაგეხმარებათ მიიღოთ პირდაპირი HD ხარისხის ვიდეო ნაკადები თითქმის ნებისმიერი DJI თვითმფრინავისგან. FlytOS მობილური აპლიკაციისა და FlytNow ვებ აპლიკაციის დახმარებით თქვენ შეგიძლიათ დაიწყოთ ვიდეოს სტრიმინგი დრონიდან