Mundarija:
- Ta'minotlar
- 1 -qadam: sozlash
- 2 -qadam: oynani o'rnatish
- 3 -qadam: Konfiguratsiya
- 4 -qadam: API
- 5 -qadam: Kalendar
- 6 -qadam: Google API
- 7 -qadam: ko'zgu dizayni
- 8 -qadam: simlarni ulash
- 9 -qadam: Kodni ishga tushirish
- 10 -qadam: oynani ishga tushirish
Video: Google Taqvim bilan ko'p foydalanuvchilarli aqlli oyna: 10 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Ushbu qo'llanmada biz Google Taqvim bilan birlashtirilgan aqlli oynani yaratamiz. Men bu loyihani qildim, chunki men aqlli nometalllarni juda zo'r deb bilaman, ular ertalab xudoning sovg'asi. Lekin men o'zimni noldan yaratishga qaror qildim, chunki qolganlarning hammasida 1 ta kamchilik bor. Ular juda rivojlangan va tartibsiz. Men buni oddiy saqlashga qaror qildim.
Ta'minotlar
Oldin
mana meniki kabi ko'zgu qurish uchun sizga kerak bo'ladigan narsalarni boshlaymiz. Bu etkazib berish sizning mintaqangizga va joriy narxlarga qarab 250 dan 350 evrogacha turadi.
Uskuna
Sensorlar
- Bir simli harorat sensori
- RWCL 0516 (Mikroto'lqinli harakat sensori)
- Yumshoq potansiyometr (Sparkfundan sensorli chiziq)
Hisoblash
va IC
- Karnay (4Ω da 3,2W yoki 8Ωda 1,8W)
- MCP3008
- Adafruit I2S 3W D sinfidagi kuchaytirgich sinishi - MAX98357A
- Raspberry Pi 3 B+
- SD -karta (8 GB yaxshi)
- Rezistor 4.7K Ohm
Har xil
- Jumper simlari
- Non paneli
- Akril ikki tomonlama oyna (15% yorug'lik o'tkazuvchanligi)
- IPS monitor (o'lchami siz xohlagan hajmga bog'liq)
- HDMI kabeli
- Yog'och
Dasturiy ta'minot
- PuTTY
- Kod muharriri (Notepad ++ etarli)
- Win32 disk qidiruvchisi
- Raspbian OS tasvir
1 -qadam: sozlash
Boshlash uchun, avvalo, men qilgan kod uchun Pi -ni sozlashimiz kerak.
Sizga ikkita narsa kerak bo'ladi:
- Win32 Disk Imager https://sourceforge.net/projects/win32diskimager/… saytidan.
- Raspbian OS tasviri
ZIP faylini yuklab oling va uni xohlagan joyga ko'chiring.
O'rnatish
- Rasmni papka belgisi orqali tanlang
- Ochiladigan ro'yxat orqali SD -kartangizni tanlang
- Yozishni bosing
Endi biz Pi -ga kira olishimiz uchun ba'zi sozlamalar bilan qo'shimcha ishlarni bajarishimiz kerak bo'ladi.
- SD -kartaning yuklash katalogiga o'ting
- "Cmdline.txt" faylini oching
- Qo'shish ip = 169.254.10.1 Matn uzun satrining oxirida bo'sh joy bilan ajratilgan (bir qatorda).
- Faylni saqlang.
- Xuddi shu katalogda kengaytmasi bo'lmagan ssh nomli fayl yarating
Endi siz SD -kartani chiqarib, uni Pi -ga qo'yishingiz mumkin.
Ulanmoqda
Endi biz dasturiy ta'minotni sozlashimiz kerak.
Birinchidan, LAN simini ulang, bir uchi ish stolida/noutbukda, ikkinchisi Pi -da.
Endi Raspberry Pi -ni yuklang.
- Putty -ni https://www.putty.org/ saytidan o'rnating.
- IP maydoniga 169.254.10.1 kiriting.
- SSH tanlanganligiga va 22 -port to'ldirilganligiga ishonch hosil qiling.
- Ochish -ni bosing
- Foydalanuvchi nomini kiriting: pi
- Parolni to'ldiring: malina
Raspi-config
Raspi-config yordam dasturini quyidagicha oching:
sudo raspi-config
Interfeyslar toifasida quyidagi variantlarni yoqing
- 1-simli
- SPI
Mahalliylashtirish toifasi orqali WiFi mamlakatini tanlang.
Keyin yuklash variantlari toifasida quyidagi variantlarni o'chirib qo'ying
Bosh ekran
Nihoyat yuklash variantlari toifasidagi Desktop/CLI sozlamalarini Desktop Autologin -ga o'rnating.
Wifi
Ko'zgu uchun biz Wi -Fi ulanishiga ega bo'lishimiz kerak, shuning uchun Wi -Fi ma'lumotlari yaqin ekanligiga ishonch hosil qiling.
Ildiz rejimiga o'ting
sudo -i
Bu qatorni joylashtiring, lekin SSID va Parolni to'ldirganingizga ishonch hosil qiling
wpa_passphrase "SSID" "PAROLA" >> /etc/wpa_supplicant/wpa_supplicant.conf
WPA mijozini kiriting.
wpa_cli
Interfeysni tanlang
wlan0 interfeysi
Konfiguratsiyani qayta yuklang
qayta sozlamoq
Yozish orqali to'g'ri ulanganingizga ishonch hosil qiling …
ip a
… va WLAN0 interfeyslarida IP -manzilingiz bor -yo'qligini ko'rish.
Paketlar
Endi biz Internetga ulangan bo'lsak, ba'zi paketlarni o'rnatishimiz kerak bo'ladi.
Avval biz paketlar ro'yxatini yangilashimiz kerak.
sudo apt yangilash
Python
Biz Raspbianni Python 3 dan foydalanishga majbur qilamiz
update-alternatives-install/usr/bin/python python /usr/bin/python2.7 1
update-alternatives-install/usr/bin/python python/usr/bin/python3 2
MariaDB
Ma'lumotlar bazasini o'rnatish uchun quyidagi qatorni joylashtiring.
sudo apt install mariadb-server
Keyin biz o'rnatishni ta'minlashimiz kerak.
mysql_secure_installation
U bizdan joriy parolni so'raydi, chunki bizda faqat Enter tugmachasi yo'q.
Keyin u y -da ildiz parolini xohlaymizmi, deb so'raydi.
Keyingi savollar uchun Y kiriting.
Nihoyat, biz ko'zgu uchun foydalana oladigan foydalanuvchi yaratamiz.
Mysql qobig'ini kiriting:
O'zimizni ildiz otish uchun ko'taramiz
sudo -i
MySQL qobig'ini kiriting
mysql
O'z ismingiz bilan almashtiring va shu bilan
oynadagi barcha imtiyozlarni bering.
Endi biz ruxsatnomalar jadvalini tozalaymiz.
YUQARISH IMKONIYATLARI;
Apache veb -server
Veb -serverni o'rnatish uchun quyidagi qatorni ishga tushiring.
sudo apt install apache2 -y
Python paketlar
Biz bu paketlarni o'rnatamiz
- Shisha
- Flask-Cors
- Flask-MySQL
- Shisha-rozetka
- PyMySQL
- Shisha-talisman
- Gevent
- Gevent-veb-rozetkasi
- Google-api-python-mijozi
- Google autentifikatsiyasi
- Google-auth-httplib2
- Google-auth-oauthlib
- Httplib2
- Taqvim
- Voqealar
- Oauthlib
- Python-soket
- Talablar
- Wsaccel
- Ujson
Qilish orqali
pip install Flask Flask-Cors Flask-MySQL Flask-SocketIO PyMySQL Flask-Talisman gevent-websocket google-api-python-client google-auth google-auth-httplib2 google-auth-oauthlib httplib2-ni o'chirib tashlamang.
Karnayni sozlash
curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash
Endi biz qayta ishga tushirishimiz kerak, shuning uchun y tugmasini bosing.
Skriptni qayta ishga tushiring
curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash
Endi biz ikkinchi marta qayta ishga tushirishimiz kerak
sudo qayta yuklash
Ekran (monitor)
Ekranning yo'nalishini xohlaganingizga qarab, ekranni aylantirishingiz mumkin.
Ekranni aylantirish uchun biz yuklash parametrlariga kirishimiz kerak:
sudo nano /boot/config.txt
Va keyin ushbu satrlardan birini konfiguratsiya fayliga joylashtiring:
display_rotate = 0
display_rotate = 1
display_rotate = 2
display_rotate = 3
Birinchisi, 0 - oddiy konfiguratsiya. 1 90 daraja bo'ladi, 2 180 daraja va oxirgi 270 daraja bo'ladi.
Keyin qayta ishga tushiring.
sudo qayta yuklash
2 -qadam: oynani o'rnatish
Endi men kodni yuklab olish uchun joy o'rnatamiz.
CD/uy/pi/
git klon https://github.com/nielsdewulf/ Mirror MirrorProject cd MirrorProject
Endi biz ba'zi papkalarni to'g'ri manzilga ko'chiramiz
sudo cp -R frontend/mirror//var/www/html/mirror/
sudo cp -R frontend/dashboard//var/www/html/Sudo cp -R backend//home/pi/Mirror/
Ma'lumotlar bazasini o'rnatish - bu loyihani amalga oshirishda zarur qadam.
sudo mysql -u root -p << CREATEDATABASE.sql
3 -qadam: Konfiguratsiya
Konfiguratsiya fayli quyidagi manzilda joylashgan.
sudo nano /home/pi/Mirror/resources/config.ini
MYSQL foydalanuvchisi va parolini kiriting.
Bu biz yaratgan mysql foydalanuvchisi bo'lishi kerak.
Boshqa sozlamalarni biz keyinroq ko'rib chiqamiz.
4 -qadam: API
Endi biz Pi -ni o'rnatishni tugatdik, biz sizga kerak bo'lgan ba'zi mavzularni ko'rib chiqamiz.
Darkskiy
Https://darksky.net/dev orqali Darsky API kalitini yarating.
Ro'yxatdan o'tgandan so'ng, siz boshqaruv panelida API kalitini ko'rasiz.
Bu kalitni ilgari o'rnatgan oyna loyihasining konfiguratsiya fayliga kiriting.
Taqvim
Odatiy bo'lib, siz taqvimingizni ko'rish uchun faqat ical url -laridan foydalanishingiz mumkin. Ammo bu qism sizning oynangizni Google ekotizimiga qanday ulash haqida bo'ladi. Bu odatda uzoq va og'riqli jarayon.
Sizga albatta kerak bo'ladigan narsalar
Domen nomi
Bu bo'limda biz o'rnatadigan narsalar
- CloudFlare hisob qaydnomasi
- Google Developer hisobi
- Google Developer loyihasi
- Calendar API -ni o'rnating
5 -qadam: Kalendar
Cloudflare
Https://cloudflare.com saytidan cloudflare hisobini o'rnating va domen nomingizni Cloudflare DNS -ga o'tkazish uchun sehrgarga amal qiling.
Malinali pi ni ko'rsatadigan A yozuvini o'zingiz yaratishingiz shart emas. Mening oyna kodim buni siz uchun qiladi. Ko'pgina uy Wi -Fi -da IP -lar statik emas, shuning uchun qayta ishga tushirilgandan so'ng u endi ishlamasligi mumkin. Mening kodim avtomatik ravishda IP -ni yangilashi uchun unga sizning API kalitingiz kerak bo'ladi.
- O'ng tarafdagi boshqaruv panelidagi API kalitini olish tugmasini bosing. [1 -rasm]
- Pastga siljiting va Global API kalitingizni ko'ring. [2 -rasm]
Bu kalitni ilgari o'rnatgan oyna loyihasining konfiguratsiya fayliga kiriting.
SSL sertifikatini yaratish
Google bizdan SSL ulanishini talab qiladi. Ushbu bo'limni boshlash uchun Cloudflare DNS -ni to'g'ri sozlaganingizga ishonch hosil qiling.
Avval omborni qo'shing.
sudo add-apt-repository ppa: certbot/certbot
Paket ro'yxatini yangilang.
sudo apt-get yangilanishi
CertBot -ni o'rnating
sudo apt install python-certbot-apache
Sertifikat yaratishni boshlang. Yana to'g'ri domen nomini kiritishingiz kerak bo'ladi.
sudo certbot --apache -d example.com -d www.example.com
Yaratilgandan so'ng, u sizdan barcha ulanishlarni SSLga yo'naltirish kerakligini so'raydi. Qayta yo'naltirishni tanlang.
Endi u sizning domeningiz uchun sertifikat muvaffaqiyatli yaratilganligini aytadi. Sizga beradigan 2 ta yo'lni saqlashga ishonch hosil qiling.
- /etc/letsencrypt/live/example.com/cert.pem
- /etc/letsencrypt/live/example.com/privkey.pem
Endi sertifikatlar joylashgan papkaga o'ting:
Example.com saytini to'g'ri xostga o'zgartirganingizga ishonch hosil qiling.
cd /etc/letsencrypt/live/example.com/
Keling, ushbu tarkibni loyiha papkamizga ko'chirib olaylik.
cp cert.pem /home/pi/Mirror/resources/certs/cert.pem
Va
cp privkey.pem /home/pi/Mirror/resources/certs/privkey.pem
Apache -ni domeningizga ulang
Apache -ni o'z domeningiz bilan to'g'ri sozlash uchun biz konfiguratsiya faylini yaratishimiz kerak bo'ladi. Domen nomini to'ldirganingizga ishonch hosil qiling, masalan funergydev.com.
sudo nano /etc/apache2/sites-enabled/example.com.conf
Keyin buni faylga joylashtiring. Example.com saytini domen nomingiz bilan almashtiring.
Sizning sertifikatingiz va shaxsiy kalitingiz to'g'ri yo'l ekanligiga ishonch hosil qiling. Ularni avval biz yaratganimizda, keyinbotbot orqali saqlagan yo'lingizga o'rnating.
DocumentRoot "/var/www/html/" SSLEngine on SSLCertificateFile /home/pi/Mirror/resources/certs/cert.pem SSLCertificateKeyFile /home/pi/Mirror/resources/certs/privkey.pem # Boshqa ko'rsatmalar bu erda Options Indexes FollowSymLinks AllowOverOver. Hammasi talab qilingan hamma berilgan
Endi biz ba'zi o'zgartirishlarni yoqishimiz va keyin Apache -ni konfiguratsiyani qayta yuklashga majbur qilishimiz kerak:
sudo a2enmod ssl
sudo a2enmod qayta yozish
sudo systemctl apache2 -ni qayta yuklang
Endi siz domen nomingiz orqali pi -ga o'tishingiz va standart apache sahifasini ko'rishingiz kerak.
6 -qadam: Google API
Https://console.developers.google.com orqali ishlab chiquvchi konsoliga o'ting.
1 -qism
Google API logotipining yonida va YANGI LOYIHA tugmasini bosish orqali birinchi loyihangizni yarating. Tegishli loyiha nomini kiriting va yaratish tugmasini bosing. [1 -rasm]
2 -qism
Endi siz ushbu sahifaga o'tasiz. Kutubxona tugmachasini bosing. [2 -rasm]
Bu siz foydalanishingiz mumkin bo'lgan barcha API -larning katta ro'yxati, lekin biz Google Calendar API -ni qidiramiz. Unga bosing va ENABLE tugmasini bosing. [3 -rasm]
Keyin taqvim API -ning umumiy ko'rinishiga ega bo'lasiz. Loyihangizga qaytish uchun Google APIs logotipini bosing. [4 -rasm]
3 -qism
Hamma narsani to'g'ri sozlash uchun hisob ma'lumotlari toifasini bosing va Domenni tekshirish yorlig'ini tanlang.
Bu erda siz domen nomini tasdiqlashingiz kerak.
- DOMEN QO'SHISH tugmasini bosing
- Domeningizni to'ldiring
- Keyin domeningizni tasdiqlashni so'raydi. Davom etish -ni bosing.
- Domen nomi provayderini tanlang. [5 -rasm]
- Jarayonni kuzatib boring
- Endi siz uni Google API konsolidagi Domenni tekshirish ro'yxatiga shunday qo'shishingiz mumkin. Domeningiz tekshirilganligiga ishonch hosil qiling. [6 -rasm]
4 -qism
Endi OAuth roziligi ekrani yorlig'ini tanlang. [7 -rasm]
Ariza nomini to'ldiring
Keyin biz rozilik ekraniga maydonlarni qo'shamiz. Bu shuni anglatadiki, biz foydalanuvchidan o'z taqvim ma'lumotlarini oynaga ulashishni xohlasa, rozilik ekranida so'raymiz.
- Taqvimni qidirish maydonini qo'shish -ni bosing.
- ../Auth/calendar.readonly ni tekshiring va qo'shish tugmasini bosing. [8 -rasm]
Vakolatli domenni to'ldiring. Bu siz tasdiqlagan domen bo'lishi kerak. [9 -rasm]
Endi shakl ostidagi katta saqlash tugmasini bosing.
5 -qism
Nihoyat, biz hisob ma'lumotlarini yaratishimiz kerak. Saqlash tugmachasini bosganimiz uchun bizni hisob ma'lumotlari yorlig'iga yo'naltirdilar. Hisob ma'lumotlarini yaratish -ni bosing va OAuth mijoz identifikatorini tanlang. [10 -rasm]
Ilova turini tanlang: Internet ilovasi va unga nom bering.
Ruxsat berilgan qayta yo'naltirish URI -ga quyidagi havolani kiriting va to'g'ri domenni to'ldiring.
example.com:5000/api/v1/setup/calendar/response
Yaratish -ni bosing. Bu sizga qalqib chiquvchi oynani ko'rsatadi, faqat OK ni bosing. Endi siz yaratgan hisob ma'lumotlarini yuklab olish tugmasini bosing
6 -qism
Endi JSON faylini oching va tarkibini nusxalash.
sudo nano /home/pi/Mirror/resources/credentials/credentials.json
Ularni bu erga joylashtiring.
7 -qism
Endi biz o'z domenimizni konfiguratsiyada aniqlashimiz kerak:
sudo nano /home/pi/Mirror/resources/config.ini
7 -qadam: ko'zgu dizayni
Oynani loyihalash siz xohlagan narsaga bog'liq. LCD -ni aniq o'lchab oling va oynaning bir tomonida 2 santimetrlik bo'sh joy qoldiring, chunki u erda mikroto'lqinli harakat sensori o'tiradi. U hech qanday metallning orqasida turolmaydi.
Men 4 ta yog'och taxtani bir -biriga bog'ladim. Ular ko'zgu oldida yaxshi toza bo'lishi uchun maydalangan. Men tepada, shuningdek, karnay ovozini o'chirish uchun bir nechta teshik ochdim. Oynaning qarama -qarshi tomoni, pastki qismi, men elektr simlarini osonlik bilan bajarish uchun kichik to'rtburchaklar kesib oldim. [1 -rasm]
Bu 2 ta arzon yog'och, bu erda monitor yoqiladi. Men aytganimdek, bizga oyna va korpus o'rtasida taxminan 2 santimetrlik bo'shliq kerak bo'ladi. Bundan tashqari, men 3 ta kichik yog'och bo'laklarini qo'shib, ularni qolgan qismlarga yopishtirdim. Shunday qilib, monitor o'z joyida qoladi. [2 -rasm]
Oxir -oqibat shunday ko'rinishga ega bo'ldi. Menda dam olish qismlari va oynaning old qismi o'rtasida taxminan 3 mm bo'sh joy bor edi. Qalinligi 3 mm bo'lgan ikki tomonlama oynani qo'yish uchun etarli. [Foto3]
8 -qadam: simlarni ulash
Ushbu sxemalardan birini to'g'ri bajarganingizga ishonch hosil qiling.
Bir marta sim o'tkazdim, uni ekranning orqa tomoniga ikki tomonlama lenta bilan yopishtirdim. Agar men oynani demontaj qilmoqchi bo'lsam va boshqa loyihalarda ishlatmoqchi bo'lsam, uni osongina olib tashlashim mumkin edi. Agar ishonchingiz komil bo'lsa, siz issiq tabancadan foydalanishingiz va uni oynaning orqa tomoniga yopishtirishingiz mumkin.
9 -qadam: Kodni ishga tushirish
LXSession
Keling, avval bir nechta papkalarni yarataylik
mkdir -p /home/pi/.config/lxsession/LXDE-pi/
Endi biz bir nechta ishga tushirish parametrlari/buyruqlarini ko'rsatadigan fayl yaratamiz.
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
Quyidagilarni faylga joylashtiring.
@lxpanel-LXDE-pi profili
@pcmanfm --desktop --profile LXDE-pi @xscreensaver -no-splash @point-rpi @sh /home/pi/Mirror/init_mirror.sh @xset s noblank @xset s off @xset -dpms
Biz boshlang'ich oynasi skriptini xostimizga mos keladigan tarzda yangilaymiz.
sudo nano /home/pi/Mirror/init_mirror.sh
Agar siz Google taqvimi va domenidan foydalanmasangiz, localhost -ni tanlang.
#!/bin/bash
uyqu 15 xrom-brauzer --incognito --kiosk https:// localhost/mirror
Agar siz undan foydalanayotgan bo'lsangiz, xostingizni to'ldiring.
#!/bin/bash
uyqu 15 xrom-brauzer --incognito-kioskXizmat
Endi biz oyna kodi avtomatik ravishda ishga tushishini o'rnatamiz.
Biz kodni avtomatik ravishda ishga tushiradigan xizmatni yaratamiz.
Borish:
sudo nano /etc/systemd/system/mirror.service
Va buni faylga joylashtiring
[Birlik]
Tavsif = Orqa oynadan keyin = network.target mariadb.service [Xizmat] Turi = oddiy foydalanuvchi = root ExecStart =/bin/sh /home/pi/Mirror/init.sh [O'rnatish] WantedBy = multi-user.target
Endi biz systemd demonini qayta yuklashimiz kerak bo'ladi:
sudo systemctl daemon-reload
Shuningdek, biz xizmatni yuklashda avtomatik ishga tushirishni yoqamiz.
sudo systemctl oynani yoqadi
Endi biz o'chiramiz.
sudo poweroff
Yakuniy sozlamalar
Nihoyat, biz APIPA ip -ni olib tashlashimiz kerak, shunda u faqat WiFi -da ishlaydi.
- Kompyuteringizda SD -kartaning yuklash katalogiga o'ting.
- "Cmdline.txt" faylini oching
- Uzoq matn satrining oxirida ip = 169.254.10.1 ni olib tashlang.
10 -qadam: oynani ishga tushirish
Ko'zgu ekranidagi IP -ga tashrif buyuring yoki agar siz Google taqvimini o'rnatgan bo'lsangiz, domen nomini to'ldiring.
Endi siz oynani sozlashingiz mumkin!
Agar siz oynada SSL xatosi topsangiz, sertifikatlaringizni Chromium sertifikat do'koniga qo'shishingiz mumkin.
Tavsiya:
Aqlli oyna: 5 qadam
Aqlli oyna: Bu ko'rsatma sizga elektron pochta qutisini, The New York Times -ning so'nggi yangiliklari va yangilanishlarini, Unsplash fonida sana va vaqtni ko'rsatadigan Smart Mirror -ni yaratishni o'rgatadi. Havola ishlaydi: Kerakli materiallar: ramka
Oddiy aqlli oyna: 7 qadam (rasmlar bilan)
Oddiy aqlli oyna: Voy! anchadan beri men biror narsa yuklaganman, juda ko'p narsalar ustida ishlaganman va izdoshlarim uchun "har doim ishlash uchun loyiha bor" degan so'zlarni aytganimdek, biror narsani tashlab yuborishim kerakligini tushunganman haha, ehtimol bu menman, baribir busin
Eski noutbukdan Alexa ovozli tanish yordamida suzuvchi aqlli sehrli oyna: 6 qadam (rasmlar bilan)
Alexa ovozli identifikatorli eski noutbukdan aqlli sehrli ko'zgu: "Elektronika" kursiga yoziling: https://www.udemy.com/electronics-in-a-nutshell/?couponCode=TINKERSPARK youtube kanalida boshqa loyihalar va elektronika bo'yicha darsliklar: https://www.youtube.com/channel/UCelOO
DIY Raspberry Pi aqlli Google taqvim soati: 4 qadam
DIY Raspberry Pi aqlli Google taqvim soati: Bu soat tanlovi uchun men ishlab chiqqan aqlli soat, sizga yoqadi degan umiddaman! Raspberry Pi -da Google Calendar ma'lumotlariga kirish va chop etish uchun ishlov berish va Python dasturi ishlaydi. keyingi 10 kun ichida sizda biror narsa bor
Buzilgan Android planshet yordamida aqlli oyna: 5 qadam (rasmlar bilan)
Buzilgan Android planshetidan foydalanadigan aqlli oyna: Biroz oldin men tasodifan Android planshetini yuziga tashladim. Stakan sindi, lekin qolganlari hamon yaxshi ishladi. Yana bir bor sherigim tomonidan yig'uvchi deb atash xavfi tug'ilganda, men uni bir kun kelib ishlataman deb umid qilib, durang o'ynadim. Bu