Mündəricat:

AtHome ilə bir Parlaqlıq Modulu qurun: 7 addım
AtHome ilə bir Parlaqlıq Modulu qurun: 7 addım

Video: AtHome ilə bir Parlaqlıq Modulu qurun: 7 addım

Video: AtHome ilə bir Parlaqlıq Modulu qurun: 7 addım
Video: ЮЛЯ ФИНЕСС: Как я вышла с 8 этажа! Групповое изнасилование под мефедроном, психиатрическая больница 2024, Noyabr
Anonim
AtHome ilə Parlaqlıq Modulu yaradın
AtHome ilə Parlaqlıq Modulu yaradın

AtHome, Epitech-dən AtHome qrupu tərəfindən hazırlanan, bir smartfon tətbiqini və bir veb tətbiqini qidalandırmaq üçün istifadə olunan bir API-ni ortaya qoyan bir neçə fərdi sensor modulunun əlaqəli bir həllini inkişaf etdirməyi hədəfləyən tam açıq qaynaq və açıq proqram tələbə layihəsidir. Modullar bir evin daxili mühitini izləyir və istifadəçiyə yaşıldan (yaxşıdan) qırmızıya (pisə) qədər vizual rəy verə bilir və ötürülən məlumatlar istifadəçi tərəfindən modulun ardıcıl əlaqəsi və ya istifadə edirsinizsə tətbiqlərimiz.

Bu layihə hələ də aktiv inkişaf mərhələsində olsa da, modullarımızın əsas funksiyaları artıq hazırdır və xüsusi modulların hazırlanması üçün guya istifadəsi asandır. Beləliklə, bu parlaqlıq modulu nümunəsi ilə öz sadə modulunuzu necə quracağınızı görməyi təklif edirəm.

Bu modullar əsasən Arduino ilə uyğun bir lövhə (axın, Wire və UART axını dəstəyi olduğu müddətdə qismən bir Arduino nüvəsi kifayət qədər olmalıdır), bir LED (qırmızı bir və ya RGB) problem olduqda qırmızıya çevrilir. sensor, bir enerji təchizatı (divar enerji təchizatı və ya batareya) və lazerlə kəsilmiş qutu.

Bəli, qətiliklə yeni deyil, bir çox sensör layihəsi var, amma ümid edirik ki, sağlamlıq problemlərinin aşkarlanması, ünsiyyət və məlumatların öz-özünə yerləşdirilən bir serverdə saxlanması və vizualizasiya tətbiqi sizə kömək edəcək. Və ya sadəcə evinizə, sadə layihələrə və ya daha az maraqlı baxmaq istəyirsinizsə:)

Addım 1: Komponentlərin toplanması

Komponentlərin toplanması
Komponentlərin toplanması

Bu layihə üçün AtHome modulunuzu qurmaq üçün bir neçə komponentə ehtiyacınız olacaq:

  • 1x Arduino-Uyğun lövhə: Burada bir Arduino UNO istifadə edəcəm (eyni zamanda TI Launchpads və ESP8266 lövhələri kimi digər lövhələrlə də işləyir)
  • 1x sensor: TSL2561 parlaqlıq sensoru istifadə edəcəyəm (dəstəklənən sensorların siyahısı kitabxanamızın sənədlərində mövcuddur)
  • 1x led: burada bir Grove Zəncirli RGB LEDindən istifadə edəcəyəm (amma eyni zamanda sadə qırmızı led və ya NeoPixel ola bilər)
  • Dupont Wires

Uyğun komponentlərin siyahısı layihəmizin sənədlərində mövcuddur.

Addım 2: Kitabxanamızı quraşdırın

Kitabxanamızın quraşdırılması
Kitabxanamızın quraşdırılması
Kitabxanamızın quraşdırılması
Kitabxanamızın quraşdırılması

Kitabxanamızı qurmaq üçün depomuzdan (daha sonra Arduino IDE siyahısında və PlatformIO -da dərc edəcəyik) bu linklə yükləməlisiniz:

gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy

Sonra Arduino IDE -ə gedin və "Eskiz> Kitabxanaya Daxil et. ZIP Kitabxanası Əlavə Et …" seçin. Sonra "artifacts.zip" adlı zip faylını seçin və "OK" düyməsini basın.

Addım 3: Lazımi kitabxanaların quraşdırılması

Lazımi kitabxanaların quraşdırılması
Lazımi kitabxanaların quraşdırılması
Lazımi kitabxanaların quraşdırılması
Lazımi kitabxanaların quraşdırılması
Lazımi kitabxanaların quraşdırılması
Lazımi kitabxanaların quraşdırılması

İşləmək üçün kitabxanamızın kompüterinizə başqa kitabxanaların quraşdırılması lazımdır:

  • Arkhipenko TaskScheduler kitabxanası
  • SEEED Studio Grove Rəqəmsal İşıq Sensor kitabxanası
  • SEEED Studio Grove Zəncirli RGB LED kitabxanası
  • Adafruit NeoPixel kitabxanası

Onları Arduino IDE kitabxana meneceri vasitəsi ilə "Sketch"> "Kitabxanaya daxil et"> "Kitabxanaları idarə et …" gedərək qura bilərsiniz.

Açılan yeni pəncərədə, ağ axtarış çubuğuna quraşdırmaq istədiyiniz kitabxananın adını yazın, sonra blokunu vurun. "Quraşdır" düyməsi görünəcək, sadəcə üzərinə tıklamalısınız və IDE onu yükləyib sizin üçün quraşdıracaq.

Addım 4: Modulun yığılması

Modulun yığılması
Modulun yığılması

Sensorla başlayaq. TSL2561 -in VCC pinini Arduinonun 5V pininə, sensörün GND pinini Arduinonun GND pinindən birinə və sensorun SDA və SCL sancaqlarına Arduinonun SDA və SCL pinlərinə bir tel vasitəsilə bağlayın.. İndi bitirdiniz!

İndi, Grove Chainable RGB LED -in VCC pinini Arduinonun 5V pininə və LED -in GND pinini Arduinonun ikinci GND -nə bağlayın. Yalnız bir 5V pin olaraq Arduino olsanız, Arduino 5v -ni çörək lövhəsinin + sırasına bağlamaq və bütün komponentlərinizi 5V pinləri bağlamaq və ya bir lent lövhəsi üzərində birləşdirmək üçün bir çörək taxtasından istifadə edə bilərsiniz. wago bağlayıcılarını və ya istədiyiniz hər şeyi istifadə edin. İndi LED -in CI pinini Arduino -nun 7 -ci pininə və LED -inin DI -sini Arduino -nun 8 -ci pininə qoşun. Belə bir LEDiniz yoxdursa, narahat olmayın, Arduino lövhənizin daxili LEDini və ya kodda kiçik bir dəyişikliklə klassik olanı istifadə etmək mümkündür.

Addım 5: Parlaqlıq Modulu Eskizinin Yazılması

Parlaqlıq Modulunun eskizinin yazılması
Parlaqlıq Modulunun eskizinin yazılması

Yeni bir eskiz yaradaq və modulumuzun kodunu yazaq.

Eskizin izahı ilə maraqlanmırsınızsa, Arduino IDE -yə kopyalayıb yapışdıra bilərsiniz:

#daxil edin

LightModule istifadə edərək = AtHomeModule; Axın *axınlar = {& Serial, nullptr}; GroveChainableLED:: Sancaqlar grovePins = {7, 8}; GroveChainableLED led (& grovePins); LightModule *modulu = LightModule:: getInstance (); void setup () {// bir dəfə işə salmaq üçün quraşdırma kodunuzu bura qoyun: Serial.begin (9600); modul-> setStreams (axınlar); GroveDigitalLightSensor *lightSensor = yeni GroveDigitalLightSensor (); modul-> setSensor (lightSensor); modul-> setDisplay (& led); modul-> quraşdırma (); } void loop () {// təkrar etmək üçün əsas kodunuzu bura qoyun: module-> run (); }

Bu kodun nə etdiyini başa düşmək istəyirsinizsə, aşağıdakıları oxuya bilərsiniz və ya maraqlanmırsınızsa, birbaşa növbəti addıma keçə bilərsiniz.

Başlamaq üçün eskizin üstünə bu sətir yazaraq kitabxanamızı eskizimizə daxil etməliyik:

#daxil edin

İndi istifadə edəcəyimiz modul obyektinə ləqəb yaratmalıyıq. Bunu komponentlərini dəyişdirmək, işə salmaq, dayandırmaq və s. Şablon tərəfindən hazırlanan bir qutu olduğu üçün (insanlar kimi layihələr üçün istifadə etdiyimiz adi şablon kimi, başlanğıc bazası var və Arduinonun tərtibçisi ona verdiyimiz parametrlərə əsaslanaraq son kodu qurur) bir sensor dəyərini və yaddaşda saxlamaq istədiyimiz sensor dəyərlərinin sayı, adında göstərilmişdir və hər dəfə istifadə etmək istədiyimiz zaman təkrarlanmalıdır. Bir az cansıxıcıdır, buna görə də bu qutunun tam adı ilə yeni bir ad, bir ləqəb əlaqələndirəcəyik.

Məsələn deyək ki, bu qutunun "LightModule" adlandırılmasını istəyirəm, çünki bu işıqlılıq izləmə modulunu tətbiq etmək üçün istifadə ediləcək və eyni anda yalnız 1 dəyər saxlamaq istəyirəm. Parlaqlıq, kompüterlər tərəfindən uint16_t olaraq təmsil olunan TSL2561 sensorumuzla lüksdə ayrılmaz bir növ olaraq təmsil olunur. Ləqəbimiz belə görünəcək:

LightModule istifadə edərək = AtHomeModule;

"istifadə" açar sözü, bir təxəllüs yaratdığımız deməkdir və dərhal sonra verdiyimiz ad "=" simvolundan sonrakı ardıcıllığa uyğundur.

"AtHomeModule", yeni bir ad verdiyimiz bu qutunun əsl adıdır və dəyərin təqdimatını və yaddaşda saxlanılan dəyərlərin sayını təyin edən parametrlər "" arasında qeyd olunur.

İndi, daha sonra "AtHomeModule" adını istifadə edəcəyimiz zaman, Arduino bunun "AtHomeModule" tam adına aid olduğunu biləcək.

Qutunuzun 1 deyil, 5 dəyərini yaddaşda saxlamasını istəyirsinizsə, sadəcə "1" in yerini "5" qoymalısınız və Arduino sizin üçün istədiyiniz şeyi edə biləcək fərqli bir qutu yaradacaq. Ancaq unutmayın ki, modul, sensorun 5 dəyərini təsirli bir şəkildə ölçmək üçün vaxt tapmadan dəyərlərini göndərmək üçün proqramlaşdırılmışsa, son yüklənmədən bəri yalnız yeni dəyərlər göndərdiyi üçün 5 ədədinin göndərildiyini görməyəcəksiniz.

Ardından, ünsiyyət üçün istifadə olunan Arduino axınlarında, həmişə keyworkd "nullptr" ilə sona çatan göstəricilərdən ibarət bir sıra göstərici yaratmalıyıq. Burada, yalnız USB portu ilə kompüterlə əlaqə quran Arduinonun "Serial" axını istifadə edirəm, buna görə də serial belə görünür:

Axın *axınlar = {& Serial, nullptr};

"*" Simvolu, növün bir göstəricidir (elementin özü deyil, elementin yeri) deməkdir və "" mötərizəsi Arduinoda bir sıra olduğunu bildirir, buna görə birdən çox dəyər qoya bilərik.

Sonra LED -lərimizi yaratmalıyıq. Bunun üçün aşağıdakı iki sətri yazmalıyıq;

GroveChainableLED:: Sancaqlar grovePins = {7, 8};

GroveChainableLED led (& grovePins);

Grove RGB LED -iniz yoxdursa, amma yenə də vizual rəy almaq istəyirsinizsə, bunu eskizdə sadə bir dəyişikliklə edə bilərsiniz. Əvvəlki iki sətri bu sətirlə əvəz edin:

Monoxromatik LED led (LED_BUILTIN);

Bu konfiqurasiyada, yaşıl rəngli daxili LED, izlənilən dəyər sağlamlığa uyğun olduğu müddətdə yanacaq və əlaqəsi kəsildikdə sönəcək. Bağlanmadığı zaman açılmasını istəsəniz (məsələn, pin 13 -də yaşıl deyil, qırmızı LED istifadə edirsiniz) bunun əvəzinə bu xətti istifadə edə bilərsiniz:

Monoxromatik LED led (LED_BUILTIN, doğru);

Növbəti addım modulumuzun özünü yaratmaqdır. "GetInstance" metodunu çağıraraq, yaddaşdakı yerini ilk dəfə əldə etdiyimiz zaman belə edilir:

LightModule *modulu = LightModule:: getInstance ();

Arduino eskizlərində hər zamanki kimi "Serial" limanını işə salmaqla başlayaraq Arduinonun "setup ()" funksiyasındakı parametrləri təyin etməliyik:

Serial.begin (9600);

Bu sətri yazaraq işıq sensoru yaradırıq:

GroveDigitalLightSensor *lightSensor = yeni GroveDigitalLightSensor ();

Ardından modulumuza Arduino Stream üzərindəki göstəricilərimizdən istifadə edərək onlarla ünsiyyət qurmasını söyləyirik:

modul-> setStreams (axınlar);

Modulumuza, modulun olduğu yerdəki işıq intensivliyini izləmək üçün işıq sensorumuzdan istifadə etməsini də söyləyirik:

modul-> setSensor (lightSensor);

Modulumuza bizə vizual rəy vermək üçün LED -dən istifadə etmələrini söyləyirik:

modul-> setDisplay (& led);

Nəhayət, modulumuza öz "quraşdırma" funksiyasını çağıraraq etməsi lazım olan hər hansı bir daxili konfiqurasiyanı etməyə hazır olduğunu söyləyirik:

modul-> quraşdırma ();

Son addımımız, bu xətti "loop" funksiyasına yazaraq Arduinonun "loop" funksiyasının hər bir təkrarında çağırılmaq üçün nəzərdə tutulmuş modulumuzun "run ()" funksiyasını çağırmaqdır:

modul-> run ();

İndi eskizimiz nəhayət Arduinoya yükləməyə və modulumuzu sınamağa hazırdır!

Addım 6: AtHome Modulumuzu sınayın

AtHome Modulumuzu sınayırıq
AtHome Modulumuzu sınayırıq
AtHome Modulumuzu sınayırıq
AtHome Modulumuzu sınayırıq

Eskizi Arduinoya yükləmək üçün "Alətlər"> "Liman"> "[COMx və/dev/x] (Arduino/Genuino UNO)" bölməsinə keçərək Arduino UNO lövhənizi seçin.

Son olaraq, eskizi lövhənizə yükləmək üçün "Yüklə" düyməsini (sağa baxan oxu olan dairə düyməsini, alət çubuğunun ikinci simgesini) vurun.

Tamamlandı! İndi modul işləməlidir və Arduinonun Serial Monitorunda görünən dəyərləri kompüterinizə göndərməlidir. "Alətlər" menyusunda Arduinonun "Serial Monitorunu" açaraq yoxlaya bilərsiniz və bu addımın ikinci başlıq şəklinə bənzər bir çıxışınız olmalıdır:)

Addım 7: Modul üçün Dava Yarat

Modul üçün Kassa Yaratmaq
Modul üçün Kassa Yaratmaq

Modulunuz üçün 3 mm kontrplak lövhədə lazerlə kəsərək sadə bir qutu korpusu qura bilərsiniz.

Qutu qutularımızı düzəltmək üçün, sonradan fərdiləşdirdiyimiz ölçülərdə şablon hazırlamaq üçün makercase istifadə edirik. Bu addıma əlavə edilmiş parlaqlıq modulunun svg faylını tapa bilərsiniz.

Sonra üzləri bir -birindən başqa bir -birinə yapışdırın ki, sonra aça biləsiniz, dövrə daxil edəsiniz və LED -i korpusun çuxuruna yapışdırasınız (çuxuru doldurmaq üçün şəffaf lentdən istifadə edirik və LED -in önünə yapışdırırıq. ondan).

İndi Arduino -nu gücləndirmək üçün bir batareya əlavə edin, korpusu bağlayın və modulunuz hazırdır və yaxşı görünməlidir:)

Tövsiyə: