import machine
import time
from machine import Pin, UART, ADC
def main():
print("--- SENDER Node Started ---")
# --- Config ---
# จำลอง LoRa ด้วย UART2 (TX=17, RX=16)
lora_sim = UART(2, baudrate=9600, tx=17, rx=16)
# Ultrasonic
trig = Pin(13, Pin.OUT)
echo = Pin(27, Pin.IN)
# Battery Sim (Potentiometer)
adc = ADC(Pin(34))
adc.atten(ADC.ATTN_11DB) # 0-3.3V range
# Helper function: วัดระยะ
def get_distance():
trig.value(0)
time.sleep_us(2)
trig.value(1)
time.sleep_us(10)
trig.value(0)
try:
t = machine.time_pulse_us(echo, 1, 30000)
if t < 0: return -1
return (t * 0.0343) / 2
except:
return -1
# Helper function: อ่านแบต
def get_battery():
raw = adc.read()
sim_volt = 10 + (raw / 4095 * 4.0)
return round(sim_volt, 2)
# --- Main Loop ---
while True:
dist = get_distance()
batt = get_battery()
# คำนวณระดับน้ำ (สมมติเซนเซอร์สูง 200cm)
water_level = 200 - dist
if dist == -1: water_level = 0
# สร้างข้อความ Format: "ID,Water,Batt"
payload = f"FIELD01,{water_level:.1f},{batt}"
print(f"[Sender] Sending: {payload}")
lora_sim.write(payload + '\n') # ส่งไปหาตัวรับ
time.sleep(2) # ส่งทุก 2 วินาที