Სარჩევი:

ESP32 სენსორული WordClock LED მატრიცაზე: 5 ნაბიჯი (სურათებით)
ESP32 სენსორული WordClock LED მატრიცაზე: 5 ნაბიჯი (სურათებით)

ვიდეო: ESP32 სენსორული WordClock LED მატრიცაზე: 5 ნაბიჯი (სურათებით)

ვიდეო: ESP32 სენსორული WordClock LED მატრიცაზე: 5 ნაბიჯი (სურათებით)
ვიდეო: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, ნოემბერი
Anonim
Image
Image

ამ პროექტში ვქმნი გადახვევის WordClock– ს ESP32– ით, LED მატრიქსით და სიგარის ყუთით.

WordClock არის საათი, რომელიც აწერია დროს და არა მხოლოდ ეკრანზე დაბეჭდვას ან აქვს წაკითხული ხელები. ეს საათი გეტყვით, რომ ეს არის დღის 3 საათიდან 10 წუთი, ანუ შუადღე. მე კი დავპროგრამე, რომ გამოიყენოს Prevening (დიდი აფეთქების თეორიიდან) სახელი ორაზროვანი პერიოდის განმავლობაში შუადღესა და საღამოს შორის. იწყება 16:00 საათზე.

ESP32 გასაოცარია, ისინი იმდენად სახალისო და იაფია, თუ გიყვართ არდუინოს პროგრამირება ნამდვილად გაგიკვირდებათ რისი გაკეთება შეუძლია ESP32 10 დოლარამდე. ისინი იყენებენ Arduino IDE- ს და ადვილია პროგრამირება. მე ვაჩვენებ, თუ როგორ უნდა გავაკეთოთ ეს ინსტრუქციულად.

მარაგები

  • ESP32 - დაახლოებით $ 10 ამაზონზე
  • LED მატრიცა (max7219) (და მავთულები) - $ 9 ამაზონი
  • Სიგარეტის კოლოფი
  • USB დენის კაბელი
  • სურვილისამებრ 3D პრინტერი esp32 სტენდისთვის

ნაბიჯი 1: დააყენეთ თქვენი Arduino IDE ESP32– ის მხარდასაჭერად

მიიღეთ Arduino IDE:

  • ბრაუზერში გადადით
  • დააწკაპუნეთ პროგრამულ უზრუნველყოფაზე და შემდეგ ჩამოტვირთეთ, რომ მიიღოთ ARDUINO 1.8.12
გამოსახულება
გამოსახულება

დაამატეთ ESP32 მხარდაჭერა თქვენს Arduino IDE– ს:

  • დაიწყეთ Arduino IDE
  • დააწკაპუნეთ ფაილის მენიუზე და შემდეგ პარამეტრებზე.

ერთხელ "პარამეტრებში" დაამატეთ მწარმოებლის მხარდაჭერა შემდეგი ხაზის დამატებით "დამატებითი დაფის მენეჯერს"

გამოსახულება
გამოსახულება

dl.espressif.com/dl/package_esp32_index.js

ეს მოგვცემს წვდომას, რომ დავამატოთ დაფა IDE- ში

გადადით ინსტრუმენტების მენიუში, შემდეგ დაფაზე და გადადით დაფის მენეჯერთან

გამოსახულება
გამოსახულება

შემდეგი მოძებნეთ "ESP" და დაამატეთ პაკეტი Expressif- ის მიერ.

გამოსახულება
გამოსახულება

დაბოლოს, ჩვენ გვინდა დავუბრუნდეთ "ინსტრუმენტების" მენიუს, შემდეგ ისევ "დაფას" და გადაახვიეთ ქვემოთ თქვენი ESP32 მოწყობილობის საპოვნელად.

ჩემი არის "ESP32 Wrover მოდული"

გამოსახულება
გამოსახულება

ნაბიჯი 2: შეაერთეთ LED მატრიცა ESP32– თან

გამოსახულება
გამოსახულება

LED მატრიცა შედგება LED- ების ოთხი 8x8 ბლოკისგან და იყენებს MAX7219 ჩიპს. ეს გვაძლევს 8x32 LED- ებს მატრიცაში ან 256 LED- ებს !!!.

Esp32 ზის სადგომზე, რომელიც მე შევქმენი TinkerCad– ში. ჩემს მფლობელს უჭირავს ქინძისთავები ზემოთ, ასე რომ თქვენ შეგიძლიათ მიამაგროთ მავთულები.

LED მატრიცა უკავშირდება ESP32– ს SPI– ს გამოყენებით (სერიული პერიფერიული ინტერფეისი).

გამოიყენეთ ქალი/ქალი მავთულები და დააკავშირეთ ქინძისთავები შემდეგნაირად:

  • ESP32 - 5v to VCC მატრიცაზე
  • ESP32 - GND to GND მატრიცაზე
  • ESP32 - PIN5 (G5) to CS მატრიცაზე
  • ESP32 - PIN23 (G23) დინამდე მატრიცაზე
  • ESP32 - მიამაგრეთ 18 (G18) CLK მატრიცაზე

შესაძლებელია სხვა ქინძისთავების გამოყენება, ან თუ თქვენს ESP32- ს აქვს განსხვავებული პინუტი.

ნაბიჯი 3: ერთად აწყობა

ერთად აყენებს მას
ერთად აყენებს მას

შემდეგ სიგარეტის კოლოფი დავჭრა, რომ მომეცა ადგილი LED ეკრანის დასაყენებლად. ყუთი რბილია და მე შევძელი საპარსი დანა გამოვიყენო. შემდეგ გავხეხე, რომ გამესწორებინა.

დენის კაბელისთვისაც უკნიდან მთელი გავჭრა. მე მხოლოდ USB ენერგია გამოვიყენე. სიგარეტის ყუთში შემეძლო USB ტელეფონის დამტენის ბატარეის დამატებაც კი, თუ მინდოდა უკაბელო ყოფილიყო.

ნაბიჯი 4: Arduino IDE და INO ფაილი

Arduino IDE და INO ფაილი
Arduino IDE და INO ფაილი

საუკეთესო ნაწილი არის კოდი. მაგრამ პირველ რიგში ჩვენ უნდა დავამატოთ ბიბლიოთეკა, რათა პროგრამამ გამოიყენოს ჩვენება უფრო მარტივი გზით. დავამატე MD_MAX72xx ბიბლიოთეკა.

ბიბლიოთეკის დასამატებლად დააწკაპუნეთ "ესკიზის" მენიუზე, შემდეგ "ბიბლიოთეკის ჩართვაზე" და "ბიბლიოთეკების მართვაზე", ეს ჩაიტვირთება და საშუალებას მოგცემთ მოძებნოთ MD_MAX72xx ბიბლიოთეკა. უბრალოდ დააწკაპუნეთ ინსტალაციაზე და თქვენ გაქვთ.

შემდეგ მიიღეთ ჩემი Arduino INO ფაილი:

github.com/aapicella/wordClock/blob/master/Word_Clock_LED_NTP_final_.ino

ჩატვირთეთ ინო ფაილი თქვენს Arduino IDE- ში, შეაერთეთ USB ESP32– დან თქვენს კომპიუტერს.

დააწკაპუნეთ "ესკიზზე" და შემდეგ ატვირთეთ

ამ დროს საათი არ იმუშავებს, ESP32 არაფერს არ აჩვენებს. რატომ? ჩვენ უნდა დავამატოთ თქვენი WIFI კოდი, რადგან WordClock უერთდება ინტერნეტს დროის მისაღებად. მართალია … შემდეგი ნაბიჯი ->.

ნაბიჯი 5: კოდი

საბოლოოდ ჩვენ მივაღწიეთ ჩემს საყვარელ ნაწილს. Პროგრამა. მე დავფარავ მას ზემოდან ქვემოდან, თუ თქვენ დაინტერესებული ხართ, იმისათვის, რომ პროგრამამ იმუშაოს თქვენს სახლში ინტერნეტით, თქვენ უბრალოდ უნდა შეცვალოთ ეს ხაზები.

// დაამატეთ თქვენი ქსელის ინფორმაცია

const char *ssid = "xxxxxx";

const char *პაროლი = "xxxxxx";

პროგრამა არის საკმაოდ რთული, მაგრამ ძალიან სახალისო.

"Prevening" - ის გამორთვისთვის შეცვალეთ მნიშვნელობა false:

const boolean PREVENING = ჭეშმარიტი; //Დიდი აფეთქების თეორია.

გადახვევის შემდეგ ციფრული დროის ჩვენების გამორთვა შეცვალეთ ეს ყალბი.

const ლოგიკური DISPLAY_DIGITAL = ჭეშმარიტი; // ჩართეთ ციფრული დროის ჩვენება გადახვევის შემდეგ.

დროის გადახვევა:

მე ვიღებ დროს დროის სერვერზე ინტერნეტში NTP (ქსელის დროის პროტოკოლი) გამოყენებით. დრო იმართება ცვლადში, რომელსაც ეწოდება timeinfo და ჩვენ ვიღებთ საათსა და წუთს მისგან

int საათი = timeinfo.tm_hour; /// 0-23

int წუთი = timeinfo.tm_min; // 0-59

შემდეგი შეამოწმეთ AM ან PM

ეს არის AM თუ საათი <12

მე ვქმნი სტრიქონს სახელწოდებით "დრო" და ვიწყებ მას:

theTime = "ეს არის";

რიცხვის სიტყვებად მისაღებად შევქმენი სიტყვების მასივი 30 -მდე რიცხვისთვის

const char *რიცხვები = {

"0", "ერთი", "ორი", "სამი", "ოთხი", "ხუთი", "ექვსი", "შვიდი", "რვა", "ცხრა", "ათი", "თერთმეტი", "თორმეტი" "," ცამეტი "," თოთხმეტი "," მეოთხედი "," თექვსმეტი "," ჩვიდმეტი "," თვრამეტი "," ცხრამეტი "," ოცი "," ოცდაერთი "," ოცდაორი "," ოცდა სამი "," ოცდაოთხი "," ოცდახუთი "," ოცდაექვსმეტი "," ოცდაშვიდი "," ოცდამეხი "," ოცდაცხრა "," ნახევარი წარსული "};

ასე რომ, როდესაც მისი 12:05 ან თორმეტის ხუთი წუთი უკვე ნამდვილად არდუინოსთანაა

რიცხვები [5] წუთები ნომრებიდან [12]

იმის დასადგენად, არის თუ არა მისი "წუთები წარსული" თუ "წუთი წუთისათვის" ჩვენ უბრალოდ ვუყურებთ წუთებს. თუ წუთები <31-ია, ეს არის "წუთები გასული", თუ წუთები 31-ზე მეტია, ჩვენ ვიყენებთ "Minutes To" მაგრამ ვიყენებთ რიცხვებს [60-წუთი], ასე რომ 12:50 იქნება 60-50 წუთი ან რიცხვები [10] რაც მოგვცეს 10 წუთიდან 12 საათამდე.

რასაკვირველია, არსებობს სხვა წესები, როგორიცაა 15, 30, 45, ჩვენ არ ვიყენებთ წუთებს მისი ნახევარი ან მეოთხედი, და თუ წუთი არის 0 დრო არის მხოლოდ "ათი საათი" ან შუადღე.

ასე რომ, ერთად რომ ვთქვათ, მე ვამატებ ყველა ელემენტს String theTime– ს, შემდეგ ვაჩვენებ LED მატრიცაზე. მე ვიყენებ რამოდენიმე If განცხადებას. მე ალბათ უნდა გამომეყენებინა შემთხვევა, მაგრამ მათი დამატება უფრო ადვილი იყო.

ჩვენი მაგალითისთვის 12:05

theTime = "ეს არის"

თუ წუთი <31 გამოიყენეთ "წუთის გასული" წინააღმდეგ შემთხვევაში მისი "წუთი"

theTime + = რიცხვები [5] + "წუთი გასული" + ნომერი [12] + "O'Clock" // შენიშვნა: ნოტაცია + = დამატებულია.

შემდეგ ჩვენ საათს ვუყურებთ იმის დასადგენად, დილაა თუ შუადღე თუ საღამო.

theTime+= "საღამოს"

მატრიცაზე გადასვლის ბოლო სტრიქონი არის:

"საღამოს თორმეტ საათზე ხუთი წუთია"

ამ პროექტის წერა ძალიან სახალისო იყო. თუ მოგწონთ გთხოვთ დააწკაპუნეთ გულზე და ხმა მიეცით გთხოვთ.

გირჩევთ: