Как заставить погодный комплект с анемометром работать с помощью 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 диаграмма 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 или в схему подключения в данном случае?
>@Pavel Sayekat, 👍1
Обсуждение1 ответ
Лучший ответ:
Согласно описанной выше настройке работает только дождеприемник.
И, как уже упоминалось jsotola, и анемометр, и датчики ведра для дождя представляют собой простые переключатели, поэтому простой скетч может быть написано, что считывает состояние переключателя и зажигает светодиод (контакт 13), если переключатель активирован, и выключает светодиод, если переключатель не активирован, и это можно сделать для каждого из переключателей отдельно.
Но вместо этого я выбрал короткий путь.
Исправления:
Флюгер (на аналоговом контакте A0) начинает работать только тогда, когда я подключаю контакт I2C vcc к контакту 5 В вместо контакта 3,3 В на UNO.
Пришлось отказаться от метода чтения 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 делает Эмометр с дождевым ведром с точно такой же настройкой, полностью функциональный.
- Емкостное касание на брелке Adafruit M0 становится нестабильным при отсоединении USB-кабеля от ноутбука
- avrdude ser_open() can't set com-state
- Float печатается только 2 десятичных знака после запятой
- ошибка: espcomm_upload_mem failed при загрузке скетча
- Печать массива байтов на экране последовательного монитора Arduino IDE
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- Arduino IDE Отказано В Разрешении На Загрузку, Ubuntu
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
Этот скетч успешно вычисляет только направление ветра 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