Mündəricat:

DFRobot FireBeetle ESP32 və LED Matrix Cover istifadə edərək 1 layihədə 4 layihə: 11 addım (şəkillərlə)
DFRobot FireBeetle ESP32 və LED Matrix Cover istifadə edərək 1 layihədə 4 layihə: 11 addım (şəkillərlə)

Video: DFRobot FireBeetle ESP32 və LED Matrix Cover istifadə edərək 1 layihədə 4 layihə: 11 addım (şəkillərlə)

Video: DFRobot FireBeetle ESP32 və LED Matrix Cover istifadə edərək 1 layihədə 4 layihə: 11 addım (şəkillərlə)
Video: FireBeetle 2 ESP32 S3 WROOM-1 getting started tutorial 2024, Iyul
Anonim
Image
Image
Layihələr üçün Ümumi Kitabxanalar quraşdırın
Layihələr üçün Ümumi Kitabxanalar quraşdırın

Bu layihələrin hər biri üçün bir təlimat vermək haqqında düşündüm - amma sonda qərara gəldim ki, həqiqətən də ən böyük fərq, hər bir layihə üçün proqram təminatıdır ki, düşündüm ki, yalnız bir böyük təlimat vermək daha yaxşıdır!

Donanım hər bir layihə üçün eynidir və ESP32 cihazını proqramlaşdırmaq üçün Arduino IDE -dən istifadə edirik.

Beləliklə, avadanlıq nədir: Bütün avadanlıqlar DFRobotdakı dostlarım tərəfindən təmin edildi, çox yaxşı dərsləri var və bunun üçün əsas lövhələr quraşdırmaq asandır. Yaxşı bir dəstək sisteminə sahib olun və ABŞ -a olduqca sürətli göndərin.

Firebeetle ESP32 lövhəsinin və LED Matrixin tam açıqlanması DF Robot tərəfindən təmin edildi, təqdim olunan və videolarda olan layihələr özümə aiddir.

Bu layihələrin hamısında DFRobot FireBeetle ESP32 IOT MicroController istifadə olunur

www.dfrobot.com/product-1590.html

Dəstək viki - lövhənin əsas quraşdırma təlimatlarını burada tapa bilərsiniz:

www.dfrobot.com/wiki/index.php/FireBeetle_…

Ayrıca FireBeetle -nin 24x8 LED Matrisini əhatə edir (MAVİ)

www.dfrobot.com/product-1595.html

MAVİ ledləri sevməyin - Fərqli rəngləri də var.

YAŞIL -

QIRMIZI -

BEYAZ -

SARI -

Yalnız bir LED Matrisə ehtiyacınız var - rəng sizin seçiminizdir, hamısı eyni şəkildə işləyir.

LED Matrix dəstək vikisini burada tapa bilərsiniz:

www.dfrobot.com/wiki/index.php/FireBeetle_…

Burada Arduino Kitabxanasına bir keçid tapa bilərsiniz.

github.com/Chocho2017/FireBeetleLEDMatrix

Bir az sonra bunlar haqqında daha çox …

İsteğe bağlı, lakin bəlkə də lazımlı bir şey MicroUSB 3xAA Batareya Tutucusudur.

www.dfrobot.com/product-1130.html

Beləliklə, lazım olan avadanlıq budur - 4 layihə nədir -

Addım 1: Layihələr

Image
Image

Layihə 1: Hərbi Saat ekranı və ya AMPM vaxt göstəricisi olan sadə bir LED Matrix NTP Saatıdır, Bu saat bir NTP -yə (vaxt serveri) qoşulacaq, vaxtı ələ keçirəcək və yerli vaxt əldə etmək üçün bir söndürmə dəsti tətbiq edəcək. LED Matrisində vaxtı göstərəcək. - Çox sadə bir saat və çox sadə 1 -ci layihədir.

Layihə 2: ISS Pass Prediction Display, bu layihə prosessorun 2 -ci nüvəsini istifadə edir. ISS -in nə qədər yaxın (millərlə) olduğunu, növbəti ISS -in yerinizdə nə vaxt keçəcəyini (UTC vaxtında) və isteğe bağlı olaraq kosmosda neçə insanın olduğunu göstərəcək. Bu məlumatların çoxu tez -tez dəyişmədiyinə görə, 2 -ci nüvəni yalnız keçid proqnozlarının və ya hər 15 dəqiqədə neçə nəfərin kosmosda olmasını yoxlamaq üçün yoxlayırıq. Bu şəkildə serverə çoxlu API zənglərinin qarşısını ala bilərik. Bu layihə bir az daha mürəkkəbdir, amma yenə də etmək olduqca asandır.

Layihə 3: MQTT istifadə edərək sadə hərəkət edən bir mesaj işarəsi, ESP8266 D1 mini lövhəsi üçün hazırlanmış bir layihəyə yenidən baxdım və 8x8 LED Matrixdir - Fikir, MQTT brokerinə qoşulmaq, cihazın mövzuya bir mesaj göndərməkdir. dinləyin - və bu mesajı göstərin. Hər şey qurulduqda bunu etmək çox asandır və çox sadədir. Bir masa üstü kompüterdə MQTT müştəri proqramını qurmaq üçün bir neçə addım var. Quraşdırıldıqdan sonra MQTT, bir çox IoT cihazı tərəfindən mesaj göndərmək və qəbul etmək üçün istifadə edilən çox güclü bir mesajlaşma protokoludur.

