Showing posts with label I2C communication. Show all posts
Showing posts with label I2C communication. Show all posts

Sunday, February 5, 2023

ChatGPT writes MicroPython code for Raspberry Pi PicoW

See how ChatGPT writes MicroPython code for Raspberry Pi Pico W

ChatGPT is a language model developed by OpenAI, which is capable of generating text based on a given prompt.

Test text for ChatGPT:

Write code in micropython Thonny for Raspberry pi Pico W with sensor BME280 and web server print IP, with homepage for temperature, pressure and humidity.


ChatGPT code:

from machine import I2C, Pin

import bme280 import network import usocket as socket i2c = I2C(0,scl=Pin(1), sda=Pin(0)) # put the right pins bme = bme280.BME280(i2c=i2c) def get_temp(): return bme.temperature def get_pressure(): return bme.pressure def get_humidity(): return bme.humidity def get_html(): html = """<html> <head> <title>Raspberry Pi Pico W with BME280</title> </head> <body> <h1>Temperature: {} C</h1> <h1>Pressure: {} hPa</h1> <h1>Humidity: {} %</h1> </body> </html> """.format(get_temp(), get_pressure(), get_humidity()) return html def main(): sta_if = network.WLAN(network.STA_IF) sta_if.active(True) sta_if.connect("<SSID>", "<Password>")

# Replace <SSID> and <PASSWORD> with your own Wi-Fi credentials.

print("Connected to network with IP: {}".format(sta_if.ifconfig()[0])) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(("", 80)) s.listen(5) while True: conn, addr = s.accept() print("Got a connection from %s" % str(addr)) request = conn.recv(1024) request = str(request) print("Content = %s" % request) response = get_html() conn.send("HTTP/1.1 200 OK\n") conn.send("Content-Type: text/html\n") conn.send("Connection: close\n\n") conn.sendall(response) conn.close() main()



Raspberry Pi Pico W Pinouts

I2C communication

GO0 = SDA GP1 = SCL
GND and 3V3(OUT)



Demo project video:










Friday, February 3, 2023

Raspberry Pico and I2C Communication Oled Display SSD1306 and sensor BME280

Raspberry Pi Pico project demo I2C serial communication.

Oled display SSD1306 128x64 and sensor BME280 in same bus.
Thonny micropython code and bus scan address command on the shell.

SCL (Serial Clock Line) and SDA (Serial Data Line) are two of the most important signals used in the Inter-Integrated Circuit (I2C) communication protocol.
I2C is a popular communication protocol used for short-distance communication between microcontrollers, sensors, and other peripherals in embedded systems.

Thonny sample code: from machine import Pin, I2C from time import sleep from ssd1306 import SSD1306_I2C import BME280 i2c = I2C(0,sda=Pin(0), scl=Pin(1), freq=400000) oled = SSD1306_I2C(128,64,i2c) ## Oled Display pixel size 128x64 oled.fill(0) while True: bme = BME280.BME280(i2c=i2c) temp = bme.temperature ## hum = bme.humidity No humidity in BMP280 pres = bme.pressure ## tempf temperature in Fahrenheit tempf = (bme.read_temperature()/100) * (9/5) + 32 tempf = str(round(tempf, 2)) + 'F' ##print('Temperature:', temp ,tempf, ' Pressure: ',pres) ##print('Humidity: ', hum) oled.fill(0) oled.text("TEMPERATURE",20,0) oled.text(temp, 20,15) ### tempf Farenheit oled.text("PRESSURE",20,35) oled.text(pres, 20,50) oled.show() sleep(0.3)

Thursday, February 2, 2023

Oled Display SSD1306

Common module

The SSD1306 is OLED display controller integrated circuit, commonly used in small electronic devices and displays. It´s used to drive small OLED displays 128x64 and provides an I2C interface for communication. It´s commonly used in small projects.


 


Raspberry Pi Pico DIY Light Meter Micropython sensor BH1750 (GY-302)

Raspberry Pico project light meter Thonny Micropython

Light sensor BH1750 (GY-302) and OLED display SSD1306
I2C communication

Video link Thonny IDE
Test code: from machine import I2C, Pin from BH1750 import BH1750 from ssd1306 import SSD1306_I2C from time import sleep i2c = I2C(0,sda=Pin(16), scl=Pin(17), freq=400000) oled = SSD1306_I2C(128,64,i2c) ## Oled Display pixel size 128x64 oled.fill(0) light = BH1750(i2c) while True: lux=light.luminance(BH1750.ONCE_HIRES_1) ## Sample luminance in lux lux = str(round(lux, 1)) oled.fill(0) oled.text("LUX",20,0) oled.text(lux, 20,15) oled.show() sleep(0.5)