|
|
| (53 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| === Micropython Kurs 2023 - Teil 2=== | | === Micropython Kurs 2023 - Teil 2=== |
| Hier werden wir den Umgang mit der Microcontroller spezifischen Hardware lernen. | | Hier werden wir den Umgang mit der Microcontroller spezifischen Hardware lernen. |
| | <br> |
| | Hier ein paar Dateien die für den Kurs benötigt werden: [[media:d4MPK2.zip|MPK2023_2_Dateien]] |
| | <br> |
| | * Das ZIP-File kann von dieser Seite heruntergeladen werden.<br> |
| | * Anschließend auf dem Rechner entpacken und <br> |
| | * dann den Inhalt mit Thonny auf den Pico kopieren.<br> |
| | * Fertig. |
|
| |
|
| | | === Termine=== |
| | Im 2. Teil habe ich die Themen nicht fest den Terminen zugeordnet. Ich habe sie zwar in eine m.E. sinnvolle Reihenfolge gebracht, aber grundsätzlich sind wir frei in der Auswahl der Themen, die wir am Abend behandeln wollen. |
| ==== 1. Abend==== | | ==== 1. Abend==== |
| Di. 16.1.24 | | Di. 16.1.24 |
| | ==== 2. Abend==== |
| | Di. 23.1.2024 |
| | ==== 3. Abend==== |
| | Di. 30.1.2024 |
| | ==== 4. Abend==== |
| | Di. 6.2.2024 |
| | ==== 5. Abend==== |
| | Di. 13.2.2024 |
| <br> | | <br> |
| | |
| | === Themen=== |
| [[19. Lektion: Raspberry Pi Pico W]]<br> | | [[19. Lektion: Raspberry Pi Pico W]]<br> |
| [[20. Lektion: Vorstellung des Experimentierboards]]<br> | | [[20. Lektion: Vorstellung des Experimentierboards]]<br> |
| Line 11: |
Line 29: |
| [[22. Lektion: Neopixel]]<br> | | [[22. Lektion: Neopixel]]<br> |
| [[23. Lektion: Onewire]]<br> | | [[23. Lektion: Onewire]]<br> |
| | ---- |
| [[24. Lektion: UART]]<br> | | [[24. Lektion: UART]]<br> |
| [[25. Lektion: SPI]]<br> | | [[25. Lektion: I2C]]<br> |
| [[26. Lektion: I2C]]<br> | | [[25a. Lektion: Fonts]] - Spätere Ergänzung - noch in Arbeit<br> |
| * TCA9548a
| | [[26. Lektion: SPI]]<br> |
| ** https://github.com/mcauser/microphyton-tca9548a
| |
| [[27. Lektion: ADC]]<br> | | [[27. Lektion: ADC]]<br> |
| * https://randomnerdtutorials.com/raspberry-pi-pico-analog-inputs-micropython/
| | [[28. Lektion: DAC]] - Der Raspberry Pi Pico W hat keinen DAC<br> |
| ** ADC des Raspberry Pi Pico
| | ---- |
| ** ADC des ESP32
| |
| ** ADC ADS1115
| |
| *** https://www.ti.com/lit/ds/symlink/ads1115.pdf?ts=1693292712477&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252Fde-de%252FADS1115
| |
| *** https://www.az-delivery.de/products/analog-digitalwandler-ads1115-mit-i2c-interface?variant=19034185039968
| |
| *** https://www.berrybase.de/ads1115-4-kanal-16-bit-ad-wandler-breakout-board
| |
| *** https://github.com/wollewald/ADS1115_mpy
| |
| *** https://github.com/robert-hh/ads1x15
| |
| *** https://pypi.org/project/ADS1115-mic-py/
| |
| *** https://www.grzesina.de/az/blog_robotcar/ads1115rc.py
| |
| *** https://how2electronics.com/ads1115-16-bit-adc-module-with-raspberry-pi-pico/
| |
| [[28. Lektion: DAC]]<br> | |
| [[29. Lektion: Puls Weiten Modulation (PWM)]]<br> | | [[29. Lektion: Puls Weiten Modulation (PWM)]]<br> |
| * https://randomnerdtutorials.com/raspberry-pi-pico-pwm-micropython/
| | [[30. Lektion: Watch Dog Timer (WDT)]] - s. 32. Lektion: Timer<br> |
| [[30. Lektion: Watch Dog Timer (WDT)]]<br> | |
| [[31. Lektion: Interrupts]]<br> | | [[31. Lektion: Interrupts]]<br> |
| [[32. Lektion: Timer]]<br> | | [[32. Lektion: Timer]]<br> |
| | | ---- |
| ==== 2. Abend====
| | [[33. Lektion: Wlan]]<br> |
| Di. 23.1.2024
| | [[34. Lektion: NTP/RTC]]<br> |
| | | ---- |
| | | [[35. Lektion: HTTP Briefing]]<br> |
| | | [[36. Lektion: HTML Briefing]]<br> |
| | | [[37. Lektion: Request]]<br> |
| ===== Wlan=====
| | [[38. Lektion: Webserver]]<br> |
| * https://www.youtube.com/watch?v=Me7VM2z3_f8
| | [[39. Lektion: Webseiten für den Webserver erstellen]]<br> |
| | |
| ===== Unix-Zeit=====
| |
| ACHTUNG ESP32 und Pico arbeiten mit unterschiedlichen Epochen:
| |
| <pre>
| |
| MicroPython v1.20.0 on 2023-04-26; Raspberry Pi Pico W with RP2040
| |
| >>> import time
| |
| >>> time.gmtime(0)
| |
| (1970, 1, 1, 0, 0, 0, 3, 1)
| |
| >>>
| |
| </pre> | |
| | |
| <pre>
| |
| MicroPython v1.20.0 on 2023-04-26; ESP32 module with ESP32
| |
| >>> import time
| |
| >>> time.gmtime(0)
| |
| (2000, 1, 1, 0, 0, 0, 5, 1)
| |
| >>>
| |
| </pre>
| |
| | |
| ===== NTP/RTC=====
| |
| Die RTC des ESP32 soll sehr ungenau sein.
| |
| | |
| * https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/rtc-und-ntp-in-micropython-mit-esp8266-und-esp32-teil-1
| |
| * https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/rtc-und-ntp-in-micropython-mit-esp8266-und-esp32-teil-2-tiefschlaf?utm_source=90%20Day%20Engaged&utm_medium=email&utm_campaign=220523_Hydroponik%20-%20Pflanzen%20ohne%20Erde_Blog%20%2801H0SBCNDVZF5ZP2WDDDZXW24A%29&utm_content=RTC%20und%20NTP%20in%20MicroPython%20Teil%202&utm_term=Campaign&_kx=t6chfMYPTCmi3Q3FmsDDDGHlL3Kt6ctVyJh9Hkft9JU%3D.QVRJMi
| |
| | |
| <pre> | |
| MicroPython v1.20.0 on 2023-04-26; ESP32S3 module with ESP32S3
| |
| | |
| Type "help()" for more information.
| |
| | |
| >>> import network
| |
| >>> import ntptime
| |
| >>> from machine import RTC
| |
| | |
| # WLAN einrichten
| |
| | |
| >>> wlan = network.WLAN(network.STA_IF)
| |
| >>> wlan.active(True)
| |
| True
| |
| >>> wlan.connect('SSID', 'PW')
| |
| >>> wlan.isconnected()
| |
| False
| |
| >>> wlan.isconnected()
| |
| True
| |
| >>> wlan.ifconfig()
| |
| ('192.168.5.109', '255.255.255.0', '192.168.5.1', '192.168.5.1')
| |
| | |
| # Die RTC mit NTP einstellen
| |
| | |
| >>> ntptime.settime()
| |
| | |
| # Die RTC einrichten
| |
| | |
| >>> rtc = RTC()
| |
| | |
| >>> rtc.datetime()
| |
| (2023, 9, 5, 1, 15, 39, 56, 427762)
| |
| >>> rtc.datetime()
| |
| (2023, 9, 5, 1, 16, 14, 5, 837765)
| |
| >>> rtc.datetime()
| |
| (2023, 9, 5, 1, 16, 21, 42, 597764)
| |
| >>> dir(ntptime)
| |
| ['__class__', '__name__', '__dict__', '__file__', 'socket', 'struct', 'time', 'timeout', 'utime', '__version__', 'host', 'settime']
| |
| >>> ntptime.time()
| |
| 747246194
| |
| >>> rtc.datetime()
| |
| (2023, 9, 5, 1, 16, 23, 49, 897771)
| |
| >>> ntptime.time()
| |
| 747246234
| |
| >>> ntptime.utime
| |
| <module 'utime'> | |
| >>> rtc.datetime()
| |
| (2023, 9, 5, 1, 16, 24, 29, 867765)
| |
| >>> ntptime.time()
| |
| 747246276
| |
| >>> import time
| |
| >>> dir(time)
| |
| ['__class__', '__name__', '__dict__', 'gmtime', 'localtime', 'mktime', 'sleep', 'sleep_ms', 'sleep_us', 'ticks_add', 'ticks_cpu', 'ticks_diff', 'ticks_ms', 'ticks_us', 'time', 'time_ns'] | |
| >>> time.gmtime()
| |
| (2023, 9, 5, 16, 25, 39, 1, 248)
| |
| >>> time.localtime()
| |
| (2023, 9, 5, 16, 25, 57, 1, 248)
| |
| >>> time.mktime(rtc.datetime())
| |
| 747191787
| |
| >>> ntptime.time()
| |
| 747246461
| |
| >>> time.mktime(rtc.datetime())
| |
| 747191787
| |
| >>> ntptime.time()
| |
| 747246472
| |
| >>> time.mktime(rtc.datetime())
| |
| 747191788
| |
| >>> ntptime.time()
| |
| 747246489
| |
| >>>
| |
| </pre>
| |
| | |
| ===== Datum und Uhrzeit=====
| |
| | |
| ===== Links:=====
| |
| * Wetter-API
| |
| ** https://www.youtube.com/watch?v=IpJyyY5Zp6Q
| |
| | |
| ==== 3. Abend====
| |
| Di. 30.1.2024
| |
| <br> | |
| * Display anschließen
| |
| ** https://docs.micropython.org/en/latest/esp8266/tutorial/ssd1306.html
| |
| ** https://github.com/TimAEllis/ssd1306-py/blob/master/ssd1306.py
| |
| ** https://www.grzesina.de/az/blog_robotcar/ssd1306.py
| |
| | |
| <br> | | <br> |
| * Webserver
| |
| ** https://github.com/jczic/MicroWebSrv2
| |
| ** Raspberry Pi Pico
| |
| *** MicroWebSrv - geht nicht!
| |
| **** https://github.com/jczic/MicroWebSrv
| |
| **** https://forums.raspberrypi.com/viewtopic.php?t=338692
| |
| *** Andere Links mit Sockets:
| |
| **** http://www.doctormonk.com/2022/09/a-better-web-server-for-raspberry-pi.html
| |
| **** https://github.com/miguelgrinberg/microdot
| |
| **** https://microdot.readthedocs.io/en/latest/intro.html
| |
| **** https://wellys.com/posts/rp2040_microphyton_webserver/
| |
| **** https://github.com/miguelgrinberg/microdot
| |
| **** https://www.rasppishop.de/pico-w-als-webserver
| |
| **** https://www.elektronik-kompendium.de/sites/raspberry-pi/2707131.htm
| |
| **** https://www.youtube.com/watch?v=RN2k_0mrKxI
| |
| **** https://www.youtube.com/watch?v=Me7VM2z3_f8
| |
| **** https://draeger-it.blog/raspberry-pi-pico-w-programmieren-eines-webservers/
| |
| **** https://hackaday.io/project/189675-raspberry-pi-pico-w-super-simple-webserver
| |
| **** https://github.com/sciencedude1990/MicropythonPicoWebServer
| |
|
| |
| ==== 4. Abend====
| |
| Di. 6.2.2024
| |
|
| |
| * Spiele
| |
| ** https://realpython.com/python-dice-roll/
| |
|
| |
| * Diverses:
| |
| ** https://medium.com/@sarperismetmakas/python-bytes-92ba69ddafba
| |
| ** https://tonylixu.medium.com/python-tips-how-to-write-better-functions-part-one-27fe4578e26e
| |
| ** https://python.plainenglish.io/10-cool-less-known-dictionary-methods-in-python-9eef4081c263
| |
| ** https://pythonflood.com/python-bitwise-operators-building-blocks-of-advanced-programming-a953c1715883
| |
| ** https://medium.com/@Scofield_Idehen/advanced-python-tips-for-development-47e061ecee70
| |
| ** https://python.plainenglish.io/write-better-code-with-python-comprehension-bad8376e44ee
| |
| ** https://medium.com/techtofreedom/3-uses-of-walrus-operators-in-python-207ff630fc0e
| |
| ** https://levelup.gitconnected.com/lambda-functions-in-python-a124cebc2e99
| |
| ** https://pythonflood.com/boost-your-coding-abilities-with-python-exec-function-bec400c53e9c
| |
| ** https://medium.com/geekculture/understanding-the-ternary-operator-in-python-717bd789d373
| |
| ** https://medium.com/analytics-vidhya/python-how-to-write-less-code-to-achieve-the-same-results-3b48fdb4ded4
| |
| ** https://levelup.gitconnected.com/6-4-built-in-python-functions-you-cannot-miss-out-on-9dec1b566e1f
| |
| ** https://medium.com/techtofreedom/19-sweet-python-syntax-sugar-for-improving-your-coding-experience-37c4118fc6b1
| |
| ** https://medium.com/codex/11-python-coding-habits-that-make-you-a-bad-programmer-5e3306077686
| |
| ** https://blog.devgenius.io/50-python-features-tips-tricks-that-you-dont-know-8a2cb55cd493
| |
| ** https://medium.com/@shivam2003/20-python-concepts-i-wish-i-knew-way-earlier-40ed5674cd52
| |
|
| |
| * String Formatierung
| |
| ** https://realpython.com/python-f-strings/?utm_source=notification_summary&utm_medium=email&utm_campaign=2023-10-19
| |
| ** https://realpython.com/python-string-concatenation/
| |
|
| |
|
| |
|
| | | === Diverse Themen=== |
| * List comprehensions
| | [[xxx. Lektion: Diverse Themen]] |
| ** https://python.plainenglish.io/mastering-pythons-list-comprehensions-e93b147a8c0b
| |
| ** https://medium.com/@mr.stucknet/python-comprehensions-demystified-writing-code-like-a-wizard-a8c50d3ed428
| |
| * Dokumentation
| |
| ** pass
| |
| * Menue erstellen
| |
| ** https://github.com/Lysander/snippets/blob/master/Python/python-misc/simplemenus/TUTORIAL.md
| |
| * Compiler
| |
| ** https://python.plainenglish.io/i-explored-pythons-powerful-compile-function-and-discovered-e315d23b8e7e
| |
| * Sortieren
| |
| ** https://medium.com/@huzaifazahoor654/sorting-with-all-data-structures-in-python-c697a34931c0
| |
| * Wertgleichheit == und Identität is
| |
| * [[16. Lektion: Funktionen.extend()]]<br>
| |
| * Generatoren
| |
| **
| |
| * Regulare Expressions
| |
| ** https://python.plainenglish.io/introduction-to-regular-expressions-in-python-a77f1c860b13
| |
| | |
| * Listen
| |
| ** Comprehention
| |
| ** [[Media:Python's_list_Data_Type.pdf|Python's list Data Type ]]
| |
| ** https://blog.devgenius.io/list-dictionary-and-set-comprehensions-in-python-103c2a20191b
| |
| ** https://realpython.com/python-list/
| |
| * Slicing
| |
| | |
| ** https://realphyton.com/phyton-list/
| |
| * Konstanten
| |
| * copy deep und flach
| |
| * https://www.heise.de/ratgeber/Phyton-Welche-Auflistungstypen-es-gibt-und-wie-sie-verwendet-werden-9216638.html?seite=all
| |
| * https://levelup.gitconnected.com/30-phyton-concepts-i-wish-i-knew-way-earlier-3add72af6433
| |
| * Bool
| |
| ** bool(mylist) - not
| |
| ===== Sortieren===== | |
| * https://medium.com/@huzaifazahoor654/sorting-with-all-data-structures-in-python-c697a34931c0
| |
| | |
| ===== Mitgliedschaft=====
| |
| * in
| |
| | |
| ===== For/Else=====
| |
| * https://book.pythontips.com/en/latest/for_-_else.html
| |
| | |
| === Bytearray / Bytestring===
| |
| Werden nur zur Vorbereitung auf eine serielle Datenübertragung verwendet.<br>
| |
| Datenstrukturen werden in einzelne Bytes zerlegt.<br>
| |
| [https://www.freecodecamp.org/news/python-bytes-to-string-how-to-convert-a-bytestring/ python-bytes-to-string-how-to-convert-a-bytestring ]<br>
| |
| [https://www.w3resource.com/python/python-bytes.php python-bytes]<br>
| |
| | |
| ==== 5. Abend====
| |
| Di. 13.2.2024
| |
| | |
| ===== Kritik=====
| |
| | |
| <br>
| |
| $ jupyter notebook<br>
| |
| <br>
| |
| <br>
| |
| | |
| <br>
| |
|
| |
|
| ==Navigation== | | ==Navigation== |
| [[Micropython_Kurs_2023_-_Teil_2|Zurück zu Micropython Kurs 2023 - Teil 2]]<br>
| | [[Micropython Kurs 2023|Zurück zur''' "Micropython Kurs 2023" '''Startseite]]<br> |
| [[Micropython Kurs 2023|Zurück zur "Micropython Kurs 2023" Startseite]]<br> | | [[Programmieren|Zurück zur '''Programmieren''' Startseite]]<br> |
| [[Programmieren|Zurück zur Programmieren Startseite]]<br> | | [[Attraktor_Wiki|Zurück zur '''Wiki''' Startseite]]<br> |
| [[Attraktor_Wiki|Zurück zur Wiki Startseite]]<br> | |