Updated to hiabuto.net Faction Timer PCB V1.0
This commit is contained in:
		| @@ -0,0 +1,188 @@ | ||||
| /* | ||||
|  * EBYTE LoRa E220 | ||||
|  * send a structured message to the device that have ADDH ADDL CHAN -> 0 DESTINATION_ADDL 23 | ||||
|  * | ||||
|  * The receiver read the first part of the packet and undestand the type. | ||||
|  * If the type is HUMI read the message and the humidity as int | ||||
|  * else read the temperature as float. | ||||
|  * I use byte array because some microcontroller can have different size for float | ||||
|  * | ||||
|  * You must configure 2 device: one as SENDER (with FIXED SENDER config) and uncomment the relative | ||||
|  * define with the correct DESTINATION_ADDL, and one as RECEIVER (with FIXED RECEIVER config) | ||||
|  * and uncomment the relative define with the correct DESTINATION_ADDL. | ||||
|  * | ||||
|  * Write a string on serial monitor or reset to resend default value. | ||||
|  * | ||||
|  * You must uncommend the correct constructor and set the correct AUX_PIN define. | ||||
|  * | ||||
|  * by Renzo Mischianti <https://www.mischianti.org> | ||||
|  * | ||||
|  * https://www.mischianti.org | ||||
|  * | ||||
|  * E220		  ----- WeMos D1 mini	----- esp32			----- Arduino Nano 33 IoT	----- Arduino MKR	----- Raspberry Pi Pico   ----- stm32               ----- ArduinoUNO | ||||
|  * M0         ----- D7 (or GND) 	----- 19 (or GND) 	----- 4 (or GND) 			----- 2 (or GND) 	----- 10 (or GND)	      ----- PB0 (or GND)        ----- 7 Volt div (or GND) | ||||
|  * M1         ----- D6 (or GND) 	----- 21 (or GND) 	----- 6 (or GND) 			----- 4 (or GND) 	----- 11 (or GND)	      ----- PB10 (or GND)       ----- 6 Volt div (or GND) | ||||
|  * TX         ----- D3 (PullUP)		----- TX2 (PullUP)	----- TX1 (PullUP)			----- 14 (PullUP)	----- 8 (PullUP)	      ----- PA2 TX2 (PullUP)    ----- 4 (PullUP) | ||||
|  * RX         ----- D4 (PullUP)		----- RX2 (PullUP)	----- RX1 (PullUP)			----- 13 (PullUP)	----- 9 (PullUP)	      ----- PA3 RX2 (PullUP)    ----- 5 Volt div (PullUP) | ||||
|  * AUX        ----- D5 (PullUP)		----- 18  (PullUP)	----- 2  (PullUP)			----- 0  (PullUP)	----- 2  (PullUP)	      ----- PA0  (PullUP)       ----- 3 (PullUP) | ||||
|  * VCC        ----- 3.3v/5v			----- 3.3v/5v		----- 3.3v/5v				----- 3.3v/5v		----- 3.3v/5v		      ----- 3.3v/5v             ----- 3.3v/5v | ||||
|  * GND        ----- GND				----- GND			----- GND					----- GND			----- GND			      ----- GND                 ----- GND | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #define MESSAGE_TYPE "HUMI" | ||||
|  | ||||
| // With FIXED SENDER configuration | ||||
| //#define DESTINATION_ADDL 3 | ||||
| //#define ROOM "Kitchen" | ||||
|  | ||||
| // With FIXED RECEIVER configuration | ||||
| #define DESTINATION_ADDL 2 | ||||
| #define ROOM "Bathroo" | ||||
|  | ||||
| // If you want use RSSI uncomment //#define ENABLE_RSSI true | ||||
| // and use relative configuration with RSSI enabled | ||||
| // #define ENABLE_RSSI true | ||||
|  | ||||
| #include "Arduino.h" | ||||
| #include "LoRa_E220.h" | ||||
|  | ||||
| // ---------- esp8266 pins -------------- | ||||
| //LoRa_E220 e220ttl(RX, TX, AUX, M0, M1);  // Arduino RX <-- e220 TX, Arduino TX --> e220 RX | ||||
| //LoRa_E220 e220ttl(D3, D4, D5, D7, D6); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX AUX M0 M1 | ||||
| //LoRa_E220 e220ttl(D2, D3); // Config without connect AUX and M0 M1 | ||||
|  | ||||
| //#include <SoftwareSerial.h> | ||||
| //SoftwareSerial mySerial(D2, D3); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX | ||||
| //LoRa_E220 e220ttl(&mySerial, D5, D7, D6); // AUX M0 M1 | ||||
| // ------------------------------------- | ||||
|  | ||||
| // ---------- Arduino pins -------------- | ||||
| //LoRa_E220 e220ttl(4, 5, 3, 7, 6); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX AUX M0 M1 | ||||
| //LoRa_E220 e220ttl(4, 5); // Config without connect AUX and M0 M1 | ||||
|  | ||||
| //#include <SoftwareSerial.h> | ||||
| //SoftwareSerial mySerial(4, 5); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX | ||||
| //LoRa_E220 e220ttl(&mySerial, 3, 7, 6); // AUX M0 M1 | ||||
| // ------------------------------------- | ||||
|  | ||||
| // ------------- Arduino Nano 33 IoT ------------- | ||||
| // LoRa_E220 e220ttl(&Serial1, 2, 4, 6); //  RX AUX M0 M1 | ||||
| // ------------------------------------------------- | ||||
|  | ||||
| // ------------- Arduino MKR WiFi 1010 ------------- | ||||
|  LoRa_E220 e220ttl(&Serial1, 0, 2, 4); //  RX AUX M0 M1 | ||||
| // ------------------------------------------------- | ||||
|  | ||||
| // ---------- esp32 pins -------------- | ||||
| // LoRa_E220 e220ttl(&Serial2, 15, 21, 19); //  RX AUX M0 M1 | ||||
|  | ||||
| //LoRa_E220 e220ttl(&Serial2, 22, 4, 18, 21, 19, UART_BPS_RATE_9600); //  esp32 RX <-- e220 TX, esp32 TX --> e220 RX AUX M0 M1 | ||||
| // ------------------------------------- | ||||
|  | ||||
| // ---------- Raspberry PI Pico pins -------------- | ||||
| // LoRa_E220 e220ttl(&Serial2, 2, 10, 11); //  RX AUX M0 M1 | ||||
| // ------------------------------------- | ||||
|  | ||||
| // ---------------- STM32 -------------------- | ||||
| //HardwareSerial Serial2(USART2);   // PA3  (RX)  PA2  (TX) | ||||
| //LoRa_E220 e220ttl(&Serial2, PA0, PB0, PB10); //  RX AUX M0 M1 | ||||
| // ------------------------------------------------- | ||||
| struct MessageTemperature { | ||||
| 	char type[5]; | ||||
| 	char message[8]; | ||||
| 	byte temperature[4]; | ||||
| }; | ||||
|  | ||||
| struct MessageHumidity { | ||||
| 	char type[5]; | ||||
| 	char message[8]; | ||||
| 	byte humidity; | ||||
| }; | ||||
|  | ||||
| void setup() { | ||||
| 	Serial.begin(9600); | ||||
| 	delay(500); | ||||
|  | ||||
| 	// Startup all pins and UART | ||||
| 	e220ttl.begin(); | ||||
|  | ||||
| 	Serial.println("Hi, I'm going to send message!"); | ||||
|  | ||||
| 	struct MessageHumidity message = { "HUMI", ROOM, 80 }; | ||||
| 	// Send message | ||||
| 	ResponseStatus rs = e220ttl.sendFixedMessage(0, DESTINATION_ADDL, 23, &message, sizeof(MessageHumidity)); | ||||
| 	// Check If there is some problem of succesfully send | ||||
| 	Serial.println(rs.getResponseDescription()); | ||||
|  | ||||
| 	struct MessageTemperature messageT = { "TEMP", ROOM, 0 }; | ||||
| 	*(float*)(messageT.temperature) = 19.2; | ||||
|  | ||||
| 	// Send message | ||||
| 	ResponseStatus rsT = e220ttl.sendFixedMessage(0, DESTINATION_ADDL, 23, &messageT, sizeof(MessageTemperature)); | ||||
| 	// Check If there is some problem of succesfully send | ||||
| 	Serial.println(rsT.getResponseDescription()); | ||||
| } | ||||
|  | ||||
| void loop() { | ||||
| 	// If something available | ||||
| 	if (e220ttl.available() > 1) { | ||||
| 		// read the String message | ||||
| 		char type[5]; // first part of structure | ||||
| 		ResponseContainer rs = e220ttl.receiveInitialMessage(sizeof(type)); | ||||
| 		String typeStr = rs.data; | ||||
|  | ||||
| 		// Is something goes wrong print error | ||||
| 		if (rs.status.code != 1) { | ||||
| 			Serial.println(rs.status.getResponseDescription()); | ||||
| 		} else { | ||||
| 			Serial.println(typeStr); | ||||
| 			if (typeStr == "TEMP") { | ||||
| 				struct MessageTemperaturePartial { | ||||
| 					char message[8]; | ||||
| 					byte temperature[4]; | ||||
| 				}; | ||||
|  | ||||
| 				ResponseStructContainer rsc = e220ttl.receiveMessage( sizeof(MessageTemperaturePartial)); | ||||
| 				struct MessageTemperaturePartial message = *(MessageTemperaturePartial*) rsc.data; | ||||
|  | ||||
| 				Serial.println(*(float*)(message.temperature)); | ||||
| 				Serial.println(message.message); | ||||
| 				rsc.close(); | ||||
| 			} else if (typeStr == "HUMI") { | ||||
| 				struct MessageHumidityPartial { | ||||
| 					char message[8]; | ||||
| 					byte humidity; | ||||
| 				}; | ||||
|  | ||||
| 				ResponseStructContainer rsc = e220ttl.receiveMessage(sizeof(MessageHumidityPartial)); | ||||
| 				struct MessageHumidityPartial message = *(MessageHumidityPartial*) rsc.data; | ||||
|  | ||||
| 				Serial.println(message.humidity); | ||||
| 				Serial.println(message.message); | ||||
| 				rsc.close(); | ||||
| 			} else { | ||||
| 				Serial.println("Something goes wrong!!"); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  	if (Serial.available()) { | ||||
|  		if (MESSAGE_TYPE == "HUMI") { | ||||
|  			struct MessageHumidity message = { "HUMI", ROOM, 0 }; | ||||
|  			message.humidity = Serial.parseInt(); | ||||
|  | ||||
|  	 		// Send message | ||||
|  	 		ResponseStatus rs = e220ttl.sendFixedMessage(0, DESTINATION_ADDL, 23, &message, sizeof(MessageHumidity)); | ||||
|  	 		// Check If there is some problem of succesfully send | ||||
|  	 		Serial.println(rs.getResponseDescription()); | ||||
|  		} else { | ||||
|  			struct MessageTemperature message = { "TEMP", ROOM, 0 }; | ||||
|  			*(float*)(message.temperature) = Serial.parseFloat(); | ||||
|  | ||||
|  	 		// Send message | ||||
|  	 		ResponseStatus rs = e220ttl.sendFixedMessage(0, DESTINATION_ADDL, 23, &message, sizeof(MessageTemperature)); | ||||
|  	 		// Check If there is some problem of succesfully send | ||||
|  	 		Serial.println(rs.getResponseDescription()); | ||||
|  		} | ||||
|  	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user