Затем я использую 2 микроконтроллера: один в качестве передатчика через лазер, а другой в качестве приемника через LDR. Коды Arduino и скрипт Python, которые я использовал для передачи, пока не работают.
- КОД PYTHON ДЛЯ ПРЕОБРАЗОВАНИЯ ИЗОБРАЖЕНИЯ В STRING :
Код: Выделить всё
import base64
def image_to_base64(image_path):
with open(image_path, "rb") as img_file:
# Read the image file in binary mode
img_data = img_file.read()
# Encode the binary data as base64
base64_data = base64.b64encode(img_data)
# Decode bytes to string
base64_string = base64_data.decode("utf-8")
return base64_string
# Example usage
image_path = "blue.png" # Replace with your image file path
base64_string = image_to_base64(image_path)
print(base64_string)
- КОД ARDUINO ДЛЯ ПЕРЕДАЧИ ИЗОБРАЖЕНИЯ :
#define PERIOD 15
char *string ="/9j/1/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBA gQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAOABEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAAECAwQFBgcICQoL/8QA TRAAAgEDAwIEawUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDh IWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+ Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtRE AAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvaVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5 ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDzv4U6OPFd99mtWJu4iGaNI2YkbiCwD+nX0B ZfbPonjz4OzeGdFjmnZbKWeWMwRTSCOWfqSFRnJYgZPC9AeleY/Bvxi/wq8ZDxRa2K3awxTST WpfAkU5c4cg7W+RcNjjHIIyD+g3hr4AaP47tbP4t+Mtc1CbxH4n8GWuk3VtZOsGnWyytFcMYE KtID5igbnd+M8dAPwHNMBisuzb2lOXLGK5+nnePXTTe17Nddv1yXEcYYenGqtJKz031336Xv6 3sfBH/CCw/9BTVP+/En/wAVRXtP9hW/+x/37FFX/rtlP/Pyp9y/+RPX+pUv5fyP/9k=#";
int string_length;
void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(3, INPUT);
digitalWrite(3,LOW) ;
string_length = strlen(string);
delay(5000);
if(digitalRead(3) == HIGH){
for(int i = 0; я //передача bits
for(int i = 0; i < 8; i++)
{
digitalWrite(LED_PIN, (my_byte&(0x01 0:
data = ser.read().decode('utf-8')
long_string += data
print(data, end="")
if " " в long_string:
break
ser.close()
long_string = long_string[:-1]
print(f"\ n\n{long_string}\n\n")
Декодируйте изображение из фиксированной строки base64
image_bytes = base64.b64decode(fixed_base64_str)
image = Image.open(BytesIO(image_bytes))
image.show()
Цепь эмиссии
- КОД ARDUINO ДЛЯ ПОЛУЧЕНИЯ:
#define ПОРОГ 300
#define PERIOD 15
bool previous_state,current_state;
void setup()
{Serial.begin(9600);
pinMode(LED_PIN, OUTPUT); voidloop()
{current_state = get_ldr();
if(!current_state && previous_state)
{print_byte(get_byte());previous_state = current_state;bool get_ldr()
{int Volttage = AnalogRead(LDR_PIN);
//Serial.println (напряжение);
обратное напряжение > ПОРОГ ? true: false;char get_byte()
{char ret = 0;
delay(PERIOD*1.5);
for(int i = 0; i < 8; i++ ){
ret = ret | get_ldr()
Подробнее здесь: https://stackoverflow.com/questions/792 ... sing-esp32