Mundarija:
- Ta'minotlar
- 1 -qadam: O'chirish davrasini lehimlang
- 2 -qadam: Kodni qo'shing
- 3 -qadam: Konteyner / qobiq yarating
Video: TOYL vazifalarini kuzatuvchi: 3 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Siz ishlashni rejalashtirganingizda yoki undan ham yomonroq ishdan nafratlanmaysizmi, ish seansining o'rtasida turibsiz va telefoningizga xabar keladi-bir necha soatdan keyin "tezkor tekshirish" bo'ladi. Bundan tashqari, siz haftasiga ish uchun ajratilgan vaqtga nisbatan ma'lum vazifalar ustida qancha ishlayotganingizni bilasizmi?
TOYL vazifa kuzatuvchisiga kiring. Bu sizga telefoningizni o'chirib, ishga e'tiboringizni qaratish imkonini beradi, shu bilan birga siz haftasiga 60 soat ishlashni xohlagan vaqtingizni va bajarishni xohlagan vazifalarni belgilashga imkon beradi. Mashg'ulotga o'tirganingizda, umumiy ishingizga qancha vaqt qolgani haqida tasavvurga ega bo'lasiz. Tracker ikkita rejimga ega: Taymer, bu erda siz haftasiga bir ish uchun qancha vaqt sarflashni oldindan belgilab qo'ygansiz va soniya hisoblagichi, siz vazifani tanlagandan so'ng taymerni ishga tushirishingiz mumkin.
Ta'minotlar
O'chirish
- Adafruit tuklar Huzzah
- Adafruit FeatherWing
- Erkak bosh pimlari
- Ayol sarlavhasi pinlari
- 500 mA / soat batareya
- 100K ohmli rezistorlar x2
- Izolyatsiya tasmasi
- Qoplangan sim
- Tel -chiziqlar
- Lehim fanati
Qopqoq
- Shaffof akril varaq 24 "x18"
- Ikki tomonlama lenta
- Lazerli kesgichga kirish
- Vektorli dasturiy ta'minot
1 -qadam: O'chirish davrasini lehimlang
Ayol sarlavhasini tuklar Huzzaga mahkamlang. Ushbu qo'llanma Feather Huzzah uskunasini sozlash uchun foydalidir. Keyin, erkak boshini FeatherWing -ga ulang. Ularni shu tarzda lehimlash, agar kerak bo'lsa, tuklar qanotini tuklar huzzasidan birlashtirish va ajratish imkonini beradi. Bu, ayniqsa, FeatherWing -ga rezistorlar qo'shish kerak bo'lganda juda qulay bo'ladi, bu keyingi qadam. 3V ga ulangan har bir 0 va 2 pinli 100K ohmli rezistorlarni ulang.
Feather Huzzah uskunasini o'rnating
Feather Wing uskunasini o'rnating
2 -qadam: Kodni qo'shing
Bu kod 5 -dars Internet -narsalar kodining moslashuvi, vaqt ruxsat bersa, men Preceptitaton xizmatini ToDosit IFTTT appleti orqali qo'shilgan vazifalarni kuzatadigan xizmat bilan almashtirmoqchiman. Ayni paytda siz bir qator vazifalarni qo'lda kiritishingiz va ularni aylantirish uchun A tugmachasidan foydalanishingiz kerak bo'ladi. Bundan tashqari, men taymerni bir necha daqiqada sanashni va keyingi vazifaga o'tishda to'xtashni xohlardim. Tayki uchun tayanch kodni yaratganingiz va vazifalarni bajarishda velosipedda yurganingiz uchun Bekki Sternga katta rahmat. Agar siz loyihani Internetga ulashni xohlasangiz, men ushbu darslar to'plamidan o'tishni tavsiya qilaman.
// Ko'rsatiladigan Internet narsalar sinfining namuna kodi // O'chirish Internet ma'lumotlarini ko'rsatadi // Ob -havo ma'lumotlari tasmada to'planadi // Bir nechta NeoPixellar ob -havo holatini tasvirlaydi // // Becki Stern 2017 tomonidan o'zgartirilgan // Adafruit IO obuna namunasi asosida.
// Adafruit vaqt va resurslarni ushbu ochiq kodli kod bilan ta'minlaydi.
// Iltimos, Adafruit -dan // mahsulotlarini sotib olish orqali Adafruit va ochiq manbali uskunalarni qo'llab -quvvatlang! // // Adafruit Industries uchun Todd Treece tomonidan yozilgan // Mualliflik huquqi (c) 2016 Adafruit Industries // MIT litsenziyasi bo'yicha litsenziyalangan. // // Yuqoridagi barcha matnlar har qanday qayta taqsimotga kiritilishi kerak.
/************************ Adafruit IO konfiguratsiyasi ********************** *********
/ agar siz hisob yaratishingiz kerak bo'lsa, io.adafruit.com saytiga tashrif buyuring, // yoki sizga Adafruit IO kaliti kerak bo'lsa. #IO_USERNAME "YourUserername Here" ni aniqlang #IO_KEY "YourIOKeyHere" ni aniqlang.
/******************************* WIFI konfiguratsiyasi **************** **********************/
#WIFI_SSID "WifiName" ni aniqlang
#WIFI_PASS "WifiPassword" ni aniqlang
#"AdafruitIO_WiFi.h" ni qo'shing
AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
/************************ Asosiy dastur shu erda boshlanadi ********************* **********/
#qo'shish #qo'shish #qo'shish #qo'shish
#qo'shing
#qo'shish #qo'shish #qo'shish
#OLED_RESETni belgilang 3
Adafruit_SSD1306 displeyi (128, 32, & Wire, OLED_RESET);
// bu doimiy o'zgarmaydi:
const int buttonPinA = 0; // tugmachalari const int tugmasiga biriktirilgan pinlarPinB = 16; // bu allaqachon tortishish qarshiligiga ega, qolgan ikkisiga bitta const int buttonPinC = 2 kerak;
// O'zgaruvchilar o'zgaradi:
int tugmasiAPushCounter = 0; // tugmani bosish sonini hisoblagich int buttonAState = 0; // tugmani hozirgi holati int lastButtonAState = 0; // tugmachaning oldingi holati
// O'zgaruvchilar o'zgaradi:
int tugmasiBPushCounter = 0; // tugmani bosish sonini hisoblagich int buttonBState = 0; // tugmani hozirgi holati int lastButtonBState = 0; // tugmachaning oldingi holati
// O'zgaruvchilar o'zgaradi:
int tugmasiCPushCounter = 0; // tugmani bosish sonini hisoblagich int buttonCState = 0; // tugmani hozirgi holati int lastButtonCState = 0; // tugmachaning oldingi holati
String displayForecast = "noma'lum";
int timerVal = 0;
imzosiz uzoq lastStartTime = 0; bool timerEnabled = 0;
AdafruitIO_Feed *yog'ingarchilik = io.feed ("yog'ingarchilik"); // "yog'ingarchilik" tasmasini o'rnating
// AdafruitIO_Feed *vazifa boshqaruvchisi = io.feed ("vazifa boshqaruvchisi"); // "vazifa menejeri" tasmasini o'rnating
bo'sh o'rnatish () {
pinMode (tugmaPinA, Kirish); pinMod (tugmaPinB, INPUT_PULLUP); pinMode (tugmaPinC, Kirish);
// SSD1306_SWITCHCAPVCC = displeyda 3,3 V dan kuchlanish hosil qiladi
display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // 128x32 uchun 0x3C manzili
// Ekranda dastlabki bufer tarkibini ko'rsatish -
// kutubxona buni Adafruit ochilish ekrani bilan ishga tushiradi. display.display (); kechikish (2000); // 2 soniya pauza qiling
// Buferni tozalash.
display.clearDisplay ();
// ketma -ket ulanishni boshlang
Serial.begin (115200);
// io.adafruit.com saytiga ulaning
Serial.print ("Adafruit IO ga ulanish"); io.connect (); // "yog'ingarchilik" tasmasi uchun xabar ishlovchilarini o'rnating. // handleMessage funktsiyasi (quyida tavsiflangan) // adafruit io dan xabar kelganida // chaqiriladi. yog'ingarchilik-> onMessage (handleMessage);
// ulanishni kuting
while (io.status () <AIO_CONNECTED) {Serial.print ("."); kechikish (500); }
// biz aloqadamiz
Serial.println (); Serial.println (io.statusText ());
}
void loop () {
// io.run (); barcha eskizlar uchun talab qilinadi.
// u har doim loop // funktsiyasining yuqori qismida bo'lishi kerak. u mijozni // io.adafruit.com ga bog'lab turadi va kiruvchi ma'lumotlarni qayta ishlaydi. io.run ();
// kirish tugmachasini o'qing:
buttonAState = digitalRead (buttonPinA); buttonBState = digitalRead (buttonPinB); buttonCState = digitalRead (buttonPinC);
//State tugmachasini oldingi holatiga solishtiring
agar (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// agar holat o'zgargan bo'lsa, hisoblagichni oshiring agar (buttonAState == LOW) {// agar hozirgi holat LOW bo'lsa, tugma APushCounter ++ tugmasi bosildi; Serial.print ("A tugmasi soni bosiladi:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// agar hozirgi holat LOW bo'lsa, tugma bosilgan ediBPushCounter ++; Serial.print ("B tugmasi bosiladi:"); Serial.println (buttonBPushCounter); Serial.println ("Ishga tushirish taymeri"); timerEnabled = 1; lastStartTime = millis (); } if (buttonCState == LOW) {// agar hozirgi holat LOW bo'lsa, tugma bosildi buttonCPushCounter ++; Serial.print ("C tugmachasi bosiladi:"); Serial.println (buttonCPushCounter); Serial.println ("Vaqt taymerini to'xtatish"); timerEnabled = 0; }} if (timerEnabled == 1) {// taymerni faqat ishga tushirilganda oshiradi timerVal = (millis () - lastStartTime)/1000; }
// displey 1 -pozitsiya - prognoz
// if (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (oq); // display.setCursor (0, 0); // display.print ("Prognoz:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("ikkinchi qator"); // display.println ("misol mazmuni"); // displey.display (); // // kechikish (2000); //}
// displeyning 1 -pozitsiyasi - 1 -topshiriq
if (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (oq); display.clearDisplay (); display.setCursor (0, 0); display.println ("Tadqiqot - intervyu"); displey.println (); display.print ("Taymer:"); display.println (timerVal); display.display (); }
// displeyning 2 -pozitsiyasi - 2 -topshiriq
if (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Making Studio - Kod"); displey.println (); display.print ("Taymer:"); display.println (timerVal); display.display (); }
// displeyning 3 -pozitsiyasi - 3 -topshiriq
if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - eskiz"); displey.println (); display.print ("Taymer:"); display.println (timerVal); display.display (); }
// joriy holatni oxirgi holat sifatida saqlang, // keyingi safar loop orqali lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;
}
// bu funksiya har xabar kelganda chaqiriladi
// Adafruit IOdan olingan. yuqoridagi setup () funktsiyasidagi // tasmaga biriktirilgan. void handleMessage (AdafruitIO_Data *ma'lumotlari) {
String prognozi = data-> toString (); // kiruvchi ob -havo ma'lumotlarini satrda saqlang
Serial.print ("qabul qilingan <-"); Serial.println (prognoz); displayForecast = prognoz; // quyidagi satrlar men hozirgacha topgan IFTTT ob -havo hisobotining turli xil so'zlarini saqlaydi String task1 = String ("Vazifa 1"); String yomg'ir = String ("Yomg'ir"); String lightrain = String ("Engil yomg'ir"); String yomg'irli dush = String ("Yomg'irli dush"); String AMshowers = String ("AM dushlari"); String rainandsnow = String ("Yomg'ir va qor"); String qor = Ip ("Qor"); String snowshower = String ("Qorli dush"); String bulutli = String ("Bulutli"); String asosancloudy = String ("Ko'pincha bulutli"); Qisman bulutli = String ("Qisman bulutli"); String clearsky = String ("Tozalash"); String fair = String ("Fair"); String sunny = String ("Quyoshli");
// Agar bu bayonotlar kiruvchi ob -havo o'zgaruvchisini saqlangan sharoit bilan taqqoslasa va shunga mos ravishda NeoPixellarni boshqarsa.
// agar prognozda yomg'ir bo'lsa if (prognoz.equalsIgnoreCase (yomg'ir) || prognoz.equalsIgnoreCase (yengil) || prognoz.equalsIgnoreCase (yomg'ir) || prognoz.equalsIgnoreCase (AMshowers)) {Serial.println ("yog'ingarchilik bugunning prognozi ");
}
// agar bashoratda qor bo'lsa if (prognoz.equalsIgnoreCase (qor) || prognoz.equalsIgnoreCase (yomg'ir va qor) || prognoz.equalsIgnoreCase (qor yog'ishi)) {Serial.println ("bugun prognozda yog'ingarchilik");
}
// agar bashoratda quyosh bo'lsa if (prognoz.equalsIgnoreCase (clearsky) || prognoz.equalsIgnoreCase (adolatli) || prognoz.equalsIgnoreCase (quyoshli)) {Serial.println ("bugun bashoratda quyoshning bir turi");
}
// agar bashoratda bulutlar bo'lsa if (prognoz.equalsIgnoreCase (bulutli) || prognoz.equalsIgnoreCase (asosan bulutli) || prognoz.equalsIgnoreCase (qisman bulutli)) {Serial.println ("bugun ob -havo bulutli");
}
}
3 -qadam: Konteyner / qobiq yarating
Qobiq uchun, ramkangiz qanday o'lchamda bo'lishini aniqlashdan boshlang yoki mening faylimni yuklab olishingiz mumkin. O'lchamni aniqlagandan so'ng, siz MakerCase -dan foydalanib, vektorli faylning tartibini tuzishingiz mumkin.
Faylni lazer kesgich orqali ishga tushiring - taxminan 5 daqiqa davom etishi kerak. Shundan so'ng, qobiqni bir joyga qo'ying.
Men tugmachalarga kirishni qiyinlashtiradigan materialning kengligini hisobga olmadim. Men hali ham ularni biriktirishning yo'lini topishim kerak. Ular juda kichik, ular bilan ishlash qiyin.
Tavsiya:
PHIL - yengil kuzatuvchi robotni qanday yaratish kerak: 6 qadam (rasmlar bilan)
PHIL - yengil kuzatuv robotini qanday yaratish kerak: Men sizga ko'rsatma beraman, men bu ikki o'qli yorug'lik kuzatuvchi robotni Arduino Uno yordamida qanday yaratganimni ko'rsataman. Barcha SAPR va kodlar kiritiladi, shuning uchun siz uni hech qanday dasturlash va dizayn ko'nikmalariga muhtoj bo'lmasdan o'zingiz qurishingiz mumkin. Sizga kerak bo'lgan hamma narsa
Joystik bilan boshqariladigan g'ildirakli stul to'siqlarni kuzatuvchi: 3 qadam (rasmlar bilan)
Joystik bilan boshqariladigan nogironlar aravachasi to'siqlarni kuzatuvchi: Jismoniy nogironlarni xavfsiz boshqarishni osonlashtirish uchun yo'lda mavjud bo'lgan to'siqlarni kuzatish uchun ultratovush sensori ishlatiladi. Joystikning harakatiga asoslanib, dvigatellar nogironlar aravachasini istalgan to'rt yo'nalishda va har bir yo'nalishda tezlik bilan boshqaradi
Quyosh paneli soyani kuzatuvchi sifatida: 7 qadam (rasmlar bilan)
Quyosh panelini soyani kuzatuvchi sifatida: fizikada va boshqa fanlarda mexanik harakatni tasvirlashda ishlatiladigan asosiy kattalik - bu tezlik. Buni o'lchash eksperimental sinflarda takrorlanuvchi faoliyat bo'ldi. Men odatda videokamera va TRACKER dasturidan foydalanib, kerta harakatini o'rganaman
PyonAir - ochiq manbali havo ifloslanishini kuzatuvchi: 10 qadam (rasmlar bilan)
PyonAir - ochiq manbali havoning ifloslanishi monitori: PyonAir - bu havoning mahalliy ifloslanish darajasini, xususan, zarrachali moddalarni nazorat qilishning arzon tizimi. Pycom LoPy4 taxtasi va Grove-ga mos keladigan apparat asosida, tizim LoRa va WiFi orqali ma'lumotlarni uzatishi mumkin. Men bu vazifani o'z zimmamga oldim
Xpedit - piyoda sayr qilish va sayr qilish uchun atmosferani kuzatuvchi qurilma: 12 qadam (rasmlar bilan)
Xpedit - piyoda sayr qilish va sayr qilish uchun atmosferani kuzatuvchi qurilma: Agar siz sarguzashtli sayohatni yoki yovvoyi tabiatga sayohat qilishni rejalashtirmoqchi bo'lsangiz, sumkangizda atrof -muhitni tushunishga yordam beradigan qurilma bo'lishi shart. Yaqinlashib kelayotgan sarguzashtli sayohatim uchun men yordamchi qurilmani qurishni rejalashtirdim