This shows you the differences between two versions of the page.
iothings:laboratoare:lab5 [2022/04/06 15:19] cosmin.chenaru [Exerciții] |
iothings:laboratoare:lab5 [2022/04/06 19:35] (current) cosmin.chenaru [Exerciții] |
||
---|---|---|---|
Line 9: | Line 9: | ||
O scurtă introducere cu cele mai folosite construcții în Python găsim [[https://randomnerdtutorials.com/micropython-programming-basics-esp32-esp8266|aici]]. | O scurtă introducere cu cele mai folosite construcții în Python găsim [[https://randomnerdtutorials.com/micropython-programming-basics-esp32-esp8266|aici]]. | ||
+ | ==== 2. Documentația MicroPython pentru ESP32 ==== | ||
+ | |||
+ | MicroPython este o implementare optimizată a limbajul de programare Python3, destinată microcontroller-elor cu puține resurse disponibile, ce conține un mic subset din funcționalitatea standard a limbajului. | ||
+ | |||
+ | Documentația pentru ESP32 o avem [[https://docs.micropython.org/en/latest/esp32/quickref.html|aici]]. | ||
==== Exerciții ==== | ==== Exerciții ==== | ||
- | === Ex. 1 === | + | === Ex. 1 - WiFi Scan === |
Scanați retelele WiFi locale folosind următorul program: | Scanați retelele WiFi locale folosind următorul program: | ||
Line 26: | Line 31: | ||
</code> | </code> | ||
- | O scurtă documentație găsiți [[https://docs.micropython.org/en/latest/library/network.WLAN.html|aici]] | + | Un mic exemplu cu partea de retea găsim [[https://docs.micropython.org/en/latest/library/network.WLAN.html|aici]] |
+ | |||
+ | === Ex. 2 - Web Server === | ||
+ | |||
+ | Urmăriți [[https://randomnerdtutorials.com/esp32-esp8266-micropython-web-server|acest]] tutorial pentru a porni un server web. Testați conexiunea din browser și aprindeți led-ul din pagina web. | ||
+ | |||
+ | <note> | ||
+ | Tutorialul din link-ul de mai sus folosește aplicația uPyCraft, dar noi vom folosi tot aplicația Tonny. | ||
+ | </note> | ||
+ | |||
+ | {{:iothings:laboratoare:lab5-web-server-2.png?300|}} | ||
+ | |||
+ | === Ex. 3 - Simularea unei intreruperi === | ||
+ | |||
+ | Folosiți programul de mai jos pentru a "asculta" interuperi pe PIN-ul 23. | ||
+ | |||
+ | <code> | ||
+ | from machine import Pin | ||
+ | from time import sleep | ||
+ | |||
+ | shortCircuit = False | ||
+ | |||
+ | def handle_interrupt(pin): | ||
+ | global shortCircuit | ||
+ | shortCircuit = True | ||
+ | print("Interrupt") | ||
+ | |||
+ | led = Pin(2, Pin.OUT) | ||
+ | |||
+ | # Setting a ping on 3.3 volts | ||
+ | highVoltagePin = Pin(22, Pin.OUT) | ||
+ | highVoltagePin.value(1) | ||
+ | |||
+ | # This pin should receive 3.3 volts to trigger an interrupt | ||
+ | pir = Pin(23, Pin.IN) | ||
+ | |||
+ | pir.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt) | ||
+ | |||
+ | while True: | ||
+ | if shortCircuit: | ||
+ | led.value(1) | ||
+ | sleep(1) | ||
+ | led.value(0) | ||
+ | print('Interrupt stopped!') | ||
+ | shortCircuit = False | ||
+ | </code> | ||
+ | |||
+ | Din cauza lipsei unui device fizic care să livreze o întrerupere, vom pune PIN-ul 22 pe 1 logic (3.3 volți) iar cu ajutorul unui pix vom scurt-circuita PIN-ul 23. | ||
+ | |||
+ | {{:iothings:laboratoare:lab5-scurt-circuit.jpg?300|}} | ||
+ | |||
+ | Dacă nu merge cu un pix, puteți încerca cu partea de grafit dintr-un creion mecanic. | ||
+ | |||
+ | {{:iothings:laboratoare:lab5-scurt-circuit-grafit.jpg|}} | ||
+ | |||
+ | Sau in cel mai ne-ingineresc caz, cu o furculiță :). | ||
===== Resurse ===== | ===== Resurse ===== | ||
* https://randomnerdtutorials.com/getting-started-thonny-micropython-python-ide-esp32-esp8266/ | * https://randomnerdtutorials.com/getting-started-thonny-micropython-python-ide-esp32-esp8266/ | ||
* https://randomnerdtutorials.com/micropython-programming-basics-esp32-esp8266/ | * https://randomnerdtutorials.com/micropython-programming-basics-esp32-esp8266/ |