Trådlös energimätare med lastkontroll (3 / 5 steg)
Steg 3: Nrf24L01 (krediter till http://gizmosnack.blogspot.in/)
Modulen nRF24L01 är en awesome RF modul som fungerar på 2,4 GHz bandet och är perfekt för trådlös kommunikation i ett hus eftersom det penetrerar även tjocka betongväggar. NRF24L01 gör alla hårda programmering fore du, och har även en funktion för att automatiskt kontrollera om överförda data tas emot i andra änden. Det finns ett par olika versioner av nRF-familjen marker och de alla verkar fungera på liknande sätt. Jag har till exempel använt nRF905 (433MHz) modul med nästan samma kod som jag använder på nRF24L01 och den nRF24L01 + utan problem. Dessa små moduler har ett imponerande utbud, med vissa versioner som hanterar upp till 1000 m (gratis sight) kommunikation och upp till 2000 m med en biquad antenn.
nRF24L01 kontra nRF24L01 +
(+) Version är den nya uppdaterade versionen av chip och stöder datahastighet på 1 Mbit/s, 2 Mbit/s och en "långväga läge" 250 kbit/s som är mycket användbart när du vill förlänga broadcast. Den äldre nRF24L01 (som jag har använt i mitt tidigare inlägg) stöder endast 1 Mbit/s eller 2 Mbit/s datahastighet. Båda modellerna är kompatibla med varandra, så länge de är inställda på samma datahastigheten. Eftersom de båda kostar ungefär samma (nära ingenting) jag skulle rekommendera dig att köpa den + version!
Del ett - SetupConnection differencesThe nRF24L01 modul har 10 kontakter och den + version har 8. Skillnaden är att den + version istället för att ha två 3,3 V och två GND, har dess marken (en med en vit fyrkant runt den) och 3,3 V matning, bredvid varandra. Om förändrade modul från en ny + version till en gammal en, se till att inte glömma att flytta GND kabeln till rätt ställe, annars kommer det att förkorta ut din krets.
Här är en bild av den + version (ovanifrån), där du kan se alla anslutningar märkta. Den gamla versionen har två GND anslutningar högst upp i stället för på ned höger.
Strömförsörjning (GND & VCC) modulen har att drivas med 3,3 V och kan inte drivas av en 5 V adapter! Eftersom det tar väldigt lite aktuella jag använder en linjär regulator släppa spänningen ner till 3,3 V.To göra det lite enklare för oss, chip kan hantera 5 V på i/o-portar, vilket är trevligt eftersom det skulle vara en smärta att reglera ner alla i/o-kablar från AVR chip. Chip aktiverar (CE) är används när antingen skicka data (sändare) eller börja ta emot data (mottagare). CE-PIN-koden används är ansluten till någon oanvända i/o-port på AVR och som utgång (ange bit till en i DDx registret där x är bokstaven port.) Atmega88: PB1, ATtiny26: PA0, ATtiny85: PB3SPI Chip Välj (CSN) även känd som "Ship Välj inte". CSN-PIN-koden är också ansluten till eventuella oanvända i/o-port på AVR och inställt utgång. CSN pin hålls högt på hela tiden förutom när du ska skicka en SPI-kommando från AVR till nRF.Atmega88: PB2, ATtiny26: PA1, ATtiny85: PB4SPI klocka (SCK) Detta är den seriell klockan. SCK ansluter till SCK-stiftet på AVR. Atmega88: PB5, ATtiny26: PB2, ATtiny85: PB2SPI Master utgång Slave input (MOSI eller MO) Detta är den data linjen i SPI-systemet. Om din AVR chip stöder SPI-transfere som Atmega88, används detta ansluter till MOSI på AVR också och som utgång. På AVR: s som saknar SPI, som ATtiny26 och ATtiny85 de kommer med USI istället och databladet står det: "USI tre-wire är kompatibla till perifera seriella gränssnitt (SPI) läge 0 och 1, butdoes har inte slav markerar du (SS) pin funktioner. Denna funktion kan dock implementedin programvara om nödvändigt"de"SS"avses är samma som"CSN"och efter lite forskning fann jag denna blogg som hjälpte mig tilld. Att få USI SPI upp och kör jag reda på att jag var tvungen att ansluta MOSI PIN-koden från nRF till MISO stiftet på AVR och ange det som utdata. Atmega88: PB3, ATtiny26: PB1, ATtiny85: PB1SPI Master input Slave output (MISO eller MI) Detta är den data linjen i SPI-systemet. Om din AVR chip stöder SPI-transfere som Atmega88, detta ansluter till MISO på AVR och här stannar som indata. För att få det att fungera på den ATtiny26 och ATtiny85, hade jag gå använda USI som nämnts ovan. Detta fungerade endast när jag ansluten MISO stiftet på nRF till MOSI stiftet på AVR och ställa in den som indata och aktiverar inre pullup. Atmega88: PB4, ATtiny26: PB0, ATtiny85: PB0Interrupt begära (IRQ) The IRQ-pin är inte nödvändigt, men ett bra sätt att veta när något har hänt med nRF. Du kan till exempel berätta nRF att ange ange IRQ hög när ett paket tas emot eller när en framgångsrik överföringen är slutförd. Mycket användbar! Om din AVR har mer än 8 stift och en tillgänglig avbrott-pin skulle jag starkt föreslå dig att ansluta IRQ till att en och setup en avbrottsbegäran. Atmega88: PD2, ATtiny26: PB6, ATtiny85:-