from machine import Pin, I2C, PWM
import time
import ssd1306
import network
import urequests # Import urequests for HTTP requests
# Configuration de l'afficheur SSD1306
i2c = I2C(scl=Pin(16), sda=Pin(17)) # Changez les broches si nécessaire
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
pirinput = Pin(32, Pin.IN)
buzzer = PWM(Pin(2)) # Initialize the buzzer pin for PWM
def play_tone(frequency, duration):
buzzer.freq(frequency) # Set frequency
buzzer.duty(512) # Set duty cycle (50%)
time.sleep(duration / 1000) # Duration in seconds
buzzer.duty(0) # Turn off the tone
SSID = 'wokwi-GUEST'
PASSWORD = ''
CHANNEL_ID = '2777712'
WRITE_API_KEY = '27ECKXJXQ25GA9RH'
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
print("Connexion au Wi-Fi...")
time.sleep(1)
print("Connecté au Wi-Fi:", wlan.ifconfig())
def send_to_thingspeak():
url = f'https://api.thingspeak.com/update?api_key={WRITE_API_KEY}'
try:
response = urequests.get(url)
print("Response from ThingSpeak:", response.text)
response.close()
except Exception as e:
print("Erreur lors de l'envoi à ThingSpeak:", e)
# Connexion au Wi-Fi
connect_wifi()
while True:
pir = pirinput.value()
oled.fill(0) # Effacer l'écran pour rafraîchir le contenu
if pir == 1:
play_tone(270, 500) # Play a 270 Hz tone for 500 milliseconds
oled.text('Détecté', 0, 10) # Afficher "Détecté"
# Example values for HR, SPO2, and ECG
hr = 75 # Replace with actual heart rate value
spo2 = 98 # Replace with actual SPO2 value
ecg_value = 0.5 # Replace with actual ECG value
# Send data to ThingSpeak
send_to_thingspeak(hr, spo2, ecg_value)
else:
buzzer.duty(0) # Désactiver le buzzer (turn off PWM)
oled.text('Non détecté', 0, 20) # Afficher "Non détecté"
oled.show() # Mettre à jour l'affichage
time.sleep(5) # Délai avant la prochaine lecture