Мазмұны:
- 1 -қадам: Кіріспе
- 2 -қадам: Бөлшектер мен құралдарды жинау
- 3 -қадам: Arduino IDE орнату
- 4 -қадам: Кодекс
- 5 -қадам: схема
- 6 -қадам: Барлығын біріктіру
- 7 -қадам: Қорытынды
Бейне: Жасанды өсімдік эмоциясы экспрессоры (A.P.E.X.): 7 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Бірақ күте тұрыңыз … Тағы бар!
1 -қадам: Кіріспе
APEX дегеніміз не?
APEX - бұл өсімдіктерді бақылайтын ақылды құрылғы. Оны кез келген өсімдікке қосыңыз, сонда ол өсімдіктің «бақыт» деңгейін көрсетеді! Бұл сіздің өсімдіктерді суаруды ұмытып кетуді әдетке айналдырсаңыз, суару үшін керемет еске салғыш.
Бұл қалай жұмыс істейді?
Сиқыр. Жай әзілдедім! APEX зауыттың топырағына енгізілген ылғал сенсорына бекітілген Arduino қолданады. Бұл сенсор топырақтың ылғалдылығын оқиды, содан кейін Arduino қай бетті көрсету керектігін есептейді.
Бірақ неге?
Неге жоқ?
2 -қадам: Бөлшектер мен құралдарды жинау
Оған кірейік! Бұл нұсқаулық үшін сізге бірнеше бөлшектер мен құралдар қажет болады. Бақытымызға орай, олардың барлығы төменде келтірілген:
Микроконтроллерлер байқауының рухында бұл жоба толығымен Amazon -да сатып алынған бөлшектермен жасалды! (демеушілік емес)
Бөлшектер тізімі:
- Ардуино Уно
- 8x8 жарықдиодты дисплей
- Сенсорлық сыйымдылық сенсоры
- Ылғал сенсоры
- 9В батарея қосқышы
- 9В батарея
Құралдар тізімі:
- 22 өлшеуіш сым
- Электр таспасы
- Сым тартқыштар
- Пісіру темірі
- Тазартқыш сорғы
Барлық қажетті жабдықты жинағаннан кейін Arduino бағдарламалық жасақтамасын орнатудың уақыты келді!
3 -қадам: Arduino IDE орнату
Бұл жоба жұмыс істеуі үшін бізге Arduino бағдарламалау керек. Бұл компьютерге Arduino Integrated Development Environment (IDE) жүктеуді және орнатуды қажет етеді. Бұл өте қарапайым түсініктеме, бірақ мен сізге процесті көрсетемін:
1. Arduino веб -сайтына кіріңіз
2. Жүктеулер бетіне өтіңіз (Бағдарламалық қамтамасыз ету> Жүктеулер)
3. Операциялық жүйенің жүктеу сілтемесін басыңыз
Ескерту: Бағдарлама Windows, Mac және Linux жүйелерінде жұмыс істейді.
4. Windows жүйесінде орнату
- Жүктелген файлды іске қосу үшін оны екі рет нұқыңыз
- Лицензиямен келісу үшін «Келісемін» түймесін басыңыз
- Қалған нұсқауларды орындаңыз
- Бағдарламаны қазір орнату керек!
(Егер сіз жоғалсаңыз, скриншоттарды міндетті түрде қараңыз)
5. Mac жүйесінде орнату
- Жүктелген файлды нұқыңыз
- «Ашу» таңдаңыз
- Бағдарлама автоматты түрде орнатылады және іске қосылады!
(Егер сіз шатассаңыз, скриншоттарды міндетті түрде қараңыз)
6. Міне, бұл
Ал сіз аяқтадыңыз! Енді сіздің жүйеңізге Arduino IDE жүктелді!
4 -қадам: Кодекс
Бұл қадамның бәрі кодқа қатысты. Бұл өте қысқа бағдарлама, сондықтан мен сізбен бірге боламын және оның қалай жұмыс істейтінін түсіндіремін. Алдымен қысқаша шолу, содан кейін терең түсініктеме және ақырында оны Arduino-ға қалай итермелеу керек!
Қысқаша шолу
Кодты егжей -тегжейлі түсіндіруге қызығушылық танытпайтындар үшін мен TL; DR сегментін ұсынамын! Міне негізгі түсініктеме. Arduino ылғалдылық сенсорынан бірнеше секунд сайын мәндерді қабылдайды. Бұл ақпарат белгілі бір бетті есептеу және көрсету үшін қолданылады! Сондай -ақ, дисплейді қосуға және өшіруге арналған сыйымдылық батырмасы бар код бар. Өте қарапайым, дұрыс па?
Нитти Гритти
Оқулықтың бұл бөлімі барлық бағдарламаның қалай жұмыс істейтініне қызығушылық танытқандарға арналған. Мен не айтып жатқанымды түсінуге көмектесу үшін жоғарыда скриншоттар беремін, сонымен қатар осы сипаттамаға кодтың кейбір жолдарын енгіземін.
Бұл бағдарлама бес бөлімге бөлінеді:
- Оның ішінде кітапханалар және айнымалылар құру
- Орнату функциясы
- Мимикаға арналған функциялар
- Matrix функциясына Arduino жазу
- Цикл функциясы
Кітапханалар мен айнымалыларды қосқанда:
Бұл кодтың бірінші бөлімі біз қолданатын айнымалылар мен кітапханалар туралы.
#«LedControlMS.h» қосыңыз
#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int sensorPin = A5; int sensorValue = 0; bool басталды = жалған; bool on = ақиқат; логикалық пресс = LOW;
Бірінші жолда LedControlMS деп аталатын кітапхана бар. Бұл кітапхана жарықдиодты дисплейге мәндерді жіберу үшін қажет. Келесі жол - сенсорлық түйреуішті 7 -ге орнататын анықтамалық анықтама. Осыдан кейін бізде LED дисплейінің түйреуіштерін, ылғалдылық сенсорын және оның мәнін анықтайтын тағы үш айнымалысы бар. Соңғы үш жол сенсорлық түйме мен дисплейдің күйін реттейтін логикалық болып табылады. Осыдан кейін бізде байт мәндері бар:
байт күлкісі [4] = {B00000100, B00110010, B01100100, B01100000}; байттық тосын сый [4] = {B00001110, B00001010, B01101110, B10010000}; байт meh [4] = {B00000100, B00100100, B00100100, B00100000}; байт сад [4] = {B00000010, B01100100, B00110010, B00110000}; өлі байт [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; байт қателігі [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Evil Faces байт esmile [4] = {B00000010, B00101010, B01000100, B01000000}; байт elaugh [4] = {B00000010, B00101010, B01100100, B01100000}; байт эплайн [4] = {B00000010, B00101010, B00100100, B00100000}; байт көзі [4] = {B00000001, B01101001, B01100010, B01100000}; байт этал [4] = {B00000001, B00101001, B01100010, B01100000};
Бұл мәндер APEX барлық беттерін көрсетеді. Әр байт - бұл берілген жолдағы әрбір пиксельдің күйін көрсететін бірнеше биттерді қамтитын массив. «1» және «0» сәйкесінше Қосу/Өшіруді білдіреді.
Орнату функциясы:
Келесі бөлімге көшсек, бізде орнату функциясы бар.
void setup () {// MS Serial Output Serial.begin (9600);
pinMode (TouchSensor, INPUT);
// LED Matrix Setup lc.shutdown (0, жалған); lc.setIntensity (0, 4); lc.clearDisplay (0); }
Атау оны өте жақсы түсіндіреді. Бұл жерде сенсорлық сенсор мен дисплейді «орнатамыз». Алғашқы екі жол біздің сериялық шығуды бастайды (жөндеу үшін қолданылады). Үшінші жол сенсорлық түйреуішті кіріске қояды, ал соңғы төрт жол дисплейді қосады.
Мимикаға арналған функциялар:
Бұл, бәлкім, ең ұзын бөлім, бірақ бәрі өте қарапайым және қайталанады.
void broken () {lc.setRow (0, 0, қате [0]); lc.setRow (0, 1, қате [1]); lc.setRow (0, 2, қате [2]); lc.setRow (0, 3, қате [3]); lc.setRow (0, 4, қате [4]); lc.setRow (0, 5, қате [5]); lc.setRow (0, 6, қате [6]); lc.setRow (0, 7, қате [7]); }
void бақытты () {
lc.setRow (0, 0, күлімсіреу [0]); lc.setRow (0, 1, күлімсіреу [1]); lc.setRow (0, 2, күлімсіреу [2]); lc.setRow (0, 3, күлімсіреу [3]); lc.setRow (0, 4, күлімсіреу [3]); lc.setRow (0, 5, күлімсіреу [2]); lc.setRow (0, 6, күлімсіреу [1]); lc.setRow (0, 7, күлімсіреу [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]); }
таң қалды () {
lc.setRow (0, 0, таңқаларлық [0]); lc.setRow (0, 1, тосын [1]); lc.setRow (0, 2, тосын сый [2]); lc.setRow (0, 3, тосын сый [3]); lc.setRow (0, 4, тосын сый [3]); lc.setRow (0, 5, тосын сый [2]); lc.setRow (0, 6, тосын сый [1]); lc.setRow (0, 7, таңқаларлық [0]); }
бос өлу () {
lc.setRow (0, 0, өлі [0]); lc.setRow (0, 1, өлі [1]); lc.setRow (0, 2, өлі [2]); lc.setRow (0, 3, өлі [3]); lc.setRow (0, 4, өлі [4]); lc.setRow (0, 5, өлі [5]); lc.setRow (0, 6, өлі [1]); lc.setRow (0, 7, өлі [0]); }
бос жылау () {
lc.setRow (0, 0, қайғылы [0]); lc.setRow (0, 1, қайғылы [1]); lc.setRow (0, 2, қайғылы [2]); lc.setRow (0, 3, қайғылы [3]); lc.setRow (0, 4, қайғылы [3]); lc.setRow (0, 5, қайғылы [2]); lc.setRow (0, 6, қайғылы [1]); lc.setRow (0, 7, қайғылы [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 evilplain () {
lc.setRow (0, 0, eplain [0]); lc.setRow (0, 1, эплайн [1]); lc.setRow (0, 2, эплайн [2]); lc.setRow (0, 3, эплайн [3]); lc.setRow (0, 4, eplain [3]); lc.setRow (0, 5, эплайн [2]); lc.setRow (0, 6, эплайн [1]); lc.setRow (0, 7, eplain [0]); }
void evilyell () {
lc.setRow (0, 0, көзілдірік [0]); lc.setRow (0, 1, көзілдірік [1]); lc.setRow (0, 2, көзілдірік [2]); lc.setRow (0, 3, көзілдірік [3]); lc.setRow (0, 4, көзілдірік [3]); lc.setRow (0, 5, көзілдірік [2]); lc.setRow (0, 6, көзілдірік [1]); lc.setRow (0, 7, көзілдірік [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]); }
Бұл функциялар бірінші бөлімдегі байт мәндерін қолдана отырып, әр мимиканы анықтау үшін қолданылады. Әрбір жол x орнын және байт мәндерін анықтайды, содан кейін мәндерді сол бағанға қолданады. Кейбір функцияларға көбірек жолдар қажет, себебі сол беттің мәндерін көрсету үшін көбірек жолдар қолданылады. Әр бет симметриялы, сондықтан біз сызықтарды қайталаймыз.
WriteArduinoOnMatrix функциясы:
Төртінші бөлім жарықдиодты дисплейде тиісті беттерді есептеу мен жазу үшін қолданылады. Ол судың мәнін тексеретін, содан кейін алдыңғы бөлімдегі әр түрлі функцияларды шақыру арқылы дисплейді орнататын if if операторының бірқатарынан тұрады.
жарамсыз writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {таң қалды (); } басқа {сынған (); }}
Сенсор жұмыс ауқымынан тыс кетсе, біз «сынған» беттерді қосқанымызды байқай аласыз. Бұл кейбір оғаш нөлдік қателіктердің алдын алады және код ішінде не болып жатқанын жақсы көруге мүмкіндік береді.
Цикл функциясы:
Соңғысы - бұл цикл функциясы. Бұл код өз атауында айтылғандарды орындайды, ол ілмектерге айналады! Бұл функцияда бірнеше жолдар болғанымен, бұл өте қарапайым. Код алдымен түйменің күйін оқиды және дисплейдің «Қосулы» екенін көреді. Егер бұл шындық деп табылса, онда ол WriteArduinoOnMatrix функциясын шақырады, ол APEX -те бетті салады. Бұл функция ілмекті болғандықтан, ол дисплейді біз қалағандай жиі жаңартады. Бұл кідіріс кешіктіру уақытының айнымалысы арқылы анықталады.
void loop () {if (begin == true) {delaytime = 3000; } // Оқу батырмасы басылды = digitalRead (TouchSensor);
егер (басылған) {
if (on == true) {lc.clearDisplay (0); бойынша = жалған; кешігу (кідіріс уақыты); } else {on = true; кешігу (кідіріс уақыты); }} sensorValue = analogRead (sensorPin); кешігу (кідіріс уақыты); if (on == true) {// Draw Faces writeArduinoOnMatrix (); }
басталды = ақиқат;
}
Бұл кодтың бәрі. Енді сіз мұның бәрі қалай жұмыс істейтінін жақсы түсінесіз және осы білімді жобаңызға бейімдеуді бастау үшін қолдана аласыз деп үміттенемін!
Кодты Arduino -ға жіберу
Енді біз барлық кодты қамтыдық, оны Arduino -ға жіберетін уақыт келді! Бақытымызға орай, IDE мұны өте қарапайым етеді. Сізге Arduino -ны компьютерге USB кабелі арқылы қосу жеткілікті, содан кейін IDE -дің жоғарғы сол жағындағы оң жақ көрсеткіні нұқыңыз. Кодты жіберуге рұқсат етіңіз, егер сіз оны дұрыс жасасаңыз, бағдарламаның төменгі жағында сәттілік туралы хабарды көресіз!
5 -қадам: схема
Код сияқты, схема тым күрделі емес. Ол тек үш сенсор мен Arduino-дан тұрады, сондықтан мен сізге әрқайсысының түйінін айтамын, егер сізге басқа көмек қажет болса, жоғарыдағы диаграмманы қараңыз.
Жарықдиодты дисплей:
- VCC -> 5V
- GRD -> GRD
- DIN -> 12 түйреуіш
- CS -> 10 түйреуіш
- CLK -> Pin 11
Ылғал сенсоры:
- Оң -> 5В
- Теріс -> GRD
- Сигнал -> A5
Сенсорлық сыйымдылық сенсоры:
- VCC -> 5V
- GRD -> GRD
- SIG -> 7
Тым қиын емес, иә? Егер сізде бұл шешуге қатысты қиындықтар туындаса, төмендегі бейнені қараңыз, онда мен оны қалай қосуға болатынын айтамын.
6 -қадам: Барлығын біріктіру
Мәтінге оның қалай сәйкес келетінін түсіндіру қиын, сондықтан мен бұл бөліктің бейнесін міндетті түрде қарауды ұсынар едім. Мен өзімді қалай біріктіргенімді нақты түсіндірмеймін, бұл өте қиын. Бірақ түсініксіз нәрсені түсіндіру үшін мен сымды қосылымдарды дәнекерлеп, тақтаның артына орап қойдым. Содан кейін мен сенсорларды орналастырдым және бәрін біріктіру үшін электр таспасын қолдандым. Ақырында, мен оны 9В батареясымен сынап көрдім, содан кейін оның жұмыс істейтінін білген соң, батареяны артқы жағына қойып, оны таспаға жапсырдым. Бұрын айтқанымдай, осы қадамға арналған бейнені тексеріңіз, ол жақсы дәнекерлеу сегменті бар, ол сымдарды дұрыс орауға көмектеседі. Егер сіз адасып қалсаңыз, оны кідіртуге немесе оны жарты жылдамдықта ойнауға болады.
Құттықтаймын! Егер бәрі сәтті болса, енді сізде толық жұмыс істейтін APEX қондырғысы болуы керек!
Құрылғыны тексеру үшін суарылатын өсімдік тауып, оны электр желісіне қосыңыз! Сіз бұл бақытты немесе таңқаларлық екенін білуіңіз керек, бұл оның жұмыс істейтінін білдіреді !!! Жобаны аяқтау үшін керемет жұмыс!
7 -қадам: Қорытынды
Және бұл нұсқаулықтың бәрі! Жобаны тексергеніңізге рахмет! Барлық сұрақтар мен түсініктемелерді төменде қалдырыңыз және Urban Farming Guys -ті қадағалап, осындай керемет оқулықтарды алыңыз! Біз сіздің APEX -тің қалай жасалғанын білгіміз келеді, және суреттер өте жоғары бағаланады! Тоқтағаныңыз үшін тағы да рахмет, күндеріңіз сәтті өтсін!
(Бұл нұсқаулық ескі өсімдіктер эмодзиі жобасынан шабытталған!)
P. S. Бұл нұсқаулық микроконтроллерлер байқауына енгізілген, сондықтан бізге дауыс беруді ұмытпаңыз! Біз оны өте бағалаймыз:)
P. P. S. Make журналында APEX алыңыз! Мұнда дауыс беріңіз! Рахмет:)
Ұсынылған:
HuskyLens көмегімен жасанды интеллект пен кескінді тану: 6 қадам (суреттермен)
HuskyLens көмегімен жасанды интеллект пен кескінді тану: Ей, балалар, не болды? Akarsh мұнда CETech. Бұл жобада біз DFRobot -тан HuskyLens -ті қарастырамыз. Бұл AI танылған камера модулі, ол жасанды интеллект сияқты бірнеше операцияларды жасай алады, мысалы, Бет тану
Автоматты ақылды өсімдік кастрөлі - (DIY, 3D басып шығарылған, Arduino, өздігінен суару, жоба): 23 қадам (суреттермен)
Автоматты ақылды кастрюль - (DIY, 3D басып шығарылған, Arduino, өздігінен суару, жоба): Сәлеметсіз бе, кейде біз үйден бірнеше күнге кетіп бара жатқанда немесе үй шаруасымен айналысып жатқанда, өсімдіктер суарылмағандықтан зардап шегеді. керек. Бұл менің шешімім, бұл кіріктірілген су қоймасы бар Smart Plant Pot. Сенсо
Жасанды неон белгісін қалай жасауға болады - өте жарқын!: 8 қадам (суреттермен)
Шынайы жалған неон белгісін қалай жасауға болады - өте жарқын!: Сәлеметсіздер ме, балалар! Бұл шынымен жарылған әйнек түтіктерге ұқсайды, әр түрлі жарықпен әйнектің сынуымен бірге келеді
Cleverbot көмегімен таңдау және жасанды интеллектпен сөйлесу: 14 қадам (суреттермен)
Cleverbot көмегімен Pick және жасанды интеллект чатымен сөйлесіңіз: Мен мұнда дауыстық команданы ғана емес, Cleverbot көмегімен компьютермен жасанды интеллект чатын да қолданып көремін. Шындығында, идея балалардың түсі бір түстен ең жақын түске дейін бояу қорабында араласатын кезде пайда болды. Бірақ, ақырында
Өсімдік мониторы: 12 қадам (суреттермен)
Өсімдік мониторы: Зауыт мониторының мақсаты - берілген аналогты топырақ датчигіне қосылған зауытқа суды сканерлеу және енгізу. Бұл жобаға қажет бөлшектер: 1x Arduino Uno1x СКД Экран 1x Серво Мотор1x Топырақ Сенсоры 1x Потенциометр1x Медициналық 30c