Layihə 4: Hava İstasyonu Ekranı - Squix78 və ThingPulse tərəfindən hazırlanan ESP8266 D1 mini hava stansiyasına əsaslanır. Verilərimizi Wunderground -dan alırıq və mövcud şərtləri və temperaturu Fahrenheit dərəcələrində göstəririk. Verilərimizi hər 10 dəqiqədə bir yeniləmək üçün ESP32 -nin 2 -ci nüvəsini istifadə edirik. Quraşdırmaq da sadədir.

BOUNS MINI NÜMUNƏLƏR: Kitabxana (və yuxarıdakı eskizlər) 8x4 şriftdən istifadə edir, kitabxanada bu BOUNS mini nümunələrinin əksəriyyəti üçün istifadə etdiyim 5x4 şrift var. Kiçik yazı tipi ilə qeyd edə biləcəyim bir neçə problem var ki, bu da cihazın WIFI -dən istifadə edərkən problem yarada bilər. Bu daha çox araşdırmaq istədiyim bir şeydir, amma vaxtım var. Digər problem, sürüşməməsidir, yalnız daha böyük font sürüşdürə bilər. Beləliklə, bu nümunələrin heç biri WIFI -dən istifadə etmir - sadəcə ekranı yeniləyirlər və bunlar haqqında daha sonra danışılacaq.

Gəlin başlayaq…..

Addım 2: DFRobot FireBeetle ESP32 Kartını Arduino IDE -yə quraşdırın

Beləliklə, Arduino IDE üçün lövhənin nüvəsini quraşdırmaq üçün sizi DF Robot Wiki -yə yönləndirəcəyəm.

Müasir IDE (1.8.x və ya daha yaxşı) ilə bunu etmək olduqca asandır.

www.dfrobot.com/wiki/index.php/FireBeetle_…

Arduino IDE -də quraşdırılmış WiFi kitabxanasının problemlərə səbəb olduğunu gördüm (kitabxana qovluğunuzda quraşdırılmış hər hansı digər WiFi Kitabxanası problem yarada bilər və ya olmaya bilər). Problemi həll etməyin yeganə yolu (və ya ən azından ən asan yolu) WiFi kitabxanasını IDE qovluğundan silməkdir. Təəssüf ki, harada quraşdırıldığını söyləmək üçün yaxşı bir yol yoxdur - bu, IDE -nin necə qurulduğuna və hansı OS -dən istifadə etdiyinizə bağlıdır.

Etdiyim şey, problem yaradan WiFi kitabxanasıdır və yalnız WiFi qovluğunu masaüstünüzə köçürün … və IDE -ni yenidən başladın. Arduino WIFI lövhələri üçün ehtiyacınız olduğu halda kitabxananı saxlaya bilərsiniz.

Gördüyüm problemlərin 90% -i yuxarıdakı məsələ ilə əlaqədardır. Arduino IDE qovluğundan və ya Arduino Kitabxana qovluğundan WiFi istifadə etməklə əlaqədar çoxlu tərtib səhvləri alırsınızsa, bu sizin probleminizdir.

İkinci problemim bəzən eskiz yükləmənin yüklənə bilməməsidir - Bu halda yenidən yükləmə düyməsini basmalı oluram və işləyir.

Və nəhayət, serial konsolunuz açıqdırsa və sonra bağlayırsınızsa - FireBeetle donur.

Bilirəm ki, DF Robot lövhə nüvəsi üzərində fəal işləyir və lövhəyə sahib olduğum qısa müddət ərzində yeni bir nüvə buraxdılar. Təəssüf ki, ən böyük problemim olan WiFi problemini həll edə bilmədi.

* Espressif -də quraşdırıla bilən 'ümumi' bir əsas menecer var, nüvədə FireBeetle ESP32 lövhəsi var, amma nömrələnmiş pinlərin necə olması ilə bağlı bir problemim var idi. Burada maraqlı olan WiFi kitabxanasının quraşdırılmış WiFi kitabxanası ilə işləməsidir - buna görə də bilirəm ki, bu məsələnin bir az yaxınlığında bir həll var.

Espressif nüvələrini sınamaq istəyirsinizsə, burada daha çox məlumat əldə edə bilərsiniz:

github.com/espressif/arduino-esp32

Mən şəxsən DF-Robot nüvəsinin necə işlədiyini, hətta yaşadığım bir neçə problemlə belə xoşuma gəlir.

** DİQQƏT: Ubuntu 16.04 əsaslı LinuxMint 18 istifadə edirəm, düşünürəm ki, bunu başqa bir maşında sınamamışam, amma etdiyim bəzi internet axtarışlarına əsaslanaraq bütün OS -lər üçün bu problemin mövcud olduğuna inanıram. **

Addım 3: Layihələr üçün Ümumi Kitabxanaları Qurun

Layihələr üçün Ümumi Kitabxanalar quraşdırın
Layihələr üçün Ümumi Kitabxanalar quraşdırın

Bütün bu layihələr bir neçə ümumi kitabxanadan istifadə edir, buna görə də indi bu addımı atmaq daha asandır.

Kitabxanadan asılı olaraq kitabxana menecerində tapa bilərsiniz - bu, kitabxana qurmağın ən asan yoludur.

Başqa bir ümumi yol, eyni dərəcədə işləyən bir zip faylı vasitəsilə qurmaqdır. Ancaq ümumiyyətlə əl ilə quraşdırma metodundan istifadə edirəm. Arduino Veb saytında üç üsulla bağlı yaxşı bir dərs var.

www.arduino.cc/az/guide/libraries

Bu kitabxanalar üçün əl üsulunu tövsiyə edərdim - eyni adlı bir neçə fərqli kitabxana olduğuna görə kitabxana menecerindən istifadə edərək səhv kitabla qarşılaşa bilərsiniz.

Bu layihələrin hamısı wifi -yə qoşulmağı asanlaşdırmaq üçün WiFi menecerindən istifadə edir - bunu etmək qərarına gəldim, buna görə də layihənizi köçürməyiniz lazım olduqda lövhəni yenidən proqramlaşdırmağa ehtiyac yoxdur. ESP8266 lövhələri üçün istifadə etdiyim bir şeydir və yaxşı işləyir - mükəmməl deyil. Kitabxanadan istifadə üçün şans bbx10 adlı bir github istifadəçisi tərəfindən ESP32 -dən istifadə etmək üçün köçürüldü. (Bu menecer ESP8266 lövhələri ilə də işləməlidir)

Bunun üçün üç kitabxana qurmalıyıq.

WiFiManager -

WebServer -

Və nəhayət DNSServer -

Bütün eskizlər üçün ümumi olan LED Matrix üçün DF Robot DFRobot_HT1632C kitabxanasıdır.

www.dfrobot.com/wiki/index.php/FireBeetle_…

Kitabxananı burada tapa bilərsiniz (Yenidən əl ilə quraşdırma metodunu tövsiyə edərdim)

github.com/Chocho2017/FireBeetleLEDMatrix

Xüsusi bir qeyd: github depomda - bir az dəyişdirilmiş DFRobot_HT1632C kitabxanam var

github.com/kd8bxp/DFRobot-FireBeetle-ESP32…

Dəyişiklik daha kiçik bir şrift üçündür və yalnız bonus nümunələrinin bəziləri üçün istifadə olunur. Dəyişdirilmiş kitabxanadan istifadə edə bilərsiniz və heç bir problem yaratmamalıdır. Bitmap şəkilləri edə biləcək bir qədər dəyişdirilmiş bir kitabxana da var (Bəzi eskizlərə nişanlar kimi əlavə olunur).

Bir az dəyişdirilmiş versiyanı istifadə etməyi seçsəniz, "dəyişdirilmiş kitabxana" qovluğunun adını FireBeetleLEDMatrix olaraq dəyişdirməlisiniz və bu qovluğu Arduino kitabxana qovluğuna köçürməlisiniz. Bu layihələr üçün bu versiyadan istifadə etməyinizə ehtiyac yoxdur, bonus nümunələrindən kiçik şriftlərdən bəzilərini sınamaq istəsəniz lazımdır.

Bunlar ümumi kitabxanalardır - hər bir layihə üçün xüsusi kitabxanalar quraşdıracağıq.

LED Matrisinə keçək ….

Addım 4: 24x8 LED Matrix Kapağı

24x8 LED Matrix Qapaq
24x8 LED Matrix Qapaq
24x8 LED Matrix Qapaq
24x8 LED Matrix Qapaq
24x8 LED Matrix Qapaq
24x8 LED Matrix Qapaq

LED Matrix üçün DF Robot Dərsliyi ilə birlikdə izləyəcəyik

www.dfrobot.com/wiki/index.php/FireBeetle_…

Giriş: Bu 24 × 8 LED Matrix displey FireBeetle seriyası üçün xüsusi olaraq hazırlanmışdır. Aşağı enerji istehlakı rejimini və sürüşmə ekranını dəstəkləyir. HT1632C yüksək performanslı LED sürücü çipi ilə, hər bir ledin ayrıca qeydiyyatı var, bu da ayrıca sürməyi asanlaşdırır. 256KHz RC saatı birləşdirir, aşağı güc rejimində yalnız 5uA, 16 miqyaslı PWM parlaqlıq tənzimləməsini dəstəkləyir. Bu məhsul, Arduino UNO kimi digər Arduino mikro nəzarətçisi ilə də işləyir.

Xüsusiyyətlər:

  • İşləmə gərginliyi: 3.3 ~ 5VLED
  • Rəng: Tək rəng (Ağ/Mavi/Sarı/Qırmızı/Yaşıl)
  • Sürücü çipi: HT1632C
  • İşləmə cərəyanı: 6 ~ 100mA
  • Aşağı Güc istehlakı: 5uARC
  • saat: 256 KHz
  • Chip Select (CS): D2, D3, D4, D5 seçilə bilər
  • Kaydırma ekranını dəstəkləyin

Varsayılan PIN kodlar:

  1. DATAD6
  2. WRD7 (Ümumiyyətlə İstifadə edilmir)
  3. CSD2, D3, D4, D5 seçilə bilər (D2 standart)
  4. RDD8
  5. VCC 5VUSB; 3.7VLipo Batareyası

(Bu layihələrin hamısı seçilmiş pin üçün D2 -dən istifadə edir, lazım olduqda bu asanlıqla dəyişdirilə bilər.)

LED Matrixin arxasında 4 kiçik açar görürsünüz, yalnız CS pinlərindən birini seçdiyinizə əmin olun. Bu kiçik açarlar CS Pininizi necə seçdiyinizdir və standart D2 -dir.

DF Robot WIKI -nin bəzi nümunə kodu var, bu kod kitabxana nümunələrində də var. (Mən inanıram)

Başqa bir qeyd: pinləriniz üçün Dx nömrələrini istifadə edin - əks halda pin nömrələri IO pin nömrələri/adları olacaq

Və bu sizə bəzi problemlərə səbəb ola bilər.

Bir nöqtə təyin etmək:

X 0 -dan 23 -ə qədərdir (və ya bir elektron tablo olaraq düşünsəniz bunlar sütunlardır).

Y 0 -dan 7 -ə qədərdir (və ya bir elektron tablo olaraq düşünsəniz, bunlar satırlar).

Kitabxana müəyyən bir nöqtə funksiyasını təmin edir.

display.setPoint (x, y) bu, imleci mesajı çap edə biləcəyiniz yerə təyin edəcək.

display.print ("Hello World", 40); // bu, ekranın x, y nöqtəsindən başlayaraq ekrandan sürüşərək "Hello World" göstərməsinə səbəb olacaq.

Bir setPixel (x, y) və clrPixel (x, y) da var - setPixel x, y yerində bir LED yandıracaq və clrPixel x, y yerində bir LED söndürəcək.

Bu kitabxananın edə biləcəyi başqa şeylər var və əksəriyyəti nümunələrə daxil edilmişdir.

(Nə edə biləcəyini görmək üçün nümunələri işə salmağı və dəyişdirməyi məsləhət görürəm).

* Eksik görünən bir şey bitmaplər çəkməkdir - kitabxana əslində bunu edə bilər, amma nədənsə kitabxananın özəl funksiyasıdır. Kitabxananın bir qədər dəyişdirilmiş versiyası üçün bonus nümunələrimə baxın

** Daha kiçik bir şriftə sahib olmaq üçün gözəl olan 5x4 şrift dəstini ehtiva edən başqa bir şey - kitabxanada nə vaxta qədər şərh edilmişdir. Mən onu şərh etmədim və işlədim, amma bir neçə problemi gördüm - ən böyüyü sürüşmür. Və gördüm ki, ya wifi ilə, ya da istifadə etmək istədiyim başqa bir kitabxanada problem yarada bilər.

Daxil etdiyim dəyişdirilmiş kitabxanalardan biri 5x4 şriftdən istifadə edir.

Layihələrə davam edək ….

Addım 5: Layihə 1: Hərbi Zaman Ekranı və ya AMPM Ekranı olan Sadə LED Matrix NTP Saatı

Layihə 1: Hərbi Zaman Ekranı və ya AMPM Ekranı olan Sadə LED Matrix NTP Saatı
Layihə 1: Hərbi Zaman Ekranı və ya AMPM Ekranı olan Sadə LED Matrix NTP Saatı
Layihə 1: Hərbi Zaman Ekranı və ya AMPM Ekranı olan Sadə LED Matrix NTP Saatı
Layihə 1: Hərbi Zaman Ekranı və ya AMPM Ekranı olan Sadə LED Matrix NTP Saatı
Layihə 1: Hərbi Zaman Ekranı və ya AMPM Ekranı olan Sadə LED Matrix NTP Saatı
Layihə 1: Hərbi Zaman Ekranı və ya AMPM Ekranı olan Sadə LED Matrix NTP Saatı

Layihə 1: Hərbi Saat ekranı və ya AMPM vaxt göstəricisi olan sadə bir LED Matrix NTP Saatıdır, Bu saat bir NTP -yə (vaxt serveri) qoşulacaq, vaxtı ələ keçirəcək və yerli vaxt əldə etmək üçün bir söndürmə dəsti tətbiq edəcək. LED Matrisində vaxtı göstərəcək. - Çox sadə bir saat və çox sadə 1 -ci layihədir.

Bu sadə layihəyə başlamazdan əvvəl NTP -nin nə olduğunu bilmək yaxşı bir fikir ola bilər -

NTP, kompüter saatlarını bir müddət istinad etmək üçün sinxronizasiya etmək üçün istifadə olunan bir internet protokolu. Standart bir protokoldur. NTP Şəbəkə Zaman Protokolu deməkdir.

NTP, UTC -ni istinad vaxtı olaraq istifadə edir (UTC Universal Saat Koordinatlıdır) GMT -dən (Greenwich Mean Time) əmələ gəlmişdir və bəzi dairələrdə Zulu Vaxtı (Hərbi) adlanır. UTC sezyum atomunun kvant rezonansına əsaslanır.

NTP xətaya dözümlüdür və yüksək miqyaslıdır, protokol bir nanosaniyədən az bir qətnamə istifadə edərək yüksək dəqiqliyə malikdir.

