Sommario:
- Passaggio 1: software
- Passaggio 2: hardware
- Passaggio 3: testare il dispositivo
- Passaggio 4: Appendice: ATtiny85
Video: Dispositivo client/slave generico Arduino a 1 filo (sensore): 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Si prega di leggere l'Introduzione e il Passaggio 2 della mia istruzione su come costruire un display Arduino 1-wire (144 caratteri) per ottenere maggiori informazioni sulla situazione e sulle librerie disponibili. Come spiegato lì, utilizzeremo la libreria OneWire-Hub (emulatore di dispositivo slave OneWire) di orgua (attenzione, ci sono altri fork in giro) per costruire dispositivi generici a 1 filo (ad esempio sensori) utilizzando un Arduino.
Passaggio 1: software
La cosa più importante è realizzare un dispositivo che possa restituire praticamente qualsiasi tipo di valore in maniera semplice. Ciò significa che il software standard può essere utilizzato per leggere direttamente tutti i valori (nessuna conversazione o manipolazione binaria necessaria). Per questo abbiamo bisogno di un dispositivo a 1 filo predefinito molto semplice che possa restituire float ed è ampiamente supportato. L'unica scelta che conosco è il termometro DS18B20 (anche il monitor della batteria DS2438 è interessante e utile ma piuttosto complesso e quindi lento tra gli altri inconvenienti). La libreria OneWire-Hub contiene un esempio chiamato DS18B20_asInterface che fa esattamente ciò di cui abbiamo bisogno. Crea un gruppo di DS18B20 di cui ognuno rappresenta un valore float che vogliamo restituire dai nostri sensori. Le restrizioni qui sono la risoluzione e i valori devono essere nell'intervallo -55, 0 … 125, 0. Ciò può essere facilmente ottenuto - nel caso peggiore è il ridimensionamento - ed è effettivamente migliore dei valori che possono essere rappresentati ad es. i valori del DS2438 (da 1,5 a 10V). In alternativa è possibile impostare un intervallo di valori più ampio utilizzando:
setTemperatureRaw(static_cast(value * 16.0f));
ma la lettura e l'elaborazione di questi valori potrebbero non essere supportate da tutti i software in quanto non rientrano nelle specifiche.
Quello che devi sapere è che inizialmente il numero massimo di slave è limitato a 8 ma può essere modificato in "OneWireHub_config.h" aumentando HUB_SLAVE_LIMIT fino a 32. Inoltre devi assicurarti di adottare ONEWIRE_TIME_MSG_HIGH_TIMEOUT se necessario dal tuo Rete a 1 filo (ad es. x10), come spiegato nel passaggio 2 di Arduino 1-wire Display (144 caratteri). E per utilizzare la versione IDE >= 1.8.3 per compilare e caricare il codice sul tuo Arduino.
Ecco come esempio il codice del dispositivo che ho costruito di recente. Poiché presumo che tu non usi la stessa combinazione di sensori che uso io, non entrerò ulteriormente nei dettagli qui, controlla il codice e poni domande se hai bisogno di aiuto.
Passaggio 2: hardware
Fondamentalmente tutto ciò che puoi collegare a un Arduino può essere utilizzato come sensore preferito. L'unica restrizione è che la lettura del sensore dovrebbe essere il più veloce possibile in modo da avere tutto il tempo rimasto per la comunicazione a 1 filo (conferisci il passaggio 2 delle mie istruzioni sul display Arduino 1-wire (144 caratteri) in ordine per avere un esempio).
Un esempio di possibile hardware potrebbe essere una stazione meteo come ad esempio:
https://shop.boxtec.ch/wetter-messer-p-41289.html
In aggiunta o al posto di te, potresti semplicemente voler usare Arduino stesso come sensore. Puoi leggere di più su questo nel mio istruibile sulle caratteristiche meno conosciute di Arduino: i valori possibili sono la tensione di origine e la temperatura interna.
Ecco come esempio un'immagine del dispositivo che ho costruito di recente. Poiché presumo che tu non usi la stessa combinazione di sensori che uso io, non entrerò ulteriormente nei dettagli qui, controlla il codice e poni domande se hai bisogno di aiuto.
Passaggio 3: testare il dispositivo
Collegalo alla tua rete e controlla il tuo software per tutti gli ID ROM per essere presenti e i valori che restituiscono come temperatura.
Passaggio 4: Appendice: ATtiny85
I singoli dispositivi (limitazione della memoria) possono essere eseguiti anche su un ATtiny85. Ciò richiede alcuni passaggi poiché programmiamo l'ATtiny85 utilizzando Arduino Uno come ISP con l'aiuto dell'IDE Arduino:
-
Link
- 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
- usa Arduino IDE >=1.8.3
-
installa l'opzione ATtiny su IDE
- File > Preferenze > URL di Boards Manager aggiuntivi:
- Strumenti > Tavola: ??? > Responsabile CdA…
- cerca: "tiny" e installa
-
caricare lo schizzo dell'ISP su uno
File > Esempi > ArduinoISP > ArduinoISP
-
inserire ATtiny85 nella presa di programmazione (forza zero) e cablarlo:
- Arduino Pin MOSI D11 a ATtiny Pin 5
- Arduino Pin MISO D12 a ATtiny Pin 6
- Arduino Pin SCK D13 a ATtiny Pin 7
- Reimposta pin Arduino D10 su ATtiny Pin 1
- Arduino Pin GND a ATtiny Pin 4
- Arduino Pin VCC a ATtiny Pin 8
- (potrebbe essere necessario un cap >=10uF sul pin di RESET di Arduino Uno)
-
seleziona ATtiny85 (vedi foto):
- Tabellone: "ATtiny25/45/85"
- Orologio timer 1: "CPU"
- B. O. D.: "B. O. D. Disabilitato"
- LTO (solo 1.6.11 +): "Disabilitato"
- Chip: "ATtiny85"
- Orologio: "8 MHz (interno)" (compatibile con ATtiny85 e ATtiny84)
- Orologio: "16 MHz (PLL)" (impostazione alternativa solo per ATtiny85)
- Porto: ???
-
seleziona Programmatore:
Strumenti > Programmatore: "Arduino come ISP" (NON "ArduinoISP" !)
-
impostare le impostazioni dei fusibili (orologio, ecc.):
Strumenti > Masterizza Bootloader
- caricare questo codice (il LED di errore del programmatore deve essere spento, altrimenti ripristinarlo)
-
ATtinyX5 Disposizione dei pin (ATtiny85):
- Pin 1: PB5 (RST)
- Pin 2: PB3 (A3) - collegato opzionalmente tramite 220ohm a 1<-TX
- Pin 3: PB4 (A2) - collegato a DATA a 1 filo
- Pin 4: GND - connesso a GND
- Pin 5: PB0 (PWM) - collegato al sensore I2C SDA
- Pin 6: PB1 (PWM) - collegato al LED con 4.7k a GND
- Pin 7: PB2 (A1) - collegato al sensore I2C SCL
- Pin 8: VCC - collegato a 5V
Lavorare con ATTiny85 richiede un po' più di lavoro in quanto è necessario ottenere librerie aggiuntive per le comunicazioni I2C (adafruit/TinyWireM) e l'output seriale (TinyDebugSerial). Inoltre, poiché la memoria è piuttosto limitata, potresti voler lavorare molto con #define, ad es. per rimuovere il debug seriale. Nell'esempio puoi vedere tutto questo messo insieme.
Per il test il primo passo è verificare se il LED lampeggia con la frequenza corretta, 0,5Hz. Quindi collegalo al bus 1wire e verifica la presenza del nuovo dispositivo.
Consigliato:
Generatore e sensore di filo perimetrale fai-da-te: 8 passaggi
Generatore e sensore di filo perimetrale fai-da-te: la tecnologia di guida del filo è ampiamente utilizzata nell'industria, in particolare nei magazzini in cui la movimentazione è automatizzata. I robot seguono un anello di filo sepolto nel terreno. Una corrente alternata di intensità relativamente bassa e frequenza compresa tra 5Kz e 40
[Home IoT] Dispositivo client MQTT ESP8266: 7 passaggi
[Home IoT] Dispositivo client MQTT ESP8266: è interessante che utilizzando un MCU abilitato WiFi economico con il protocollo MQTT per controllare i dispositivi come l'alimentatore automatico dell'acqua per il mio gatto. C'è il mio blog per informazioni più dettagliate (https://regishsu.blogspot.com/2019/07/home-iot-esp…Spe
Dirottatore di switch generico: 3 passaggi
Dirottatore di switch generico: questo articolo descrive come costruire un dispositivo microcontrollore a stato solido che controlla gli switch fisici. È molto economico da realizzare (4$ o giù di lì), supponendo che tu abbia un programmatore di microcontrollori. Il circuito stesso è di banale complessità. Questa P
Modificare un caricabatterie per auto USB generico per caricare un iPod Nano di terza generazione: 4 passaggi
Modificare un caricatore per auto USB generico per caricare un iPod Nano di terza generazione: Ho un iPod Nano di terza generazione. Rileva che è collegato ma si rifiuta di caricare da un adattatore di ricarica USB per auto generico, ma non avevo voglia di acquistare un cavo adattatore o un altro caricabatterie specifico per l'iPod, quindi ne ho modificato uno che già
Sensore di pressione del filo conduttivo: 7 passaggi (con immagini)
Sensore di pressione del filo conduttivo: cucitura di filo conduttivo nel neoprene per creare un cuscinetto sensibile alla pressione. Questo sensore è molto simile al sensore di piegatura del tessuto o viceversa. E anche vicino al sensore di pressione del tessuto, ma la differenza è che la superficie conduttiva è mini