This shows you the differences between two versions of the page.
iothings:laboratoare:lab5 [2022/04/05 22:33] cosmin.chenaru |
iothings:laboratoare:lab5 [2022/04/06 19:35] (current) cosmin.chenaru [Exerciții] |
||
---|---|---|---|
Line 3: | Line 3: | ||
În laboratorul de astăzi vom instala MycroPython pe plăcuța ESP32 pentru a folosi funcționalitatea acesteia cu ajutorul limbajului de programare Python. | În laboratorul de astăzi vom instala MycroPython pe plăcuța ESP32 pentru a folosi funcționalitatea acesteia cu ajutorul limbajului de programare Python. | ||
- | ==== 1. Instalarea tool-ului Thonny ==== | + | ==== 1. Instalarea aplicației Thonny ==== |
Vom folosi [[https://randomnerdtutorials.com/getting-started-thonny-micropython-python-ide-esp32-esp8266/|acest tutorial]] pentru a instala tool-ul Thonny și pentru a scrie imaginea de MycroPython pe plăcuța ESP32. | Vom folosi [[https://randomnerdtutorials.com/getting-started-thonny-micropython-python-ide-esp32-esp8266/|acest tutorial]] pentru a instala tool-ul Thonny și pentru a scrie imaginea de MycroPython pe plăcuța ESP32. | ||
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: | ||
+ | |||
+ | <code> | ||
+ | import network | ||
+ | |||
+ | sta = network.WLAN(network.STA_IF) | ||
+ | sta.active(True) | ||
+ | |||
+ | nets = sta.scan() | ||
+ | for net in nets: | ||
+ | print(net[0]) | ||
+ | </code> | ||
+ | |||
+ | 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/flashing-micropython-firmware-esptool-py-esp32-esp8266/ | + | * https://randomnerdtutorials.com/getting-started-thonny-micropython-python-ide-esp32-esp8266/ |
- | * https://randomnerdtutorials.com/micropython-esp32-esp8266-vs-code-pymakr/ | + | |
* https://randomnerdtutorials.com/micropython-programming-basics-esp32-esp8266/ | * https://randomnerdtutorials.com/micropython-programming-basics-esp32-esp8266/ |