*

UTC saatı əksər insanlar üçün çox faydalı deyil, buna görə də saatımızı yerli vaxta uyğunlaşdırmalıyıq. Xoşbəxtlikdən bunu olduqca asan edə bilərik. Beləliklə, bu sadə NTP Saatı ilə başlayaq ….

Birincisi, NTP serverləri ilə danışmağı asanlaşdıran bir kitabxana qurmalıyıq.

github.com/arduino-libraries/NTPClient (bu kitabxana yəqin ki, kitabxana müdirindədir)

3 -cü addımı atladınız - və kitabxanaların necə qurulacağından əmin deyilsiniz (?) Yaxşı olar ki, geri qayıdın və 3 -cü addımı oxuyun:-)

Bu veb sayta daxil olmalı və vaxt zonanızda olan sizə ən yaxın şəhəri qoymalısınız.

www.epochconverter.com/timezones

Enter düyməsini vurduğunuzda "Dönüşüm nəticələri" ni görəcəksiniz və nəticələrdə ofsetinizi (GMT/UTC fərqi) saniyələrdə əldə edəcəksiniz (Mənim üçün -14400)

66 -cı sətirdəki dfrobot_firebeetle_led_matrix_ntp_clock eskizində görəcəksiniz:

#define TIMEOFFSET -14400 // Burada Saat Diliminizi təyin edin Burada https://www.epochconverter.com/timezones OFF Saniyələrdə Ayarlayın#AMPM 1 -i təyin edin // 1 = AM vaxtı, 0 = HƏRBİ/24 HR Saatı

ofset ilə -14400 əvəz edin. Növbəti sətirdə AMPM 1 görürsünüz - bu, saatın AM/PM -də vaxt göstərməsinə səbəb olacaq - əgər onu 24 saat ərzində görmək istəsəniz, birini sıfıra çevirin.

Sonra eskizi lövhənizə yükləyin, Giriş nöqtəsinə (wifi meneceri) qoşulun və WiFi məlumatlarınızı daxil edin. Əgər bunu artıq etmisinizsə, ekranda "bağlı" diyirləyin və bir neçə saniyə sonra vaxtı görməlisiniz.

Bu layihə üçün budur - sadə və istifadəsi asandır ….

(Mümkün təkmilləşdirmələr: Ay, Gün və İli göstərin, səs siqnalı və həyəcan siqnalları qurun - ümumiyyətlə bir veb səhifəsi ilə gördüklərinizə nəzarət edin. Bu fikir cari sadə eskizin böyük bir şəkildə yenidən yazılmasını tələb edəcək)

Başqa bir sadə layihəyə hazırsınız - ISS -in harada olduğunu göstərin - Proqnozları ötürün və Kosmosda neçə adam var! (PS bu eskizdə göstərilənləri idarə etmək üçün bir veb səhifədən istifadə edir) ….

Addım 6: Layihə 2: ISS Pass Proqnozlaşdırma Ekranı,

Layihə 2: ISS Pass Prediction Display,
Layihə 2: ISS Pass Prediction Display,
Layihə 2: ISS Pass Proqnozlaşdırma Ekranı,
Layihə 2: ISS Pass Proqnozlaşdırma Ekranı,
Layihə 2: ISS Pass Prediction Display,
Layihə 2: ISS Pass Prediction Display,

Layihə 2: ISS Pass Prediction Display, bu layihə prosessorun 2 -ci nüvəsini istifadə edir. ISS -in nə qədər yaxın olduğunu (millərlə), yerləşdiyiniz yerdə növbəti ISS -in nə vaxt keçəcəyini (UTC vaxtında) və isteğe bağlı olaraq kosmosda neçə insanın olduğunu göstərəcək. Bu məlumatların çoxu tez -tez dəyişmədiyinə görə, 2 -ci nüvəni yalnız keçid proqnozlarının və ya hər 15 dəqiqədə neçə nəfərin kosmosda olmasını yoxlamaq üçün yoxlayırıq. Bu şəkildə serverə çoxlu API zənglərinin qarşısını ala bilərik. Bu layihə bir az daha mürəkkəbdir, amma yenə də etmək olduqca asandır.

Bu layihə burada tapa biləcəyim əvvəlki layihələrimdən birinə əsaslanır:

(Sadə bir ISS Bildiriş Sistemi) Bununla əlaqədar olaraq, bortda OLED ekranı (D-Duino) olan bir ESP8266 istifadə etdim. Çox vaxt bu layihə fərqli bir ekran sistemindən istifadə edir, onu genişləndirdim ki, görmək istədiyinizi veb səhifəsi vasitəsilə dəyişə biləsiniz. Elə isə başlayaq ….

İstifadəsi asan olan kreditlərin çoxu çox sadə və istifadəsi asan bir API olan https://open-notify.org saytına gedir. Açıq bildir API-nin göstərilə bilən üç şey var: ISS-in enlik və uzunluqdakı yeri, verilən enlem və uzunluq əsasında proqnozları ötürür. Və nəhayət, kosmosda neçə nəfər (və adları) var.

Başqa bir kitabxana - ArduinoJson kitabxanası qurmalıyıq.

github.com/bblanchon/ArduinoJson

TimeLib.h -ə də ehtiyacımız var, amma bunu hardan aldığımı və ya IDE -yə daxil olub -olmadığını bilmirəm (üzr istəyirəm) ….

ISS -in harada olacağını əvvəlcədən söyləmək nəyə lazımdır - ISS -də müxtəlif həvəskar radio avadanlıqları var və "başın üstündə" olduqda, bir radio operatoru ISS ilə çox sadə (və ucuz) radiolardan istifadə edərək əlaqə qura bilər. Hətta mobil vəziyyətdə də (maşında sürərkən) etdim. Bu işi gerçəkləşdirmək üçün çox şeyə ehtiyacınız yoxdur. Sizə lazım olan tək şey harada olduğunu bilməkdir. Antenin ümumi istiqamətə yönəldilməsi kömək edir.

57, 58, 59 sətirləri bəzi ekran dəyişənləridir - 1 olaraq təyin edildikdə bir ekran görəcəksiniz, 0 (sıfır) olaraq təyin olunarsa bir ekran görməzsiniz. (Bu dəyişənlər eskizdə təyin oluna bilər və ya firebeetle -in yaratdığı veb səhifədən yenilənə bilər - daha sonra bu barədə).

int locDis = 1; // ISSint pasDis -in yerini göstərin = 0; // Giriş keçid proqnozlarını göstərin int pplDis = 1; // İnsanları Kosmosda göstərin

locDis ISS -in yerini enlem və boylamda göstərəcək - həm də neçə mil uzaqda olduğunu göstərir.

pasDis, pass- proqnozlarını open-notify.org saytından alacaq və göstərəcək.

və nəhayət, pplDis adları və kosmosda neçə insanın olduğunu göstərəcək - bu çox uzun sürə bilər, belə deyil

tez -tez dəyişir. (bunları dəyişə və ya tərk edə bilərsiniz, bu tamamilə isteğe bağlıdır)

Enlemimizi və boylamızı da bilməli və eskizə qoymalıyıq.

Bunun dəqiq bir uzun/uzun olması lazım deyil, şəhərinizin mərkəzi ola bilər və ya bir az kənarda. ISS -in ayaq izi başın üstündəykən genişdir və yüzlərlə (və ya minlərlə) mil məsafəni qət etmək olar, buna görə də uzun/uzun müddət bir az kənarda qalmaq anlaşma kəsici olmayacaq (çox vaxt), 500 mildən çox ünsiyyət olduqca yaygındır.

Enleminizi və boylamınızı bilmirsinizsə, bu veb sayt sizə kömək edə bilər.

www.latlong.net Eskizin 84 -cü xəttinin yaxınlığında belə bir şey görəcəksiniz:

// Enlem və Boylamınızı burada tapın // https://www.latlong.net/ float mylat = 39.360095; float mylon = -84.58558;

Dəyişdirilməsi lazım olan hər şey bu olmalıdır. Eskizi yükləyin və Firebeetle -i internetə qoşun - ISS -in harada və neçə mil məsafədə yerləşdiyini görməlisiniz (unutmayın ki, bu təxmini bir məsafə olacaq. ISS çox sürətlə hərəkət edir və ekran bitənə qədər ISS olduğu yerdən bir çox kilometr uzaqlaşdı). Kosmosdakı insanları da görmək lazımdır. (Yuxarıdakı dəyişəni dəyişdirməmisinizsə).

Bir veb saytı işə salmaq üçün ESP32-nin ikinci nüvəsini istifadə edirik, saytdan istifadə etməklə LED matrisində nələrin göstərildiyini idarə edirik. Necə işlədiyinə dair olduqca intuitiv olmalıdır, bir bölmədə ekranda nəyin açıldığını göstərir, başqa bir hissədə "bəli" "yox" düymələri var - "bəli" düyməsinə basaraq görmək istədiyinizi, "yox" demək istəmədiyinizi bildirir göstərmə. Üst hissənin düymələrə görə dəyişdiyini də görməlisiniz.

Burada o qədər kəsilməyən və qurudulmayan yeganə şey Firebeetle -in IP ünvanını necə tapmaqdır - təəssüf ki, onu tapmağın yaxşı bir yolunu tapa bilmədim - buna görə də göstərmək üçün IDE -nin serial konsolundan istifadə etdim. bu (9600 baud).

Konsolu açın və IP ünvanını görməlisiniz. (bağlı mesajı almadan əvvəl açın) - digər seçimim onu LED Matrix -də bir dəfə işə salanda göstərmək idi - buna qarşı qərar verdim, çünki vaxta baxmayacaqsan və darıxacaqsan. Bir sms mesajı və ya bir şey göndərməyi düşündüm, amma nəticədə sadə saxlayıram. (Mən də statik bir IP/ağ geçidi/və s. Təyin etməyə çalışdım, wifi meneceri ilə düzgün işləməsini təmin edə bilmədim - kod hələ də eskizdədir, buna görə kimsə bunu başa düşsə mənə bildir)

Eskiz də ESP32 nüvəsinə FreeRTOS qurulmasını əvvəlcədən götürür - Hər 15 dəqiqədə bir işləyən bir vəzifəmiz var, bunun üçün keçid proqnozlarını, eləcə də kosmosdakı insanları yeniləməkdir. Daha əvvəl dediyim kimi, kosmosdakı insanlar o qədər də dəyişməzlər, buna görə də başqa bir işə keçə bilərik və ya hər 12 saatda (və ya 6 saatda) bir dəfə qaça bilərəm - amma bu işləyir və hər şeyi sadə saxlayır.

FreeRTOS-u bilməyənlər üçün, tək nüvəli bir mikro nəzarətçiyə çoxsaylı vəzifələri yerinə yetirməyə icazə vermək üçün bir yoldur

Normalda ESP32 -ni çox güclü bir cihaz halına gətirən ESP32 -nin əsasını təşkil etmək üçün bəzi kitabxanalar və digər şeylər daxil etməlisiniz. FreeRTOS haqqında daha çox məlumat üçün

freertos.org/

Təkmilləşdirmələr: Bu layihə üçün təkmilləşdirilə biləcək bir çox şey var və demək olar ki, hər gün bir az fərqli edilə biləcək, dəyişdirilə və ya əlavə edilə biləcək bir şey düşünürəm.

Deponun daha çox nümunə kataloqunda düşündüyüm əvvəlki/fərqli şeylərdən bəzilərini görə bilərsiniz- bunlardan bəziləri işləmədi, bəziləri yenicə dəyişdi və bəziləri cari eskizə daxil edildi.

* Bir anda ekrana bir neopiksel əlavə etməyə çalışdım ki, əvvəlki layihəm kimi bir az daha çox olsun - heç vaxt düzgün işləmədi (düşünmədiyim bir enerji problemi olduğunu gördüm) bu fikri inkişaf etdirmək üçün bir yol üzərində işləyirik *

Bu addımı yazarkən düşündüm ki, bəlkə də enleminizi və boylamınızı veb sayta yeniləmək üçün bir yol əlavə edə bilərəm - bu şəkildə eskizin heç vaxt dəyişdirilməsinə ehtiyac qalmayacaq - bu barədə bir az daha düşünəcəyəm.

IP ünvanını əldə etməyin təkmilləşdirilmiş bir yolu etmək istədiyim başqa bir şeydir (hələ də bu barədə düşünürəm)

Növbəti layihəmizə davam edək ….

Addım 7: Layihə 3: MQTT -dən istifadə edərək sadə hərəkətli mesaj işarəsi

Layihə 3: MQTT istifadə edərək sadə hərəkətli mesaj işarəsi
Layihə 3: MQTT istifadə edərək sadə hərəkətli mesaj işarəsi
Layihə 3: MQTT istifadə edərək sadə hərəkətli mesaj işarəsi
Layihə 3: MQTT istifadə edərək sadə hərəkətli mesaj işarəsi
Layihə 3: MQTT istifadə edərək sadə hərəkətli mesaj işarəsi
Layihə 3: MQTT istifadə edərək sadə hərəkətli mesaj işarəsi

"loading =" tənbəl "" loading = "tənbəl"

Bonus 2 -ci hissə - Şəkilləri göstərin
Bonus 2 -ci hissə - Şəkilləri göstərin
Bonus 2 -ci hissə - Şəkilləri göstərin
Bonus 2 -ci hissə - Şəkilləri göstərin
Bonus 2 -ci hissə - Şəkilləri göstərin
Bonus 2 -ci hissə - Şəkilləri göstərin

Beləliklə, kitabxananın şəkilləri göstərə biləcəyi ortaya çıxır - nədənsə bu funksiya "özəl" görünür - yaxşı, bu növbəti eskizlər üçün kitabxananı bir daha dəyişdirdim və drawImage -i ictimai bir funksiya halına gətirdim.

Bu dəfə dəyişdirilmiş kitabxananı eskizlər qovluğuna qoydum, buna görə də kitabxananı yenidən yükləməyinizə ehtiyac yoxdur, eskiz əvvəlcə özünə baxır, sonra kitabxana kataloqunda görünəcək, buna görə də biz yaxşıyıq!

*** Bu dəyişikliyi DFRobot -a təqdim etməyi planlaşdırıram, çünki bu cür eskizləri edə bilmək çox gözəl və səliqəlidir ***

LED Matrix Şəkillər eskizi, burada əvvəlcə kitabxananın nə istədiyini, nəyin işləməyəcəyini və nəyin işləməyəcəyini anlamağa çalışırdım - müxtəlif dərəcədə uğurla. 8x8 şəkillərinin ən yaxşı işlədiyini gördüm, ancaq başqalarını da işləməyə məcbur edə bilərsiniz. Bir neçə onlayn led matris redaktoru da tapdım, bəziləri digərlərindən daha yaxşı işləyir.

xantorohara.github.io/led-matrix-editor/-yaxşı görünür, 8x8 şəkil çəkir və onları bayt massivləri kimi istəyirsən.

www.riyas.org/2013/12/online-led-matrix-fo… bu yaxşı işləyir və 8x8-dən daha böyük ekranlar çəkmə qabiliyyətinə malikdir, ekran bu ekranın yan tərəfində görünür lakin. Bayt diziləri burada ən yaxşı işləyir. Yuxarıdakı videoda görünən "kosmik işğalçıları" etmək üçün istifadə etdim.

Bəs bu necə işləyir, drawImage (const bayt * img, uint8_t width_t, uint8_t height_t, int8_t x, int8_t y, int img_offset);

image byte array dəyişən, görüntünün eni (8), görüntünün hündürlüyü (8), ekrandakı başlanğıc mövqeyi x (0), y (0) adətən və mən olmayan bir ofset nömrəsi Nə etdiyinə 100% əminəm, buna görə çox vaxt sıfıra qoymuşam.

Eskizdə LED Matrix Şəkillər - 8 fərqli bayt dizisi var - üç fərqli üsulla.

- atəşfəşanlıq ilk seriallardır, vicdanla bunun necə işlədiyini bilmirəm - amma işləyir.

bir ağız var - bu həqiqətən düzgün işləmir, ağız birinin səhv yolunu qoyur və hər hansı bir dəyişiklik etməyə çalışmaq onu daha da pisləşdirir. (nəyin işlədiyini və nəyin olmadığını öyrənmək əyləncənin yarısıdır)

İlk marioImg -in ardınca - bu ekran üçün çox böyükdür və düşünürəm ki, buradakı oyunun işə düşdüyü yerdir - burada istifadə etdim və ofisi 1 -ə dəyişsəniz mario -nun ön tərəfini görə bilərsiniz. onun arxasını görəcəm. (Sənə nəyə görə və ya ofsetin nə olduğunu həqiqətən deyə bilmərəm. Görünüşü dəyişən kimi görünür, amma niyə önünü görə biləcəyiniz üçün və niyə 1 -in başqa istiqamətə keçdiyini sizə deyə bilmərəm)

ŞƏKİLLƏR - bayt serialı etdiyim @ işarəsidir - https://xantorohara.github.io/led-matrix-editor ünvanından istifadə edərək düzəltdiklərimə bənzəyir.

pic1 bayt massivi də nə etmək istədiyimə bənzəyir, yalnız çalışdığımdan daha kiçikdir - deyə bilmədiyim şeydir, amma ümumiyyətlə deyə bilərəm ki, redaktorda nə etdiyimə bənzəyir.

mario2Img - bu, 8x8 ekran ölçüsü üçün hazırlanmış daha böyük Mario -nun öz versiyamdır və orada bir və ya iki piksel yerində deyilsiniz (mənim günahım, ekranlar deyil) kiçik bir Mario (sorta) kimi görünür.

invader1 və invader2 - həm də kosmos işğalçısı fikrim. olduqca yaxşı çıxdılar və şəkilləri bir -birinin üstünə qoyaraq, ayaqların hərəkət etməsi effektini yarada bilirəm.

Kataloqda iki atəşfəşanlıq eskizi var, hər biri bir az fərqlidir və sınamağa dəyər.

Birində ekranda hərəkət edən atəşfəşanlıq var, buna görə bir az daha çox/fərqli animasiya… digərində eyni anda iki atəşfəşanlıq göstərilir

Həm də üç "işğalçı" eskizləri var, hər biri bir az fərqlidir, birində işğalçı ekranda hərəkət edir və bunu necə etdiyimə baxa bilərsiniz - (bəlkə də bunu etmək üçün daha yaxşı yollar var, bilmirəm)

Daha da çoxu: Deponun test kataloqunda bəzi eskizlər var - bunların çoxu istədiyim kimi işləmədi və ya etmək istədiyim, amma istədiyim kimi işləməyən fikirlər idi. Onlardan ayrıldım, çünki kiminsə fikirləri var *(ISS ekranında istifadə etmək üçün üzərində WS2812 pikselli kiçik bir "qalxan" düzəltdim, amma 3v xəttinə bağladım və kifayət etmədim LED Matrix də işləyərkən güc, LED Matrix olmadan piksel yaxşı işləyirdi, buna görə hələ də edə biləcəyim bir şey var)*

"Daha çox nümunə" adlı bir kataloq da var - bunlar bəzi layihə eskizlərindəki dəyişikliklərdir, ya bir şey əlavə etdim, ya da bir şəkildə dəyişdirdim. Bunun üçün işləyirlər - sadəcə son layihə deyillər. Yenə onları tərk etdim, kimsə faydalı bir şey əldə edə bilər. (Ola bilər)

Ümid edirəm ki, bu layihələri hazırlamaqdan zövq aldığım qədər bu dərsdən də zövq aldınız:-)

Addım 11: Bağlantılar …

Bu layihə DF Robot tərəfindən dəstəkləndi. Məhsullar üçün aşağıdakı linklərdən istifadə edin:

Firebeetle ESP32 -

Firebeetle Cover 24x8 LED Matrix -

Kod Anbarım:

Bu və ya digər layihələrimi faydalı və ya zövqlü görürsünüzsə, mənə dəstək olun. Əldə etdiyim hər şey daha çox hissə almaq və daha çox/daha yaxşı layihələr etmək üçün gedir.

www.patreon.com/kd8bxp

NTPClient Kitabxanası

ArduinoJson.h

ESP8266 Hava Kitabxanası

Json-Streaming-Ayrıştırıcı Kitabxanası

Tövsiyə: