İçindekiler:
- Adım 1: Bileşenleri Toplama
- Adım 2: Kitaplığımızı Kurma
- 3. Adım: Gerekli Kitaplıkları Yükleme
- Adım 4: Modülün Montajı
- Adım 5: Parlaklık Modülü Eskizini Yazma
- Adım 6: Evde Modülümüzü Test Etme
- Adım 7: Modül İçin Bir Vaka Oluşturma
Video: AtHome ile Bir Parlaklık Modülü Oluşturun: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
AtHome, Epitech'ten AtHome grubu tarafından yapılan, bir akıllı telefon uygulamasını ve bir web uygulamasını beslemek için kullanılan bir API'yi ortaya çıkaran, kendi kendine barındırılan bir veritabanı ile iletişim kuran birkaç bağımsız sensör modülünün bağlantılı bir çözümünü geliştirmeyi amaçlayan, tamamen açık kaynaklı ve açık bir donanım öğrenci projesidir. Modüller, bir evin iç ortamını izler ve kullanıcıya yeşilden (iyi) kırmızıya (kötü) doğru görsel bir geri bildirim verebilir ve iletilen veriler, bir modülün seri iletişimi yoluyla veya kullanıcı tarafından kullanıcı tarafından görülebilir. eğer kullanırsanız uygulamalarımız.
Bu proje halen aktif bir geliştirme aşamasında olmasına rağmen, modüllerimizin temel işlevleri artık hazır ve özel modüller geliştirmek için kullanımı kolay olduğu varsayılan. İşte bu yüzden, bu parlaklık modülü örneği ile kendi basit modülünüzü nasıl oluşturacağınızı görmenizi öneriyorum.
Bu modüller temel olarak Arduino uyumlu bir kart (Akış, Tel ve UART akış desteğine sahip olduğu sürece kısmi bir Arduino çekirdeği yeterli olmalıdır), sorun olması durumunda kırmızıya dönen bir LED (kırmızı bir veya RGB) ile oluşturulmuştur. sensör, bir güç kaynağı (duvar güç kaynağı veya pil) ve lazerle kesilmiş bir kasa.
Evet, kesinlikle yeni değil, çok sayıda sensör projesi var ancak sağlık sorunlarının tespiti, kendi kendine barındırılan bir sunucuda iletişim ve bilgilerin depolanması ve görselleştirme uygulaması gibi diğer özelliklerin size yardımcı olacağını umuyoruz. Ya da sadece evinizi izlemek istiyorsanız, basit projeler veya daha az ilginç değil:)
Adım 1: Bileşenleri Toplama
Bu proje için AtHome modülünüzü oluşturmak için birkaç bileşene ihtiyacınız olacak:
- 1x Arduino Uyumlu kart: Burada bir Arduino UNO kullanacağım (ancak TI Launchpad'ler ve ESP8266 panoları gibi diğer panolarla da çalışır)
- 1x sensör: Bir TSL2561 parlaklık sensörü kullanacağım (desteklenen sensörlerin listesi kitaplığımızın belgelerinde mevcuttur)
- 1x led: Burada bir Grove Chainable RGB LED kullanacağım (ancak basit bir kırmızı led veya NeoPixel de olabilir)
- Dupont Telleri
Uyumlu bileşenlerin listesi projemizin belgelerinde mevcuttur.
Adım 2: Kitaplığımızı Kurma
Kütüphanemizi kurmak için depomuzdan indirmeniz gerekir (daha sonra Arduino IDE listesinde ve PlatformIO'da yayınlayacağız) bu bağlantı ile:
gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy
Ardından Arduino IDE'ye gidin ve "Sketch > Include Library > Add. ZIP Library…" öğesini seçin. Ardından "artifacts.zip" adlı zip dosyasını seçin ve "Tamam"a tıklayın.
3. Adım: Gerekli Kitaplıkları Yükleme
Kütüphanemizin çalışması için bilgisayarınızda başka kütüphanelerin kurulu olması gerekir:
- Arkhipenko TaskScheduler kitaplığı
- SEEED Studio Grove Dijital Işık Sensörü kitaplığı
- SEEED Studio Grove Zincirlenebilir RGB LED kitaplığı
- Adafruit NeoPixel kitaplığı
Bunları Arduino IDE'nin kütüphane yöneticisi aracılığıyla "Çizim" > "Kitaplığı Dahil Et" > "Kitaplıkları yönet…" seçeneğine giderek yükleyebilirsiniz.
Açılan yeni pencerede beyaz arama çubuğuna kurmak istediğiniz kütüphanenin adını yazıp bloğuna tıklayın. Bir "Yükle" düğmesi görünecektir, üzerine tıklamanız yeterlidir ve IDE onu indirip sizin için kuracaktır.
Adım 4: Modülün Montajı
Sensörle başlayacağız. TSL2561'in VCC pinini Arduino'nun 5V pinine, sensörün GND pinini Arduino'nun GND pinlerinden birine ve sensörün SDA ve SCL pinlerini Arduino'nun SDA ve SCL pinlerine bir kablo ile bağlayın.. Artık işiniz bitti!
Şimdi, Grove Chainable RGB LED'in VCC pinini Arduino'nun 5V pinine ve LED'in GND pinini Arduino'nun ikinci GND'sine bağlayın. Sadece bir 5V pin olarak Arduino iseniz, Arduino'nun 5v'sini breadboard'un bir + satırına bağlamak ve tüm bileşenlerinizi 5V pinleri üzerine bağlamak veya bir stripboard üzerinde birbirine lehimlemek için bir breadboard kullanabilirsiniz veya wago konektörlerini veya tercih ettiğiniz her şeyi kullanın. Şimdi, LED'inizin CI pinini Arduino'nuzun 7 pinine ve LED'inizin DI pinini Arduino'nuzun 8 pinine bağlayın. Böyle bir LED'iniz yoksa endişelenmeyin, Arduino kartınızın yerleşik LED'ini veya kodda küçük bir değişiklikle klasik bir LED'i kullanmak mümkündür.
Adım 5: Parlaklık Modülü Eskizini Yazma
Yeni bir eskiz oluşturalım ve modülümüz için kod yazalım.
Çizimin açıklamasıyla ilgilenmiyorsanız, Arduino IDE'nize kopyalayıp yapıştırabilirsiniz:
#Dahil etmek
LightModule = AtHomeModule kullanarak; Akış *akışlar = {&Seri, nullptr}; GroveChainableLED::Pinler grovePins = {7, 8}; GroveChainableLED led(&grovePins); LightModule *module = LightModule::getInstance(); void setup() { // bir kez çalıştırmak için kurulum kodunuzu buraya koyun: Serial.begin(9600); modül->setStreams(akışlar); GroveDigitalLightSensor *lightSensor = yeni GroveDigitalLightSensor(); modül->setSensor(lightSensor); modül->setDisplay(&led); modül->kurulum(); } void loop() { // tekrar tekrar çalıştırmak için ana kodunuzu buraya koyun: module->run(); }
Bu kodun ne yaptığını tam olarak anlamak istiyorsanız aşağıdakileri okuyabilir veya ilgilenmiyorsanız doğrudan bir sonraki adıma geçebilirsiniz.
Başlamak için, taslağın en üstüne şu satırı yazarak kütüphanemizi taslağımıza dahil etmemiz gerekiyor:
#Dahil etmek
Şimdi kullanacağımız modül nesnesine bir takma ad oluşturmamız gerekiyor. Bileşenlerini değiştirmek, başlatmak, durdurmak vb. için kullanılan birkaç düğmeli bir kutu olarak görebilirsiniz. Bir şablon tarafından oluşturulmuş bir kutu olduğu için (insanlar olarak projeler için kullandığımız normal şablon gibi, bir başlangıç tabanına sahiptir ve Arduino'nun derleyicisi, ona verdiğimiz parametrelere dayanarak son kodu oluşturur) bir sensör değerini temsil eden türü tanımlar ve hafızada tutmak istediğimiz sensör değeri sayısı, adında belirtilir ve normalde her kullanmak istediğimizde tekrarlanması gerekir. Bu biraz can sıkıcı, bu yüzden bu kutunun tam adına yeni bir ad, bir takma ad bağlayacağız.
Örneğin, bir parlaklık izleme modülünü uygulamak için kullanılacağı için bu kutunun adının "LightModule" olmasını istiyorum ve bir seferde sadece 1 değer tutmak istiyorum. Parlaklık, bilgisayarlar tarafından uint16_t olarak temsil edilen TSL2561 sensörümüz tarafından entegre bir tip olarak lüks olarak temsil edilir. Takma adımız şöyle görünecek:
LightModule = AtHomeModule kullanarak;
"using" anahtar sözcüğü, bir takma ad oluşturduğumuz anlamına gelir ve ona hemen ardından verdiğimiz ad, "=" karakterinden sonraki diziye karşılık gelir.
"AtHomeModule" yeni bir isim verdiğimiz bu kutunun gerçek adıdır ve değer gösterimini ve bellekte tutulan değer sayısını tanımlayan parametreler "" arasında listelenir.
Şimdi, daha sonra "AtHomeModule" adını kullanacağımızda, Arduino bunun "AtHomeModule" tam adını ifade ettiğini bilecektir.
Kutunuzun 1 yerine 5 değeri hafızada tutabilmesini istiyorsanız, "1" i "5" ile değiştirmeniz yeterlidir ve Arduino sizin için istediğinizi yapabilecek farklı bir kutu türü üretecektir. Bununla birlikte, modül, sensörün 5 değerini etkin bir şekilde ölçmek için zaman bulamadan değerlerini gönderecek şekilde programlanırsa, son yüklemeden bu yana yalnızca yeni değerleri gönderdiğinden, bunların 5'inin gönderildiğini asla görmeyeceğinizi unutmayın.
Ardından, modül tarafından iletişim kurmak için kullanılan Arduino akışlarında işaretçiler içeren ve her zaman keyworkd "nullptr" tarafından sonlandırılan bir işaretçi dizisi oluşturmamız gerekiyor. Burada, bilgisayarla USB portu üzerinden iletişim kuran Arduino'nun sadece "Seri" akışını kullanıyorum, bu yüzden dizi şöyle görünüyor:
Akış *akışlar = {&Seri, nullptr};
"*" karakteri, türün bir işaretçi olduğu anlamına gelir (elementin kendisi değil, öğenin konumu) ve "" parantezleri Arduino'da bunun bir dizi olduğu anlamına gelir, böylece birden çok değer koyabiliriz.
Ardından, LED'imizi oluşturmamız gerekiyor. Bunun için aşağıdaki iki satırı yazmamız gerekiyor;
GroveChainableLED::Pinler grovePins = {7, 8};
GroveChainableLED led(&grovePins);
Bir Grove RGB LED'iniz yoksa ancak yine de görsel bir geri bildirim istiyorsanız, bunu çizimde basit bir değişiklikle yapabilirsiniz. Önceki iki satırı bu satırla değiştirin:
MonokromatikLED led(LED_BUILTIN);
Bu konfigürasyonda, yeşil yerleşik LED, izlenen değer sağlık için uygun olduğu sürece yanar ve bağlantı bittiğinde söner. Bağlantısı bittiğinde açılmasını tercih ederseniz (örneğin pim 13'teki yeşil yerine kırmızı bir LED kullandığınız için) bunun yerine bu satırı kullanabilirsiniz:
MonokromatikLED led(LED_BUILTIN, true);
Bir sonraki adım, modülümüzün kendisini oluşturmaktır. Bu, "getInstance" yöntemini çağırarak bellekteki konumunu ilk aldığımızda şöyle yapılır:
LightModule *module = LightModule::getInstance();
Ardından, Arduino eskizlerinde her zamanki gibi "Seri" bağlantı noktasını başlatarak başlayarak Arduino'nun "setup()" işlevindeki parametreleri ayarlamamız gerekir:
Seri.başla(9600);
Bu satırı yazarak ışık sensörünü oluşturuyoruz:
GroveDigitalLightSensor *lightSensor = yeni GroveDigitalLightSensor();
Ardından modülümüze, Arduino Stream üzerindeki işaretçi dizimizi onlar aracılığıyla iletişim kurmak için kullanmasını söyleriz:
modül->setStreams(akışlar);
Modülümüze, modülün bulunduğu yerdeki ışık yoğunluğunu izlemek için ışık sensörümüzü kullanmasını da söyleriz:
modül->setSensor(lightSensor);
Modülümüze bize görsel bir geri bildirim vermesi için LED'imizi kullanmasını söylüyoruz:
modül->setDisplay(&led);
Son olarak, kendi "kurulum" fonksiyonunu çağırarak modülümüze yapması gereken herhangi bir dahili konfigürasyonu yapmaya hazır olduğunu söyleriz:
modül->kurulum();
Şimdi son adımımız Arduino'nun "loop" fonksiyonunun her iterasyonunda çağrılacak şekilde tasarlanan modülümüzün "run()" fonksiyonunu "loop" fonksiyonunun içine şu satırı yazarak çağırmak:
modül->çalıştır();
Artık eskizimiz nihayet Arduino'ya yüklenmeye ve modülümüzü test etmeye hazır!
Adım 6: Evde Modülümüzü Test Etme
Krokiyi Arduino'ya yüklemek için, "Araçlar" > "Port" > "[COMx veya /dev/x] (Arduino/Genuino UNO)" seçeneğine giderek Arduino UNO kartınızı seçin.
Son olarak, taslağı panonuza yüklemek için "Yükle" düğmesine (bir ok sağı gösteren daire düğmesi, araç çubuğunun ikinci simgesi) tıklayın.
Bitti! Artık modülünüz çalışıyor ve Arduino'nun Seri Monitöründe görünen bilgisayarınıza değerler gönderiyor olmalıdır. Arduino'nun "Araçlar" menüsünden "Seri Monitör"ünü açarak kontrol edebilirsiniz ve bu adımın ikinci başlık resmi gibi görünen bir çıktınız olmalıdır:)
Adım 7: Modül İçin Bir Vaka Oluşturma
3 mm'lik bir kontrplak tahtada lazerle keserek modülünüz için basit bir kutu kasa oluşturabilirsiniz.
Kutu kasalarımızı yapmak için, daha sonra özelleştireceğimiz istenen boyutlarda bir şablon hazırlamak için makercase kullanıyoruz. Bu adıma eklenmiş parlaklık modülünün svg dosyasını bulacaksınız.
Ardından, daha sonra açabilmeniz için yüzleri birbirine yapıştırın, böylece daha sonra açabilirsiniz, devrenizi içeri koyun ve LED'i kasanın deliğine yapıştırın (deliği doldurmak ve ışığı dağıtmak için LED'i öne yapıştırmak için şeffaf bant kullanıyoruz) ondan).
Şimdi Arduino'nuza güç sağlamak için bir pil ekleyin, kasayı kapatın ve modülünüz hazır ve iyi görünüyor olmalı:)
Önerilen:
Menü ve Parlaklık Kontrolü ile M5StickC Havalı Görünümlü Saat: 8 Adım
Menü ve Parlaklık Kontrolü ile M5StickC Serin Görünümlü Saat: Bu eğitimde, ESP32 M5Stack StickC'yi Arduino IDE ve Visuino ile LCD'de bir zaman gösterecek şekilde nasıl programlayacağımızı ve ayrıca menüyü ve StickC düğmelerini kullanarak saati ve parlaklığı nasıl ayarlayacağınızı öğreneceğiz. .Bir tanıtım videosu izleyin
Parlaklık Kontrolü ile 24 Watt LED Grow Light: 8 Adım (Resimlerle)
Parlaklık Kontrolü ile 24 Watt LED Grow Light: Yiyecek yetiştirmek en sevdiğim hobilerimden biri çünkü organik yiyeceklerin ve sağlıklı beslenmenin büyük bir hayranıyım. Bu Eğitilebilir Kitap, artan ihtiyaçlarınıza uyacak şekilde kırmızı/mavi parlaklık kontrolleriyle bir LED yetiştirme ışığının nasıl oluşturulacağını gösterecek ve
Yarım Saatten Daha Kısa Bir Sürede Bir Raspberry Pi ve bir RTL-SDR Dongle Kullanarak Yalnızca APRS RX Amatör Radyosu Oluşturun: 5 Adım
Bir Amatör Radyo APRS RX Sadece Yarım Saatten Daha Kısa Bir Sürede Bir Raspberry Pi ve bir RTL-SDR Dongle Kullanarak Igate Yapın: Lütfen bunun artık oldukça eski olduğunu, dolayısıyla bazı bölümlerin yanlış ve güncelliğini yitirdiğini unutmayın. Düzenlemeniz gereken dosyalar değişti. Size görüntünün en son sürümünü vermek için bağlantıyı güncelledim (lütfen sıkıştırmayı açmak için 7-zip kullanın) ancak tam bilgi için
Butonlar, Raspberry Pi ve Scratch ile Parlaklık Kontrolü PWM Tabanlı LED Kontrolü: 8 Adım (Resimlerle)
Basmalı Düğmeler, Raspberry Pi ve Scratch Kullanarak Parlaklık Kontrolü PWM Tabanlı LED Kontrolü: Öğrencilerime PWM'nin nasıl çalıştığını açıklamanın bir yolunu bulmaya çalışıyordum, bu yüzden kendime 2 basmalı düğme kullanarak bir LED'in parlaklığını kontrol etmeye çalışma görevi verdim - bir düğme bir LED'in parlaklığını arttırır ve diğeri onu karartır. Programlamak için
Lineer Parlaklık Eğrisi ile Ayrık Alternatif Analog LED Fader: 6 Adım (Resimlerle)
Doğrusal Parlaklık Eğrisi ile Ayrık Alternatif Analog LED Fader: Bir LED'i solduran/kısan devrelerin çoğu, bir mikro denetleyicinin PWM çıkışını kullanan dijital devrelerdir. LED'in parlaklığı, PWM sinyalinin görev döngüsü değiştirilerek kontrol edilir. Kısa bir süre sonra, görev döngüsünü doğrusal olarak değiştirirken,