Სარჩევი:
- მარაგები
- ნაბიჯი 1: შეაერთეთ თქვენი წრე
- ნაბიჯი 2: დაამატეთ თქვენი კოდი
- ნაბიჯი 3: შექმენით კონტეინერი / ჭურვი
ვიდეო: TOYL Task Tracker: 3 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
ნუ გძულთ, როდესაც გეგმავთ სამუშაოს ან უარესს, ხართ სამუშაო საათების შუაგულში და თქვენს ტელეფონზე მოდის შეტყობინება-"სწრაფი შემოწმება" ხდება საათის შემდეგ. ასევე, იცით რამდენ დროს მუშაობთ გარკვეულ ამოცანებზე იმ დროსთან შედარებით, რაც კვირაში დაუთმეთ სამუშაოს?
შეიყვანეთ TOYL ამოცანების მიმდევარი. ეს საშუალებას გაძლევთ გამორთოთ ტელეფონი და გაამახვილოთ ყურადღება სამუშაოზე, ამასთანავე საშუალებას მოგცემთ განსაზღვროთ იმდენი დრო, რამდენიც გსურთ კვირაში-ვთქვათ 60 საათი-და ის ამოცანები, რომელთა შესრულებაც გსურთ. როდესაც დაჯდებით სხდომაზე, თქვენ წარმოიდგენთ რამდენი დრო გაქვთ დარჩენილი თქვენი საერთო სამუშაოსთვის. ტრეკერს აქვს ორი რეჟიმი: ტაიმერი, სადაც წინასწარ განსაზღვრეთ რამდენი დრო გსურთ გაატაროთ კვირაში ერთ დავალებაზე და წამზომი, სადაც შეგიძლიათ უბრალოდ დაიწყოთ ტაიმერის გაჩერება ამოცანის შერჩევის შემდეგ.
მარაგები
წრე
- ადაფრუტის ბუმბული ჰუზა
- ადაფრუტის ბუმბული
- სათაურის მამრობითი ქინძისთავები
- სათაურის ქალი ქინძისთავები
- 500 mAh ბატარეა
- 100K ohm რეზისტორები x2
- საიზოლაციო ლენტი
- ჩამჯდარი მავთული
- მავთულის სტრიპტიზატორები
- Solder Fan
გარსაცმები
- გაუმჭვირვალე აკრილის ფურცელი 24”x18”
- ორმხრივი ლენტი
- წვდომა ლაზერულ საჭრელზე
- ვექტორული პროგრამული უზრუნველყოფა
ნაბიჯი 1: შეაერთეთ თქვენი წრე
Solder ქალი header ქინძისთავები ბუმბულის Huzzah. ეს გაკვეთილი სასარგებლოა Feather Huzzah აპარატურის დაყენებისთვის. შემდეგ, შეაერთეთ მამრობითი სათაურის ქინძისთავები FeatherWing– ზე. მათი ამგვარად მირთმევა საშუალებას გაძლევთ შეუერთდეთ და გამოყავით ბუმბულის ფრთისგან ბუმბულის ჰუზასგან, როცა საჭიროა. ეს განსაკუთრებით მოსახერხებელია, როდესაც თქვენ უნდა დაამატოთ რეზისტორები თქვენს FeatherWing- ში, რაც არის შემდეგი ნაბიჯი. შეაერთეთ 100K ohm რეზისტორები თითოეული პინიდან 0 და 2, 3V- თან დაკავშირებული.
დააყენეთ თქვენი Feather Huzzah აპარატურა
დააყენეთ თქვენი ბუმბულის ფრთის აპარატურა
ნაბიჯი 2: დაამატეთ თქვენი კოდი
ეს კოდი არის გაკვეთილის მე –5 ასახვა ნივთების ინტერნეტიდან, დრო ნებადართულია, მე მსურს შეცვალონ Preceptitaton სერვისი, რომელიც თვალყურს ადევნებს ამოცანებს, რომლებიც დამატებულია ToDosit IFTTT აპლეტის საშუალებით. ამ მომენტში თქვენ მოგიწევთ ხელით შეიყვანოთ დავალებების მთელი რიგი და გამოიყენოთ ღილაკი A მათ გასავლელად. გარდა ამისა, მე მომეწონებოდა, რომ ტაიმერი დაშიფრულიყო წუთებში და ითვლიდა შემდეგ დავალებაზე გადასვლისას. უღრმესი მადლობა ბეკი შტერნს ქრონომეტრის საბაზისო კოდის შესაქმნელად და დავალებების ველოსიპედით სიარულისთვის. თუ თქვენ დაინტერესებული ხართ პროექტის ინტერნეტთან დაკავშირებით, მე გირჩევთ გაიაროთ კლასების ეს ნაკრები.
// Instructables Internet of Things კლასის ნიმუში კოდი // Circuit აჩვენებს ინტერნეტ მონაცემებს // ამინდის მონაცემები გროვდება არხში // მრავალი NeoPixels ვიზუალიზაციას გაუკეთებს ამინდის მდგომარეობას // // შეცვლილია ბეკი შტერნის მიერ 2017 // Adafruit IO გამოწერის მაგალითზე დაყრდნობით
// Adafruit ინვესტიციას უწევს დროს და რესურსებს ამ ღია კოდის უზრუნველსაყოფად.
// გთხოვთ მხარი დაუჭიროთ ადაფრუტს და ღია კოდის აპარატურას ადაფრუტისგან // პროდუქციის შეძენით! // // დაწერილი Todd Treece– ს მიერ Adafruit Industries // საავტორო უფლება (გ) 2016 Adafruit Industries // ლიცენზირებული MIT ლიცენზიით. // // ყველა ზემოთ მოყვანილი ტექსტი უნდა შეიცავდეს ნებისმიერ გადანაწილებას.
/*********************** Adafruit IO კონფიგურაცია ********************** *********
/ ეწვიეთ io.adafruit.com თუ გჭირდებათ ანგარიშის შექმნა, // თუ გჭირდებათ თქვენი Adafruit IO გასაღები. #განსაზღვრეთ IO_USERNAME "YourUsernameHere" #განსაზღვრეთ IO_KEY "YourIOKeyHere"
/***************************** WIFI კონფიგურაცია **************** *********************/
#განსაზღვრეთ WIFI_SSID "WifiName"
#განსაზღვრეთ WIFI_PASS "WifiPassword"
#მოიცავს "AdafruitIO_WiFi.h"
AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
/*********************** მთავარი პროგრამა იწყება აქ ******************** **********/
#ჩართეთ #ჩართეთ #ჩართეთ #ჩართეთ
#ჩართეთ
#ჩართეთ #ჩართეთ #ჩართეთ
#განსაზღვრეთ OLED_RESET 3
Adafruit_SSD1306 ჩვენება (128, 32 და Wire, OLED_RESET);
// ეს მუდმივი არ შეიცვლება:
const int buttonPinA = 0; // ქინძისთავები, რომლებსაც ღილაკები ერთვის const int ღილაკზე PinB = 16; // ამ ერთს უკვე აქვს გამწევი რეზისტორი, დანარჩენ ორს სჭირდება ერთი const int ღილაკი PinC = 2;
// ცვლადები შეიცვლება:
int ღილაკიAPushCounter = 0; // მრიცხველი ღილაკების დაჭერისთვის int buttonAState = 0; // ღილაკის ამჟამინდელი მდგომარეობა int lastButtonAState = 0; // ღილაკის წინა მდგომარეობა
// ცვლადები შეიცვლება:
int ღილაკი BPushCounter = 0; // მრიცხველი ღილაკების დაჭერის რაოდენობის int buttonBState = 0; // ღილაკის ამჟამინდელი მდგომარეობა int lastButtonBState = 0; // ღილაკის წინა მდგომარეობა
// ცვლადები შეიცვლება:
int ღილაკიCPushCounter = 0; // მრიცხველი int ღილაკზე დაჭერილი ღილაკების რაოდენობისათვის სახელმწიფო = 0; // ღილაკის ამჟამინდელი მდგომარეობა int lastButtonCState = 0; // ღილაკის წინა მდგომარეობა
სიმებიანი displayForecast = "უცნობი";
int timerVal = 0;
ხელმოუწერელი long lastStartTime = 0; bool timerEnabled = 0;
AdafruitIO_Feed *ნალექი = io.feed ("ნალექი"); // დააყენეთ "ნალექების" წყარო
// AdafruitIO_Feed *taskmanager = io.feed ("taskmanager"); // დააყენეთ 'taskmanager' არხი
void setup () {
pinMode (buttonPinA, INPUT); pinMode (ღილაკი PinB, INPUT_PULLUP); pinMode (buttonPinC, INPUT);
// SSD1306_SWITCHCAPVCC = გამოიმუშავეთ ჩვენების ძაბვა 3.3 ვ -დან შინაგანად
ჩვენება. დასაწყისი (SSD1306_SWITCHCAPVCC, 0x3C); // მისამართი 0x3C 128x32– ისთვის
// ეკრანზე აჩვენეთ საწყისი ჩვენების ბუფერის შინაარსი -
// ბიბლიოთეკა ინიციალიზებს ამას Adafruit splash ეკრანით. ჩვენება. ჩვენება (); დაგვიანება (2000); // პაუზა 2 წამი
// ბუფერის გასუფთავება.
display.clearDisplay ();
// სერიული კავშირის დაწყება
Serial.begin (115200);
// დაუკავშირდით io.adafruit.com– ს
Serial.print ("ადაფრუტის IO- სთან დაკავშირება"); io.connect (); // დააყენეთ შეტყობინებების დამმუშავებელი "ნალექების" არხისთვის. // handleMessage ფუნქცია (განსაზღვრულია ქვემოთ) // იძახება ყოველთვის, როდესაც შეტყობინება // მიიღება adafruit io– დან. ნალექი-> onMessage (handleMessage);
// დაელოდეთ კავშირს
ხოლო (io.status () <AIO_CONNECTED) {Serial.print ("."); დაგვიანება (500); }
// ჩვენ დაკავშირებულები ვართ
Serial.println (); Serial.println (io.statusText ());
}
ბათილი მარყუჟი () {
// io.run (); საჭიროა ყველა ესკიზისთვის.
// ის ყოველთვის უნდა იყოს თქვენი მარყუჟის // ფუნქციის ზედა ნაწილში. ის ინარჩუნებს კლიენტს კავშირში // io.adafruit.com– თან და ამუშავებს ნებისმიერ შემომავალ მონაცემს. io.run ();
// წაიკითხეთ ღილაკის შეყვანის პინი:
buttonAState = digitalRead (ღილაკი PinA); buttonBState = digitalRead (ღილაკი PinB); buttonCState = digitalRead (ღილაკი PinC);
// შეადარეთ ღილაკი სახელმწიფო მის წინა მდგომარეობას
თუ (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// თუ მდგომარეობა შეიცვალა, გაზარდეთ მრიცხველი თუ (buttonAState == LOW) {// თუ ამჟამინდელი მდგომარეობა არის LOW მაშინ ღილაკი დაჭერილი იყო ღილაკიAPushCounter ++; Serial.print ("ღილაკის ნომერი უბიძგებს:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// თუ ამჟამინდელი მდგომარეობა არის LOW მაშინ ღილაკზე დაჭერილია buttonBPushCounter ++; Serial.print ("B ღილაკის ბიძგი:"); Serial.println (buttonBPushCounter); Serial.println ("დაწყებული ტაიმერი"); ტაიმერი ჩართულია = 1; lastStartTime = მილი (); } if (buttonCState == LOW) {// თუ ამჟამინდელი მდგომარეობა არის LOW მაშინ ღილაკზე დაჭერილია buttonCPushCounter ++; Serial.print ("C ღილაკის დაჭერის რაოდენობა:"); Serial.println (buttonCPushCounter); Serial.println ("ტაიმერის გაჩერება"); timerEnabled = 0; }} if (timerEnabled == 1) {// ტაიმერის გაზრდა მხოლოდ მაშინ, როდესაც ის დაიწყება timerVal = (millis () - lastStartTime)/1000; }
// პოზიციის ჩვენება 1 - პროგნოზი
// if (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (WHITE); // display.setCursor (0, 0); // display.print ("პროგნოზი:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("მეორე ხაზი"); // display.println ("მაგალითი შინაარსი"); // ჩვენება. ჩვენება (); // // დაგვიანება (2000); //}
// პოზიციის ჩვენება 1 - ამოცანა 1
if (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (WHITE); display.clearDisplay (); display.setCursor (0, 0); display.println ("კვლევა - ინტერვიუები"); ჩვენება. println (); display.print ("ტაიმერი:"); display.println (timerVal); ჩვენება. ჩვენება (); }
// ჩვენების პოზიცია 2 - ამოცანა 2
if (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("სტუდიის დამზადება - კოდი"); ჩვენება. ბეჭდვა (); display.print ("ტაიმერი:"); display.println (timerVal); ჩვენება. ჩვენება (); }
// ჩვენების პოზიცია 3 - ამოცანა 3
if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - ესკიზი"); ჩვენება. ბეჭდვა (); display.print ("ტაიმერი:"); display.println (timerVal); ჩვენება. ჩვენება (); }
// შეინახეთ მიმდინარე მდგომარეობა, როგორც ბოლო მდგომარეობა, // მომდევნო დროს მარყუჟის მეშვეობით lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = ღილაკიCState;
}
// ეს ფუნქცია იძახება შეტყობინების გაგზავნისას
// მიღებულია Adafruit IO– დან. იგი მიმაგრებული იყო // feed ზევით setup () ფუნქციაში. void handleMessage (AdafruitIO_Data *data) {
სიმებიანი პროგნოზი = მონაცემები-> toString (); // შეინახეთ შემომავალი ამინდის მონაცემები სტრიქონში
Serial.print ("მიღებული <-"); Serial.println (პროგნოზი); displayForecast = პროგნოზი; // შემდეგი სტრიქონები ინახავს IFTTT ამინდის სხვადასხვა სიტყვებს, რაც აქამდე აღმოვაჩინე String task1 = სიმებიანი ("ამოცანა 1"); სიმებიანი წვიმა = სიმებიანი ("წვიმა"); სიმებიანი lightrain = სიმებიანი ("მსუბუქი წვიმა"); სიმებიანი წვიმა = სიმებიანი ("წვიმის საშხაპე"); სიმებიანი AMshowers = სიმებიანი ("AM საშხაპეები"); სიმებიანი rainandsnow = სიმებიანი ("წვიმა და თოვლი"); სიმებიანი თოვლი = სიმებიანი ("თოვლი"); სიმებიანი თოვლის შხაპი = სიმებიანი ("თოვლის საშხაპე"); სიმებიანი მოღრუბლული = სიმებიანი ("მოღრუბლული"); სიმებიანი უმეტესად მოღრუბლული = სიმებიანი ("ძირითადად მოღრუბლული"); სიმებიანი partlycloudy = სიმებიანი ("ნაწილობრივ მოღრუბლული"); სიმებიანი clearsky = სიმებიანი ("გასუფთავება"); სიმებიანი სამართლიანი = სიმებიანი ("სამართლიანი"); სიმებიანი მზიანი = სიმებიანი ("მზიანი");
// ეს თუ განცხადებები ადარებს ამინდის შემომავალ ცვლადს შენახულ პირობებს და შესაბამისად აკონტროლებს NeoPixels- ს.
// თუ წვიმაა პროგნოზში if (forecast.equalsIgnoreCase (rain) || forecast.equalsIgnoreCase (lightrain) || forecast.equalsIgnoreCase (rainshower) || forecast.equalsIgnoreCase (AMshowers)) {Serial.println ("ნალექები პროგნოზი დღეს ");
}
// თუ პროგნოზში არის თოვლი if (forecast.equalsIgnoreCase (თოვლი) || forecast.equalsIgnoreCase (rainandsnow) || forecast.equalsIgnoreCase (თოვლის შხაპი)) {Serial.println ("ნალექები პროგნოზში დღეს");
}
// თუ პროგნოზში მზეა (პროგნოზი. EqualsIgnoreCase (clearsky) || forecast.equalsIgnoreCase (სამართლიანი) || forecast.equalsIgnoreCase (მზიანი)) {Serial.println ("გარკვეული სახის მზე პროგნოზში დღეს");
}
// თუ პროგნოზში ღრუბლებია თუ (forecast.equalsIgnoreCase (მოღრუბლული) || forecast.equalsIgnoreCase (ძირითადად მოღრუბლული) || forecast.equalsIgnoreCase (ნაწილობრივ მოღრუბლული)) {Serial.println ("ღრუბლიანი ცა პროგნოზში დღეს");
}
}
ნაბიჯი 3: შექმენით კონტეინერი / ჭურვი
გარსისთვის, დაიწყეთ იმის განსაზღვრით, თუ რა ზომის გსურთ იყოს თქვენი ჩარჩო, ან შეგიძლიათ გადმოწეროთ ჩემი ფაილი. ზომის განსაზღვრის შემდეგ შეგიძლიათ გამოიყენოთ MakerCase ვექტორული ფაილის განლაგების შესაქმნელად.
გაუშვით ფაილი ლაზერული საჭრელით - ამას უნდა დასჭირდეს დაახლოებით 5 წუთი. ამის შემდეგ შეაერთეთ ჭურვი.
მე არ გავითვალისწინე მასალის სიგანე, რაც ჩემს ღილაკებს ძნელად აღწევს. მე მაინც უნდა ვიპოვო მათი დამაგრების გზა. ისინი ასევე ძალიან მცირეა, რაც ართულებს მათთან მუშაობას.
გირჩევთ:
წვრილმანი GPS Tracker --- პითონის პროგრამა: 5 ნაბიჯი (სურათებით)
წვრილმანი GPS Tracker --- პითონის პროგრამა: ორი კვირის წინ ველოსიპედის ღონისძიებაში მივიღე მონაწილეობა. დასრულების შემდეგ, მინდოდა მარშრუტის შემოწმება და სიჩქარე, რომელსაც მაშინ გავდიოდი. სამწუხაროდ, ეს არ იქნა მიღწეული. ახლა მე ვიყენებ ESP32– ს GPS ტრეკერის შესაქმნელად და მას ავიღებ ჩემი ველოსიპედის მარშრუტის ჩასაწერად
Etextile VR ხელთათმანები Vive Tracker– ისთვის: 13 ნაბიჯი (სურათებით)
Etextile VR ხელთათმანები Vive Tracker– ისთვის: ეს სახელმძღვანელო გიჩვენებთ თუ როგორ უნდა გააკეთოთ etextile ხელთათმანები VR– ში გამოსაყენებლად Vive ტრეკერის საშუალებით. ისინი ჩაანაცვლებენ Vive– სთვის განკუთვნილ ჯოისტიკებს, რაც VR ურთიერთქმედებას უფრო შეხებით და ადამიანურად აქცევს. მათ უწოდებენ „მუდრას“ხელთათმანებს, რადგან თქვენ აჭერთ ინდექსს და
LoRa GPS Tracker/Pager: 9 ნაბიჯი (სურათებით)
LoRa GPS Tracker/Pager: --- მოწყობილობა, რომელიც აერთიანებს რეალურ დროში მდებარეობის თვალყურის დევნებას და ორმხრივ პეიჯერს, LoRa mesh ქსელში .--- მე დამიკავშირდა მრავალი ადამიანი საძიებო და სამაშველო სამსახურში (SAR), რომლებიც დაინტერესებული ვარ სხვა Ripple LoRa mesh პროექტებით, რომლებზეც ვმუშაობდი
LoRa GPS Tracker: 6 ნაბიჯი (სურათებით)
LoRa GPS Tracker: ეს პროექტი აჩვენებს, თუ როგორ უნდა ააწყოთ თქვენი საკუთარი GPS ტრეკერის მოდული, Ripple LoRa mesh ქსელებისთვის გამოსაყენებლად. იხილეთ ამ თანმხლები სტატია ინფორმაციისთვის: https://www.instructables.com/id/LoRa-Mesh-Radio/ ეს ტრეკერის მოდულები იყენებენ Semtech LoRa რადიოებს და
Movie Tracker - Raspberry Pi Powered Theatrical Release Tracker: 15 Steps (სურათებით)
Movie Tracker - Raspberry Pi Powered Theatrical Release Tracker: Movie Tracker არის clapperboard ფორმის, Raspberry Pi- ით აღჭურვილი გამოშვების Tracker. ის იყენებს TMDb API- ს, რომ დაბეჭდოს პოსტერი, სათაური, გამოსვლის თარიღი და თქვენს რეგიონში მომავალი ფილმების მიმოხილვა, განსაზღვრულ დროის ინტერვალში (მაგ. ფილმების გამოშვება ამ კვირაში)