- Необхідні компоненти:
- Робоче пояснення:
- Пояснення схеми:
- Пояснення програмування:
- Дизайн ланцюгів та друкованих плат із використанням EasyEDA:
- Розрахунок та замовлення зразків через Інтернет:
Землетрус - це непередбачувана стихійна катастрофа, яка завдає шкоди життю та майну. Це трапляється раптово, і ми не можемо зупинити це, але про це можемо отримати попередження. У наш час існує безліч технологій, які можна використовувати для виявлення дрібних струсів і ударів, щоб ми могли вживати заходів обережності перед деякими серйозними вібраціями в землі. Тут ми використовуємо акселерометр ADXL335 для виявлення попередньо-землетрусних вібрацій. Акселерометр ADXL335 дуже чутливий до коливань і вібрацій разом з усіма трьома осями. Тут ми будуємо детектор землетрусів на базі Arduino за допомогою акселерометра.
Ми будуємо цей детектор землетрусів як Arduino Shield на друкованій платі, а також покажемо графік вібрацій на комп’ютері за допомогою обробки.
Необхідні компоненти:
- Arduino UNO
- Акселерометр ADXL335
- РК-дисплей 16x2
- Зумер
- Транзистор BC547
- 1k резистори
- 10K POT
- СВІТЛОДІОДНИЙ
- Блок живлення 9v / 12v
- Палички Берга чоловічі / жіночі
Акселерометр:
Pin Опис акселерометра:
- На цьому штифті повинен підключатися живлення Vcc 5 вольт.
- X-OUT Цей штифт дає аналоговий вихід у напрямку x
- Y-OUT Цей штифт дає аналоговий вихід у напрямку y
- Z-OUT Цей штифт дає аналоговий вихід у напрямку z
- GND Земля
- ST Цей штифт використовується для встановлення чутливості датчика
Також перевірте наші інші проекти за допомогою акселерометра:
- Гра в пінг-понг за допомогою Arduino
- Робот, керований жестами на основі акселерометра.
- Система оповіщення про аварії на базі Arduino за допомогою GPS, GSM та акселерометра
Робоче пояснення:
Робота цього детектора землетрусів проста. Як ми вже згадували раніше, ми використовували акселерометр для виявлення вібрацій землетрусу вздовж будь-якої з трьох осей, щоб при виникненні вібрацій акселерометр відчував ці вібрації та перетворював їх в еквівалентне значення АЦП. Потім ці значення ADC зчитуються Arduino і відображаються на РК-дисплеї 16x2. Ми також показали ці значення на графіку за допомогою обробки. Дізнайтеся більше про акселерометр, ознайомившись з іншими нашими проектами акселерометра тут.
Спочатку нам потрібно калібрувати акселерометр, беручи зразки навколишніх вібрацій, коли Arduino підсилює потужність. Тоді нам потрібно відняти ці значення вибірки з фактичних показань, щоб отримати реальні показання. Це калібрування потрібно для того, щоб воно не відображало сповіщення щодо його нормальних оточуючих вібрацій. Після знаходження реальних показників Arduino порівнює ці значення із заздалегідь визначеними значеннями max та min. Якщо Arduino виявляє, що значення змін більші або менше, ніж попередньо визначені значення будь-якої осі в обох напрямках (негативні та позитивні), тоді Arduino спрацьовує звуковий сигнал і відображає стан попередження на РК-дисплеї 16x2 та також також увімкненому світлодіоді. Ми можемо відрегулювати чутливість детектора землетрусів, змінивши попередньо визначені значення в коді Arduino.
Демонстраційне відео та код Arduino наведено в кінці статті.
Пояснення схеми:
Схема даного детектора землетрусів Arduino Shield PCBтакож просто. У цьому проекті ми використовували Arduino, який зчитує аналогову напругу акселерометра і перетворює їх у цифрові значення. Arduino також керує зумером, світлодіодом, РК-дисплеєм 16x2, обчислює та порівнює значення та вживає відповідних заходів. Наступна частина - акселерометр, який виявляє вібрацію землі та генерує аналогові напруги за 3 осями (X, Y та Z). РК-дисплей використовується для відображення зміни значень осей X, Y та Z, а також для відображення попереджувального повідомлення над ним. Цей РК-дисплей підключений до Arduino в 4-розрядному режимі. Виводи RS, GND та EN безпосередньо підключені до 9, GND та 8 висновків Arduino, а решта 4 висновки даних РК, а саме D4, D5, D6 та D7, безпосередньо підключені до цифрових виводів 7, 6, 5 та 4 Arduino. Звуковий сигнал підключений до виводу 12 Arduino через транзистор NPN BC547. Для управління яскравістю РК-дисплея також використовується 10-казанний горщик.
Пояснення програмування:
У цьому детекторі землетрусів Arduino Shield ми створили два коди: один для Arduino для виявлення землетрусу та інший для обробки IDE для побудови вібрацій землетрусу над графіком на Комп’ютері. Ми дізнаємось про обидва коди по одному:
Код Arduino:
Перш за все, ми калібруємо акселерометр з урахуванням його розміщувальної поверхні, щоб він не показував сповіщень щодо його нормальних оточуючих вібрацій. Під час цього калібрування ми беремо деякі зразки, а потім беремо їх середнє і зберігаємо у змінних.
для (int i = 0; i
Тепер, коли акселерометр вимірює показники, ми віднімемо ці значення з показань, щоб він міг ігнорувати вібрації оточення.
int значення1 = analogRead (x); // зчитування x out int value2 = analogRead (y); // зчитування y значення int3 = analogRead (z); // зчитування z з int xValue = xsample-value1; // знаходження зміни в x int yValue = ysample-value2; // знаходження зміни у y int zValue = zsample-value3; // знаходження зміни в z / *, відображаючи зміну значень осей x, y та z на lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); затримка (100)
Потім Arduino порівнює ті калібровані (віднімаються) значення із заздалегідь визначеними межами. І вживати заходів відповідно. Якщо значення перевищують попередньо визначені значення, він подасть звуковий сигнал і побудує графік вібрації на комп'ютері за допомогою обробки.
/ * порівняння змін із заздалегідь визначеними лімітами * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = міліс (); // таймер запуску buz = 1; // зуммер / світлодіодний прапор активований} else if (buz == 1) // зуммерний прапор активований, а потім попереджуючий землетрус {lcd.setCursor (0,0); lcd.print ("Оповіщення про землетрус"); if (millis ()> = start + buzTime) buz = 0; }
Код обробки:
Нижче додається код обробки, ви можете завантажити код за посиланням нижче:
Код обробки детектора землетрусу
Ми розробили графік з використанням обробки для вібрацій землетрусу, в якому визначили розмір вікна, одиниці виміру, розмір шрифту, фон, зчитування та відображення послідовних портів, відкрити вибраний послідовний порт тощо.
// встановлюємо розмір вікна: і розмір шрифту f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, істина); f10 = createFont ("Arial", 10, істина); f12 = createFont ("Arial", 12, істина); f24 = createFont ("Arial", 24, true); розмір (1200, 700); // Список усіх доступних послідовних портів println (Serial.list ()); myPort = новий серійний (це, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); фон (80)
У наведеній нижче функції ми отримали дані від послідовного порту та витягли необхідні дані, а потім зіставили їх із розміром графіку.
// витяг усіх необхідних значень усіх трьох осей: int l1 = inString.indexOf ("x =") + 2; Рядок temp1 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("y =") + 2; Рядок temp2 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("z =") + 2; Рядок temp3 = inString.substring (l1, l1 + 3); // відображення значень x, y та z із розмірами графіків float inByte1 = float (temp1 + (char) 9); inByte1 = карта (inByte1, -80,80, 0, висота-80); float inByte2 = float (temp2 + (char) 9); inByte2 = карта (inByte2, -80,80, 0, висота-80); float inByte3 = float (temp3 + (char) 9); inByte3 = карта (inByte3, -80,80, 0, висота-80); float x = карта (xPos, 0,1120,40, ширина-40);
Після цього ми побудували одиницю простору, максимальну та мінімальну межі, значення осей x, y та z.
// побудова графічного вікна графіку, одиниця обертанняWeight (2); інсульт (175); Рядок (0,0,0,100); textFont (f24); заливка (0,00,255); textAlign (ВПРАВО); xmargin ("Графік EarthQuake за дайджестом схеми", 200 100); заливка (100); ударна вага (100); лінія (1050,80,1200,80);………………
Після цього ми наносимо графіки значень на графік, використовуючи 3 різних кольори, як синій для значення осі х, зелений колір для осі у і z представлений червоним кольором.
інсульт (0,0255); if (y1 == 0) y1 = height-inByte1-shift; рядок (x, y1, x + 2, height-inByte1-shift); y1 = висота в байте1-зсув; інсульт (0,255,0); if (y2 == 0) y2 = height-inByte2-shift; лінія (x, y2, x + 2, height-inByte2-shift); y2 = висота-inByte2-зсув; інсульт (255,0,0); if (y2 == 0) y3 = height-inByte3-shift; лінія (x, y3, x + 2, height-inByte3-shift); y3 = height-inByte3-shift;
Також дізнайтеся більше про обробку, переглянувши інші наші проекти обробки.
Дизайн ланцюгів та друкованих плат із використанням EasyEDA:
EasyEDA - це не тільки єдине рішення для схематичного захоплення, моделювання схеми та проектування друкованих плат, вони також пропонують дешеву послугу «Прототип друкованої плати» та джерело компонентів. Нещодавно вони запустили службу пошуку компонентів, де вони мають великий запас електронних компонентів, і користувачі можуть замовити необхідні компоненти разом із замовленням друкованих плат.
При проектуванні ваших схем і друкованих плат, ви можете також зробити вашу схему і PCB конструкції громадськості, з тим щоб інші користувачі могли копіювати або редагувати їх і має права застосовувати там, ми також зробили всю нашу Circuit і розводки громадськості для цього землетрусу Індикатор щита для Arduino UNO, перевірте посилання нижче:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Нижче наведено Знімок верхнього шару макета друкованої плати від EasyEDA, ви можете переглянути будь-який шар (верхній, нижній, верхній, молочний тощо) друкованої плати, вибравши шар у вікні "Шари".
Ви також можете побачити вигляд фотографії друкованої плати за допомогою EasyEDA:
Розрахунок та замовлення зразків через Інтернет:
Після завершення проектування друкованої плати ви можете натиснути на піктограму виводу для виготовлення , яка перенесе вас на сторінку замовлення друкованої плати. Тут ви можете переглянути свою друковану плату в переглядачі Gerber або завантажити файли Gerber з вашої друкованої плати. Тут ви можете вибрати кількість друкованих плат, яку ви хочете замовити, скільки шарів міді вам потрібно, товщину друкованої плати, масу міді і навіть колір друкованої плати. Після того, як ви вибрали всі варіанти, натисніть «Зберегти в кошику» та завершіть замовлення. Нещодавно вони значно знизили свої ставки друкованих плат, і тепер ви можете замовити 10 шт. 2-шарової друкованої плати розміром 10 см х 10 см всього за 2 долари.
Ось друковані плати, які я отримав від EasyEDA:
Нижче наведені зображення остаточного щита після пайки компонентів на друкованій платі: