Съдържание:
Видео: Arduino 1-жично генерично клиентско/подчинено устройство (сензор): 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Моля, прочетете Въведение и Стъпка 2 на моите инструкции за това как да изградите 1-жичен дисплей на Arduino (144 знака), за да получите повече информация за ситуацията и наличните библиотеки. Както е обяснено там, ще използваме библиотеката OneWire-Hub (емулатор на подчинено устройство на OneWire) от orgua (обърнете внимание, че наоколо има други вилици), за да изграждаме универсални едножични устройства (например сензори) с помощта на Arduino.
Стъпка 1: Софтуер
Най -важното нещо е да се направи устройство, което да може да върне основно всякакъв вид стойност по прост начин. Това означава, че стандартният софтуер може да се използва за директно четене на всички стойности (не е необходим разговор или двоична манипулация). За това се нуждаем от много просто 1-проводно устройство по подразбиране, което може да връща поплавъци и е широко поддържано. Единственият избор, за който знам, е термометърът DS18B20 (мониторът на батерията DS2438 също е интересен и полезен, но доста сложен и по този начин бавен сред другите недостатъци). Библиотеката на OneWire-Hub съдържа пример, наречен DS18B20_asInterface, който прави точно това, от което се нуждаем. Той създава куп DS18B20, всеки от които представлява една стойност с плаващ знак, която искаме да върнем от нашите сензори. Ограниченията тук са разделителната способност и стойностите трябва да са в диапазона -55, 0 … 125, 0. Това може лесно да се постигне - в най -лошия случай да се преоразмери - и всъщност е по -добро от стойностите, които могат да бъдат представени с напр. стойностите на DS2438 (1.5 до 10V). Като алтернатива можете да зададете по -голям диапазон от стойности, като използвате:
setTemperatureRaw (static_cast (стойност * 16.0f));
но четенето и обработката на тези стойности може да не се поддържа от целия софтуер, тъй като няма спецификации.
Това, което трябва да знаете, е, че първоначално максималният брой подчинени устройства е ограничен до 8, но може да бъде променен в „OneWireHub_config.h“чрез увеличаване на HUB_SLAVE_LIMIT до 32. Също така трябва да се уверите, че приемате ONEWIRE_TIME_MSG_HIGH_TIMEOUT, ако е необходимо от вашия 1-жична мрежа (напр. X10), както е обяснено в Стъпка 2 на 1-жичния дисплей на Arduino (144 знака). И да използвате IDE версията> = 1.8.3 за компилиране и качване на кода във вашия Arduino.
Ето като пример кода на устройството, което изградих съвсем наскоро. Тъй като предполагам, че няма да използвате същата комбинация от сензори, която аз правя, няма да навлизам в подробности тук, проверявайте кода и задавайте въпроси, ако имате нужда от помощ.
Стъпка 2: Хардуер
По принцип всичко, което можете да свържете към Arduino, може да се използва като ваш сензор по избор. Единственото ограничение е, че четенето на сензора трябва да бъде възможно най-бързо, за да има достатъчно време, за да се осъществи 1-жичната комуникация (предоставете Стъпка 2 от инструкциите ми за 1-жичния дисплей на Arduino (144 знака) за да получите пример).
Пример за възможен хардуер може да бъде метеорологична станция като напр.:
https://shop.boxtec.ch/wetter-messer-p-41289.html
Допълнително или вместо вас просто може да искате да използвате самия Arduino като свой сензор. Можете да прочетете повече за това в моите инструкции за по -малко известните характеристики на Arduino - възможните стойности са напрежението на източника и вътрешната температура.
Ето като пример изображение на устройството, което изградих съвсем наскоро. Тъй като предполагам, че няма да използвате същата комбинация от сензори, която аз правя, няма да навлизам в подробности тук, проверявайте кода и задавайте въпроси, ако имате нужда от помощ.
Стъпка 3: Тествайте устройството
Свържете го към вашата мрежа и проверете софтуера си за всички идентификатори на ROM и дали стойностите се връщат като температура.
Стъпка 4: Приложение: ATtiny85
Единични устройства (ограничение на паметта) също могат да бъдат направени на ATtiny85. Това се нуждае от няколко стъпки, докато програмираме ATtiny85, използвайки Arduino Uno като ISP с помощта на Arduino IDE:
-
Връзки
- https://playground.boxtec.ch/doku.php/arduino/att…
- https://sebastian.expert/could-not-find-usbtiny-d…
- https://learn.sparkfun.com/tutorials/tiny-avr-pro…
- https://forum.arduino.cc/index.php?topic=425532.0
- https://forum.arduino.cc/index.php?topic=128963.0
- използвайте Arduino IDE> = 1.8.3
-
инсталирайте опцията ATtiny в IDE
- Файл> Предпочитания> Допълнителни URL адреси на мениджъра на дъски:
- Инструменти> Табло: ??? > Управител на табла…
- потърсете: "мъничко" и инсталирайте
-
качете скица на ISP в Uno
Файл> Примери> ArduinoISP> ArduinoISP
-
поставете ATtiny85 в гнездото за програмиране (нулева сила) и го свържете:
- Arduino Pin MOSI D11 към ATtiny Pin 5
- Arduino Pin MISO D12 към ATtiny Pin 6
- Arduino Pin SCK D13 към ATtiny Pin 7
- Arduino Pin Reset D10 към ATtiny Pin 1
- Arduino Pin GND към ATtiny Pin 4
- Arduino Pin VCC към ATtiny Pin 8
- (> = Може да е необходима капачка от 10uF на щифта за RESET на Arduino Uno)
-
изберете ATtiny85 (вижте снимката):
- Табло: "ATtiny25/45/85"
- Таймер 1 Часовник: "CPU"
- B. O. D.: "B. O. D. Инвалид"
- LTO (само 1.6.11 +): „Забранено“
- Чип: "ATtiny85"
- Тактова честота: "8 MHz (вътрешна)" (съвместими с ATtiny85 и ATtiny84)
- Тактова честота: "16 MHz (PLL)" (алтернативна настройка само за ATtiny85)
- Порт: ???
-
изберете програмист:
Инструменти> Програмист: "Arduino като ISP" (НЕ "ArduinoISP"!)
-
задайте настройките на предпазителите (часовник и т.н.):
Инструменти> Burn Bootloader
- качете този код (светодиодът за грешка на програмиста трябва да е изключен, иначе го нулирайте)
-
Разположение на щифтове ATtinyX5 (ATtiny85):
- ПИН 1: PB5 (RST)
- Пин 2: PB3 (A3) - по избор свързан чрез 220ohm към 1 <-TX
- Пин 3: PB4 (A2) - свързан към 1 -проводни DATA
- Пин 4: GND - свързан към GND
- Pin 5: PB0 (PWM) - свързан към сензор I2C SDA
- Pin 6: PB1 (PWM) - свързан към LED с 4.7k към GND
- Пин 7: PB2 (A1) - свързан към сензор I2C SCL
- Pin 8: VCC - свързан към 5V
Работата с ATTiny85 се нуждае от малко повече работа, тъй като трябва да получите допълнителни библиотеки за I2C comm (adafruit/TinyWireM) и сериен изход (TinyDebugSerial). Освен това, тъй като паметта е доста ограничена, може да искате да работите много с #define, напр. за премахване на серийно отстраняване на грешки. В примера можете да видите всичко това събрано заедно.
За тестване първата стъпка е да проверите дали светодиодът мига с правилната честота, 0,5Hz. След това го свържете към шината 1wire и проверете за новото устройство.
Препоръчано:
Сензор за движение на водата Сензор за движение с помощта на Arduino и соленоиден клапан - Направи си сам: 6 стъпки
Сензор за вода Сензор за движение с помощта на Arduino и соленоиден клапан - Направи си сам: В този проект ще ви покажа как да изградите кран за вода с сензор за движение с помощта на електромагнитен клапан. Този проект може да ви помогне да преобразувате съществуващия си ръчен кран за вода в кран, който може да се контролира въз основа на откриване на движение. Използване на интерфейса на IR сензора
Arduino Nano - MPL3115A2 Прецизен сензор за висотомер Сензор: 4 стъпки
Arduino Nano - MPL3115A2 Прецизен сензор за висотомер Сензор: MPL3115A2 използва MEMS сензор за налягане с I2C интерфейс за предоставяне на точни данни за налягане/надморска височина и температура. Изходите на сензора са цифровизирани от 24-битов ADC с висока разделителна способност. Вътрешната обработка премахва компенсационните задачи от
DIY сензор за дишане с Arduino (проводим плетен сензор за разтягане): 7 стъпки (със снимки)
DIY сензор за дишане с Arduino (проводим плетен сензор за разтягане): Този DIY сензор ще приеме формата на проводим плетен сензор за разтягане. Той ще се увие около гърдите/стомаха ви и когато гърдите/стомаха ви се разширят и свият, сензорът и съответно входните данни, които се подават към Arduino. Така
Свързващ сензор, SPS-30, сензор за частици с Arduino Duemilanove, използващ I2C режим: 5 стъпки
Свързване на Sensirion, SPS-30, сензор за частици с Arduino Duemilanove Използване на I2C режим: Когато разглеждах свързването на сензори SPS30, осъзнах, че повечето източници са за Raspberry Pi, но не толкова за Arduino. Прекарвам малко време, за да накарам сензора да работи с Arduino и реших да публикувам моя опит тук, за да може
[Начална IoT] Клиентско устройство ESP8266 MQTT: 7 стъпки
[Начална IoT] ESP8266 MQTT Клиентско устройство: Интересно е, че използвайки евтин MCU с активиран WiFi с протокола MQTT за управление на устройствата като автоматичното подаващо устройство за котката ми. Има мой блог за по-подробна информация (https://regishsu.blogspot.com/2019/07/home-iot-esp…Spe