или беспроводные датчики температуры и влажности на ардуино
библиотеки https://github.com/madsci1016/Arduino-EasyTransfer http://www.airspayce.com/mikem/arduino/VirtualWire/ или https://www.dropbox.com/sh/9iesnz1telthmnn/AABTOjB24FEWioIPvunzZy40a?dl=0
// http://youtu.be/gPGOPkj9sSQ // код для передатчика #include <VirtualWire.h> #include <EasyTransferVirtualWire.h> #include <dht11.h> #define DHT11PIN 5 dht11 sensor; EasyTransferVirtualWire ET; struct SEND_DATA_STRUCTURE{ //put your variable definitions here for the data you want to send //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO //Struct can'e be bigger then 26 bytes for VirtualWire version byte ID; int temperature; int humidity; }; //give a name to the group of data SEND_DATA_STRUCTURE mydata; void setup(){ //start the library, pass in the data details ET.begin(details(mydata)); mydata.ID = 1; // Initialise the IO and ISR vw_set_ptt_inverted(true); // Required for DR3100 vw_set_tx_pin(8); vw_setup(2000); // Bits per sec pinMode(13, OUTPUT); randomSeed(analogRead(0)); } void loop(){ sensor.read(DHT11PIN); //this is how you access the variables. [name of the group].[variable name] mydata.temperature = sensor.temperature; mydata.humidity = sensor.humidity; //send the data digitalWrite(13, HIGH); ET.sendData(); digitalWrite(13, LOW); delay(random(5000, 10000)); }
// http://youtu.be/gPGOPkj9sSQ // код для приемника #include <VirtualWire.h> #include <EasyTransferVirtualWire.h> #include <LiquidCrystal.h> //create object EasyTransferVirtualWire ET; LiquidCrystal lcd(8, 9, 4, 5, 6, 7); struct SEND_DATA_STRUCTURE{ //put your variable definitions here for the data you want to send //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO //Struct can'e be bigger then 26 bytes for VirtualWire version byte ID; int temperature; int humidity; }; //give a name to the group of data SEND_DATA_STRUCTURE mydata; void setup(){ //start the library, pass in the data details ET.begin(details(mydata)); Serial.begin(9600); // Initialise the IO and ISR vw_set_ptt_inverted(true); // Required for DR3100 vw_setup(2000); // Bits per sec vw_set_rx_pin(11); vw_rx_start(); // Start the receiver PLL running lcd.begin(16, 2); lcd.clear(); pinMode(13, OUTPUT); } void loop(){ //check and see if a data packet has come in. if(ET.receiveData()){ //this is how you access the variables. [name of the group].[variable name] //since we have data, we will blink it out. if (mydata.ID == 1) { lcd.setCursor(0, 0); lcd.print("ID:"); lcd.print(mydata.ID); lcd.setCursor(0, 2); lcd.print(mydata.temperature); lcd.print("C "); lcd.print (mydata.humidity); lcd.print("% "); } else if (mydata.ID == 2) { lcd.setCursor(8, 0); lcd.print("ID:"); lcd.print(mydata.ID); lcd.setCursor(8, 2); lcd.print(mydata.temperature); lcd.print("C "); lcd.print (mydata.humidity); lcd.print("% "); } } }