Mundarija:
- 1 -qadam: kirish
- 2 -qadam: ehtiyot qismlar va asboblarni yig'ish
- 3 -qadam: Arduino IDE -ni o'rnatish
- 4 -qadam: Kod
- 5 -qadam: O'chirish diagrammasi
- 6 -qadam: Hammasini bir joyga to'plash
- 7 -qadam: Xulosa
Video: Sun'iy o'simlik hissiyotlari ekspressori (A.P.E.X.): 7 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Lekin kuting … Yana ko'p narsalar bor!
1 -qadam: kirish
APEX nima?
APEX - bu o'simliklarni kuzatib boradigan aqlli (yoqimsiz) qurilma. Faqat uni har qanday o'simlikka ulang va u o'simlikning "baxt" darajasini ko'rsatadi! Agar sizda sug'orishni unutish yomon odati bo'lsa, bu sizning o'simliklarni sug'orish uchun ajoyib eslatma.
Bu qanday ishlaydi?
Sehr. Hazillashayapman! APEX namlik sensori bilan biriktirilgan Arduino -dan foydalanadi, u o'simlikning tuproqiga kiradi. Bu sensor tuproq namligini o'qiydi, keyin Arduino qaysi yuzni ko'rsatish kerakligini hisoblab chiqadi.
Lekin nega?
Nega yo'q?
2 -qadam: ehtiyot qismlar va asboblarni yig'ish
Keling, unga kiraylik! Ushbu ko'rsatma uchun sizga juda ko'p qismlar va asboblar kerak bo'ladi. Yaxshiyamki, ularning barchasi quyida keltirilgan:
Mikrokontrollerlar tanlovi ruhida ushbu loyiha butunlay Amazonda sotib olingan qismlar tomonidan tayyorlangan! (homiy emas)
Qismlar ro'yxati:
- Arduino Uno
- 8x8 LED displey
- Sensorli sig'im sensori
- Namlik sensori
- 9V batareya ulagichi
- 9V batareya
Asboblar ro'yxati:
- 22 o'lchash simlari
- Elektr tasmasi
- Tel -striptizchilar
- Lehimlash temir
- Chiqib ketadigan nasos
Barcha kerakli uskunalarni yig'ib olgach, Arduino dasturini o'rnatish vaqti keldi!
3 -qadam: Arduino IDE -ni o'rnatish
Ushbu loyiha ishlashi uchun biz Arduinoni dasturlashimiz kerak bo'ladi. Buning uchun kompyuteringizga Arduino Integrated Development Environment (IDE) ni yuklab olish va o'rnatish talab qilinadi. Bu juda oddiy tushuntirish, lekin men sizga bu jarayonni ko'rsataman:
1. Arduino veb -saytiga tashrif buyuring
2. Yuklamalar sahifasiga o'ting (dasturiy ta'minot> yuklamalar).
3. Operatsion tizimingiz uchun Yuklab olish havolasini bosing
Yon eslatma: Dastur Windows, Mac va Linuxda ishlaydi.
4. Windows -ga o'rnatish
- Yuklab olingan faylni ishga tushirish uchun uni ikki marta bosing
- Litsenziyaga rozi bo'lish uchun "Qabul qilaman" tugmasini bosing
- Qolgan ko'rsatmalarga amal qiling
- Endi dastur o'rnatilishi kerak!
(Agar siz adashib qolsangiz, ekran tasvirlariga qarang.)
5. Mac -ga o'rnatish
- Yuklab olingan faylni bosing
- "Ochish" -ni tanlang
- Dastur avtomatik ravishda o'rnatiladi va ishlaydi!
(Agar siz adashib qolsangiz, ekran tasvirlarini tekshirganingizga ishonch hosil qiling)
6. Mana shu
Va siz tugatdingiz! Endi siz Arduino IDE -ni tizimingizga yukladingiz!
4 -qadam: Kod
Bu qadam kod haqida. Bu juda qisqa dastur, shuning uchun men uni siz bilan birga ko'rib chiqaman va u qanday ishlashini tushuntirib beraman. Birinchidan, qisqacha sharh, keyin chuqur tushuntirish va nihoyat, uni Arduino-ga qanday surish mumkin!
Qisqacha ma'lumot
Kodni batafsil tushuntirishga qiziqmaganlar uchun men TL; DR segmentini taqdim etaman! Mana asosiy tushuntirish. Arduino har bir soniyada namlik sensori qiymatlarini oladi. Bu ma'lumot ma'lum bir yuzni hisoblash va ko'rsatish uchun ishlatiladi! Oxirida bir nechta kod ham bor, u sig'imli sensorli tugmani displeyni yoqish va o'chirishga imkon beradi. Juda oddiy, to'g'rimi?
Nitty Gritty
O'quv qo'llanmaning bu qismi butun dastur qanday ishlashini juda qiziqqanlarga mo'ljallangan. Men nima haqida gapirayotganimni tushunishga yordam berish uchun yuqoridagi skrinshotlarni beraman, shuningdek, ushbu tavsifga ba'zi kod qatorlarini qo'shaman.
Ushbu dastur beshta bo'limga bo'lingan:
- Shu jumladan kutubxonalar va o'zgarmaydiganlarni yaratish
- O'rnatish funktsiyasi
- Yuz ifodalari uchun funktsiyalar
- Matn funktsiyasi bo'yicha Arduino yozish
- Loop funktsiyasi
Kutubxonalar va o'zgarmaydiganlarni yaratish, shu jumladan:
Ushbu kodning birinchi bo'limi biz foydalanadigan o'zgaruvchilar va kutubxonalar haqida.
#"LedControlMS.h" ni qo'shing
#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int sensorPin = A5; int sensorValue = 0; bool boshlandi = noto'g'ri; bool on = rost; boolean bosildi = LOW;
Birinchi qatorga LedControlMS nomli kutubxona kiradi. Bu kutubxona LED displeyga qiymatlarni yuborish imkoniyatiga ega bo'lishi uchun talab qilinadi. Keyingi satr - bu sensorli sensorning pinini 7 ga o'rnatadigan ta'rif. Shundan so'ng bizda LED displeyi, namlik sensori va uning qiymatini belgilaydigan yana uchta o'zgaruvchi bor. Oxirgi uchta qator sensorli tugma va displey holatini tartibga soluvchi barcha boolean. Shundan so'ng bizda bayt qiymatlari bo'ladi:
bayt tabassum [4] = {B00000100, B00110010, B01100100, B01100000}; bayt ajablanib [4] = {B00001110, B00001010, B01101110, B10010000}; bayt meh [4] = {B00000100, B00100100, B00100100, B00100000}; bayt sad [4] = {B00000010, B01100100, B00110010, B00110000}; bayt o'lik [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; bayt xatosi [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Yomon yuzlar bayt esmile [4] = {B00000010, B00101010, B01000100, B01000000}; bayt elaugh [4] = {B00000010, B00101010, B01100100, B01100000}; bayt eplen [4] = {B00000010, B00101010, B00100100, B00100000}; baytli ko'zoynak [4] = {B00000001, B01101001, B01100010, B01100000}; bayt etalk [4] = {B00000001, B00101001, B01100010, B01100000};
Bu qiymatlar APEXning barcha yuzlarini ifodalaydi. Har bir bayt - bu har bir pikselning holatini belgilaydigan qator bitlarni o'z ichiga olgan qator. "1" va "0" mos ravishda yoqish/o'chirishni bildiradi.
O'rnatish funktsiyasi:
Keyingi bo'limga o'tib, bizda sozlash funktsiyasi mavjud.
void setup () {// MS Serial Chiqish Serial.begin (9600);
pinMode (TouchSensor, INPUT);
// LED Matrix Setup lc.shutdown (0, false); lc.setIntensity (0, 4); lc.clearDisplay (0); }
Ism buni juda yaxshi tushuntiradi. Bu erda biz sensorli sensor va displeyni "o'rnatamiz". Birinchi ikkita qator bizning ketma -ket chiqishni boshlaydi (disk raskadrovka uchun ishlatiladi). Uchinchi qator sensorli pinni kirishga o'rnatadi va oxirgi to'rtta chiziq displeyni ishga tushiradi.
Yuz ifodalari uchun funktsiyalar:
Bu, ehtimol, eng uzun qism, lekin barchasi juda oddiy va takrorlanadi.
void singan () {lc.setRow (0, 0, xato [0]); lc.setRow (0, 1, xato [1]); lc.setRow (0, 2, xato [2]); lc.setRow (0, 3, xato [3]); lc.setRow (0, 4, xato [4]); lc.setRow (0, 5, xato [5]); lc.setRow (0, 6, xato [6]); lc.setRow (0, 7, xato [7]); }
void baxtli () {
lc.setRow (0, 0, tabassum [0]); lc.setRow (0, 1, tabassum [1]); lc.setRow (0, 2, tabassum [2]); lc.setRow (0, 3, tabassum [3]); lc.setRow (0, 4, tabassum [3]); lc.setRow (0, 5, tabassum [2]); lc.setRow (0, 6, tabassum [1]); lc.setRow (0, 7, tabassum [0]); }
void plain () {
lc.setRow (0, 0, meh [0]); lc.setRow (0, 1, meh [1]); lc.setRow (0, 2, meh [2]); lc.setRow (0, 3, meh [3]); lc.setRow (0, 4, meh [3]); lc.setRow (0, 5, meh [2]); lc.setRow (0, 6, meh [1]); lc.setRow (0, 7, meh [0]); }
hayron qoldim () {
lc.setRow (0, 0, ajablanib [0]); lc.setRow (0, 1, ajablanib [1]); lc.setRow (0, 2, ajablanib [2]); lc.setRow (0, 3, ajablanib [3]); lc.setRow (0, 4, ajablanib [3]); lc.setRow (0, 5, ajablanib [2]); lc.setRow (0, 6, ajablanib [1]); lc.setRow (0, 7, ajablanib [0]); }
bo'sh o'lish () {
lc.setRow (0, 0, o'lik [0]); lc.setRow (0, 1, o'lik [1]); lc.setRow (0, 2, o'lik [2]); lc.setRow (0, 3, o'lik [3]); lc.setRow (0, 4, o'lik [4]); lc.setRow (0, 5, o'lik [5]); lc.setRow (0, 6, o'lik [1]); lc.setRow (0, 7, o'lik [0]); }
bo'sh yig'lash () {
lc.setRow (0, 0, qayg'uli [0]); lc.setRow (0, 1, qayg'uli [1]); lc.setRow (0, 2, qayg'uli [2]); lc.setRow (0, 3, qayg'uli [3]); lc.setRow (0, 4, qayg'uli [3]); lc.setRow (0, 5, qayg'uli [2]); lc.setRow (0, 6, qayg'uli [1]); lc.setRow (0, 7, qayg'uli [0]); }
void evilsmile () {
lc.setRow (0, 0, esmile [0]); lc.setRow (0, 1, esmile [1]); lc.setRow (0, 2, esmile [2]); lc.setRow (0, 3, esmile [3]); lc.setRow (0, 4, esmile [3]); lc.setRow (0, 5, esmile [2]); lc.setRow (0, 6, esmile [1]); lc.setRow (0, 7, esmile [0]); }
void evillaugh () {
lc.setRow (0, 0, elaugh [0]); lc.setRow (0, 1, elaugh [1]); lc.setRow (0, 2, elaugh [2]); lc.setRow (0, 3, elaugh [3]); lc.setRow (0, 4, elaugh [3]); lc.setRow (0, 5, elaugh [2]); lc.setRow (0, 6, elaugh [1]); lc.setRow (0, 7, elaugh [0]); }
void badplain () {
lc.setRow (0, 0, eplain [0]); lc.setRow (0, 1, eplain [1]); lc.setRow (0, 2, eplain [2]); lc.setRow (0, 3, eplain [3]); lc.setRow (0, 4, eplain [3]); lc.setRow (0, 5, eplen [2]); lc.setRow (0, 6, eplain [1]); lc.setRow (0, 7, eplain [0]); }
void evilyell () {
lc.setRow (0, 0, ko'zoynak [0]); lc.setRow (0, 1, ko'zoynak [1]); lc.setRow (0, 2, ko'zoynak [2]); lc.setRow (0, 3, ko'zoynak [3]); lc.setRow (0, 4, ko'zoynak [3]); lc.setRow (0, 5, ko'zoynak [2]); lc.setRow (0, 6, ko'zoynak [1]); lc.setRow (0, 7, ko'zoynak [0]); }
void eviltalk () {
lc.setRow (0, 0, etalk [0]); lc.setRow (0, 1, etalk [1]); lc.setRow (0, 2, etalk [2]); lc.setRow (0, 3, etalk [3]); lc.setRow (0, 4, etalk [3]); lc.setRow (0, 5, etalk [2]); lc.setRow (0, 6, etalk [1]); lc.setRow (0, 7, etalk [0]); }
Bu funktsiyalar har bir yuz ifodasini birinchi bo'limdagi bayt qiymatlarimiz yordamida aniqlash uchun ishlatiladi. Har bir satr x pozitsiyasi va bayt qiymatlarini belgilaydi va keyin qiymatlarni o'sha ustunga qo'llaydi. Ba'zi funktsiyalar ko'proq chiziqlarni talab qiladi, chunki bu yuzning qiymatlarini ko'rsatish uchun ko'proq qatorlar mavjud. Har bir yuz nosimmetrik, shuning uchun biz chiziqlarni takrorlaymiz.
WriteArduinoOnMatrix funktsiyasi:
To'rtinchi qism LED displeyda to'g'ri yuzlarni hisoblash va yozish uchun ishlatiladi. U boshqa qiymatlar qatoridan iborat bo'lib, ular suv qiymatlarini tekshiradi, so'ngra oldingi bo'limdagi turli funktsiyalarni chaqirish orqali displeyni o'rnatadi.
void writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {ajablanib (); } boshqa {singan (); }}
Agar sezgich ishchi diapazonidan tashqariga chiqsa, biz "singan" yuzlarni qo'shganimizni sezishingiz mumkin. Bu sodir bo'ladigan g'alati null xatolarning oldini oladi va kod ichida nima bo'layotganini yaxshiroq ingl.
Loop funktsiyasi:
Oxir -oqibat, pastadir funktsiyasi. Bu kod aynan uning nomi aytganini qiladi, aylanadi! Bu funktsiyada juda ko'p satrlar mavjud bo'lsa -da, aslida bu juda oddiy. Kod birinchi navbatda tugma holatini o'qiydi va displey "Yoqish" ekanligini ko'radi. Agar bu haqiqat deb topilsa, u holda WriteArduinoOnMatrix funksiyasi chaqiriladi, u APEXda yuzni chizadi. Chunki bu funksiya aylanib yuradi, displey biz xohlagancha yangilanadi. Bu kechikish kechikish vaqti o'zgaruvchisi tomonidan belgilanadi.
void loop () {if (boshlangan == rost) {kechikish vaqti = 3000; } // O'qish tugmasi bosildi = digitalRead (TouchSensor);
agar (bosilsa) {
if (on == true) {lc.clearDisplay (0); on = noto'g'ri; kechikish (kechikish); } else {on = true; kechikish (kechikish); }} sensorValue = analogRead (sensorPin); kechikish (kechikish); if (on == true) {// Draw Faces writeArduinoOnMatrix (); }
boshlandi = rost;
}
Kodda hamma narsa shu. Umid qilamanki, endi siz hammasi qanday ishlashini yaxshiroq tushunasiz va ushbu bilimlardan foydalanib, uni loyihangizga moslashtirishni boshlashingiz mumkin!
Kodni Arduino -ga yuborish
Endi biz barcha kodlarni ko'rib chiqdik, uni Arduino -ga o'tkazish vaqti keldi! Yaxshiyamki, IDE buni juda oddiy qiladi. Buning uchun Arduino -ni USB kabeli bilan kompyuterga ulang va IDE -ning yuqori chap burchagidagi o'ng o'qni bosing. Kodni bosishga ruxsat bering va agar siz to'g'ri bajargan bo'lsangiz, dasturning pastki qismida muvaffaqiyatli xabarni ko'rishingiz kerak!
5 -qadam: O'chirish diagrammasi
Xuddi kodga o'xshab, elektron sxemasi juda murakkab emas. U faqat uchta sensordan va Arduino-dan iborat, shuning uchun men sizga har birining pinlarini aytib beraman va agar sizga boshqa yordam kerak bo'lsa, yuqoridagi diagramaga murojaat qiling.
LED displeyi:
- VCC -> 5V
- GRD -> GRD
- Din -> 12 -pin
- CS -> 10 -pin
- CLK -> Pin 11
Namlik sensori:
- Ijobiy -> 5V
- Salbiy -> GRD
- Signal -> A5
Sensorli sig'im sensori:
- VCC -> 5V
- GRD -> GRD
- SIG -> 7
Juda qiyin emas, to'g'rimi? Agar sizda bu chiqish muammosi bo'lsa, quyidagi videoga qarang, men sizga uni qanday ulashni ko'rsataman.
6 -qadam: Hammasini bir joyga to'plash
Matnni qanday qilib bir -biriga mos kelishini tushuntirish qiyin, shuning uchun men, albatta, ushbu qism uchun videoni ko'rib chiqishni taklif qilaman. Men o'zimni qanday qilib birlashtirganimni aniq tushuntirmoqchi emasman, bu juda qiyin. Lekin tushunarsiz narsalarni tushuntirish uchun men simli ulanishlarni lehimlab, taxtaning orqa tomoniga o'rab qo'ydim. Keyin men sensorlarni joylashtirdim va elektr tasmasini ishlatib, hammasini bir joyga to'pladim. Nihoyat, men uni 9V batareya bilan sinab ko'rdim, keyin bildimki, u ishlaganida batareyani orqa tomoniga qo'yib, uni ham yopishtirib qo'ydi. Yuqorida aytganimdek, bu qadam uchun videoni tekshiring, u juda yaxshi lehim segmentiga ega va u simlarni to'g'ri o'rashga yordam beradi. Agar adashib qolsangiz, uni to'xtatib turing yoki yarim tezlikda o'ynang.
Tabriklaymiz! Agar hamma narsa muvaffaqiyatli bo'lsa, endi sizda to'liq ishlaydigan APEX qurilmasi bo'lishi kerak!
Qurilmangizni sinab ko'rish uchun, sug'oriladigan o'simlikni toping va uni tarmoqqa ulang! Siz buni baxtli yoki hayratlanarli deb bilishingiz kerak va bu uning ishlashi kerakligini anglatadi !!! Loyihani yakunlash uchun ajoyib ish!
7 -qadam: Xulosa
Va bu to'liq ko'rsatma! Loyihani tekshirganingiz uchun tashakkur! Savol va sharhlaringizni quyida qoldiring va shunga o'xshash ajoyib darsliklar uchun Urban dehqonchilik yigitlariga rioya qiling! Sizning APEX qurilishi qanday o'tganini eshitishni xohlaymiz va rasmlar juda qadrlanadi! To'xtab qolganingiz uchun yana bir bor rahmat, kuningiz yaxshi o'tsin!
(Bu ko'rsatma eski emoji o'simlik emojisidan ilhomlangan!)
P. S. Bu ko'rsatma mikrokontrollerlar tanlovida qatnashgan, shuning uchun bizga ovoz berishni unutmang! Biz buni juda qadrlaymiz:)
P. P. S. Keling, Make jurnalida APEX -ni olaylik! Bu erda ovoz bering! Rahmat:)
Tavsiya:
Aqlli yopiq o'simlik monitor - Sizning o'simlik sug'orish kerakligini biling: 8 qadam (rasmlar bilan)
Aqlli yopiq o'simlik monitor - Sizning o'simlik qachon sug'orilishi kerakligini biling: Bir necha oy oldin, men sizlarga tuproq haqida foydali ma'lumot berish uchun batareyadan ishlaydigan tuproq namligini nazorat qilish tayog'ini yasaganman. namlik darajasi va yonib -o'chadigan LEDlar sizga qachon to'xtash kerakligini aytadi
Avtomatlashtirilgan o'simlik pot - Kichkina bog ': 13 qadam (rasmlar bilan)
Avtomatlashtirilgan o'simlik pot - Kichik bog ': Men Howest Kortrijkdagi multimediya va aloqa texnologiyasi talabasiman. Yakuniy topshiriq uchun biz o'zimiz xohlagan IoT loyihasini ishlab chiqishimiz kerak edi. Fikrlarni qidirib, o'sishni yaxshi ko'radigan onam uchun foydali narsa qilishga qaror qildim
Avtomatik aqlli o'simlik pot - (DIY, 3D bosma, Arduino, o'zini sug'orish, loyiha): 23 qadam (rasmlar bilan)
Avtomatik aqlli o'simlik pot - (DIY, 3D bosma, Arduino, o'z -o'zini sug'orish, loyiha): Salom, ba'zida biz uydan bir necha kun ketganda yoki chindan ham band bo'lganimizda, o'simliklar sug'orilmagani uchun azob chekishadi. kerak. Bu mening yechimim. Bu aqlli o'simlik qozon bo'lib, u quyidagilarni o'z ichiga oladi: Ichki suv ombori. Senso
DIY o'simlik namlik sensori W/ Arduino: 6 qadam (rasmlar bilan)
DIY o'simlik namlik sensori W/ Arduino: Ushbu loyihani veb -saytimda ko'ring! Ushbu loyiha dielektrik doimiyligini o'lchash orqali o'simlik atrofidagi suv tarkibini hisoblab chiqadi (tuproqning elektr energiyasini uzatish qobiliyati) va sizni qizil LED bilan ogohlantiradi. o'simlik ko'proq suvga muhtoj
O'simlik monitor: 12 qadam (rasmlar bilan)
O'simlik monitori: o'simlik monitorining maqsadi, agar analog tuproq sensori ulangan zavodga kerak bo'lsa, suvni skaner qilish va boshqarish, bu loyiha uchun zarur bo'lgan qismlar quyidagilardir: 1x Arduino Uno1x LCD displey1x Servo Dvigatel 1x Tuproq sensori birligi1x Potansiyometr1x Tibbiy 30c