- Необходимые компоненты:
- Рабочее объяснение:
- Описание схемы:
- Объяснение программирования:
- Проектирование схем и печатных плат с использованием EasyEDA:
- Расчет и заказ образцов онлайн:
Землетрясение - это непредсказуемое стихийное бедствие, наносящее ущерб жизни и имуществу. Это происходит внезапно, и мы не можем остановить это, но нас могут предупредить об этом. В настоящее время существует множество технологий, которые можно использовать для обнаружения небольших сотрясений и ударов, чтобы мы могли принять меры предосторожности перед некоторыми серьезными колебаниями в земле. Здесь мы используем акселерометр ADXL335 для обнаружения колебаний перед землетрясением. Акселерометр ADXL335 очень чувствителен к сотрясениям и вибрациям по всем трем осям. Здесь мы создаем детектор землетрясений на базе Arduino с использованием акселерометра.
Мы здесь создаем этот детектор землетрясений в виде Arduino Shield на печатной плате, а также покажем график вибрации на компьютере с использованием обработки.
Необходимые компоненты:
- Arduino UNO
- Акселерометр ADXL335
- ЖК-дисплей 16x2
- Зуммер
- BC547 транзистор
- Резисторы 1к
- 10K POT
- СВЕТОДИОД
- Блок питания 9в / 12в
- Палочки Берг мужские / женские
Акселерометр:
Описание контактов акселерометра:
- К этому выводу должно подключаться питание Vcc 5 Вольт.
- X-OUT Этот вывод дает аналоговый выход в направлении x
- Y-OUT Этот вывод дает аналоговый выход в направлении y
- Z-OUT Этот вывод дает аналоговый выход в направлении z.
- GND Земля
- ST Этот вывод используется для установки чувствительности датчика.
Также проверьте другие наши проекты с помощью акселерометра:
- Игра в пинг-понг с использованием Arduino
- Робот, управляемый жестами руки, на основе акселерометра.
- Система оповещения об авариях на базе Arduino с использованием GPS, GSM и акселерометра
Рабочее объяснение:
Работа с этим детектором землетрясений проста. Как мы упоминали ранее, мы использовали акселерометр для обнаружения вибраций землетрясений по любой из трех осей, так что всякий раз, когда возникают вибрации, акселерометр улавливает эти вибрации и преобразует их в эквивалентное значение АЦП. Затем эти значения АЦП считываются Arduino и отображаются на ЖК-дисплее 16x2. Мы также показали эти значения на графике с помощью обработки. Узнайте больше об Accelerometer, просмотрев другие наши проекты Accelerometer здесь.
Сначала нам нужно откалибровать акселерометр, взяв образцы окружающих вибраций при каждом включении Arduino. Затем нам нужно вычесть эти выборочные значения из фактических показаний, чтобы получить реальные показания. Эта калибровка необходима для того, чтобы не отображать предупреждения относительно обычных окружающих вибраций. Найдя реальные показания, Arduino сравнивает эти значения с предопределенными максимальными и минимальными значениями. Если 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. Поток 10k также используется для управления яркостью ЖК-дисплея.
Объяснение программирования:
В этом детекторе землетрясений Arduino Shield мы создали два кода: один для Arduino для обнаружения землетрясения, а другой для обработки IDE, чтобы отобразить вибрации землетрясения на графике на компьютере. Мы узнаем об обоих кодах один за другим:
Код Arduino:
Прежде всего, мы калибруем акселерометр относительно его установочной поверхности, чтобы он не отображал предупреждения относительно обычных окружающих вибраций. В этой калибровке мы берем несколько образцов, а затем берем их среднее значение и сохраняем в переменной.
для (int i = 0; i
Теперь всякий раз, когда акселерометр снимает показания, мы вычитаем эти значения выборки из показаний, чтобы он мог игнорировать вибрации окружающей среды.
int значение1 = analogRead (x); // чтение x int value2 = analogRead (y); // чтение y int value3 = analogRead (z); // чтение z int xValue = xsample-value1; // находим изменение x int yValue = ysample-value2; // находим изменение y int zValue = zsample-value3; // обнаружение изменения z / * отображение изменения значений осей x, y и z на ЖК-дисплее * / 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 («Оповещение о землетрясении»); если (millis ()> = start + buzTime) buz = 0; }
Код обработки:
Ниже прилагается код обработки, вы можете загрузить код по ссылке ниже:
Код обработки детектора землетрясений
Мы разработали график с использованием обработки для вибраций землетрясений, в котором мы определили размер окна, единицы измерения, размер шрифта, фон, чтение и отображение последовательных портов, открытие выбранного последовательного порта и т. Д.
// устанавливаем размер окна: и размер шрифта f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, true); f10 = createFont ("Arial", 10, истина); f12 = createFont ("Arial", 12, истина); f24 = createFont ("Arial", 24, истина); размер (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 = map (xPos, 0,1120,40, ширина-40);
После этого мы построили единичное пространство, максимальные и минимальные пределы, значения по осям x, y и z.
// построение окна графика, блок strokeWeight (2); инсульт (175); Линия (0,0,0,100); textFont (f24); заполнить (0,00,255); textAlign (ПРАВО); xmargin («Граф землетрясений по схемам», 200 100); заполнить (100); strokeWeight (100); линия (1050,80,1200,80);………………
После этого мы наносим значения на график, используя 3 разных цвета: синий для значения оси x, зеленый цвет для оси y и z, представленный красным цветом.
инсульт (0,0,255); если (y1 == 0) y1 = высота-inByte1-shift; строка (x, y1, x + 2, высота-inByte1-shift); y1 = высота в байтах1-сдвиг; инсульт (0,255,0); если (y2 == 0) y2 = высота-inByte2-shift; строка (x, y2, x + 2, высота-inByte2-shift); y2 = высота-в-байте2-сдвиг; инсульт (255,0,0); если (y2 == 0) y3 = высота-inByte3-shift; строка (x, y3, x + 2, height-inByte3-shift); y3 = высота в байтах3-сдвиг;
Также узнайте больше об обработке, просмотрев другие наши проекты обработки.
Проектирование схем и печатных плат с использованием EasyEDA:
EasyEDA - это не только универсальное решение для схемотехнического ввода, моделирования схем и проектирования печатных плат, они также предлагают недорогие услуги по поиску прототипов печатных плат и компонентов. Недавно они запустили свою службу поиска компонентов, где у них есть большой запас электронных компонентов, и пользователи могут заказывать необходимые компоненты вместе с заказом печатной платы.
При разработке схем и печатных плат вы также можете сделать свои схемы и печатные платы общедоступными, чтобы другие пользователи могли их копировать или редактировать и извлекать из этого выгоду. Мы также сделали общедоступными все макеты схем и печатных плат для этого индикатора землетрясения. Arduino UNO, проверьте ссылку ниже:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Ниже приведен снимок верхнего слоя компоновки печатной платы из EasyEDA. Вы можете просмотреть любой слой (верхний, нижний, Topsilk, снизу и т.д.) печатной платы, выбрав слой в окне «Слои».
Вы также можете просмотреть фото печатной платы с помощью EasyEDA:
Расчет и заказ образцов онлайн:
После завершения проектирования печатной платы вы можете щелкнуть значок вывода Fabrication , который перенесет вас на страницу заказа печатной платы. Здесь вы можете просмотреть свою печатную плату в программе просмотра Gerber Viewer или загрузить файлы Gerber вашей печатной платы. Здесь вы можете выбрать количество плат, которые вы хотите заказать, сколько слоев меди вам нужно, толщину печатной платы, вес меди и даже цвет печатной платы. После того, как вы выбрали все параметры, нажмите «Сохранить в корзину» и завершите заказ. Недавно они значительно снизили цены на печатные платы, и теперь вы можете заказать 10 штук двухслойных печатных плат размером 10 x 10 см всего за 2 доллара.
Вот печатные платы, которые я получил от EasyEDA:
Ниже приведены фотографии финального экрана после пайки компонентов на печатной плате: