Please select To the mobile version | Continue to access the desktop computer version

OrangePi

 Login            
 Register            
Search
Hot search: orangepi
Author: nopnop2002

python-periphery and 2G-IOT

[Copy link]

10

Threads

221

Posts

2006

Credits

Gold member

Rank: 6Rank: 6

Credits
2006
 Author| Post time 2017-9-9 18:17:13 | Show all posts
Edited by nopnop2002 at 2017-9-10 22:08
surfero75 replied at 2017-9-9 15:14
Is there a way for work witch DHT22 sensor?

NO

DHT11/22 needs high-speed digital input.
This library is very slow.
DHT11/22 isn't suitable for Linux.

6

Threads

70

Posts

370

Credits

Intermediate member

Rank: 3Rank: 3

Credits
370
Post time 2017-9-12 06:05:09 | Show all posts
Thanks,
A question: how can i show IP address by lcd1602?

10

Threads

221

Posts

2006

Credits

Gold member

Rank: 6Rank: 6

Credits
2006
 Author| Post time 2017-9-12 18:02:31 | Show all posts
Edited by nopnop2002 at 2017-9-12 18:06
surfero75 replied at 2017-9-12 06:05
A question: how can i show IP address by lcd1602?

YES

--- lcd2.py ---

  1. #!/usr/bin/python
  2. #-*- encoding: utf-8 -*-
  3. #import
  4. from periphery import GPIO
  5. import time
  6. import sys

  7. # Define GPIO to LCD mapping
  8. GPIO.LCD_RS = GPIO(101, "out")
  9. GPIO.LCD_E  = GPIO(121, "out")
  10. GPIO.LCD_D4 = GPIO(122, "out")
  11. GPIO.LCD_D5 = GPIO(123, "out")
  12. GPIO.LCD_D6 = GPIO(124, "out")
  13. GPIO.LCD_D7 = GPIO(125, "out")

  14. # Define some device constants
  15. LCD_WIDTH = 16    # Maximum characters per line
  16. LCD_CHR = True
  17. LCD_CMD = False

  18. LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line
  19. LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line

  20. # Timing constants
  21. E_PULSE = 0.0005
  22. E_DELAY = 0.0005

  23. def main(message):
  24.   # Main program block
  25. #  GPIO_setwarnings(False)
  26. #  GPIO_setmode(GPIO_BCM)       # Use BCM GPIO numbers
  27. #  GPIO_setup(LCD_E, GPIO_OUT)  # E
  28. #  GPIO_setup(LCD_RS, GPIO_OUT) # RS
  29. #  GPIO_setup(LCD_D4, GPIO_OUT) # DB4
  30. #  GPIO_setup(LCD_D5, GPIO_OUT) # DB5
  31. #  GPIO_setup(LCD_D6, GPIO_OUT) # DB6
  32. #  GPIO_setup(LCD_D7, GPIO_OUT) # DB7

  33.   # Initialise display
  34.   lcd_init()

  35.   while True:

  36.     # Send some test
  37.     lcd_string("OrangePi 2G-IOT",LCD_LINE_1)
  38.     lcd_string("16x2 LCD Test",LCD_LINE_2)

  39.     time.sleep(3) # 3 second delay

  40.     # Send some text
  41.     lcd_string(message[0],LCD_LINE_1)
  42.     lcd_string("",LCD_LINE_2)
  43.     if (len(message) == 2):
  44.       lcd_string(message[1],LCD_LINE_2)

  45.     time.sleep(3) # 3 second delay

  46. def lcd_init():
  47.   # Initialise display
  48.   lcd_byte(0x33,LCD_CMD) # 110011 Initialise
  49.   lcd_byte(0x32,LCD_CMD) # 110010 Initialise
  50.   lcd_byte(0x06,LCD_CMD) # 000110 Cursor move direction
  51.   lcd_byte(0x0C,LCD_CMD) # 001100 Display On,Cursor Off, Blink Off
  52.   lcd_byte(0x28,LCD_CMD) # 101000 Data length, number of lines, font size
  53.   lcd_byte(0x01,LCD_CMD) # 000001 Clear display
  54.   time.sleep(E_DELAY)

  55. def lcd_byte(bits, mode):
  56.   # Send byte to data pins
  57.   # bits = data
  58.   # mode = True  for character
  59.   #        False for command

  60.   GPIO.LCD_RS.write(mode) # RS

  61.   # High bits
  62.   GPIO.LCD_D4.write(False)
  63.   GPIO.LCD_D5.write(False)
  64.   GPIO.LCD_D6.write(False)
  65.   GPIO.LCD_D7.write(False)
  66.   if bits&0x10==0x10:
  67.     GPIO.LCD_D4.write(True)
  68.   if bits&0x20==0x20:
  69.     GPIO.LCD_D5.write(True)
  70.   if bits&0x40==0x40:
  71.     GPIO.LCD_D6.write(True)
  72.   if bits&0x80==0x80:
  73.     GPIO.LCD_D7.write(True)

  74.   # Toggle 'Enable' pin
  75.   lcd_toggle_enable()

  76.   # Low bits
  77.   GPIO.LCD_D4.write(False)
  78.   GPIO.LCD_D5.write(False)
  79.   GPIO.LCD_D6.write(False)
  80.   GPIO.LCD_D7.write(False)
  81.   if bits&0x01==0x01:
  82.     GPIO.LCD_D4.write(True)
  83.   if bits&0x02==0x02:
  84.     GPIO.LCD_D5.write(True)
  85.   if bits&0x04==0x04:
  86.     GPIO.LCD_D6.write(True)
  87.   if bits&0x08==0x08:
  88.     GPIO.LCD_D7.write(True)

  89.   # Toggle 'Enable' pin
  90.   lcd_toggle_enable()

  91. def lcd_toggle_enable():
  92.   # Toggle enable
  93.   time.sleep(E_DELAY)
  94.   GPIO.LCD_E.write(True)
  95.   time.sleep(E_PULSE)
  96.   GPIO.LCD_E.write(False)
  97.   time.sleep(E_DELAY)

  98. def lcd_string(message,line):
  99.   # Send string to display

  100.   message = message.ljust(LCD_WIDTH," ")

  101.   lcd_byte(line, LCD_CMD)

  102.   for i in range(LCD_WIDTH):
  103.     lcd_byte(ord(message[i]),LCD_CHR)

  104. if __name__ == '__main__':

  105.   argv = sys.argv
  106.   argc = len(argv)
  107.   if (argc == 1):
  108.     print 'Usage: python %s line1_message [line2_message]' % argv[0]
  109.     quit()

  110.   message = []
  111.   message.append(argv[1])
  112.   if (argc == 3):
  113.     message.append(argv[2])
  114. #  print message

  115.   try:
  116.     main(message)
  117.   except KeyboardInterrupt:
  118.     pass
  119.   finally:
  120.     lcd_byte(0x01, LCD_CMD)
  121.     lcd_string("Goodbye!",LCD_LINE_1)
  122. #    GPIO_cleanup()
Copy the Code

--- lcd2.sh ---

  1. #!/bin/bash
  2. set -x
  3. ipaddr=`ifconfig wlan0 |grep "inet addr" |awk {'print $2'} |cut -f2 -d:`
  4. if [ -n "$ipaddr" ]; then
  5.    sudo python ./lcd2.py "My IP" $ipaddr
  6. fi
Copy the Code
chmod 777 lcd2.sh
./lcd2.sh

6

Threads

70

Posts

370

Credits

Intermediate member

Rank: 3Rank: 3

Credits
370
Post time 2017-9-12 19:21:21 | Show all posts
Could the script be worth to display any command in the shell? for example ram state, cpu, disk and mp3 player, etc ...?
Thank you very much for your contribution

10

Threads

221

Posts

2006

Credits

Gold member

Rank: 6Rank: 6

Credits
2006
 Author| Post time 2017-9-12 21:52:36 | Show all posts
surfero75 replied at 2017-9-12 19:21
Could the script be worth to display any command in the shell? for example ram state, cpu, disk and  ...

YES
Try everything.

0

Threads

11

Posts

140

Credits

Registered member

Rank: 2

Credits
140
Post time 2017-9-15 17:27:10 | Show all posts
i use i2cdetect -y 0 but i can't detect any device on i2c bus 0
my hardware connection is right, and i already test with arduino and it can detect the address
but when i use 2g iot i can't detect my device, how to detect i2c device ??is there something i miss?

10

Threads

221

Posts

2006

Credits

Gold member

Rank: 6Rank: 6

Credits
2006
 Author| Post time 2017-9-15 18:27:16 | Show all posts
Edited by nopnop2002 at 2017-9-15 18:36

@jhonoryza
Maybe your connection is right.
i2cdetect in 2g-iot can't be trusted.
I don't trust at all.


3

Threads

62

Posts

948

Credits

Senior member

Rank: 4

Credits
948
Post time 2017-11-6 17:31:11 | Show all posts
Are you tested SPI on this board? I confirm that I2C and UART work but I cannot found any spidev

10

Threads

221

Posts

2006

Credits

Gold member

Rank: 6Rank: 6

Credits
2006
 Author| Post time 2017-11-6 22:38:05 | Show all posts
Edited by nopnop2002 at 2017-11-6 22:43

No.
I cannot found any spidev.

orangepi@OrangePi:~$ ls /dev/spi*
ls: cannot access '/dev/spi*': No such file or directory
orangepi@OrangePi:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

3

Threads

62

Posts

948

Credits

Senior member

Rank: 4

Credits
948
Post time 2017-11-7 00:35:36 | Show all posts
nopnop2002 replied at 2017-11-6 22:38
No.
I cannot found any spidev.

Thanks for answer. then we only can wait
You have to log in before you can reply Login | Register

Points Rules

Archiver|Mobile edition|Darkroom|OrangePi En ( 粤ICP备14086627号-2

2019-12-8 22:08 GMT+8 , Processed in 0.032355 second(s), 20 queries .

Powered by Discuz! X3.2

© 2014-2015 orangepibbs en.

Quick Reply To Top Return to the list