Как заставить погодный комплект с анемометром работать с помощью Arduino (UNO)?

Я пытался построить метеостанцию с анемометром, и моя установка такова: Набор анемометра SwitchDoc Labs (что эквивалентно набору анемометра SparkFun), подключенному к плата Grove Weather-Pi с часы RTC DS3231, установленные на которых подключены к arduino UNO.

Согласно http://www.switchdoc.com/wp-content/uploads /2016/07/WeatherBoard_CurrentSpecification.pdf и их официальное руководство https://www.switchdoc .com/2015/01/weather-arduino-weatherpiarduino/, если я использую соединения JP2 платы Grove Weather-Pi для подключения к плате UNO/Mega2560, то она предлагает следующее (в моем случае это UNO)

диаграмма 1 1 диаграмма 2 2

GroveWeatherPi_board    Mega        Uno     Units
    JP2/1 ->            A0          A0      WindVane
    JP2/2 ->            D2          D3      RainBucket
    JP2/3 ->            D5          D2      Anemometer  
    JP2/4 ->            GND         GND     GND

И предположительно работающий скетч/библиотека — https://github.com/switchdoclabs/SDL_Weather_80422, который компилируется только на Arduino IDE без проблем, если я использую вилку https://github.com/soligen2010/Adafruit_ADS1X15 вместо исходного https://github.com/adafruit/Adafruit_ADS1X15 с ним, но даже тогда единица измерения скорости и направления ветра или, скажем, просто вся часть анемометра не работайте или, другими словами, не давайте никакого чтения. Я протестировал блоки по отдельности вплоть до контактов Arduino со светодиодной подсветкой на макете, они отправляют сигналы/отвечают, а также смонтировал весь проект на Mega2560, но результаты остались неизменными.

Я предполагаю, что выводы, определенные в https://github.com/switchdoclabs/SDL_Weather_80422, перепутаны, тогда но как его переопределить в скетче/библиотеке, потому что в ino-файле скетча это определения распиновки преимущественно для Mega2560

#define pinLED     13  // Светодиод подключен к цифровому выводу 13
#define pinAnem    18  //Аненометр подключен к выводу 18 (на схеме не используется!) - Int 5 - Mega/Uno вывод 2
#define pinRain    2   // Аненометр подключен к выводу 2 — Int 0 — Mega/Uno Pin 3
#define intAnem    5   // int 0 (проверка на Uno), согласно сравнению двух приведенных выше диаграмм, для UNO этот вывод также идет на вывод 2
#define intRain    1   // int 1 (не используется на схеме! Тогда почему? Это вывод TX)

Где pinAnem и intAnem оба указывают контакт 2 для UNO в соответствии с двумя приведенными выше диаграммами.

Когда я подключаю контакт I2C vcc от Grove-Weather-Board к 5 В UNO вместо 3,3 В, как показано, направление ветра фиксируется, но показания скорости ветра по-прежнему отсутствуют.

Итак, какие исправления мне нужно внести в библиотеку SDL_Weather_80422 или в схему подключения в данном случае?

>

, 👍1

Обсуждение

Этот скетч успешно вычисляет только направление ветра https://github.com/sparkfun/Weather_Shield/blob/master/Firmware/Weather_Shield_Weather_Station_V12/Weather_Shield_Weather_Station_V12.ino после отключения дополнительных заголовков., @Pavel Sayekat

почему вы считаете, что вам нужно изменить библиотеку??, @jsotola

@jsotola, согласно какой-либо из приведенных выше диаграмм, вы заметили какое-нибудь определение A0 в библиотеке? Я нет, вот почему., @Pavel Sayekat

эта библиотека https://github.com/switchdoclabs/SDL_Weather_80422 (последняя ссылка в вашем вопросе) имеет эту командную строку в примере эскиза SDL_Weather_80422 WeatherStation (pinAnem, pinRain, intAnem, intRain, A0, SDL_MODE_INTERNAL_AD); .... ...... A0 — это аналоговый вывод для данных направления ..... два других вывода данных также представлены, @jsotola

и анемометр, и датчики дождевого ведра представляют собой простые переключатели..... напишите простой эскиз, который считывает состояние переключателя и зажигает светодиод (контакт 13), если переключатель активирован, и выключает светодиод, если переключатель не активирован..... .сделайте это для каждого переключателя отдельно, @jsotola

скетч http://cactus.io/hookups/weather/anemometer/davis/hookup-arduino-to-davis-anemometer-wind-speed отлично считывает скорость ветра анемометра, поэтому он дополняет недостающую функциональность https://github .com/switchdoclabs/SDL_Weather_80422., @Pavel Sayekat


1 ответ


Лучший ответ:

0

Согласно описанной выше настройке работает только дождеприемник.

И, как уже упоминалось jsotola, и анемометр, и датчики ведра для дождя представляют собой простые переключатели, поэтому простой скетч может быть написано, что считывает состояние переключателя и зажигает светодиод (контакт 13), если переключатель активирован, и выключает светодиод, если переключатель не активирован, и это можно сделать для каждого из переключателей отдельно.

Но вместо этого я выбрал короткий путь.

Исправления:

  1. Флюгер (на аналоговом контакте A0) начинает работать только тогда, когда я подключаю контакт I2C vcc к контакту 5 В вместо контакта 3,3 В на UNO.

  2. Пришлось отказаться от метода чтения Wind_speed библиотеки https://github.com/switchdoclabs/SDL_Weather_80422 и принять его слияние с http://cactus.io/hookups/weather /anemometer/davis/hookup-arduino-to-davis-anemometer-wind-speed и добавление функции Wind_gust из https://github.com/sparkfun/Weather_Shield/blob/master/Firmware/Weather_Shield_Weather_Station_V12/Weather_Shield_Weather_Station_V12.ino делает Эмометр с дождевым ведром с точно такой же настройкой, полностью функциональный.

,