Mündəricat:
- Təchizat
- Addım 1: Tikinti - Breadboard
- Addım 2: Tikinti - Başlıqları itələyin/lehimləyin
- Addım 3: Tikinti - Güc pinlərini bağlayın
- Addım 4: Tikinti - I2S Kablolama
- Addım 5: BtAudio Kitabxanasının quraşdırılması
- Addım 6: BtAudio Kitabxanasından istifadə edin
- Addım 7: DSP - Filtrləmə
- Addım 8: DSP - Dinamik Aralıq Sıxılma
- Addım 9: Wifi interfeysi
- Addım 10: Gələcək Planlar
Video: Bluetooth Səs və Rəqəmsal Siqnal İşlənməsi: Arduino Çərçivəsi: 10 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
Xülasə
Bluetooth haqqında düşünəndə musiqini düşünürəm, amma təəssüf ki, əksər mikrokontrollerlər Bluetooth vasitəsilə musiqi oxuya bilmirlər. Raspberry Pi edə bilər, amma bu bir kompüterdir. Bluetooth vasitəsilə səs çalması üçün mikrokontrollerlər üçün Arduino əsaslı bir çərçivə hazırlamaq istəyirəm. Mikrodenetleyicimin əzələlərini tam bükmək üçün səsi real vaxt rejimində Rəqəmsal Siqnal İşləmə (DSP) əlavə edəcəyəm (yüksək keçidli filtrasiya, aşağı keçidli filtrləmə və dinamik diapazonlu sıxılma). Üstdəki albalı üçün DSP -ni simsiz olaraq konfiqurasiya etmək üçün istifadə edilə bilən bir veb server əlavə edəcəyəm. Gömülü video, Bluetooth səsinin fəaliyyətdəki əsaslarını göstərir. Həm də bəzi yüksək keçidli süzgəclər, aşağı keçidli süzgəclər və dinamik diapazonların sıxılması üçün veb serverdən istifadə etdiyimi göstərir. Dinamik aralığın sıxılmasının ilk istifadəsi, pis parametr seçimlərinə misal olaraq məqsədyönlü şəkildə təhrifə səbəb olur. İkinci nümunə bu təhrifi aradan qaldırır.
Bu layihə üçün ESP32 seçilən mikro nəzarətçidir. Qiyməti 10 funtdan aşağıdır və ADC, DAC, Wifi, Bluetooth Aşağı Enerji, Bluetooth Klassik və 240MHz cüt nüvəli prosessorla təchiz olunmuşdur. Daxili DAC texniki cəhətdən səs oxuya bilər, amma əla səslənməyəcək. Bunun əvəzinə Adafruit I2S stereo dekoderindən bir xətt çıxışı siqnalı çıxarmaq üçün istifadə edəcəyəm. Mövcud HiFi sisteminizə dərhal simsiz səs əlavə etmək üçün bu siqnal istənilən HiFi sisteminə asanlıqla göndərilə bilər.
Təchizat
Ümid edirik ki, əksər istehsalçıların çörək taxtaları, atlayıcıları, USB kabelləri, enerji təchizatı lehimləmə ütüləri olacaq və yalnız ESP32 və stereo dekoder üçün 15 funt xərcləmək məcburiyyətində qalacaqlar. Əks təqdirdə, lazım olan bütün hissələr aşağıda verilmişdir.
- Bir ESP32 - ESP32 -PICO -KIT və TinyPico -da sınaqdan keçirilmiş - 9.50/ 24 funt sterlinq
- Adafruit I2S Stereo Dekoder - 5,51 funt
- Çörək taxtası - hər biri 3-5 funt sterlinq
- Jumper telləri - 3 funt
- Simli qulaqlıq/Hi -Fi sistemi - £££
- Push Heads və ya Lehimləmə Dəmiri - 2.10 / £ 30
- Mikro USB kabeli - 2,10 funt sterlinq/ 3 funt
- 3.5 mm RCA konnektoru/ 3.5 mm jak (və ya dinamikinizin ehtiyacı olan hər şey) - £ 2.40/ £ 1.50
- USB Güc Təchizatı - 5 funt
Addım 1: Tikinti - Breadboard
ESP32-PICO-KIT almış olsanız, əvvəlcədən lehimli olduğu üçün heç bir sancaq lehimləməyəcəksiniz. Sadəcə çörək taxtasına qoyun.
Addım 2: Tikinti - Başlıqları itələyin/lehimləyin
Bir lehimləmə dəmiriniz varsa, pinləri Adafruit veb saytındakı təlimatlara uyğun olaraq stereo dekoderə lehimləyin. Yazı vaxtı mənim lehimləmə dəmirim kilidli vəziyyətdə idi. Müvəqqəti bir lehimləmə dəmiri ödəmək istəmədim, buna görə pimoronidən bəzi itələmə başlıqlarını kəsdim. Mən onları kəsdim ki, stereo dekoderə uyğun olsun. Bu ən yaxşı həll deyil (və başlıqların necə istifadə olunacağı deyil), lakin bir lehimləmə dəmirinə ən ucuz alternativdir. Kəsilmiş başlığı çörək taxtasına yapışdırın. Dekoder üçün yalnız 6 pinli 1 xəttə ehtiyacınız var. Sabitlik üçün digər tərəfə daha altı əlavə edə bilərsiniz, lakin bu prototip sistemi üçün bu lazım deyil. Başlıqları daxil etmək üçün pinlər vin, 3vo, gnd, wsel, din və bclk -dir.
Addım 3: Tikinti - Güc pinlərini bağlayın
Stereo dekoderi itələyici başlıqlara (vin, 3vo, gnd, wsel, din və bclk pinləri) yerləşdirin və möhkəm bir şəkildə itələyin. Yenə də bu ideal bir lehimləmə dəmiri ilə edilməlidir, amma doğaçlama etmək məcburiyyətində qaldım. Bu təlimatdakı bütün tellərin mavi olduğunu görəcəksiniz. Məndə heç bir tullanan tel olmadığı üçün 1 uzun teli daha kiçik parçalara ayırdım. Həm də rəngsizəm və telin rənginə əhəmiyyət vermirəm. Elektrik pinləri aşağıdakı kimi bağlanır:
3v3 (ESP32) -> stereo kod deşifratoru açmaq üçün
gnd (ESP32) -> stereo dekoderdə gnd
Addım 4: Tikinti - I2S Kablolama
Bluetooth səsini ESP32 -dən stereo dekoderə göndərmək üçün I2S adlı rəqəmsal ünsiyyət metodundan istifadə edəcəyik. Stereo dekoder bu rəqəmsal siqnalı alacaq və onu dinamikə və ya HiFi -yə qoşula bilən analoq siqnala çevirəcək. I2S yalnız 3 tel tələb edir və başa düşmək olduqca sadədir. Bit saatı (bclk) xətti yeni bir bitin ötürüldüyünü göstərmək üçün yuxarı və aşağıya çevrilir. Məlumat çıxışı xətti (dout) o bitin 0 və ya 1 dəyərinə malik olduğunu göstərmək üçün yuxarı və ya aşağıya çevrilir və söz seçmək xətti (wsel) sola və ya sağ kanalın ötürülüb-ötürülmədiyini göstərmək üçün yuxarı və ya aşağıya çevrilir. Hər mikrokontrolör I2S -ni dəstəkləmir, lakin ESP32 -də 2 I2S xətti var. Bu, bu layihə üçün açıq bir seçimdir.
Kablolama aşağıdakı kimidir:
27 (ESP32) -> wsel (Stereo dekoder)
25 (ESP32) -> din (Stereo dekoder)
26 (ESP32) -> bclk (Stereo dekoder)
Addım 5: BtAudio Kitabxanasının quraşdırılması
Onları hələ yükləməmisinizsə, Arduino IDE və ESP32 üçün Arduino nüvəsini quraşdırın. Quraşdırdıqdan sonra Github səhifəmə daxil olun və depoyu yükləyin. Arduino IDE daxilində Sketch >> Kitabxanaya Daxil et >> altında "ZIP kitabxana əlavə et" seçin. Sonra yüklənmiş zip faylını seçin. Bu mənim btAudio kitabxanamı Arduino kitabxanalarınıza əlavə etməlidir. Kitabxanadan istifadə etmək üçün Arduino eskizinə müvafiq başlığı daxil etməlisiniz. Bunu növbəti addımda görəcəksiniz.
Addım 6: BtAudio Kitabxanasından istifadə edin
Quraşdırıldıqdan sonra ESP32 -ni mikro USB vasitəsilə kompüterinizə qoşun və sonra stereo dekoderinizi 3,5 mm telinizlə dinamikinizə qoşun. Eskizi yükləməzdən əvvəl Arduino redaktorunda bəzi şeyləri dəyişdirməlisiniz. Lövhənizi seçdikdən sonra Alətlər >> Bölmə Sxemi altında bölmə sxemini redaktə etməli və ya "OTA (Böyük APP)" və ya "Minimum SPIFFS (OTA ilə Böyük APPS)" seçimini etməlisiniz. Bu lazımdır, çünki bu layihə həm yaddaşlı ağır kitabxanalar olan həm WiFi, həm də Bluetooth istifadə edir. Bunu etdikdən sonra aşağıdakı eskizi ESP32 -ə yükləyin.
#daxil edin
// btAudio audio = btAudio ("ESP_Speaker") audio cihazının adını təyin edir; void setup () {// audio məlumatları ESP32 audio.begin () -ə ötürür; // alınan məlumatları I2S DAC -a çıxarır int bck = 26; int ws = 27; int dout = 25; audio. I2S (bck, dout, ws); } boşluq döngəsi () {}
Eskiz ümumilikdə 3 mərhələyə bölünə bilər:
- ESP32 cihazınızın "Bluetooth adını" təyin edən qlobal btAudio obyekti yaradın
- ESP32 -ni btAudio:: begin metodu ilə səs qəbul etmək üçün konfiqurasiya edin
- BtAudio:: I2S metodu ilə I2S pinlərini təyin edin.
Bu proqram tərəfindədir! İndi etməniz lazım olan şey, ESP32 cihazınıza Bluetooth bağlantısını başlatmaqdır. Telefonunuzda/dizüstü kompüterinizdə/MP3 pleyerinizdə yeni cihazları axtarın və "ESP_Speaker" görünəcək. Hər şeyin işlədiyindən (musiqi çalır) məmnun olduqdan sonra ESP32 -ni kompüterinizdən ayıra bilərsiniz. USB enerji təchizatı ilə işə salın və ona yüklədiyiniz son kodu xatırlayacaq. Beləliklə, ESP32 -ni HiFi sisteminizin arxasında əbədi olaraq tərk edə bilərsiniz.
Addım 7: DSP - Filtrləmə
Rəqəmsal Siqnal İşlənməsi ilə Alıcının Genişləndirilməsi
Bütün addımları izləsəniz (və heç bir şey buraxmadım), indi HiFi sisteminiz üçün tam işləyən bir Bluetooth qəbulediciniz var. Bu sərin olsa da, mikro nəzarətçini həddinə çatdırmır. ESP32, 240MHz tezliyində işləyən iki nüvəyə malikdir. Bu o deməkdir ki, bu layihə yalnız bir alıcıdan daha çox şeydir. Rəqəmsal Siqnal Prosessoru (DSP) olan Bluetooth qəbuledicisi olmaq qabiliyyətinə malikdir. DSP-lər əslində siqnal üzərində real vaxt rejimində riyazi əməliyyatlar həyata keçirirlər. Faydalı bir əməliyyata Rəqəmsal Süzmə deyilir. Bu proses, yüksək keçid və ya aşağı keçid filtrindən istifadə etməyinizdən asılı olaraq müəyyən bir kəsmə tezliyinin altında və ya üstündə bir siqnalda tezlikləri zəiflədir.
Yüksək keçid filtrləri
High-Pass filtrləri müəyyən bir diapazonun altındakı tezlikləri zəiflədir. Earlevel.com saytının koduna əsaslanaraq Arduino sistemləri üçün filtr kitabxanası qurdum. Əsas fərq, daha yüksək dərəcəli filtrlərin daha asan qurulmasına imkan vermək üçün sinif quruluşunu dəyişməyimdir. Yüksək dərəcəli filtrlər, kəsilmənizin kənarındakı tezlikləri daha təsirli şəkildə basdırır, lakin daha çox hesablama tələb edir. Bununla birlikdə, mövcud tətbiq ilə, hətta real vaxt səs üçün 6-cı dərəcəli filtrlərdən istifadə edə bilərsiniz!
Eskiz, əsas döngəni dəyişdirdiyimiz istisna olmaqla, əvvəlki addımda tapılanla eynidir. Filtrləri aktiv etmək üçün btAudio:: createFilter metodundan istifadə edirik. Bu üsul 3 arqument qəbul edir. Birincisi, filtr kaskadlarının sayıdır. Filtr kaskadlarının sayı filtrin yarısı qədərdir. 6 -cı dərəcəli filtr üçün ilk arqument 3 olmalıdır. 8 -ci dərəcəli filtr üçün 4 olardı. İkinci arqument filtr kəsilməsidir. Məlumatlara həqiqətən dramatik təsir göstərmək üçün bunu 1000Hz olaraq təyin etdim. Nəhayət, üçüncü arqumentlə fayl növünü təyin edirik. Bu yüksək keçidli filtr üçün yüksək keçidli və aşağı keçidli filtr üçün aşağı keçid olmalıdır. Aşağıdakı skript bu tezliyin kəsilməsini 1000Hz və 2Hz arasında dəyişir. Verilənlərə dramatik bir təsir eşitməlisiniz.
#daxil edin
btAudio audio = btAudio ("ESP_Speaker"); void setup () {audio.begin (); int bck = 26; int ws = 27; int dout = 25; audio. I2S (bck, dout, ws); } void loop () {gecikmə (5000); audio.createFilter (3, 1000, yüksək keçid); gecikmə (5000); audio.createFilter (3, 2, yüksək keçid); }
Aşağı keçidli filtrlər
Aşağı keçid filtrləri yüksək keçid filtrlərinin əksini edir və müəyyən bir tezliyin üstündəki tezlikləri bastırır. Üçüncü arqumentin aşağı keçid olaraq dəyişdirilməsini tələb etmələri istisna olmaqla, yüksək keçid filtrləri ilə eyni şəkildə həyata keçirilə bilər. Aşağıdakı eskiz üçün 2000Hz və 20000Hz arasında aşağı keçid həddini dəyişirəm. İnşallah, fərqi eşidəcəksiniz. Aşağı keçid filtri 2000 Hz-də olduqda olduqca səssiz səslənməlidir.
#daxil edin
btAudio audio = btAudio ("ESP_Speaker"); void setup () {audio.begin (); int bck = 26; int ws = 27; int dout = 25; audio. I2S (bck, dout, ws); } void loop () {gecikmə (5000); audio.createFilter (3, 2000, aşağı keçid); gecikmə (5000); audio.createFilter (3, 20000, aşağı keçid); }
Addım 8: DSP - Dinamik Aralıq Sıxılma
Fon
Dinamik aralığın sıxılması, səsin yüksəkliyini bərabərləşdirməyə çalışan bir siqnal işləmə üsuludur. Müəyyən bir eşikdən yuxarı qalxan yüksək səsləri sakit olanların səviyyəsinə sıxışdırır və sonra hər ikisini də gücləndirir. Nəticə daha çox eşitmə təcrübəsidir. Çox yüksək fon musiqisi və çox səssiz vokalları olan bir şou seyr edərkən bu həqiqətən faydalı oldu. Bu vəziyyətdə, yalnız səs səviyyəsini artırmaq kömək etmədi, çünki bu yalnız fon musiqisini gücləndirdi. Dinamik diapazonlu sıxılma ilə yüksək səsli fon musiqisini vokal səviyyəsinə endirə və hər şeyi yenidən düzgün eşidə bilərdim.
Kod
Dinamik aralığın sıxılması yalnız səsin aşağı salınması və ya siqnalın eşik həddini keçməsini nəzərdə tutmur. Bundan bir az daha ağıllıdır. Səs səviyyəsini aşağı salsanız, yüksək səslər olduğu kimi sakit səslər də azalacaq. Bunun bir yolu siqnalın həddini aşmaqdır, lakin bu ciddi təhriflə nəticələnir. Dinamik aralığa sıxılma, siqnalı eşik etmək/kəsmək istəsəniz alacağınız təhrifi minimuma endirmək üçün yumşaq eşik və süzgəcin birləşməsini ehtiva edir. Nəticə, yüksək səslərin təhrif edilmədən "kəsildiyi" və səssizlərin olduğu kimi qaldığı bir siqnaldır. Aşağıdakı kod üç fərqli sıxılma səviyyəsi arasında dəyişir.
- Təhrif ilə sıxılma
- Təhrif edilmədən sıxılma
- Sıxılma yoxdur
#daxil edin
btAudio audio = btAudio ("ESP_Speaker"); void setup () {audio.begin (); int bck = 26; int ws = 27; int dout = 25; audio. I2S (bck, dout, ws); } void loop () {gecikmə (5000); audio.compress (30, 0.0001, 0.0001, 10, 10, 0); gecikmə (5000); audio.compress (30, 0.0001, 0.1, 10, 10, 0); gecikmə (5000); audio.decompress (); }
Dinamik aralığın sıxılması mürəkkəbdir və btAudio:: kompress metodlarının bir çox parametri var. Onları (sırayla) burada izah etməyə çalışacağam:
- Eşik - Səsin azalma səviyyəsi (desibellərlə ölçülür)
- Hücum vaxtı - Eşik həddi keçdikdən sonra kompressorun işə düşməsi üçün lazım olan vaxt
- Buraxılış vaxtı - Kompressorun işləməsini dayandırması üçün lazım olan vaxt.
- Azaltma Oranı - səsin sıxıldığı faktor.
- Diz Genişliyi - Kompressorun qismən işlədiyi eşik ətrafındakı eni (desibellərlə) (daha təbii səs).
- Sıxıldıqdan sonra siqnala əlavə olunan qazanc (desibel) (həcmi artır/azaldın)
Sıxışın ilk istifadəsindəki çox səsli təhrif, eşik həddinin çox aşağı olması və həm hücum vaxtı, həm də sərbəst buraxılma müddətinin çox qısa olması, nəticədə çətin bir eşik davranışı ilə nəticələnir. Bu, ikinci vəziyyətdə buraxılma müddətini artırmaqla aydın şəkildə həll olunur. Bu, əslində kompressorun daha hamar bir şəkildə işləməsinə səbəb olur. Burada yalnız 1 parametrin dəyişdirilməsinin səsə necə dramatik təsir göstərə biləcəyini göstərmişəm. İndi fərqli parametrləri sınamaq sizin növbənizdir.
İcra (sehrli riyaziyyat - isteğe bağlı)
Dinamik diapazon sıxışdırmasının sadəlövh şəkildə tətbiq edilməsinin çətin olduğunu gördüm. Alqoritm, 16 bitlik tam ədədin desibelə çevrilməsini və siqnal işləndikdən sonra yenidən 16 bitlik bir tamsayıya çevirməsini tələb edir. Bir kod xəttinin stereo məlumatları emal etmək üçün 10 mikrosaniyə çəkdiyini gördüm. 44.1 KHz -də nümunə götürülmüş stereo səs, DSP üçün cəmi 11.3 mikrosaniyəni tərk etdiyinə görə, bu qəbuledilməz dərəcədə yavaşdır … Ancaq kiçik bir axtarış masası (400 bayt) və Netwon -un bölünmüş fərqlərinə əsaslanan bir interpolasiya prosedurunu birləşdirərək 0.2 mikrosaniyədə təxminən 17 bit dəqiqlik əldə edə bilərik.. Həqiqətən maraqlananlar üçün bütün riyaziyyatı olan bir pdf sənəd əlavə etdim. Bu mürəkkəbdir, sənə xəbərdarlıq edilib!
Addım 9: Wifi interfeysi
İndi real vaxt rejimində DSP işlədə bilən Bluetooth qəbulediciniz var. Təəssüf ki, DSP parametrlərindən hər hansı birini dəyişdirmək istəyirsinizsə, HiFi -dən ayrılmalı, yeni bir eskiz yükləməli və sonra yenidən qoşulmalısınız. Bu hiyləgərdir. Bunu düzəltmək üçün kompüterinizə yenidən qoşulmadan bütün DSP parametrlərini düzəltmək üçün istifadə edə biləcəyiniz bir veb server hazırladım. Veb serverini istifadə etmək üçün eskiz aşağıda verilmişdir.
#daxil edin
#btAudio audio = btAudio ("ESP_Speaker") daxil edin; webDSP veb; void setup () {Serial.begin (115200); audio.begin (); int bck = 26; int ws = 27; int dout = 25; audio. I2S (bck, dout, ws); // WiFi identifikatorunuz və parolunuzla əvəz edin const char* ssid = "SSID"; const char* parol = "PAROLA"; web.begin (ssid, parol və audio); } boşluq döngəsi () {web._server.handleClient (); }
Kod, ESP32 -yə veb səhifəsinə daxil olmaq üçün istifadə edə biləcəyiniz bir IP ünvanı təyin edir. Bu kodu ilk dəfə işə salanda onu kompüterinizə bağlamalısınız. ESP32 -yə təyin edilmiş IP ünvanını serial monitorunuzda görə bilərsiniz. Bu veb səhifəsinə daxil olmaq istəyirsinizsə, bu IP ünvanını hər hansı bir veb brauzerinə daxil edin (xromda sınaqdan keçirilmişdir).
İndiyə qədər Bluetooth və I2S -ni aktivləşdirmə üsulu ilə tanış olmalıyıq. Əsas fərq webDSP obyektinin istifadəsidir. Bu obyekt Wifi SSID və parolunuzu btAudio obyektinə işarə kimi arqument olaraq götürür. Əsas döngədə davamlı olaraq webDSP obyektini veb səhifədən daxil olan məlumatları dinləyib DSP parametrlərini yeniləyirik. Bağlama nöqtəsi olaraq qeyd etmək lazımdır ki, həm Bluetooth, həm də Wifi ESP32 -də eyni radiodan istifadə edir. Bu o deməkdir ki, veb səhifəyə parametrlər daxil etdikdən məlumatın həqiqətən ESP32 -ə çatana qədər 10 saniyə gözləmək lazım ola bilər.
Addım 10: Gələcək Planlar
Ümid edirik ki, bu təlimatdan zövq aldınız və indi HiFi -ə Bluetooth Audio və DSP əlavə etdiniz. Ancaq düşünürəm ki, bu layihədə böyümək üçün çox yer var və gələcəkdə götürə biləcəyim bəzi istiqamətləri göstərmək istədim.
- Wifi səs axınını aktiv edin (ən yaxşı səs keyfiyyəti üçün)
- Səs əmrlərini aktivləşdirmək üçün I2S mikrofonundan istifadə edin
- WiFi nəzarətli ekvalayzer hazırlayın
- Gözəlləşdirin (çörək taxtası əla məhsul dizaynını qışqırmır)
Bu fikirləri həyata keçirməyə başladığım zaman daha çox öyrədici şeylər edəcəm. Və ya bəlkə də başqaları bu xüsusiyyətləri həyata keçirəcək. Hər şeyi açıq mənbə etmək sevincidir!
Tövsiyə:
Gen4 ULCD-43DCT-CLB istifadə edərək rəqəmsal şəkil çərçivəsi: 3 addım
Gen4 ULCD-43DCT-CLB istifadə edərək rəqəmsal şəkil çərçivəsi: rəqəmsal şəkil çərçivəsi mikro SD karta çıxışı olan şəkilləri göstərə bilər. Bu layihə, ekran modulu üçün 4D Sistemləri, Gen4 uLCD-43DCT-CLB istifadə edir. Rəqəmsal Şəkil Çərçivəsi, ev və ya ofislər üçün bir ekran olaraq istifadə edilə bilən sadə bir layihədir. İstifadəçilər baxa bilərlər
Rəqəmsal Şəkil Çərçivəsi Numero Dos!: 4 addım (şəkillərlə)
Rəqəmsal Şəkil Çərçivəsi Numero Dos!: Bu, hazırladığım ikinci rəqəmsal şəkil çərçivəsidir (bax Ucuz 'Asan Rəqəmsal Şəkil Çərçivəsi). Bunu çox yaxşı bir dostum üçün toy hədiyyəsi olaraq hazırladım və düşünürəm ki, çox yaxşı alındı. Rəqəmsal şəkil çərçivələrinin qiymətini
Raspberry Pi Rəqəmsal Şəkil Çərçivəsi: 5 addım
Raspberry Pi Rəqəmsal Şəkil Çərçivəsi: 10 ildən sonra mağazadan aldığım rəqəmsal şəkil çərçivəsi uğursuz oldu. Onlayn olaraq bir əvəz axtardım və bənzər bir dəyişdirmənin əslində 10 illik çərçivəmdən daha baha olduğunu gördüm. İndiki vaxta qədər azad olduqlarını düşündüm. Açığı bacardım
Rəqəmsal Foto Şəkil Çərçivəsi, WiFi Bağlantılı - Raspberry Pi: 4 Addım (Şəkillərlə)
Rəqəmsal Foto Şəkil Çərçivəsi, WiFi Bağlantılı - Raspberry Pi: Rəqəmsal bir foto çərçivə üçün çox asan və aşağı qiymətli bir yoldur - (pulsuz) bir fayl ötürmə proqramı istifadə edərək 'klikləyin və sürükləyin' vasitəsilə şəkilləri WiFi üzərindən əlavə etmək /silmək üstünlüyü ilə. . Kiçik £ 4.50 Pi Zero ilə təchiz edilə bilər. Köçürə bilərsiniz
Ucuz 'Asan Rəqəmsal Şəkil Çərçivəsi: 6 Addım (Şəkillərlə birlikdə)
Ucuz 'Asan Rəqəmsal Şəkil Çərçivəsi: Əsasən bunu sevgilim üçün ad günü hədiyyəsi olaraq hazırladım. Mükəmməl bir hədiyyə fikri axtarırsınız? Bu odur! Ümumi dəyəri 100 dollardan aşağı idi və ağıllı olsanız əhəmiyyətli dərəcədə az ola bilər. Bilirəm ki, ev sahibi olmaq fikri ilə ilk gələn mən deyiləm